Выбор данных, малые языковые модели и Шмидхубер
Большие языковые модели — это хорошо, но интересно, можно ли получить сравнимое качество на малых моделях. Вести диалог с GPT-2 не получится, а тем более написать диплом или научную статью. Она и другие small language models (SLM) по большей части выдают слабый текст, даже если обучить их на всей Википедии.
Возможно, тут стоит вспомнить теорию Шмидхубера, который, как известно, всё придумал.
С 1990 года он разрабатывал теорию творчества и внутренней мотивации. Формально она применима не только и не столько к машинному обучению, а вообще к любому творческому процессу. Основной ингредиент шмидхуберовской теории — это внутренняя мотивация, которая зависит от интереса. То есть, механизм поощрения не внешний, а внутренний, зависящий от самого обучающегося агента. Суть его в том, что интересно учиться только тому, что может дать новый паттерн, открыть новый скил (это и будет поощрением). Если какое‑то действие не приносит нового, то это неинтересное действие, оно не даст поощрения.
Возвращаясь к языковым моделям, можно предположить, что попытка обучать маленькую модель на большом датасете очень похожа на попытку дать учебник по матану дошкольнику. Освоить новое не получится, поощрения не будет. Результат будет ожидаемо плохим, — ребенок не сможет пересказать ни одну теорему, а модель выдаст бессвязный текст. Если продолжать эту логику, то небольшой модели нужен небольшой (но качественный!) датасет. Такой, который она сможет переварить. Такой, который будет ей, по Шмидхуберу, интересен.
Для реализации этого есть, как минимум, два подхода, с помощью которых можно поддержать внутреннюю мотивацию. Первый — сгенерировать нужный датасет с помощью LLM. Второй — отобрать нужный датасет из сырого корпуса по заданным правилам. В обоих случаях нужно добиться, чтобы маленький датасет сохранял все основные характеристики данного языка — грамматику, логику, структуру. Да, в обоих случаях способности модели на выходе будут лексически ограничены в пределах этого маленького датасета, но качественны в этих же пределах.
Громкий пример первого подхода в апреле этого года продемонстрировали в Microsoft. С помощью «взрослого» GPT создали корпус рассказов для детей 3–4 лет. Обучение SLM на этом датасете, который назвали TinyStories, длится меньше дня на одном GPU. Авторы попробовали обучить несколько нейросетей с небольшим количеством параметров (от 1 миллиона) и сравнили с GPT-2 XL (1,5 миллиарда) на том же промпте.
Самая большая SLM, которую обучили на TinyStories (80 миллионов), дает почти идеальные показатели грамматики и последовательности, хотя и уступает GPT-4 по креативности (GPT-4 scoring). Тот же подход авторы продолжили реализовывать в phi-1 и phi-1.5, которые обучили на качественном контенте из The Stack и StackOverflow и на сгенерированных GPT учебниках, плюс наборе задачек с решениями на питоне. Старшая модель (1,3 миллиарда параметров) работает не хуже Llama-7b от Meta.
Второй возможный подход — отобрать качественные данные из сырого датасета с учетом того, какой результат хочется получить на выходе. Так поступили в Стэнфорде. Авторы предложили фреймворк Data Selection with Importance Resampling. Чтобы отобрать хорошие данные из большого корпуса (они взяли The Pile — 890GB текста из научных статей, википедии, формуов и новостей) используется маленький целевой датасет с нужным «качеством» языка. Здесь плюсом является то, что целевой язык может быть любым (а не только, например, рассказы для 3–4 летних детей). Готовый датасет для обучения выбирается из исходного корпуса так, чтоб он максимально сокращал расхождение Кульбака‑Лейблера с целевым датасетом по сравнению с рандомной выборкой.
Похожую, но model‑driven, идею предложили в Google. Там качество выборки оценивают по степени self‑influence (SI). То есть степень, с которой данный датасет влияет на качество модели. С помощью SI авторы фильтруют шум из исходного датасета. Сначала тем выборкам, на которых SI лучше, отдается приоритет и обучение идет на них. На втором этапе приоритет снимается.
Почти цитируя Шмидхубера, авторы из Оксфорда, ускорили обучение за счет того, что модель не тратит время на те данные, из которых нельзя ничему научиться, или которые уже были «пройдены». То есть почти в буквальном смысле игнорирует неинтересные по Шмидхуберу источники. По такой «программе обучения» та же accuracy достигается в 18 раз быстрее, а максимальная оказывается на 2% выше.
Думаем, вскоре можно ждать более полную реализацию шмидхуберовского подхода к построению curriculum learning для языковых моделей. В конце концов, есть простая и понятная мера сложности текста для языковой модели — ее перплексия на тексте, и, возможно, построение curriculum таким образом позволит ускорить обучение языковых моделей.
Больше наших обзоров AI‑статей на канале Pro AI.