tgoop.com/startup_custdev/88
Last Update:
Явные и неявные рассуждения
В Универе я сейчас занимаюсь двумя вещами: долгосрочной памятью и рассуждениями LLM. Про первое мы уже много говорили: существует миллионы подходов RAG - один из видов реализации памяти. А что насчет рассуждений? Сейчас мы работаем, по-моему мнению, над безумно классной статьей по ним, но давайте сначала посмотрим, что за виды рассуждения существуют.
Высокоуровнево, помимо общих дедуктивных, индуктивных и остальных ивных типов, рассуждения в LLM делятся на два типа: явные и неявные.
Явные
Ярким представителем этого типа является Chain-of-Though - когда мы моделе говорим: думай по шагам, напиши рассуждения по пунктам и т.п. То есть в качестве ответа, модель перед ответом выдает еще и логику, по которой она этот ответ получила. Таким образом сейчас работает o1 - перед ответом она долго рассуждает, чтобы получить ответ.
Если модель получает задачу «2 + 2 = ?», она может явно рассуждать следующим образом:
1. Первое число — это 2.
2. Второе число — это 2.
3. 2 плюс 2 равно 4.
К плюсам можно отнести:
Объяснимость - легко проверить логику модели при решении этой задачи и найти ошибки, так как все написано на человеческом языке. Вопрос, правда, а действительно ли она этой логике следовала остается открытым.
Контроль - в каком-то плане, благодаря объяснимости, намного легче становится найти, где модель ошибается и что-то не понимает, и изменить контекст в соответствии с этим: включить больше примеров или изменить логику решения задачи.
Дольше думаем = лучше результат - эмперически показали, что это новое измерение для скейлинга результатов - можно не увеличивать количество слоев сетки, а дать ей больше времени "на рассуждения". Ограничение здесь только в контексте модели.
Неявные
Как можно было понять из названия, эти рассуждения действительно неявные... То подаешь модели на вход задачу, и она где-то там в своих скрытых слоях, перемножая матрицы и доставая знания из FFN, решает, что 2+2 действительно 4. Естественно, что такой подход намного сложнее объяснять, контролировать и тем более скейлить. Если хочешь "более умную" модель, то нужно увеличивать количество слоев (предпологая, что с данными мы сделали уже все, что возможно). Один кошмар, в общем - зачем копать в эту область?
В целом, неявные рассуждения в каком-то смысле проще: если посмотреть на то, как решают эти задачи, то это довольно часто сложная 3-4 этапная схема, с 5 подпроцессами, которая требует кучу вычислений. К плюсам неявных систем можно отнести простоту: данные на вход, данные на выход и все, остальное - вера в бога и что ллм все же поймет, что делать. Естественно, есть кое-что еще.
Если вы помните недавнюю статью про рассуждения трансформеров, там упоминался феномен гроккинга. Это когда модель сначала переобучается на тренировочной выборке с 0% точности на тестовой, потом очень долго тренируется, и в конце находит какой-то супер эффективный алгоритм решения задачи и достигает 100% точности на тестовой выборке. Звучит круто, но как вы можете помнить из статьи, гроккинг пока на реальных задачах не применяется, только на "лабораторных" простых датасетах. Жаль, конечно - подумал я и предложил коллегам как эту проблему можно исправить.
Короче, мы применили гроккинг к реальным наборам данным и задачам рассуждения и, так же, как и на игрушечных примерах, достигли около 100%. Детали расскажу чуть позже - когда опубликуем бумагу на архиве, но полученные результаты мне очень нравятся.
BY Идеальный стартап
Share with your friend now:
tgoop.com/startup_custdev/88