Many-Shot In-Context Learning
дипмаинды провели оч много компьюта в попытке улучшить ин-контекст способности (своей модели гемини 1.5, благо она пробила челлендж в 1 миллион токенов контекста)
что же придумали? давайте просто повысим количество ин-контекст примеров и посмотрим, насколько все улучшится. улучшение есть? - конечно, что и должно быть интуитивно понятно, только хотелось бы еще более-менее узнать зависимость результата от количества ин-контекст примеров
но и кстати не всегда эта интуиция работает - на математике, например, результат может ухудшиться
но в чем может быть загвоздка? human-like супервайзд примеры не так-то просто собрать, потому что по сути это экспертные данные ⇒ давайте попробуем что-то вроде рейнфорса и ансупервайзд подхода
- рейнфорс подход: заставим модель саму отвечать на ин-контекст запросы, и оставлять те, на которые она ответила правильно (потому что порой в домене от человека намного легче спросить, правилен ли ответ модели, нежели попросить сделать экспертную разметку самому - по крайней мере такое преподают авторы)
- ансупервайзд подход: давайте просто в качестве ин-контекст примеров подавать семплы без ответов
прирост в большей степени, по результатам авторов, дает ансупервайзд подход, чем рейнфорс (но оба довольно сильно отстают от супервайзд подхода). но не стоит забывать, что так же по их результатам и гемини лучше перформит, чем гпт4 и claude (что может быть правдой, но так же и поводом для скепсиса)
энивей, это статья, которая эмпирически подтвердила интуицию о повышении ин-контекст примеров + показала интересный ансупервайзд подход + упомянула, что снижение лосса не коррелирует с появлением ин-контекст способностей ллм (о чем уже писали здесь)
👀LINK
дипмаинды провели оч много компьюта в попытке улучшить ин-контекст способности (своей модели гемини 1.5, благо она пробила челлендж в 1 миллион токенов контекста)
что же придумали? давайте просто повысим количество ин-контекст примеров и посмотрим, насколько все улучшится. улучшение есть? - конечно, что и должно быть интуитивно понятно, только хотелось бы еще более-менее узнать зависимость результата от количества ин-контекст примеров
но и кстати не всегда эта интуиция работает - на математике, например, результат может ухудшиться
но в чем может быть загвоздка? human-like супервайзд примеры не так-то просто собрать, потому что по сути это экспертные данные ⇒ давайте попробуем что-то вроде рейнфорса и ансупервайзд подхода
- рейнфорс подход: заставим модель саму отвечать на ин-контекст запросы, и оставлять те, на которые она ответила правильно (потому что порой в домене от человека намного легче спросить, правилен ли ответ модели, нежели попросить сделать экспертную разметку самому - по крайней мере такое преподают авторы)
- ансупервайзд подход: давайте просто в качестве ин-контекст примеров подавать семплы без ответов
прирост в большей степени, по результатам авторов, дает ансупервайзд подход, чем рейнфорс (но оба довольно сильно отстают от супервайзд подхода). но не стоит забывать, что так же по их результатам и гемини лучше перформит, чем гпт4 и claude (что может быть правдой, но так же и поводом для скепсиса)
энивей, это статья, которая эмпирически подтвердила интуицию о повышении ин-контекст примеров + показала интересный ансупервайзд подход + упомянула, что снижение лосса не коррелирует с появлением ин-контекст способностей ллм (о чем уже писали здесь)
👀LINK
🔥1
HyenaDNA: Long-Range Genomic Sequence Modeling at Single Nucleotide Resolution
проблема ооооочень длинного контекста встречается в том числе и в задачах биологии, а именно в задаче геномике. например, геном человека состоит из 3.2 миллиардов нуклеотидов (это такие буковки-азотистые основания A C G T, называемые аденином цитозином и тд). в таких сценариях использовать аттеншн из-под коробки не айс
тогда стали как и в классическом нлп делать БПЕ токенизацию - отходим от single-character подхода и на основе частоты соединяем подпоследовательности. но это чревато потерей информации на уровне одного нуклеотида, который имеет серьезный вес для геномики
но как может решить проблему лаборатория Christopher’a Ré? - конечно же, при помощи не трансформера, а например hyena, субквадратичная по длине и (вроде) хорошая по генерализации архитектура, которая может здесь принимать вплоть до миллиона токенов контекста
получили фаундейшн модель для геномики (и не только), которая обрабатывает последовательность на уровне нуклеотидов (а не токенов, которые состоят из нескольких) + она намного меньше существующих моделей + обыгрывает на многих датасетах + вроде удобнее тюнить в виде софт промптинга (вставлять в качестве промпта обучаемые токены для даунстрим задачи, снижаем чуть уровень сек лена, но фризим основную модель
еще из интересного можно подметить то, что они не сразу обучали на такой длинной последовательности, а периодически увеличивали сек лен во время обучения в 2 раза, начиная 64 (и расширились до миллиона) → some sort of warmup
интересно посмотреть, как себя будет вести гиена на гораздо бОльшем скейле модели
👀LINK
проблема ооооочень длинного контекста встречается в том числе и в задачах биологии, а именно в задаче геномике. например, геном человека состоит из 3.2 миллиардов нуклеотидов (это такие буковки-азотистые основания A C G T, называемые аденином цитозином и тд). в таких сценариях использовать аттеншн из-под коробки не айс
тогда стали как и в классическом нлп делать БПЕ токенизацию - отходим от single-character подхода и на основе частоты соединяем подпоследовательности. но это чревато потерей информации на уровне одного нуклеотида, который имеет серьезный вес для геномики
но как может решить проблему лаборатория Christopher’a Ré? - конечно же, при помощи не трансформера, а например hyena, субквадратичная по длине и (вроде) хорошая по генерализации архитектура, которая может здесь принимать вплоть до миллиона токенов контекста
получили фаундейшн модель для геномики (и не только), которая обрабатывает последовательность на уровне нуклеотидов (а не токенов, которые состоят из нескольких) + она намного меньше существующих моделей + обыгрывает на многих датасетах + вроде удобнее тюнить в виде софт промптинга (вставлять в качестве промпта обучаемые токены для даунстрим задачи, снижаем чуть уровень сек лена, но фризим основную модель
еще из интересного можно подметить то, что они не сразу обучали на такой длинной последовательности, а периодически увеличивали сек лен во время обучения в 2 раза, начиная 64 (и расширились до миллиона) → some sort of warmup
интересно посмотреть, как себя будет вести гиена на гораздо бОльшем скейле модели
👀LINK
Locally Typical Sampling
rizzearch throwback
мы уже упоминали неидальность maximum likelihood метода вот здесь: задача состоит в максимизации самого правдоподобного из трейна токена, а что будет с остальными - неважно. отчего могут образовываться длинные хвосты в распределении токенов
почему это может быть проблемой? при семплировании всегда есть ненулевая вероятность получить рандомный токен вместо более-менее приемлемого. особенно это остро встает, когда распределение становится остроконечным, и рандомные токены так же острее мешают инференсу
но это малая и не особо вероятная беда. авторы поднимают проблему информативности токенов при их генерации и связыают это с психолингвистами + information theory
в чем идея? как оказывается, самый правдоподобный токен (в терминах likelihood’a) не может быть самым информативным относительно данного контекста, ибо он самый правдоподобный. люди, вроде бы, генерируют свою речь по-другому, стараясь придавать новую информацию каждый раз, при этом сохраняя приверженность контексту
на языке математики это значит что каждый токен находится недалеко относительно ожидаемой энтропии всей последовательности, а значит каждый токен желательно делать не самым вероятным (и не самым невероятным)
как они это реализуют? просто обрубают пик распределения над логитами + обрубают хвосты (при помощи трешхолда от 0 до 1) ⇒ получаем информативно разнообразную адекватную последовательность
тестировались на абстрактной суммаризации и стори генерации, в принципе получилось неплохо. но пригодится такое конечно далеко не во всех задачах
еще интересно подумать над тем, как авторы сдвигают парадигму мышления относительно перплексии: надо не минимизировать ее, а стараться сделать такой же, какая свойственна человеку
👀LINK
rizzearch throwback
мы уже упоминали неидальность maximum likelihood метода вот здесь: задача состоит в максимизации самого правдоподобного из трейна токена, а что будет с остальными - неважно. отчего могут образовываться длинные хвосты в распределении токенов
почему это может быть проблемой? при семплировании всегда есть ненулевая вероятность получить рандомный токен вместо более-менее приемлемого. особенно это остро встает, когда распределение становится остроконечным, и рандомные токены так же острее мешают инференсу
но это малая и не особо вероятная беда. авторы поднимают проблему информативности токенов при их генерации и связыают это с психолингвистами + information theory
в чем идея? как оказывается, самый правдоподобный токен (в терминах likelihood’a) не может быть самым информативным относительно данного контекста, ибо он самый правдоподобный. люди, вроде бы, генерируют свою речь по-другому, стараясь придавать новую информацию каждый раз, при этом сохраняя приверженность контексту
на языке математики это значит что каждый токен находится недалеко относительно ожидаемой энтропии всей последовательности, а значит каждый токен желательно делать не самым вероятным (и не самым невероятным)
как они это реализуют? просто обрубают пик распределения над логитами + обрубают хвосты (при помощи трешхолда от 0 до 1) ⇒ получаем информативно разнообразную адекватную последовательность
тестировались на абстрактной суммаризации и стори генерации, в принципе получилось неплохо. но пригодится такое конечно далеко не во всех задачах
еще интересно подумать над тем, как авторы сдвигают парадигму мышления относительно перплексии: надо не минимизировать ее, а стараться сделать такой же, какая свойственна человеку
👀LINK
👍5❤2 2 1
Dynamic Stochastic Decoding Strategy for Open-Domain Dialogue Generation
авторы из китая придумали адаптивную температуру. все.
а если поподробнее - авторы реализуют отдельную голову, котора выдает скор разнообразности генерации, и этот скор потом преобразуется в температуру для основного семплинга. преобразований может быть несколько - линейное, экспоненциальное и инверс сигмоида
обучали голову через берт, который показывает похожесть последовательностей → из степени похожести можно вывести степень непохожести и обучать
при том рассказывают, что можно обучать в разных сетапах (фризить основную модель или обучать все вместе), при этом саму адаптивную температуру использовать уже на этапе трейна. выглядит довольно сомнительно, ибо если нигде не врубать стопградиент оператор, то может сильно так перехерачить сходимость этой самой головы (а то и всей модели, если не фризим веса). но кода нет и уточнений по поводу стопградиента тоже, можеть быть это моя паранойя, кто знает
бенчмаркали (если это можно так назвать, потому что датасет они частично собирали сами, частично еще что-то, но в открытый доступ выкладывать не будут) только на диалоговой таске, но можно применять конечно и в других задачах, где нужны разнообразные ответы ллм
и это все на китайских данных
👀LINK
авторы из китая придумали адаптивную температуру. все.
а если поподробнее - авторы реализуют отдельную голову, котора выдает скор разнообразности генерации, и этот скор потом преобразуется в температуру для основного семплинга. преобразований может быть несколько - линейное, экспоненциальное и инверс сигмоида
обучали голову через берт, который показывает похожесть последовательностей → из степени похожести можно вывести степень непохожести и обучать
при том рассказывают, что можно обучать в разных сетапах (фризить основную модель или обучать все вместе), при этом саму адаптивную температуру использовать уже на этапе трейна. выглядит довольно сомнительно, ибо если нигде не врубать стопградиент оператор, то может сильно так перехерачить сходимость этой самой головы (а то и всей модели, если не фризим веса). но кода нет и уточнений по поводу стопградиента тоже, можеть быть это моя паранойя, кто знает
бенчмаркали (если это можно так назвать, потому что датасет они частично собирали сами, частично еще что-то, но в открытый доступ выкладывать не будут) только на диалоговой таске, но можно применять конечно и в других задачах, где нужны разнообразные ответы ллм
и это все на китайских данных
👀LINK
👍3🔥1
WARP: On the Benefits of Weight Averaged Rewarded Policies
так-так, что-то тут опять дипмаинд намудрили в алайменте
в ходе их следственно-розыскных мероприятий было выявлено, что во время алаймента может наблюдаться
- хакинг ревард модели, которая никогда не может быть идеальной
- катастрофическое забывание из-за ограниченности алаймент датасета (а порой и сфт датасета)
- ну и это выливается в общем счете в потерю вариативности генераций
что же делать? как нам быть? ну, эти авторы думают, что раз доп регуляризации и лоссы не особо помогают, то можно попробовать напрямую мержить веса по образу и подобию ЕМА. но оказалось не все так просто и они используют аж 3 разных способа, которые работают последовательно
- вместо того, чтобы по классике накидывать кл лосс между сфт весами и рлхф весами, тут в качестве якоря используется ЕМА самой полиси, чтобы была и стабилизация, и постепенный апдейт
- далее идет обучение аж нескольких полиси (М штук), которые затем интерполируют между собой и между сфт весами. при том интерполяция не просто линейная, а сферическая относительно сфт весов. почему? да скорее всего потому что с линейной просто не завелось, а дожать до результатов хотелось
- ну и в конце итерации меняем инит модель относительно которая выступает сфт якорем в начале обучения, чтобы обновление весов происходило еще плавнее(ну или возможно мы снова делаем ЕМА на полиси веса, я sooka запутался пока читал их статью и перепутанные обозначения в псевдокоде)
вообще выглядит немного костыльно, мол
с другой стороны, может в этом и суть папиры - не всегда стоит вдаваться в теорию, а порой вот такая итеративная долбежка может улучшить скор (хоть и не на долгосрок)
👀LINK
так-так, что-то тут опять дипмаинд намудрили в алайменте
в ходе их следственно-розыскных мероприятий было выявлено, что во время алаймента может наблюдаться
- хакинг ревард модели, которая никогда не может быть идеальной
- катастрофическое забывание из-за ограниченности алаймент датасета (а порой и сфт датасета)
- ну и это выливается в общем счете в потерю вариативности генераций
что же делать? как нам быть? ну, эти авторы думают, что раз доп регуляризации и лоссы не особо помогают, то можно попробовать напрямую мержить веса по образу и подобию ЕМА. но оказалось не все так просто и они используют аж 3 разных способа, которые работают последовательно
- вместо того, чтобы по классике накидывать кл лосс между сфт весами и рлхф весами, тут в качестве якоря используется ЕМА самой полиси, чтобы была и стабилизация, и постепенный апдейт
- далее идет обучение аж нескольких полиси (М штук), которые затем интерполируют между собой и между сфт весами. при том интерполяция не просто линейная, а сферическая относительно сфт весов. почему? да скорее всего потому что с линейной просто не завелось, а дожать до результатов хотелось
- ну и в конце итерации меняем инит модель относительно которая выступает сфт якорем в начале обучения, чтобы обновление весов происходило еще плавнее
вообще выглядит немного костыльно, мол
давайте попробуем ЕМА - не заработало. окей, давайте тогда сверху накинем еще какой-то мерж весов. и здеся не оч, ну тогда не забудем в финальный аутпут приправить то, с чего начинали - сфт веса. о - вот теперь норм
с другой стороны, может в этом и суть папиры - не всегда стоит вдаваться в теорию, а порой вот такая итеративная долбежка может улучшить скор (хоть и не на долгосрок)
👀LINK
❤1
Training Language Models to Self-Correct via Reinforcement Learning
hey, мы уже упоминали рл с многоходовочкой в контексте алаймента
и тут авторы (и в частности известный в рл кумар) продвинули это в моменте селф-коррекции. но звучит все не так страшно и непонятно, как на практике
стараются максимизировать ревард со второго захода, когда опционально залетает второй промпт о неправильности/просьбой скорректировать генерацию. при том заметили нюанс, что на обучении модель сразу будет пытаться выдать все четко с первого раза, что не очень имитирует сценарии на инференсе
→ повозились с кл дивергенцией и разной постановкой максимизации реварда. сначала KLD считают относительно первого промпта во время первой стадии обучения, а максимизируют оверолл ревард. далее делают как обычно и максимизируют и регуляризуют по старинке по всем промптам
еще и говорят о возможности добавить шейпинга реварда через разницу ревардов между вторым и первым промптами для мотивации в селф-коррекцию непосредственно. правда не понял, почему авторы считают, что эта разница должна быть больше 1.0, когда она должна быть больше 0. можеть быть этот шейпинг выступает в конечной формуле где-то в виде степени для экспоненты и тогда все ок, но дипмаинды почему-то и это решили оставить за кулисами :)
как обычно остается много вопросов - сколько по времени обучения должны идти стадии обучения (где по-разному считаются реварды и кл дивергенции), какие есть вычислительные нюансы, которые сразу не бросаются в глаза, где код и тд и тп
правда зная имплементации кумара, только🌟 Господь🌟 полностью может знать, что скрывается в коде для того, чтобы этот метод работал
👀LINK
hey, мы уже упоминали рл с многоходовочкой в контексте алаймента
и тут авторы (и в частности известный в рл кумар) продвинули это в моменте селф-коррекции. но звучит все не так страшно и непонятно, как на практике
стараются максимизировать ревард со второго захода, когда опционально залетает второй промпт о неправильности/просьбой скорректировать генерацию. при том заметили нюанс, что на обучении модель сразу будет пытаться выдать все четко с первого раза, что не очень имитирует сценарии на инференсе
→ повозились с кл дивергенцией и разной постановкой максимизации реварда. сначала KLD считают относительно первого промпта во время первой стадии обучения, а максимизируют оверолл ревард. далее делают как обычно и максимизируют и регуляризуют по старинке по всем промптам
еще и говорят о возможности добавить шейпинга реварда через разницу ревардов между вторым и первым промптами для мотивации в селф-коррекцию непосредственно. правда не понял, почему авторы считают, что эта разница должна быть больше 1.0, когда она должна быть больше 0. можеть быть этот шейпинг выступает в конечной формуле где-то в виде степени для экспоненты и тогда все ок, но дипмаинды почему-то и это решили оставить за кулисами :)
как обычно остается много вопросов - сколько по времени обучения должны идти стадии обучения (где по-разному считаются реварды и кл дивергенции), какие есть вычислительные нюансы, которые сразу не бросаются в глаза, где код и тд и тп
правда зная имплементации кумара, только
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Stochastic Q-learning for Large Discrete Action Spaces
есть классический рл, который на самом деле очень даже интересный и полезный: Q-learning, который в стандартном сетапе создает табличку num_states x num_actions и производит обновление по правилу Беллмана и тд и тп
но что делать если num_actions → inf? (случай, когда num_states → inf можно решать чуть по-другому)
перебирать не по всему пространству, конечно же. но как? и вот авторы подумали как, и теоретически выявили, что на каждом шаге достаточно семплить всего лишь порядка log[num_actions] с округлением вверх, и обновление q-learning’a осуществлять только по этим действиям. при том можно семплить чуть меньше, и хранить вместе с этим буффер уже используемых действий (которые хранятся в связи с exploration соображениями). и, по теории, этого достаточно! супер пупер найс, казалось бы, если не принимать во внимание тот факт, что тестились они на классических средах где не оч много действий (например, 256), когда такая идея с лог сайз буффером и семплингом имеет место быть с количества действий начиная от 10к например.
еще кстати развивают эту идею не только на табулярку, но и на DQN etc. и вроде бы тоже works fine. к тому же можно так же побаловаться с непрерывнями действиями - дискретизировать их и применить этот стохастичный метод, тогда у них в экспах количество действий становилось 4096, что уже становится не оч для рл алгосов, а потому метод (возможно) имеет место быть
смущает только то, что все обучение делали на цпу (немного кринжа в ленту), да и код был бы очень кстати, что именно они запускали и как именно реализовали память и момент семплинга
да и сделать бы им какое-то расширение сред с дейстительно огромным количеством действий, где такое явно необходимо
👀LINK
есть классический рл, который на самом деле очень даже интересный и полезный: Q-learning, который в стандартном сетапе создает табличку num_states x num_actions и производит обновление по правилу Беллмана и тд и тп
но что делать если num_actions → inf? (случай, когда num_states → inf можно решать чуть по-другому)
перебирать не по всему пространству, конечно же. но как? и вот авторы подумали как, и теоретически выявили, что на каждом шаге достаточно семплить всего лишь порядка log[num_actions] с округлением вверх, и обновление q-learning’a осуществлять только по этим действиям. при том можно семплить чуть меньше, и хранить вместе с этим буффер уже используемых действий (которые хранятся в связи с exploration соображениями). и, по теории, этого достаточно! супер пупер найс, казалось бы, если не принимать во внимание тот факт, что тестились они на классических средах где не оч много действий (например, 256), когда такая идея с лог сайз буффером и семплингом имеет место быть с количества действий начиная от 10к например.
еще кстати развивают эту идею не только на табулярку, но и на DQN etc. и вроде бы тоже works fine. к тому же можно так же побаловаться с непрерывнями действиями - дискретизировать их и применить этот стохастичный метод, тогда у них в экспах количество действий становилось 4096, что уже становится не оч для рл алгосов, а потому метод (возможно) имеет место быть
смущает только то, что все обучение делали на цпу (немного кринжа в ленту), да и код был бы очень кстати, что именно они запускали и как именно реализовали память и момент семплинга
да и сделать бы им какое-то расширение сред с дейстительно огромным количеством действий, где такое явно необходимо
👀LINK
❤3 1 1