Не поиском едины.



Вчера вечером посмотрел интересное от Яндекса.



Митап ML в Белграде. Команда поиска рассказывала о своём опыте с LLM.



Мне были интересны первые два доклада. Поэтому мои заметки ниже.



Доклад 1. Про генерацию рекламных предложений в поиске:



Ситуация такая, что ребята делают генерацию шаблонов предложений на GPTlike. Далее при помощи DSSM-BERT + catboost выдают лучший кандидат. Радует, что схема классическая, энкодеры и бустинги всё ещё живут и помогают в выдаче. А не "давайте всё перенесём на генеративные с К бошками, пусть и генерит и реранкит".



От себя. Я бы в кандидаты добавил кроме сгенерированных шаблонов, созданные при помощи людей, преднаписанные или вообще конструктор на аннотаторах (модели такие а-ля NER, topic и тп), где в шаблоны просто филятся кандидаты по полям. Далее это всё вместе уже с генеративной реранкал, чтобы добавить надёжности.



Доклад 2. Сладкий RLHF в LLM для поиска.

(Крч хайп, балдёж и всё такое.)



Очень интересный срез опыта команды alignment LLM в поиске.



Рассказали важное, tldr:



1. Ещё раз напомнили, что PPO не стабильно и делают DPO.

2. Схема CCE => DPO работает хорошо.

3. Best of N или RL для бедных, всё ещё лутает и на батч генерации и на инференсе.

4. DPO требователен к размеру сета.

5. Умный сэмплинг с параметров, ранее полезных для оценки на корзинках, даёт направленное выравнивание.



Теперь подробнее про DPO пункты 2-4:



В общем, ребята не юзают PPO, но берут reward модельку для получения синтетики. А именно, гоняют пассажи и генерации к ним через модель награды и кормят DPO алгоритму эту разметку, получают +5% качества.



Потом идут ещё дальше, и берут

топ2 по скору пары из reward для дообучения в cross entropy (по сути ещё шаг файнтюна) с их LLM. После врубают DPO и модель радостно сходится и даёт ещё +4% win rate.

При этом, CE шаг работает с DPO дословно: ТОЛЬКО в последовательности сначала sft-CE на top2 потом DPO. Отмечают, что ещё DPO требователен к размеру дата сета и нужно порядка 50-100к пар, чтобы завелось.

Ну и такой сэмплинг не только помогает на обучении, но и на генерации ответа, выбор топ1 по награде даёт лучший winrate +7%. Правда зовут они это фильтрацией 😁



В общем, зачем козе баян CE+DPO и почему это работает?

Такие вопросы я задал себе. И подумав, предположил, что дело в направленной сходимости к некоторой области весов сети. Эту область мы достигаем через reward sampling+CE файнтюн (как прям при прогреве ???). Далее уже в этой области мы при помощи DPO доусаживаем веса до оптимального набора и не разлетаемся к хренам. Таким образом ,CE подход напоминает направленную регуляризацию, по аналогии с KLD в PPO? А почему бы не делать для надежности сходимости в PPO также. N шагов с CE, K шагов с PPO и по кругу 🤔



Замечание: тк в центре всего тут reward моделька, то её нужно натренировать максимально качественно и надёжно. Быть уверенным , что она реально хорошо отражает preferences. От себя добавлю, для обучения такой модели нужен сбалансированный сет, без перекосов по стилю и длине текстов. Иначе ваша награда быстро найдёт как разделить такие тексты (по тому же стилю или длине).



На сладкое пункт 5. Что это за такой сэмплинг умный?



Ответ простой. Давайте будем просить размечать генерации не только как хороший/плохой, а ставить доп параметры: безопасный, интересный, информативный и тп.

Далее будем использовать это one-hot кодирования для того, чтобы сэмплить примеры с нужным набором 0/1 по данным осям. Так мы получили на батч генерации направленное выравнивание по нужным нам свойства на оценке метрик! Вот западает у вас безопасность и интересность, берём и семплим где стоят у примеров 1ки по этим параметрам. Но ребята пошли дальше, и разбили такие наборы на группы и раздали веса (экспертно или на прогонах выбрали) для сэмплирования, аля вероятности взять в батч. Ещё +1.5% к качеству. Красиво, молодцы. 😏



Фух, вроде всё. Советую очень посмотреть это 📹 по ссылке во вложении. Я кайфанул, думаю вы тоже оцените.