rizzearch
1.01K subscribers
988 photos
11 videos
320 links
Кайфули на каждый день

Авторы:
@zzmtsvv
@maxnygma (AI4Science посты)
Download Telegram
Be like a Goldfish, Don't Memorize! Mitigating Memorization in Generative LLMs

помимо проблем с галлюцинированием, у ллм есть противоположная проблема в меморизации длинных последовательностей, что может быть критично в плане копирайта или приватности тренировочных данных (не говоря о том что тренили огромную ллм а получили функцию которая копирует строчки из датабазы, yikes)

авторы смогли добавить лосс, который не влияет на основные способности к генерализации модели (обучали с нуля и сравнивали на валидации) + помогает довольно эффективно справиться с проблемой запоминания ⇒ получился голдфиш лосс

в чем суть? давайте накладывать рандомную маску на последовательность, которая будет с вероятностью 1/k убирать токен из основного лосса (в сетапе естественного языка k = 3, 4 очень даже норм). убирать в том плане, что для этих токенов не будет считаться log-likelihood для предикта следующего токена, но они будут участвовать в лоссе для других токенов, чтобы не нарушалась структура последовательностей и языка. и это работает! просто и со вкусом, так еще и просто интуитивно обосновано, подкрепляя это все эмпирикой

так же есть усложнение с хешированием - мол, порой попадаются в трейне одни и те же последовательности, которые слегка отличаются посимвольно. для этого и резонно применять хеш для h предыдущих токенов, и в зависимости от этого маскировать (h+1)-ый токен (также есть интересные рассуждения по поводу подбора h - не слишком маленьким, чтобы не повредить запоминанию модели н-грамм, но и не слишком большим, чтобы совсем не потерялся замысел → подобрали h = 13)

к тому же меморизация пропадает даже во время адверсариал атак, во время которых есть доступ к трейн семплам или бим серч вариантам декодинга, что вообще нетривиально и мощно

по скейлу моделек - 1В и 7В, неидеально но вполне приемлемо. статья вообще очень классная и руки так и чешутся заимплементить такое самому

еще у статьи очень классный лор - хорошо вписывают другие темы в метафору goldfish loss: sharks in the water (adversarial attack), fish oil vs snake oil (empiricism vs theory) + есть код но там надо черту ногу сломать чтобы разобраться или как в пословице говорится

👀LINK
31111
TransformerFAM: Feedback attention is working memory

еще одна попытка заново изобрести рнн в контексте трансформера

как сейчас принято обрабатывать длинные последовательности - через скользящее окно и по блокам (хардвейрный аспект), информация передается по предыдущим токенам для каузального аттна и по предыдущим слоям. однако авторы немножечко знают за нейробиологию, где есть концепция рабочей памяти (working memory)

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

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

однако, псевдокод как будто немного противоречит основной концепции воркинг мемори. эти самые токены представляют из себя память с предыдущих блоков, при том последующие воркинг мемори токены могут обращаться к таким же токенам с предыдущих блоков (напоминает рнн с хидден стейтами, не так ли? прям то же самое). отсюда возникает интуиция, что на вход операции внимания мы можем подавать эти мемори токены и токены с данного блока, но в алгоритме к этому добавляются обычные инпут токены с предыдущих блоков. то есть 2х истории подается аттеншну - появляется послевкусие костыльности, but if it works let it work

так же на ощущение костыльности намекает тот факт, что если увеличивать количество мемори токенов (64 → 256), то перформанс ухудшается. связывают с нейробиологией, но это забавно. неужели в 64 токенах может скрываться вся необходимая воркинг мемори, почему не 52, или скорее перформанс ухудшился из-за жесткой нестабильности?

и есть кстати подозрения, что воркинг мемори работает из-за обильного количества резидуал коннекшнов + так же авторы пишут, что не нужны дополнительные веса (кроме как новых обучаемых токенов) для операции аттеншна, что странно, тк по сути эти самые токены проходят дважды через один и тот же слой (хотя тут я могу ошибаться но судя по операциям так оно и есть) ⇒ при бекворде проекция из одного пространства в другое или вотевер ослабевает (что бы это ни значило)

