ЧАСТЬ 2: КАК ВООБЩЕ ОБУЧАЕТСЯ LLM - ВЕСА, PRE-TRAINING, POST-TRAINNING, GRADIENT
Начало тут
После разговора про дистилляцию у меня возник логичный вопрос: а как вообще обучается языковая модель? Интернет состоит не только из документации, научных статей и рецептов бабушки. Например, мы гуглим - как сделать чай? В интернете с одинаковой уверенностью могут написать "вскипяти воду", "насри в кастрюлю" и "укради чай у соседа". Почему после обучения модель обычно предлагает первый вариант, а не устраивает нам специальную кулинарную операцию?
На первом этапе модель учат решать до смешного простую задачу - угадывать следующий кусочек текста. Ей показывают начало предложения, она выдаёт вероятности продолжений, после чего ответ сравнивают с реальным текстом из обучающих данных. Если модель сильно ошиблась, получается большое значение ошибки, которое называют loss. Затем алгоритм немного изменяет веса, чтобы в следующий раз правильный вариант стал вероятнее.
Модель при этом не решает, какой автор в интернете умный, а какой долбоёб(потому что все такие). Нормальные инструкции по приготовлению чая просто встречаются намного чаще и в более согласованном контексте, чем советы насрать в чайник. Поэтому обычное продолжение получает большую вероятность, а случайная херня остаётся где-то на периферии распределения. Конечно, если сами данные систематически забиты мусором, магического детектора истины у модели не появится и мусор она тоже выучит.
Веса можно представить как миллиарды крошечных ручек настройки. Одна ручка не хранит отдельно факт "Москва является столицей России", потому что знания распределены по огромному количеству параметров. Модель делает предсказание, считает ошибку, а gradient descent определяет, в какую сторону немного сдвинуть эти ручки. Один шаг почти ничего не меняет, но после миллиардов повторений в весах оседает чудовищное количество связей между словами, фактами и контекстами.
Поэтому фраза "столица России" почти всегда продолжается Москвой, а Санкт-Петербург появляется рядом с уточнениями вроде "культурная" или "северная". Модель не достаёт значение из одной строки таблицы, а воспроизводит выученное распределение вероятностей. Для фактического вопроса один вариант может доминировать, а в вопросе "какой язык программирования лучший" вероятности размазаны между несколькими ответами. Конкретный результат там уже сильнее зависит от контекста, настроек генерации и последующего обучения.
После pretraining модель много знает, но остаётся просто очень мощной продолжалкой текста. На этапе post-training ей показывают, как выполнять инструкции, соблюдать формат, признавать неопределённость и не отвечать человеку как случайный форумный псих. Значительная часть привычного поведения ChatGPT появляется именно здесь, хотя базовые знания модель получила раньше. И вот это поведение тоже можно передавать через дистилляцию, потому что оно статистически проявляется в ответах учителя.
Студент получает вопрос, пытается ответить, сравнивает результат с ответом сильной модели и через тот же gradient descent меняет свои веса. Если примеров достаточно, он перенимает не только факты, но и способы декомпозиции, проверки гипотез и общения с пользователем. Никакой магии и переливания цифровой души тут нет, просто очень много качественных тренировочных пар. Но после этого уже понятнее, почему чужие ответы могут оказаться ценнее, чем очередная выгрузка сырого интернета.
Вот так то! Не сказать, чтобы это прям было полезно в ежедневной работе, но мне всё же интересно, как на низком уровне устроена эта магия, которая за нас будет теперь программировать всю жизнь.
AI Для Задротов. Подписаться.
Post #47
372

- 👍 4
- 🔥 3