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
MiniLLM: Knowledge Distillation of Large Language Models
немножко basic arithmetics для повторения - кл дивергенция, хоть интуитивно всегда и подразумевается расстоянием между 2мя распределениями, по факту несимметрична относительно своих переменных
как оказывается, если поменять переменные с привычных нам мест, то 1) это мы уже будем называть reverse KL (а стандартный вариант forward KL) и 2) так мы сможем лучше фиттить самый высокий пик в мультимодальных распределениях, в то время как форвард кл будем фиттить нечто среднее и приплюснутое.
такой сетап довольно хорошо ложится на дистилляцию - вшиваем в мелкую модель только то, что точно выдает большая модель бОльшую часть времени, стараясь не отвлекаться на всякий шум и тд и тп (получаем более-менее неявный вид вычленения только релевантных фичей как тут)
и авторы такое и делают. правда еще обучают через полиси градиент, особо не поясняя, почему именно так. видимо ничего другое не заработало, а рл заработал 😎😎 😎 (да, в аппендиксе у них есть обоснование, почему они свели именно к формулировке рля, но кмк оно недостаточно, ибо любой супервайзд сетап можно тем или иным образом свести к рл и обучать по заветам этой области)
для каждого степа формулируют ревард через log-odds между тичером и стьюдентом как меру качества + по пути справляются с жестким разбросом реварда, ревард хакингом через повторение токенов и нормализацию по длине генерации. звучит вполне круто и даже можно верить результатам imho
скейл учителей только относительно небольшой (максимум 13В). смею спекулировать, что при увеличении тичера дисперсия полиси градиентов будет еще хлеще и придется несладко.
👀LINK
немножко basic arithmetics для повторения - кл дивергенция, хоть интуитивно всегда и подразумевается расстоянием между 2мя распределениями, по факту несимметрична относительно своих переменных
как оказывается, если поменять переменные с привычных нам мест, то 1) это мы уже будем называть reverse KL (а стандартный вариант forward KL) и 2) так мы сможем лучше фиттить самый высокий пик в мультимодальных распределениях, в то время как форвард кл будем фиттить нечто среднее и приплюснутое.
такой сетап довольно хорошо ложится на дистилляцию - вшиваем в мелкую модель только то, что точно выдает большая модель бОльшую часть времени, стараясь не отвлекаться на всякий шум и тд и тп (получаем более-менее неявный вид вычленения только релевантных фичей как тут)
и авторы такое и делают. правда еще обучают через полиси градиент, особо не поясняя, почему именно так. видимо ничего другое не заработало, а рл заработал 😎
для каждого степа формулируют ревард через log-odds между тичером и стьюдентом как меру качества + по пути справляются с жестким разбросом реварда, ревард хакингом через повторение токенов и нормализацию по длине генерации. звучит вполне круто и даже можно верить результатам imho
скейл учителей только относительно небольшой (максимум 13В). смею спекулировать, что при увеличении тичера дисперсия полиси градиентов будет еще хлеще и придется несладко.
👀LINK
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Transformers need glasses! Information over-squashing in language tasks
мы уже упоминали о том, что трансформеры могут быть чувствительны к чувствительным инпутам, и авторы недалеко отошли от этих выводов, но и заметили еще другое интересно
они выявили нестабильность не на уровне леернормы/весов, как в прошлой работе, а на уровне внутренних репрезентаций токенов. как оказывается, чем длиннее последовательность, тем ближе репрезентации последних токенов становятся друг к другу (и неразличимыми впоследствии. это при условии, что последовательности более-менее похожи, но не одинаковы) + происходит серьезная затычка с флоу информации на последних токенах через декодер, поскольку у них намного меньше путей по прокидыванию этой самой информации по сравнению с более ранними токенами
ну и получаем то, что получаем. на вход идет чувствительная задача ⇒ трансформер точно так же чувствительно (плохо) и неидеально отвечает. при том верно для большого и маленького скейла. эмпирическое подкрепление их теории сделано на 7б модели (в принципе экспы провоили га гемини и гемме)
однако вместе с этими выводами пришли и интересные инсайты
- в трансформере присутствует U-shape тенденция к запоминанию: таска лучше решается, если релевантные для нее токены находятся рядом с началом/концом последовательности
- если “разбавлять” чувствительную последовательность, например, добавлять периодически запятые, то репрезентации становятся более различимыми и все идет smoother
довольно занятно, ибо такие же фичи свойственны и человеческой способности к запоминанию, да и решение с запятыми по сути так же помогает нам не сбиться с адекватного поглощения текстовой информации
👀LINK
мы уже упоминали о том, что трансформеры могут быть чувствительны к чувствительным инпутам, и авторы недалеко отошли от этих выводов, но и заметили еще другое интересно
они выявили нестабильность не на уровне леернормы/весов, как в прошлой работе, а на уровне внутренних репрезентаций токенов. как оказывается, чем длиннее последовательность, тем ближе репрезентации последних токенов становятся друг к другу (и неразличимыми впоследствии. это при условии, что последовательности более-менее похожи, но не одинаковы) + происходит серьезная затычка с флоу информации на последних токенах через декодер, поскольку у них намного меньше путей по прокидыванию этой самой информации по сравнению с более ранними токенами
ну и получаем то, что получаем. на вход идет чувствительная задача ⇒ трансформер точно так же чувствительно (плохо) и неидеально отвечает. при том верно для большого и маленького скейла. эмпирическое подкрепление их теории сделано на 7б модели (в принципе экспы провоили га гемини и гемме)
однако вместе с этими выводами пришли и интересные инсайты
- в трансформере присутствует U-shape тенденция к запоминанию: таска лучше решается, если релевантные для нее токены находятся рядом с началом/концом последовательности
- если “разбавлять” чувствительную последовательность, например, добавлять периодически запятые, то репрезентации становятся более различимыми и все идет smoother
довольно занятно, ибо такие же фичи свойственны и человеческой способности к запоминанию, да и решение с запятыми по сути так же помогает нам не сбиться с адекватного поглощения текстовой информации
👀LINK
❤3
Return-Aligned Decision Transformer
another alternative to улучшить Decision Transformer (который мы упоминали и здесь)
есть проблемка в том, что аттенш не так уж и сильно обращает внимание на ретерн в подаваемом контексте, оттого и могут возникать проблемы при предикте действий, оод, да и в принципе дестабилизация модели при инференсе (и обучении as well)
как это решили авторы? разбили входную последовательность на 2 модальности - returns-to-go + state/action, а не как одна последовательность state-action-return.
после этого применяют то, что они назвали SeqRA & StepRA: по сути это чуть модифицированный кросс аттеншн над 2 модальностями и адаптивная леернорма соответственно. при том оба этих модуля усложняют флоу информации внутри сетки относительно ретерна, ибо эти модули ставят большую на него акцентуацию ⇒ повышается чувствительность к реварду и точность как следствие
чем глобально полезна эта статья? описанный рабочий (по крайней мере по заверениям авторов) метод, как добавить более осмысленную обработку гетерогенных рл данных, ибо часто (и особенно в рл) такое происходит, что не работает то, что работает в остальных областях. например, наивный кросс аттеншн - сделать 3 модальности под state action return - вряд ли работает, иначе авторы бы так не ухищрялись
супер обидно, что они не выложили код, потому что импакт их статьи по сути в том, что они вставили в трансформер блок те модули, стабильность которых крайне сильно зависит от имплементации (и может например не заработать со стандартным nn.LayerNorm из торча, если имплементация на нем, ибо из генеративных сетей есть эвиденс, что без bias’a леернорма и рмснорма работают лучше)
👀LINK
another alternative to улучшить Decision Transformer (который мы упоминали и здесь)
есть проблемка в том, что аттенш не так уж и сильно обращает внимание на ретерн в подаваемом контексте, оттого и могут возникать проблемы при предикте действий, оод, да и в принципе дестабилизация модели при инференсе (и обучении as well)
как это решили авторы? разбили входную последовательность на 2 модальности - returns-to-go + state/action, а не как одна последовательность state-action-return.
после этого применяют то, что они назвали SeqRA & StepRA: по сути это чуть модифицированный кросс аттеншн над 2 модальностями и адаптивная леернорма соответственно. при том оба этих модуля усложняют флоу информации внутри сетки относительно ретерна, ибо эти модули ставят большую на него акцентуацию ⇒ повышается чувствительность к реварду и точность как следствие
чем глобально полезна эта статья? описанный рабочий (по крайней мере по заверениям авторов) метод, как добавить более осмысленную обработку гетерогенных рл данных, ибо часто (и особенно в рл) такое происходит, что не работает то, что работает в остальных областях. например, наивный кросс аттеншн - сделать 3 модальности под state action return - вряд ли работает, иначе авторы бы так не ухищрялись
супер обидно, что они не выложили код, потому что импакт их статьи по сути в том, что они вставили в трансформер блок те модули, стабильность которых крайне сильно зависит от имплементации (и может например не заработать со стандартным nn.LayerNorm из торча, если имплементация на нем, ибо из генеративных сетей есть эвиденс, что без bias’a леернорма и рмснорма работают лучше)
👀LINK
Improving Conversational Abilities of Quantized Large Language Models via Direct Preference Alignment
несмотря на то, что есть супер классные работы по квантизации фаундейшн моделей (и в принципе любых), китайцы нашли частный случай квантизации, где любого (по их интуиции) метода PTQ не будет хватать для нормального качества
и это случай диалоговых моделей - conversational abilities, как показывают авторы, сильно ухудшаются после квантизации. а потому они предлагают по-особому алайнить уже квантизованную версию заалайненной модели
используют стандартный ДПО, только в качестве негативных примеров используются генерации квантизованной версии, а позитивные - генерации модельки в full precision → снижаем шансы попасть в момент accumulating error при авторегрессионной генерации относительно изначальной модельки + дообучаем веса, чтобы разница в численной точности нивелировалась внутри KV кеша
таким образом, без создания доп датасета, получаем более-менее восстановление способностей в диалог (которые не всегда коррелируют с перплексией, которую только и измеряют в вопросе общей квантизации)
прикольная вещь, только нет гарантии, что эта вещь пригодится при том же AQLM. однако забывать про такую идею явно не стоит
👀LINK
несмотря на то, что есть супер классные работы по квантизации фаундейшн моделей (и в принципе любых), китайцы нашли частный случай квантизации, где любого (по их интуиции) метода PTQ не будет хватать для нормального качества
и это случай диалоговых моделей - conversational abilities, как показывают авторы, сильно ухудшаются после квантизации. а потому они предлагают по-особому алайнить уже квантизованную версию заалайненной модели
используют стандартный ДПО, только в качестве негативных примеров используются генерации квантизованной версии, а позитивные - генерации модельки в full precision → снижаем шансы попасть в момент accumulating error при авторегрессионной генерации относительно изначальной модельки + дообучаем веса, чтобы разница в численной точности нивелировалась внутри KV кеша
таким образом, без создания доп датасета, получаем более-менее восстановление способностей в диалог (которые не всегда коррелируют с перплексией, которую только и измеряют в вопросе общей квантизации)
прикольная вещь, только нет гарантии, что эта вещь пригодится при том же AQLM. однако забывать про такую идею явно не стоит
👀LINK