dimhold.by
← Статьи

Я обучил модель вознаграждения на 16 000 голосов с Reddit. Длину она любит больше, чем сами голосовавшие

На прошлой неделе статья про InstructGPT появилась на arXiv. У себя на сайте OpenAI выложила её ещё в январе. Главное утверждение такое: люди предпочли ответы модели на 1,3 млрд параметров, дообученной на обратной связи от людей, ответам GPT-3 на 175 млрд. Я прочитал и понял, что сам говорю “обучена на обратной связи от людей”, а что это за обратная связь физически, сказать не могу. Кто-то куда-то кликает и ответы становятся лучше. Вот такой у меня был уровень магии.

До InstructGPT та же группа делала это на пересказах постов с Reddit. В 2020 году они выложили сырые клики, так что я их скачал и попробовал повторить механизм на 4 ядрах процессора.

Что такое клик

Данные это summarize_from_feedback от OpenAI. Каждая строка это пост с Reddit, 2 коротких пересказа к нему и тот, который выбрал человек. У части строк есть ещё оценка уверенности и заметки, но причины выбора нет. В обучающей части 92 858 таких сравнений, в проверочной 83 802 на других постах.

Некоторые пары размечали несколько человек. В посте про девушку, с которой автор познакомился в отпуске полтора года назад и до сих пор к ней неравнодушен, 11 человек сравнили одни и те же 2 пересказа и разделились 6 на 5. По всем повторно размеченным парам в проверочной части 2 разметчика согласны в 72,5% сравнений, в обучающей в 74,7%. То есть “чего хотят люди” это голосование. Примерно в каждом четвёртом случае второй человек голосует иначе.

1 пост, 2 пересказа, 11 человек Пост: Me [21 M] with my...idk [19 F] Just not sure what to do. Пересказ A 6 голосов Had a great time with a great girl. Left for vacations 1 1/2 years ago and keep in contact. Still have feelings for her. Relationship just started. Don't know if I should tell her how I feel or move on. Пересказ B 5 голосов Had an amazing time with this girl before we had to leave for summer vacation 1 1/2 years ago. Still have feelings for her and want to pursue relationship w/ her. Don't know whether to tell her or not.
Обратная связь здесь это клик по одному из 2 текстов. По всем повторно размеченным парам в проверочной части 2 человека согласны в 72,5% случаев.

Самая дешёвая модель вознаграждения

До всякого обучения я записал ожидания. Первое было такое: тупое правило уже даёт больше 55%. Правило “выигрывает более длинный пересказ”. На проверочной части оно угадывает в 58,0% случаев, ничьи не в счёт. В среднем в выбранном пересказе 28,4 слова, в отвергнутом 26,6. Стиннон с соавторами, которые собирали эти данные, в своей статье уже делали поправку на длину.

Потом линейная модель, логистическая регрессия из scikit-learn 1.0.2. Каждый пересказ превращается в мешок слов и пар слов плюс логарифм длины. По разнице между 2 пересказами модель учится угадывать, какой выбрали. Это модель Брэдли и Терри 1952 года, та же формула, что в логистическом варианте шахматного рейтинга Эло. Первый прогон оказался хуже одной только длины, 56,9%, потому что я не подобрал регуляризацию. После подбора на отложенной части обучающих данных вышло 58,3% на проверочной. Одна длина в той же модели даёт 57,7%. Получается, 103 587 признаков из слов добавили полпункта. Веса понятные, но скучные. У “ex”, “relationship”, “boyfriend”, “wedding” вес с плюсом. Среди верхних слов многие про отношения и секс. Самый большой минус у “edit”. Одна из ранних моделей OpenAI иногда дописывала в конце пересказа строку “EDIT:” в духе Reddit. Люди голосовали против таких пересказов.

Настоящая модель вознаграждения, только маленькая

В статьях это большой трансформер с одним числом на выходе, поэтому я хотел GPT-2 small. На этой машине одна обучающая пара занимала около 7 секунд, то есть 16 000 пар заняли бы больше суток. Я взял MiniLM: 6 слоёв, 22 млн параметров, энкодер предложений 2021 года. Он читает пост и пересказ вместе, сверху 1 линейный выход. Функция потерь та же, что в статьях. Это минус логарифм сигмоиды от разницы наград выбранного и отвергнутого пересказа. Обучал на 16 000 пар за 1 проход. Оценки итоговой модели я отдельно перепроверил на torch 1.11 и transformers 4.17.

