Рекуррентные нейронные сети (RNN), а также ее наследники такие, как LSTM и GRU, когда-то были основными инструментами для работы с последовательными данными. Однако в последние годы они были почти полностью вытеснены трансформерами (восхождение Attention is all you need), которые стали доминировать в областях от обработки естественного языка до компьютерного зрения. В статье "Were RNNs All We Needed?" коллектив авторов Лио Фэн, Фредерик Танг, Мохамед Осама Ахмед, Йошуа Бенжио и Хоссейн Хаджимирсадегх пересматривают потенциал RNN, адаптируя её под параллельные вычисления. Рассмотрим детальнее, в чем же они добились успеха.

Почему стоит цепляться за RNN?

Для начала стоит отметить, что рекуррентные сети обладают важным преимуществом: их требования к памяти линейны относительно длины последовательности на этапе обучения и остаются постоянными во время инференса. В противоположность этому, трансформеры имеют квадратичную сложность по памяти при обучении и линейную во время инференса, что особенно ощутимо на больших последовательностях данных. Это делает RNN более эффективными с точки зрения ресурсов при решении задач с длинными последовательностями.

Однако основным недостатком классических RNN было отсутствие возможности параллелизации обучения. Алгоритм backpropagation through time (BPTT) выполняется последовательно, что делает обучение на длинных последовательностях очень медленным. Именно это ограничение дало преимущество трансформерам, которые могут обучаться параллельно и, несмотря на более высокие требования к вычислительным ресурсам, значительно ускорили процесс обучения.

В чем состоит ключевое изменение?

В последние годы появилось несколько попыток устранить это ограничение RNN, такие как архитектуры LRU, Griffin, RWKV, Mamba и другие. Их объединяет использование алгоритма parallel prefix scan.

Устранив зависимости скрытого состояния от входных данных, забывания и обновления, мы позволяем LSTM и GRU больше не нуждаться в обучении через BPTT. Они могут эффективно обучаться с использованием вышеуказанного алгоритма. На основе этого подхода авторы упростили архитектуры LSTM и GRU, устранив ограничения на диапазон их выходных значений (например, избавившись от функции активации tanh) и обеспечив независимость выходных сигналов от времени по масштабу. Эти изменения привели к созданию "облегченных" версий (minLSTM и minGRU), которые используют значительно меньше параметров по сравнению с традиционными вариантами и могут обучаться параллельно.

Архитектуры minLSTM и minGRU

Для начала напишем оценки количества параметров в предыдущих моделях. Если d_h размер скрытого состояния, то p_{LSTM} = O(4d_h(d_x+d_h)), а p_{GRU} = O(3d_h(d_x+d_h)). Напомним, что улучшение произошло за счет того, что GRU использовало два типа ворот (gated) против трёх у LSTM, и обновляло скрытый слой напрямую, когда у LSTM было два состояние - ячейки и скрытое.

Рис. 1. Схема minGRU (стр. 4)
Рис. 1. Схема minGRU (стр. 4)

Они устранили зависимость update gate и скрытого состояния от предыдущего значения (z_t), полностью исключили reset gate и убрали нелинейную функцию активации tanh, т.к. уже избавлены от зависимости от скрытого слоя. Так они добились использования всего лишь O(2d_hd_x)параметров.

Рис. 2. Схема minLSTM (стр. 5)
Рис. 2. Схема minLSTM (стр. 5)

В случае с LSTM изменения коснулись зависимости input и forget gate от предыдущего скрытого состояния (h_{t-1}). Внизу происходит нормализация двух гейтов, и масштаб состояния ячейки LSTM становится независимым от времени. Обеспечив независимость масштаба скрытого состояния от времени, мы также исключаем output gate, который масштабирует скрытое состояние. Без output gate нормализованное скрытое состояние равно состоянию ячейки, что делает наличие как скрытого состояния, так и состояния ячейки избыточным. Таким образом, мы исключаем и состояние ячейки.

В результате "лайт" версия LSTM потребляет меньше параметров (O(3d_hd_x)) по сравнению с оригинальной архитектурой.

Кратко про сравнение с другими моделями

Минимизированные версии LSTM и GRU показывают впечатляющие результаты: на последовательности в 512 элементов они быстрее оригинальных LSTM и GRU в 235 и 175 раз соответственно. Однако стоит отметить, что такой рост скорости достигается ценой увеличения требований к памяти: minGRU требует на 88% больше памяти, чем классическая GRU (для сравнения Mamba использует на 56% больше чем GRU).

Модели minLSTM и minGRU демонстрируют конкурентоспособные результаты на нескольких задачах. Например, они справились с задачей Selective Copy (авторы взяли ее из статьи про Mamba), в то время как другие конфигурации Mamba, такие как S4 и H3, лишь частично справлялись с задачей.

