Как я случайно открыл функцию активации с багом, побеждающую Swish
Mixaer2 1 минуту назад Как я случайно открыл функцию активации с багом, побеждающую Swish Простой 2 мин 0 Android * Python * Математика * Кейс Из песочницы Началось всё с того, что мне было нечем заняться, и я баловался...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Mixaer2 1 минуту назад Как я случайно открыл функцию активации с багом, побеждающую Swish Простой 2 мин 0 Android * Python * Математика * Кейс Из песочницы Началось всё с того, что мне было нечем заняться, и я баловался с языковой моделью, мучая её всякими разными вопросами по ML. В какой-то момент дело дошло до функций активации — сначала прошлись по уже известным, а затем и до ещё непроверенных. Так и появилась LLA — функция активации, являющаяся центральным элементом всей этой истории.
Формула у неё довольно простая:Да-да, всего лишь один натуральный логарифм, один модуль и два сложения. Отсюда и название — Log-Linear Activation. Но, тем не менее, мне показалось, что у этой функции есть большой потенциал.
Технические детали
Поэтому бедному ИИ пришлось не только меня развлекать, но и писать мне код на Python, чтобы я проверил, действительно ли так хороша LLA. Однако я, как абсолютный хардкорщик, не имею никакого компьютера и запускать код могу только в Pydroid. И, понятное дело, платить за библиотеки я не собирался, поэтому языковая модель переписала мне код на чистом NumPy и встроенных модулях.
Немного доработок и исправлений багов и вот, у меня на руках готовый инструмент для тестирования своей функции активации. Задачец сетей было аппроксимировать синусоиду. Запустил, и знатно охренел.
Моя функция училась, хотя и скакала, в то время как конкуренты (ReLU и сигмоида) практически не учились. Спустя несколько тестов с другими параметрами результат подтвердился — моя функция отлично себя чувствует на глубоких сетях, в то время как стандартные функции просто умирают. ИИ улучшил код: добавил предварительную остановку и замер времени, заодно заменив неудачных конкурентов на Swish.
Отраслевые последствия
И снова полный разгром — swish вырубило из-за ранней остановки, ведь она совершенно не училась, в то время как LLA продолжала учиться и понизила лосс (MSE) до ~0. Провёл десятки разных тестов — и всё равно LLA каждый раз либо побеждала Swish, либо оставалась в ничьей. Было ясно одно: LLA прекрасно работает в любых условиях, в то время как все стандартные функции активации требуют особых условий.
Я уже подумывал о том, чтобы куда-то выложить результаты своих исследований. Решил перед этим проверить на какой-нибудь серьёзной задаче, и выбор пал на CIFAR-10. Решил переключиться на другого ИИ — говорят, он пишет код лучше, чем тот, которого я использовал изначально.
Я показал ему формулы своей функции и её производной из прошлого кода. Он же донёс до меня откровение: это неправильная производная. В коде стояла вот эта:А правильная — вот эта:Сказать, что я охренел — это ничего не сказать.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





