iFlexible
812 subscribers
2.16K photos
142 videos
65 files
53 links
Все вопросы: https://t.me/proxy3d
Download Telegram
В архитектуре нейросетей особенно важно сохранять стабильность сигнала и направленность градиентов при обучении. Модель Scale In → Function → Scale Out → Residual обеспечивает предсказуемый и сбалансированный поток информации на каждом этапе. Scale In (нормализация и активация) подготавливает вход, приводя его к единому масштабу, Function (Conv, FFN, Attention и т.д.) извлекает признаки, а Scale Out возвращает выход к нейтральному масштабу перед сложением с residual-сигналом. Это устраняет дисбаланс между путями и ускоряет сходимость loss.

По сравнению с классическими схемами (например, Norm → Function → Residual или Function → Norm + Residual), этот подход показывает более устойчивое поведение в глубинных сетях и улучшает обучение без дополнительных костылей.

Рекомендуется использовать эту схему в качестве базового строительного блока и заменить ею существующие Residual-блоки с частичной нормализацией. Это простой и универсальный способ сделать архитектуры глубже, стабильнее и обучаемыми быстрее.
🔥3
После того как подход Scale-In → Поиск Асимметрии → Scale-Out показал отличные результаты, а его простая и наглядная интерпретация оказалась мощной концептуальной основой, возник естественный вопрос: какой вообще должна быть функция активации? Насколько существующие функции действительно решают задачу выделения асимметрий?

В качестве базовой идеи был взят закон Ципфа. На это повлияли два наблюдения:

Градиенты в речи (как формы асимметрий) указывают на логарифмически-подобное и частотно обусловленное распределение по уровням;

Моделирование кругового разделения асимметрий также приводит к приближённому частотному распределению.

Поэтому обратимся к эмпирическому закону Ципфа, чтобы на его основе построить новую функцию активации. Это привело к логарифмической форме:

log(x) / log(N),


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

Я заменил все стандартные функции активации на новую, зависящую от параметра 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, что говорит о хорошей обобщающей способности.