惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
量子位
S
SegmentFault 最新的问题
V
Visual Studio Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
Vercel News
Vercel News
D
Docker
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
V
V2EX

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Как я случайно открыл функцию активации с багом, побеждаю...
Mixaer2 · 2026-06-17 · via Все публикации подряд на Хабре

Простой

2 мин

169

Началось всё с того, что мне было нечем заняться, и я баловался с языковой моделью, мучая её всякими разными вопросами по ML. В какой-то момент дело дошло до функций активации — сначала прошлись по уже известным, а затем и до ещё непроверенных. Так и появилась LLA — функция активации, являющаяся центральным элементом всей этой истории.

Формула у неё довольно простая:

\text{LLA}(x) = x + \ln(\|x\| + 1)

Да-да, всего лишь один натуральный логарифм, один модуль и два сложения. Отсюда и название — Log-Linear Activation. Но, тем не менее, мне показалось, что у этой функции есть большой потенциал. Поэтому бедному ИИ пришлось не только меня развлекать, но и писать мне код на Python, чтобы я проверил, действительно ли так хороша LLA. Однако я, как абсолютный хардкорщик, не имею никакого компьютера и запускать код могу только в Pydroid. И, понятное дело, платить за библиотеки я не собирался, поэтому языковая модель переписала мне код на чистом NumPy и встроенных модулях. Немного доработок и исправлений багов и вот, у меня на руках готовый инструмент для тестирования своей функции активации. Задачец сетей было аппроксимировать синусоиду.

Запустил, и знатно охренел. Моя функция училась, хотя и скакала, в то время как конкуренты (ReLU и сигмоида) практически не учились. Спустя несколько тестов с другими параметрами результат подтвердился — моя функция отлично себя чувствует на глубоких сетях, в то время как стандартные функции просто умирают. ИИ улучшил код: добавил предварительную остановку и замер времени, заодно заменив неудачных конкурентов на Swish. И снова полный разгром — swish вырубило из-за ранней остановки, ведь она совершенно не училась, в то время как LLA продолжала учиться и понизила лосс (MSE) до ~0.45. Провёл десятки разных тестов — и всё равно LLA каждый раз либо побеждала Swish, либо оставалась в ничьей. Было ясно одно: LLA прекрасно работает в любых условиях, в то время как все стандартные функции активации требуют особых условий.

Я уже подумывал о том, чтобы куда-то выложить результаты своих исследований. Решил перед этим проверить на какой-нибудь серьёзной задаче, и выбор пал на CIFAR-10. Решил переключиться на другого ИИ — говорят, он пишет код лучше, чем тот, которого я использовал изначально. Я показал ему формулы своей функции и её производной из прошлого кода.

Он же донёс до меня откровение: это неправильная производная. В коде стояла вот эта:

\dfrac{d}{dx}\text{LLA}(x) = 1 + \frac{1}{\|x\|+1}

А правильная — вот эта:

\dfrac{d}{dx}\text{LLA}(x) = 1 + \frac{\text{sign}(x)}{\|x\|+1}

Сказать, что я охренел — это ничего не сказать. Затем шок постепенно начал переходить в радость — потому что если уж функция с неправильной производной уничтожала всех конкурентов, то с правильной наверняка будет ещё лучше. Но оказалось, что всё вовсе наоборот — неправильная производная оказалась намного лучше и в аппроксимации синусоиды, и в классификации картинок, пусть и только на глубоких сетях. Стало понятно, почему — неправильная производная никогда не падает ниже единицы (всегда от 1 до 2). У неё просто нет проблемы затухающих градиентов как таковой, потому «бракованная» производная намного лучше правильной на глубоких сетях. Кроме того, ряд экспериментов подтвердил, что феноменальная устойчивость к бутылочным горлышкам — также заслуга неправильной производной.

Вот ссылка на репозиторий в GitHub: тык. Там код, при помощи которого я сравнивал Swish и LLA на CIFAR-10. Он имеет удобные настройки для ваших экспериментов. Надеюсь, там нет серьёзных багов :D