tgoop.com/neural_cat/61
Last Update:
Помните трюк backtranslation, который мы когда-то применяли для аугментации данных на задачи machine translation, text classification, etc? Давайте использовать эту идею, чтобы намайнить больше данных для обучения инструктивных моделей.(instruction, output)
дообучим LM.
Шаг 1. Возьмем небольшой (3к+ сэмплов), но очень качественный датасет инструкций (seed data). Обучим LLaMa по ответу генерировать инструкцию P(x|y)
Шаг 2. Для большого корпуса из ответов (500к текстов из интернета) генерируем соответсвующие инструкции. То есть пытаемся по ответам понять, какой был запрос.
Шаг 3. Фильтруем получившийся датасет, чтобы оставить только качественные данные. Для этого обучаем инструктивную модель M_0 на seed data и ей даем задачу оценить пару (instruction, output)
по 5-ти балльной шкале
Шаг 4. Дообучаем M_0 на этих синтетических данных (с оценкой >= 5), получаем модель M_1
Шаг 5. Повторяем процесс фильтрации синтетических данных — фильтруем их с помощью M_1 и дообучаемся до M_2
Готово! Вы получили модель, которая работает лучше, чем LIMA (LLaMa, дообученная на несколько тысячах очень качественных данных). А самое главное — вы сами ничего не размечали, это сделала сама модель.
На практике, конечно, делать нужно не так. Фильтровать синтетические данные нужно самой лучшей моделью (GPT4 so far). Обучать обратную модель P(x|y) нужно на большем количестве данных, а не только на seed.
📎 Статья