имхо идея вряд ли в долгосрок работает. она лучше block-wise sliding window attention (и в принципе с ним авторы и сравниваются), но есть много других вопросов

кстати есть очень классные пункты в аппендиксе о том, что они пробовали и не сработало + вывод они начали с описания фильма Нолана Мементо. за это прям респект

👀LINK
3👍2111
Reinforced Self-Training (ReST) for Language Modeling

как устроен рлхф сейчас - есть ревард модель, которая выдает ревард под каждый аутпут ллм, а процесс улучшения выглядит через дообучение со связкой на эту награду. то есть цикл выглядит так ллм → ревард модель → ллм (условно). что тут может быть непрактичного? пожалуй, одни из больших таких пунктов - скорость и сложность сборки датасета, поскольку обновление модели идет в онлайн стиле

но можно ли обновлять модель в более оффлайновой манере? по аналогии с оффлайн рл и онлайн рл, авторы интересно реформулируют процесс рлхф на задаче перевода. есть изначальный “оффлайн” датасет с супервайзд разметкой, так и почему бы не использовать разметку совместно с генерацией модели?

и это работает! если фильтровать аутпуты модели в соответствии с функцией награды (которую авторы кстати так и не обозначили, просто показали, что она есть) ⇒ итеративно обновляем датасет, который лучше и лучше по награде, и сами аутпуты улучшаются

а как именно фильтровать? да просто авторы отсекают по трешхолду и уже это дает буста

основная идея понятна - проста и практична, но во время чтения появились вопросики

- есть ощущение, что подбирать ревард функцию надо оочень качественно - будь то эвристика или своя модель, а то интуитивно может случиться закон Гудхарта
- выглядят немного костыльно эмпирические выводы, что таких итераций надо делать не более 3 - потому что размер датасета остается фиксированным, а семплы в нем периодически фильтруются ⇒ в какой-то момент можем попасть в ситуацию, где вся изначальная разметка пропадет и обучение будет только на своих аутпутах (distributional shift, который в совокупности с неоптимальным ревардом будет ухудшать генерацию). то есть надо жестко подгонять ревард функцию под имеющийся датасет либо вставлять какие-то коллбеки для нивелирования такого
- в Fig. 3 & Table 1 есть интересный эксперимент под обозначением “G = 1, I = 0”, i.e. Grow step = 1, Improve step = 0. то есть 0 раз файнтюнили на отфильтрованных генерациях и 1 раз расширили датасет (добавили к супервайзд датасету свои генерации). и по графикам результат улучшился. еще раз повторю - авторы натренировали с нуля модель, какое-то время пообучали, часть супервайзд разметки заменили на аутпуты модели (которые скорее всего хуже) и получили прирост. ват? звучит супер неинтуитивно (но я могу ошибаться и возможно это супер открытие, на которое не делают акцент авторы, а могли бы)

помимо последнего пункта, где по сути ухудшили датасет и улучшился результат, в целом папира норм. я бы попробовал применить или дальше потыкаться в этом направлении

👀LINK
1111
Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping

yet another paper on испоьзование трансформеров в задаче планирования

только стоит уточнить, что здесь планирование имеется в виду в плане “создания последовательности действий в уме”, а не непосредственное действие в игре или где бы то ни было еще

авторы взяли в качестве алгоритма, с помощью которого собирали датасет, A*. он в принципе интуитивно понятный, поскольку в реализации своей опирается на underestimated расстояние до цели (как если бы до нее можно было дойти в лоб, без препятствий - admissible heuristic) + исследует сначала ближайшее пространство вокруг себя, потом передвигается к более дальним точкам → в совокупности эти пункты дают работающий бейзлайн, умеющий в нужное планирование

основная идея заключается в том, что мы можем подавать трансформеру в качестве промпта не просто изначальное состояние игры (например, где ты в лабиринте находишься и куда надо прийти + где расположены стены и все такое) и таргет в качестве последовательности действий, которая приводит к цели, а еще и процесс построения A* оптимального маршрута со всеми шагами алгоритма

и (уже скорее неудивительно) это улучшает результат! сходится намного быстрее к топ перформансу, да еще и намного меньше по размерам моделька нужна для этого