Проверял на 3000 пар из проверочной части. Там она угадывает в 60,3% случаев. На тех же парах длина даёт 57,5%, линейная модель 58,1%. После 2000 обучающих пар было 57,8%, после 8000 59,0%. Рост продолжался, но и шаг обучения к концу падал до нуля, так что промежуточные точки не чистые. На 772 парах, где пересказы отличаются по длине не больше чем на 10%, длина помочь не может. Там модель даёт 58,4%, значит, она выучила что-то кроме длины.

Среди этих пар, где длины разные, люди выбирали более длинный пересказ в 57,5% случаев. Модель вознаграждения предпочитает более длинный в 69,0%. После первых 2000 пар было 74,8%, то есть 3 раза из 4. Всё, что идёт вместе с длиной (больше подробностей или больше копирования), она награждает чаще, чем люди, которые кликали.

Как часто судья выбирает тот же пересказ, что и человек (3000 пар из проверочной части) монетка 50% выигрывает более длинный 57,5% линейная модель, слова и длина 58,1% модель вознаграждения, 16 000 пар 60,3% другой человек 72,5% Как часто судья предпочитает более длинный пересказ, в парах разной длины люди 57,5% модель вознаграждения после 2000 пар 74,8% модель вознаграждения после 16 000 пар 69%
Модель вознаграждения ненамного обходит длину и предпочитает более длинный пересказ чаще, чем люди, которые кликали.

Тянем ответ к награде

InstructGPT тянет ответ к награде обучением с подкреплением, PPO, а его я здесь запустить не могу. Способ проще называется best of n: сгенерировать n ответов и оставить тот, у которого награда выше. В WebGPT его использовали в декабре.

Политика, то есть модель, которая пишет ответы, у меня это обычный GPT-2 small без всякого дообучения. Промпт это пост и потом “TL;DR:”. Я брал по 16 сэмплов на пост при температуре 0,7, не длиннее 48 токенов, с обрезкой на первом переводе строки, для 100 постов из проверочной части. Из 1600 пересказов 134 пустых. Для каждого поста я посчитал по всем подмножествам из n сэмплов, какой из них оставит моя модель вознаграждения.

nсловтриграмм скопировано из постапустых
121,56,2%8,4%
430,010,4%0,4%
1635,416,1%0

Выбранный пересказ становится длиннее на 65%. В 54 постах из 100 лучший из 16 упирается в лимит в 48 токенов. 48 из них обрываются на середине предложения. У случайного сэмпла это случается в 22 постах.

Что копирования станет больше, я ждал: целые скопированные предложения Циглер с соавторами видели ещё в 2019 году. С GPT-2 без дообучения они у меня тоже появились. 17 сэмплов из 1600 длиной от 5 слов хотя бы на 90% состоят из триграмм поста. Большинство из них это просто кусок поста подряд. Модель вознаграждения ставит их в среднем на 2,8 место из 16. 7 из них оказались лучшими в своём посте. Один пост начинается словами “I met this girl online, we planned a date but by talking with her I saw some traits I’m not really sure I like”. Победитель для него ровно это предложение. Он по теме и повторяет ровно то, что читатель только что прочитал.

Best of n по модели вознаграждения, GPT-2 small, 100 постов слов в выбранном пересказе 21,5 n 1 26 n 2 30 n 4 33,1 n 8 35,4 n 16 триграмм скопировано из поста, % 6,2 n 1 8 n 2 10,4 n 4 13,4 n 8 16,1 n 16
Чем больше вариантов, из которых выбирает модель вознаграждения, тем длиннее пересказ и тем больше в нём скопировано из поста.

Что я из этого вынес

Ожидания про длину и копирование подтвердились. Модель вознаграждения дала 60,3%. Для GPT-2 small я ждал от 60 до 68%. Модель, которую пришлось взять, в 5 с лишним раз меньше. От линейной модели я ждал около 60%, а она дала 58,3%.

Ничего нового тут нет. Стиннон с соавторами в 2020 году показали, что если слишком сильно оптимизировать политику под модель вознаграждения, пересказы становятся для людей хуже. Дальше хочу посмотреть, что PPO сделает с такой наградой, если найду GPU.

Что я не проверял

  • PPO нет. Best of n показывает только направление, куда тянет награда.
  • 1 запуск обучения, 1 сид, 16 000 пар из 92 858.
  • Политика это GPT-2 small без дообучения, так что модель вознаграждения выбирает между текстами модели, которую никто не учил пересказывать.
  • Никто не оценивал, лучше ли выбранные пересказы для человека. Я мерил только длину и долю скопированного.