Рис. 3. Результаты задачи LM (стр. 9)
Рис. 3. Результаты задачи LM (стр. 9)

При проверке на задаче языкового моделирования с использованием nanoGPT (моделирование текста на уровне символов на произведениях Шекспира) minLSTM и minGRU также продемонстрировали отличные результаты, достигая минимального значения функции потерь быстрее, чем трансформеры. MinGRU и minLSTM выходят на оптимум за 575 и 625 шагов обучения соответственно, тогда как трансформеру требуется около 2000+ шагов. Mamba работает чуть хуже, но довольно быстро обучилась - всего лишь за 400 шагов.

Благодарю за внимание. Возможно нас ожидает локальный ренессанс RNN.

Комментарии (2)


  1. nikolz
    06.10.2024 03:55
    +2

    Полагаю, что это не обзор, а перевод статьи, в которой приведено описание модификации RNN.

    -----------------------------------

    Уберите номера страниц из под рисунков.Очевидно забыли убрать из авто перевода.

    ------------------------------

    Название не соответствует содержанию статьи. Статья не про бокс и не про бои без правил. Авторы описывают свой алгоритм упрощения RNN моделей.

    Статья называется " Were RNNs All We Needed?", что в переводе

    "Были Ли RNNs Всем, Что Нам было Нужно? "

    Авторы пишут:

    В этой работе мы вновь обратились к RNN, которые были созданы более десяти лет назад: LSTM и GRU. Мы показываем, что эти модели можно обучать с помощью алгоритма параллельного сканирования, удаляя скрытые зависимости от состояния их элементов управления. Еще больше упростив эти модели, мы устранили ограничения на диапазон выходных данных и обеспечили, чтобы их масштаб не зависел от времени. В результате этих шагов были созданы их минимальные версии (minLSTM и minGRU). Эмпирически мы показали, что minLSTM и minGRU устраняют вычислительные ограничения своих традиционных аналогов и являются такими же эффективными в вычислительном отношении, как Mamba, популярная современная модель рекуррентных последовательностей, и конкурируют по производительности с новейшими моделями последовательностей. Учитывая высокую эмпирическую эффективность этих упрощенных RNN и их фундаментальное сходство со многими недавно предложенными методами рекуррентной последовательности, мы задаемся вопросом: ”Были ли RNN всем, что нам было нужно?”

    До кучи ( в статье этого нет):

    MiniLLM - это минимальная система для запуска современных LLM на графических процессорах потребительского уровня. Ее функции включают:

    • Поддержка нескольких LLM (в настоящее время LLAMA, BLOOM, OPT) с различными размерами моделей (до 170B)

    • Поддержка широкого спектра графических процессоров Nvidia потребительского уровня

    • Крошечная и простая в использовании кодовая база, в основном на Python (<500 LOC)

    В основе MiniLLM лежит алгоритм GPTQ, который обеспечивает сжатие до 3 бит и значительно сокращает использование памяти графического процессора. Дополнительную информацию о том, какие LLM поддерживаются различными графическими процессорами, можно найти в разделе «Требования к оборудованию».

    MiniLLM — это исследовательский проект Корнеллского технологического института и Корнеллского университета. Его цели:

    • Обеспечивает простую в использовании платформу для творческих экспериментов с большими языковыми моделями

    • Облегчить проведение исследований по согласованию LLM, устранению предвзятости, эффективному выводу и другим темам

    https://github.com/kuleshov/minillm


    1. rplacroix Автор
      06.10.2024 03:55
      +1

      Приветствую!
      Отвечу по пунктам.
      0. Я затрудняюсь провести грань между обзором и переводом статьи. Не скрою, что я накидал этот "обзор" за час, выделив самые важные моменты из статьи. Переводом я это тоже назвать не могу, потому что а) многое опустил и б) писал своими словами.

      1. Нет, номера рисунков пришли не из автоперевода, а добавлены мной лично для стилизации. Если вы обратитесь к оригинальной статье, то увидите, что рис. 1 и 2 вообще не подписаны в статье, а рис. 3 это figure 2. Подписи я добавил, чтобы указать страницу оригинальной статьи с этим графиком.

      2. По поводу названия статьи. "Наносит ответный удар" не ассоцируется с боксом/боями без правил с 1980 года, когда вышел одноименный фильм по Звездным Войнам. Действительно, рекуррентные нейронные сети никого не бьют и не проводят революцию в мире. Вы можете считать это название пошлым или устаревшим, но тем не менее я его выбрал для привлечения внимания, не более того.

      3. Про miniLLM вы ввели меня в замешательство. В статье действительно про нее ничего нет, но она даже никаким образом не относится к теме RNN, разве что min в названии.

      Вывод: моя статья вообще не шедевр, но Ваших претензий я не понимаю.
      Приятного дня.