На прошлой неделе статья про 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%. То есть “чего хотят люди” это голосование. Примерно в каждом четвёртом случае второй человек голосует иначе.
Самая дешёвая модель вознаграждения
До всякого обучения я записал ожидания. Первое было такое: тупое правило уже даёт больше 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. Всё, что идёт вместе с длиной (больше подробностей или больше копирования), она награждает чаще, чем люди, которые кликали.
Тянем ответ к награде
InstructGPT тянет ответ к награде обучением с подкреплением, PPO, а его я здесь запустить не могу. Способ проще называется best of n: сгенерировать n ответов и оставить тот, у которого награда выше. В WebGPT его использовали в декабре.
Политика, то есть модель, которая пишет ответы, у меня это обычный GPT-2 small без всякого дообучения. Промпт это пост и потом “TL;DR:”. Я брал по 16 сэмплов на пост при температуре 0,7, не длиннее 48 токенов, с обрезкой на первом переводе строки, для 100 постов из проверочной части. Из 1600 пересказов 134 пустых. Для каждого поста я посчитал по всем подмножествам из n сэмплов, какой из них оставит моя модель вознаграждения.
| n | слов | триграмм скопировано из поста | пустых |
|---|---|---|---|
| 1 | 21,5 | 6,2% | 8,4% |
| 4 | 30,0 | 10,4% | 0,4% |
| 16 | 35,4 | 16,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”. Победитель для него ровно это предложение. Он по теме и повторяет ровно то, что читатель только что прочитал.
Что я из этого вынес
Ожидания про длину и копирование подтвердились. Модель вознаграждения дала 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 без дообучения, так что модель вознаграждения выбирает между текстами модели, которую никто не учил пересказывать.
- Никто не оценивал, лучше ли выбранные пересказы для человека. Я мерил только длину и долю скопированного.