Как технология LayerScale спасает сверхглубокие трансформеры (и почему о ней молчат туториалы)
YH7H22 37 минут назад Как технология LayerScale спасает сверхглубокие трансформеры (и почему о ней молчат туториалы) 4 мин 42 Машинное обучение * В мире глубокого обучения существует наивный миф: "Если твоя модель...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. YH7H22 37 минут назад Как технология LayerScale спасает сверхглубокие трансформеры (и почему о ней молчат туториалы) 4 мин 42 Машинное обучение * В мире глубокого обучения существует наивный миф: "Если твоя модель недостаточно умная, просто накинь еще пару десятков слоев". На бумаге residual связи (те самые плюсики в коде: x=x+f(x) ) должны позволять нам строить сети бесконечной глубины, спасая градиенты от затухания. Но любой, кто пытался с нуля обучить трансформер слоев на 80, знает жестокую правду: сеть просто отказывается сходиться.
Loss взрывается в первые же эпохи, или модель навсегда застревает на субоптимальном плато. Долгие годы эту проблему лечили «костылями»: сложными схемами разогрева learning rate, танцами с инициализацией весов и стохастической глубиной. Пока исследователи из Meta AI не предложили изящный хак под названием LayerScale.
Технические детали
Давайте залезем под капот и посмотрим, почему глубокие Трансформеры умирают, и как LayerScale их воскрешает. Проблема: Токсичность residual streamПосмотрим на классический блок трансформера:xout=xin+Block(LayerNorm(xin)) Магистраль X, которая проходит через всю сеть от первого до последнего слоя, часто называют residual stream (Остаточный поток). Это главная информационная шина модели.
Каждый новый блок (Attention или FFN) берет данные из шины, как-то их обрабатывает и вливает результат обратно в шину через операцию сложения. На ранних этапах обучения веса блоков инициализированы случайным образом. Это значит, что каждый блок вливает в магистраль чистейший математический шум.
Дисперсия сигнала выросла. Слой 2 получил зашумленный сигнал, умножил его на свои случайные матрицы и добавил еще больше шума. К 50-му слою изначальный сигнал (эмбеддинги токенов) полностью тонет в хаосе дисперсии.
Отраслевые последствия
LayerNorm пытается спасти ситуацию на входе в каждый следующий блок, но он не спасает саму магистраль. Когда loss функция на самом верху сети пытается прокинуть градиенты вниз, она видит перед собой бушующую реку дисперсии. Оптимизатор сходит с ума.
Решение: LayerScale и концепция мьютаИдея LayerScale поражает своей простотой. А что, если на старте обучения мы выключим звук у всех слоев, кроме самых первых? Мы добавляем один обучаемый вектор λ (диагональную матрицу) той же размерности, что и наш вектор x.
Мы умножаем выход блока на этот вектор до того, как прибавить его к шине:xout=xin+λ⊙Block(LayerNorm(xin)) А теперь главная магия: мы инициализируем λ микроскопическими значениями, например 10−4 или 10−5 (10−6 для очень глубоких сетей). Как мы обманываем оптимизаторПосмотрите, что происходит на первой итерации обучения. Поскольку λ≈0 , выход любого блока умножается на ноль.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