есть даже тейк от авторов, что трансформер начинает сходится к цели быстрее, чем A*. и он действительно сходится быстрее, чем семплы из датасета, которые принадлежат A*, но я не соглашусь с тем, что он сходится быстрее этого алгоритма, а скорее смог научиться действовать на оптимальном уровне A* (то есть природа планирования та же). такое может быть (as far as я понял из папиры), что A* может найти не полностью оптимальный маршрут, но близкий к нему (из-за порядка ветвления действий, метрики для расстояния до цели и такого остального, что вместе они называют non-deterministic A*, на чем и обучался трансформер)

имхо это важное уточнение - да, появляется оптимальный уровень, который превосходит тренировочные семплы, но природа остается та же, поскольку идет процесс имитации внутри слоев модели (и особенно важно это уточнение при разговоре об ин-контекст лернинге) + есть момент, что у трансформера больше информации на вход (координаты всех стен), чего на самом начале не распознает A*, но основного результата это не отменяет

👀LINK
👍443
Mitigating Partial Observability in Sequential Decision Processes via the Lambda Discrepancy

одна из больших проблем, от которой страдают рл алгоритмы в усложненных и более реалистичных средах - partial observability (in POMDPs), которая обозначает, что инпута на конкретном таймстепе не хватает модели для совершения оптимального действия → надо использовать каким-то образом память (либо обрабатывать несколько таймстепов, либо создавать отдельный буффер с репрезентациями и тд и тп)

далее, в рл часто используют методы Temporal Difference learning (про которые мы подробно упоминали здесь и с которыми связана еще одна крутая папира). TD методы это база Бытия, ибо они очень тесно связаны с дофаминергической системой нашего мозга (всплеск дофамина коррелирует с ошибкой предсказания награды, что по сути и моделирует TD)

но в вопросе partial observability они в сыром виде начинают хромать. есть альтернатива - monte carlo returns (MC), где мы ниче не моделируем и напрямую считаем реварды до конца чего бы то ни было. не оч эффективно → придумали трейдофф в виде TD(lambda), где lambda контролирует степень между TD & MC

и как есть трейдофф к TD(lambda), так же есть разные степени частичной наблюдаемости данных (partial observability), и авторы смогли вывести дифференцируемую метрику, которая определяет степень частичной наблюдаемости (или non-Markovianity как хотите называйте) - по сути две функции ценности с разными lambda, и она отлично различает МДП от ПОМДП

а поскольку эта штука дифференцируема - ее можно использовать в качестве доп лосса на “привитие” нейронки мдп свойств (с учетом, что как-то реализована память для помдп сеттинга) в рамках задач, которые это не предусматривают. получаем лучшую интерпретируемость и результат. вкусно? - вкусно.

правда эксперименты пока на средах небольшого скейла, посмотрим, как это приживется в более емких задачах

👀LINK
431
Towards General-Purpose In-Context Learning Agents

yet another paper on область, которую мало кто понимает, но гугл ?почему-то? делает патенты на ее счет. а именно статья про In-context Meta-Reinforcement Learning от пхд студента шмидхубера (и самого шмидхубера)

so, какие идеи новые они привнесли для расширения картины?

- по-другому собирают транзишны для подачи в трансформер
- обучают на оч разных тасках, я бы сказал гетерогенных (от картпола до муджоко)
- повышают вариативность и обобщающие способности путем рандомных проекций (которые для удобства еще и приведены к одному размеру по всем задачам), что уже делалось здесь
- + в задаче моделирования последовательности действий делают интервал между таймстепами для контекста, непосредственно та подпоследовательность, которая подается в трансформер, и таргет действиями. то есть авторы предсказывают не следующее действие относительно контекста (как классически делают next-token prediction в языковом моделировании) а с небольшим разрывом вправо, который тем не менее отвечает за более быструю сходимость трансформера как агента (главный контрибьюшн статьи имхо)

результаты норм, усреднены аж по 32 сидам по классическим средам. что ок

плохо только что кода нет и разъяснений по поводу того, как именно применяются рандомные линейные проекции на техническом уровне и как от них раскодировать аутпуты модели (которые приведены к одной размерности для удобства, но для разных тасок природа действий может быть совершенно разной)

👀LINK
👍211