tgoop.com/gonzo_ML/2624
Last Update:
xLSTM: Extended Long Short-Term Memory
Maximilian Beck, Korbinian Pöppel, Markus Spanring, Andreas Auer, Oleksandra Prudnikova, Michael Kopp, Günter Klambauer, Johannes Brandstetter, Sepp Hochreiter
Статья: https://arxiv.org/abs/2405.04517
Код: https://github.com/NX-AI/xlstm
Новый улучшенный LSTM от автора старого LSTM! Вэлкам extended LSTM, xLSTM!
Цель авторов — понять, докуда можно прокачать языковое моделирование на LSTM, если отскейлить их до миллиардов параметров, перенять все передовые наработки из LLM и устранить известные узкие места.
LSTM оказались суперуспешны и выдержали проверку временем. “The most cited NN of the 20th century” (https://people.idsia.ch/~juergen/most-cited-neural-nets.html) как никак.
Напомню, что LSTM в оригинале (1997, https://direct.mit.edu/neco/article-abstract/9/8/1735/6109/Long-Short-Term-Memory) создавался для борьбы с затухающими (или взрывающимися) градиентами. В отличие от обычной RNN (где было только скрытое состояние h) в LSTM добавлена скалярная ячейка памяти (и здесь теперь одновременно есть c и h) и то что называлось constant error carousel (CEC) для обновления её состояния, изначально это было рекуррентное соединение с весом 1.0 на своё же прошлое состояние. В изначальной модели также были два управляющих процессом гейта, input и output. Input gate защищал память от влияния нерелевантных данных, output gate защищал другие ячейки от нерелевантного состояния текущей. Чуть позже (через три года, https://direct.mit.edu/neco/article-abstract/12/10/2451/6415/Learning-to-Forget-Continual-Prediction-with-LSTM) добавился forget gate для сбрасывания состояния памяти, когда надо.
Но у LSTM есть три основных ограничения:
1. Неспособность пересмотреть решение о сохранении данных внутри ячейки памяти. Это демонстрируют на простой задаче поиска ближайшего соседа (Nearest Neighbor Search), где сначала даётся референсный вектор, а далее сканируется последовательность других векторов, и модель должна найти наиболее похожий вектор и вернуть связанное с ним значение, когда последовательность закончится. Когда в последовательности попадается ещё более подходящий вектор, то модель не справляется.
2. Ограниченная память — всё надо впихнуть внутрь скаляра, который хранится в ячейке памяти LSTM. Это демонстрируют на задаче предсказания редкого токена (Rare Token Prediction), где перплексия на токенах из редкого бакета на Wikitext-103 особенно плоха.
3. Плохая параллелизация в силу последовательной обработки скрытых состояний ячейки между соседними временными отсчётами. Состояние зависит от предыдущего через hidden-hidden связи, это так называемый memory mixing.
Авторы предлагают Extended Long Short-Term Memory (xLSTM) с двумя основными модификациями базового уравнения, описывающего работу стандартного LSTM. Одно изменение -- экспоненциальные гейты, другое — новые структуры памяти.
Отсюда рождаются два новых члена семьи LSTM: sLSTM со скалярной памятью, скалярным обновлением и memory mixing, и mLSTM с матричной памятью, covariance update rule через outer product и без memory mixing. Оба варианта с экспоненциальным гейтингом.
В sLSTM добавляются экспоненциальные функции активации на input и forget gate. Также появляется отдельное состояние нормализатора, и чтобы от экспоненты всё не разнесло ещё и состояние стабилизатора. Память — по-прежнему скаляр.
Как и LSTM, sLSTM может иметь множество ячеек памяти (состояние памяти — вектор), где возможен memory mixing через рекуррентные соединения скрытого состояния (h) и гейтов со входами ячейки памяти. Также sLSTM может иметь множество голов с memory mixing внутри головы, но не между головами. Я так понял, что головы задаются структурой блочно-диагональной матрицы, через которую прогоняются все входы, и диагональные блоки задают отдельные головы.
BY gonzo-обзоры ML статей
Share with your friend now:
tgoop.com/gonzo_ML/2624
