В архитектуре нейросетей особенно важно сохранять стабильность сигнала и направленность градиентов при обучении. Модель Scale In → Function → Scale Out → Residual обеспечивает предсказуемый и сбалансированный поток информации на каждом этапе. Scale In (нормализация и активация) подготавливает вход, приводя его к единому масштабу, Function (Conv, FFN, Attention и т.д.) извлекает признаки, а Scale Out возвращает выход к нейтральному масштабу перед сложением с residual-сигналом. Это устраняет дисбаланс между путями и ускоряет сходимость loss.
По сравнению с классическими схемами (например, Norm → Function → Residual или Function → Norm + Residual), этот подход показывает более устойчивое поведение в глубинных сетях и улучшает обучение без дополнительных костылей.
Рекомендуется использовать эту схему в качестве базового строительного блока и заменить ею существующие Residual-блоки с частичной нормализацией. Это простой и универсальный способ сделать архитектуры глубже, стабильнее и обучаемыми быстрее.
По сравнению с классическими схемами (например, Norm → Function → Residual или Function → Norm + Residual), этот подход показывает более устойчивое поведение в глубинных сетях и улучшает обучение без дополнительных костылей.
Рекомендуется использовать эту схему в качестве базового строительного блока и заменить ею существующие Residual-блоки с частичной нормализацией. Это простой и универсальный способ сделать архитектуры глубже, стабильнее и обучаемыми быстрее.
🔥3
После того как подход Scale-In → Поиск Асимметрии → Scale-Out показал отличные результаты, а его простая и наглядная интерпретация оказалась мощной концептуальной основой, возник естественный вопрос: какой вообще должна быть функция активации? Насколько существующие функции действительно решают задачу выделения асимметрий?
В качестве базовой идеи был взят закон Ципфа. На это повлияли два наблюдения:
Градиенты в речи (как формы асимметрий) указывают на логарифмически-подобное и частотно обусловленное распределение по уровням;
Моделирование кругового разделения асимметрий также приводит к приближённому частотному распределению.
Поэтому обратимся к эмпирическому закону Ципфа, чтобы на его основе построить новую функцию активации. Это привело к логарифмической форме:
где N — это не просто масштабный параметр, а биологически и архитектурно значимая величина, отражающая максимально различимое множество сигналов на конкретном уровне обработки — от звуков и букв до смысловых блоков.
В качестве базовой идеи был взят закон Ципфа. На это повлияли два наблюдения:
Градиенты в речи (как формы асимметрий) указывают на логарифмически-подобное и частотно обусловленное распределение по уровням;
Моделирование кругового разделения асимметрий также приводит к приближённому частотному распределению.
Поэтому обратимся к эмпирическому закону Ципфа, чтобы на его основе построить новую функцию активации. Это привело к логарифмической форме:
log(x) / log(N),
где N — это не просто масштабный параметр, а биологически и архитектурно значимая величина, отражающая максимально различимое множество сигналов на конкретном уровне обработки — от звуков и букв до смысловых блоков.
Тест новой функции активации с параметром N
Я заменил все стандартные функции активации на новую, зависящую от параметра N, который обучается отдельно для каждой головы.
Модель: dim = 80, 20 голов, 3 блока.
Что сделано:
Заменены все функции активации на log(x) / log(N) + CDF
Опробованы разные значения N: от 10 до 200
Сравнение поведение с функциями ReLU, SiLU, Gelu, Tanh, Sigmoid
Наблюдения:
Новая функция:
Быстрый спад Loss на ранних шагах (особенно при малом N), но с колебаниями — вероятно, модель сразу входит в «рабочую зону», и дальше идёт тонкая настройка.
Обучение N идёт медленно (например, за 1000 шагов с 100 до 99), что указывает на необходимость более длительного обучения при больших N.
Вывод:
Новая функция:
Работает лучше всех стандартных, кроме sigmoid, которая близка по форме.
Более гибкая — может адаптироваться к данным через N, тогда как sigmoid — фиксированная.
Требует больше времени на обучение, особенно при больших N.
Loss почти не отличается между train/test, что говорит о хорошей обобщающей способности.
Я заменил все стандартные функции активации на новую, зависящую от параметра N, который обучается отдельно для каждой головы.
Модель: dim = 80, 20 голов, 3 блока.
Что сделано:
Заменены все функции активации на log(x) / log(N) + CDF
Опробованы разные значения N: от 10 до 200
Сравнение поведение с функциями ReLU, SiLU, Gelu, Tanh, Sigmoid
Наблюдения:
Стандартные функции передают диапазон хуже. Особенно tanh и ReLU — диапазон "уплывает" (например, [-1.5, 2.5] → [-4, 4]). Sigmoid — исключение, он сохраняет диапазон и детали лучше остальных.
Новая функция:
При N=10–50 сохраняет диапазон точно.
При N ≥ 80 диапазон начинает смещаться, но качество не сильно падает.
При N=100–200 Loss уменьшается плавнее, но более стабильно.
Быстрый спад Loss на ранних шагах (особенно при малом N), но с колебаниями — вероятно, модель сразу входит в «рабочую зону», и дальше идёт тонкая настройка.
Обучение N идёт медленно (например, за 1000 шагов с 100 до 99), что указывает на необходимость более длительного обучения при больших N.
Вывод:
Новая функция:
Работает лучше всех стандартных, кроме sigmoid, которая близка по форме.
Более гибкая — может адаптироваться к данным через N, тогда как sigmoid — фиксированная.
Требует больше времени на обучение, особенно при больших N.
Loss почти не отличается между train/test, что говорит о хорошей обобщающей способности.