Разговор на кухне
Модели с размышлением, "reasoning models", известные также как модели с CoT (Chain of Thought, поток мыслей)
Это o1 от OpenAI, DeepSeek-R1, нашумевший в последнюю неделю, и вот буквально сегодня o3-mini опять от OpenAI
Эти модели умеют перед окончательным ответом выстраивать "поток мыслей", выглядящий очень женским, во многих случаях, подгонка под формат "поток мыслей" уже известного результата:
• ставится вопрос, или задача
• находит правильный ответ (как именно, неизвестно ровно в том же смысле, как и для не-"размышляющей" модели, типа ChatGPT-4o, или Claude, или Llama, никогда не было известно)
Но, получив ответ, модель не дает его сразу, а симулирует логично выглядящий поток "размышлений" (научившись это делать в результате тренировки именно этой способности), который рано или поздно к нему приводит
А мы, думаем, что понимаем, как модель пришла к ответу
Например ChatGPT-о1 решает задачу следующего вида:
У меня есть предложение с пропущенным словом
Подбери слово так, чтобы предложение стало верным и напиши его правильно
Я обозначу пропущенное слово тремя подчерками
Вот предложение:
"В этом предложении ровно ___ букв"
Это "рекурсивная" задача - записывая пропущенное число буквами, мы меняем общее число букв
Подходят ответы "тридцать семь" или "тридцать девять"
Изменил при этом предложение на
"В этом предложении аж ___ букв"
чтобы не сработало известное решение, и чтобы уменьшить шансы того, что задача именно в этом виде встречалась в корпусе тренировки ("аж" просторечное слово)
Модели решили этот вариант задачи (правильный ответ "тридцать" - я специально не проверял перед тем, как спросить, и не знал даже, есть ли решение)
Но то, как они описывали свой поток мыслей, оказалось весьма интересным, по крайней мере в случае DeepSeek:
Хорошо, пользователь дал предложение с пропущенным словом: "В этом предложении аж ___ букв"
Нужно подобрать подходящее слово, чтобы предложение стало верным
Сначала я должен понять, что требуется
Пользователь хочет, чтобы я вставил слово вместо трёх подчёркиваний так, чтобы предложение было правильным
Возможно, это задание на самоссылающиеся предложения или на подсчёт количества букв
Нужно проверить, сколько букв будет в предложении, если вставить туда определённое слово
Предложение сейчас выглядит так: "В этом предложении аж ___ букв"
Если я вставлю какое-то числительное, например, "тридцать", то нужно посчитать общее количество букв в предложении
Но тогда само предложение должно содержать правильное число букв
Это как известный пример самоссылающихся предложений
Давай попробуем
Пусть пропущенное слово — "тридцать"
Тогда предложение будет:
"В этом предложении аж тридцать букв"
Теперь посчитаем количество букв:
В - 1
э - 1
т - 1
о - 1
...
Считаю буквы: получается 28 букв
Но если вставить "тридцать", то утверждение будет неверным, так как букв 28, а не 30
Значит, "тридцать" не подходит
Модель сразу пробует правильный ответ (тридцать), но при этом неверно считает буквы и получает 28
Попробую другое число
Например, "двадцать восемь"
Тогда предложение будет: "В этом предложении аж двадцать восемь букв" Посчитаем буквы:
В (1), э(1), т(1), о(1),м(1), п(1), р(1), е(1), д(1), л(1), о(1), ж(1), е(1), н(1), и(1), и(1), а(1), ж(1), д(1), в(1), а(1), д(1), ц(1), а(1), т(1), ь(1), в(1), о(1), с(1), е(1), м(1), ь(1), б(1), у(1), к(1), в(1)
Слишком много, получится больше 30 букв
Возможно, не подходит
Может, попробовать "двадцать семь"?
Тогда предложение: "В этом предложении аж двадцать семь букв"
Считаю буквы:
[...] Опять много
Похоже, такой подход не работает
Возможно, нужен другой подход
Может, использовать слово, которое обозначает количество букв в самом предложении с этим словом
То есть, самоссылающееся предложение. Например, если вставить "двадцать пять", то предложение должно содержать 25 букв
Проверю:
[...] Не подходит
[еще несколько такого рода подходов]
Может, пользователь имеет в виду что-то другое
Например, слово "пять" или "шесть"
Проверим:
[...] Не подходит
Возможно, ответ — "тридцать"
Хотя ранее подсчитали, что с "тридцать" получается 28 букв, но может, я ошибся в подсчёте
Давай ещё раз:
Предложение: "В этом предложении аж тридцать букв"
Считаем каждую букву:
Да, точно 30 букв
Значит, если вставить слово "тридцать", то предложение будет верным, так как в нём 30 букв
Раньше я ошибся в подсчёте, теперь вижу, что правильно
Значит, правильный ответ — "тридцать"
Правильный ответ "тридцать" был у модели с самого начала, и она пыталась подогнать под него "размышления"
Сначала не получилась, неверно подсчитала буйвы, потом тыкалась туда-сюда, потом опять вернулась к этой тридцатке, и наконец смогла правильно проверить уже известный ей (непонятно откуда, "из модели") ответ
По-моему, такое происходит часто и в менее очевидных случаях, когда модели удается подобрать логично выглядящее "оправдание" в виде того, как она якобы пришла к ответу
А мы принимаем это оправдание за "нахождение" ответа путем логического мышления