Почему языковые модели научились предсказывать числовые величины и почему это до сих пор странно, или «Что снится роботам»
Есть кластер задач, который выглядит скучно, но кормит половину мировой экономики. «Сколько будет стоить эта квартира?» «Сколько дней займёт доставка товара получателю?» «Какое количество посетителей будет в магазине в субботу?» «Какой будет расход электричества дата‑центра за неделю?»
Выглядят эти задачи однотипно: на входе набор известных заранее данных, а на выходе одно конкретное число. Статистики и специалисты по машинному обучению называют это регрессией, а для остальных это «прогноз», с которым они работают на ежедневной основе.
Последние полтора десятка лет эти задачи решали инструменты, о которых обычный человек никогда и не слышал. К примеру, XGBoost. Устроены эти инструменты как перечень примерно из двадцати вопросов, на которые необходимо последовательно ответить. «Дорогой ли район?» «Больше трёх комнат?» и так далее. Заданные в определённом порядке, они относительно точно приводят к ответу. Работает быстро, себестоимость копеечная, принцип понятен на всех уровнях руководства.
А потом выяснилась неожиданная вещь. Языковые модели (LLM), которые обычно помогают нам писать письма и придумывать креативы, умеют делать то же самое, а иногда даже точнее.
Давайте разберёмся почему.
Языковые модели не видят чисел
Главное, что я хочу подчеркнуть в этом разделе: языковые модели не работают с числами. Только текст. Всегда и без исключений.
Когда вы пишете модели «3,14», на вход она получает не величину, а строку символов — примерно как слово «привет». Внутри строка разбивается на кусочки, причём механически: не больше трёх цифр за раз, слева направо. Число 1234 разваливается на «123» и «4». Число «12345» разбивается уже на «123» и «45», то есть совсем в другом месте. Дробь «3,14159» превращается в набор «3», «,», «141», «59». Разрез проходит там, где удобно токенизатору, а не там, где проходит граница между тысячами и сотнями.
Небольшое уточнение: у моделей OpenAI сегодня так; у Llama, например, каждая цифра отдельно — но сути это не меняет.
Из этого следует поразительное. Числа «999» и «1000» для нас соседи, между ними единица. Но «999» модель получает одним куском, а «1000» уже двумя, причём первый из этих кусков ровно такой же, как у числа «100», которое меньше в десять раз. Форма записи ничего не говорит о величине. Никакого встроенного «больше‑меньше» между кусками не заложено.
Представьте человека, который никогда не учил арифметику, но прочитал миллион таблиц с цифрами. Он не может сложить два и два. Но он видел столько закономерностей, что научился чувствовать: если в этой колонке большое, а в той маленькое, то в последней будет примерно вот столько. Не потому, что сейчас посчитал, а потому, что узнал форму.
Именно это языковые модели и делают. И вот тут переходим ко второму разделу статьи.
И это всё же работает!
В 2024 году исследователи из Аризонского университета и Технического университета Клуж‑Напоки (Румыния) поставили прямой эксперимент. Взяли математическую функцию и сгенерировали сотню примеров, каждый из которых состоял из набора исходных чисел и верного ответа. Ввели всё это как запрос модели в виде обычного текста в чат и попросили LLM угадать ответ для новой строки, которой в таблице не было.
Без дообучения и дополнительной настройки. На синтетических функциях. Само правило ей не сообщали ни разу и она должна была нащупать его сама, глядя на примеры.
И нащупала. Проверяли на GPT-4 и Claude 3 — они отвечали примерно так же точно, как специализированные программы, созданные для этой задачи и уже пятнадцать лет считающие прогнозы в банках, магазинах и логистике. На одном из самых запутанных правил, Friedman #2, Claude 3 обошёл сразу пять таких программ, а GPT-4, к примеру, выдала в ответ 726,89 при правильном 689,01.
Причём дело не в том, что взяли самые дорогие модели. Открытые модели, которые может скачать и запустить любой желающий, например Mixtral 8×22B, в среднем тоже обыграли случайный лес — один из самых ходовых классических инструментов.
Но по‑настоящему интересна вторая половина этого эксперимента. Число примеров увеличивали: двести, триста, пятьсот. И ответы продолжали становиться точнее с каждой добавленной порцией.
Вот это уже не спишешь на везение. Обычно, чтобы языковая модель лучше справлялась с задачей, её надо дообучать: собрать данные, запустить обучение на мощных серверах, подождать часы или дни, посадить рядом инженера. Здесь ничего этого не было. Модель просто читала присланный текст и прямо по ходу чтения соображала, что к чему.
Это как если бы человек, глядя на таблицу, постепенно нащупывал закономерность, но делал это за секунды и на данных, которых никогда раньше не встречал.
Как с этим работают?
Проблему того, что модель не понимает чисел, решают в лоб: заставляют её произносить число по цифрам, как диктор по телефону — «семь, два, точка, пять» вместо неопределённого куска текста.
Звучит примитивно, но работает удивительно хорошо. Google построил на этом принципе целое семейство моделей и применяет их не в лаборатории, а на своей реальной инфраструктуре для предсказания расхода ресурсов в системе, которая управляет вычислительными кластерами компании.
Побочный эффект оказался ценнее основного. Обычный прогнозный инструмент выдаёт одно число и молчит о том, насколько он в нём уверен. И оценка уверенности тут требует дополнительной работы.
А у языковой модели есть настройка, отвечающая за разнообразие ответов. Её можно зажать почти до нуля, и тогда модель будет упрямо повторять один и тот же ответ. Но при обычных настройках, задав один и тот же вопрос пять раз, вы получите пять слегка разных чисел. Долгое время это считали недостатком: прогнозный инструмент, который каждый раз отвечает по‑новому, выглядит как сломанный. Оказалось, это бесплатная оценка уверенности.
Но что всё же не так?
Теперь поговорим о том, о чём пишут в заметках реже.
За краем карты.
Ни один стандартный прогнозный инструмент не надёжен там, где данных до этого не было. Но ломаются они по‑разному, и разница здесь принципиальна.
Вернёмся к игре в двадцать вопросов. Ответ такой программы всегда собран из уже виденных цен, по факту она их усредняет, и ничего больше. Если она училась на квартирах от одного до пяти миллионов, значит, произнести что‑то дороже она физически не способна. Не «не хочет», а неоткуда взять. Спросите про стоимость особняка на побережье Флориды и получите миллиона четыре с половиной, среднее по самому дорогому, что попалось в обучении. И сколько бы ни росла стоимость особняка, прогноз классического инструмента будет упираться в этот потолок и идти ровной горизонтальной чертой.
Языковая модель ответ не собирает, а называет. Потолка у неё нет: про стоимость особняка она вполне может сказать «двадцать миллионов» — и это будет ответ не из таблицы, а из общих представлений о том, сколько стоят особняки. Иногда это спасает.
Но «нет потолка» — не то же самое, что «попадает». LLM тоже промахивается, просто без предупреждения и в любую сторону.
Ответ зависит от того, как записаны данные.
Возьмите одну и ту же таблицу. Сформируйте запрос к модели по этой таблице и зафиксируйте у себя ответ. Переставьте в таблице строки местами. Данные в ней по факту не изменились. Спросите модель снова. Ответ будет другим. Округлите числа до двух знаков вместо четырёх. И ответ снова изменится. Для генерации текста это мелочь. Для системы, которая считает страховые премии или решает, выдавать ли клиенту кредит, это недопустимо.
У классической программы такого не бывает по устройству. Она смотрит на каждую строку по отдельности, поэтому переставляйте их сколько угодно — ответ не изменится. Округление она тоже переносит спокойно. Обученная программа на одних и тех же данных выдаёт один и тот же ответ, всегда и на любом компьютере. Языковая модель такой гарантии не даёт.
Цена прогноза.
Один прогноз языковой моделью стоит на несколько порядков больше, чем классическим методом. На десяти прогнозах в день разница незаметна. На десяти миллионах прогнозов это уже отдельная строка бюджета, которую придётся защищать.
В своей же дисциплине языковые модели уже проиграли.
Пока все обсуждали, догонят ли языковые модели классические инструменты на таблицах, выросло новое поколение программ, заточенных под таблицы и ни под что больше. Самая известная называется TabPFN, и статья о ней вышла в начале 2025 года в журнале Nature, что для прикладного инструмента прогнозирования большая редкость.
Заявленный результат тестирования звучит почти неприлично. На небольших таблицах она обыгрывает связку лучших классических методов, которой дали четыре часа на подбор настроек, — и тратит на это меньше трёх секунд.
На независимом сравнении TabArena такие модели действительно держатся в верхней части списка. Но две оговорки стоит проговорить сразу. Самое первое место занимают всё‑таки не они, а тяжёлый комбайн, который перебирает десятки подходов подряд и работает те самые четыре часа. И к составлению этого сравнения причастны исследователи из той же лаборатории, что выпустила TabPFN.
И самое главное: языковыми моделями они не являются. Текст они не читают, слов не понимают, смысла в названиях колонок не видят. Зато с голыми числовыми таблицами они обращаются лучше всех.
Когда же использовать LLM?
Короткий ответ: реже, чем кажется по заголовкам, но чаще, чем считают скептики.
Не берите языковую модель, если у вас чистая таблица с сотнями тысяч строк, есть время на настройку и нужен воспроизводимый результат. Классические инструменты дешевле, быстрее и надёжнее. Пятнадцать лет их доминирования доказали неслучайность выбора.
Берите обязательно, когда:
Данных почти нет. Двадцать строк в таблице — это ничто для игры в двадцать вопросов. Чтобы вопросы получились осмысленными, программе нужны сотни и тысячи примеров. На двадцати она не выведет правило, а просто вызубрит эти двадцать строк и на двадцать первой сядет в лужу. Языковой модели двадцати примеров хватает, потому что она не строит правило с нуля — она узнаёт знакомую форму. Новый продукт, новый рынок, новая аптека в незнакомом районе, любая ситуация, где статистики просто не существует.
Одна оговорка. Если таблица голая и числовая, на таких объёмах вас, скорее всего, обойдут те самые специализированные модели из предыдущего раздела. Языковая модель выигрывает там, где в данных есть текст и смысл, а не только цифры.
Среди данных есть текст. Отзывы, описания, комментарии, свободные текстовые поля, которые никто не заполняет по единому шаблону. Классический инструмент требует сначала превратить это в числа, теряя половину смысла. Языковая модель читает как есть.
Названия колонок несут смысл, которого нет в цифрах. Для классического метода колонка «этаж» — это просто число от 1 до 25 и не больше. Языковая модель знает, что первый этаж хуже пятого, а с последним — как повезёт.
Данные приходят каждый раз в разном виде. Разные поставщики, разные форматы документов, разные наборы полей. Там, где обычный инструмент требует единой жёсткой таблицы, языковая модель просто читает то, что дали.
И есть пятый сценарий — самый практичный из всех. Пусть языковая модель не прогнозирует, а готовит почву: просмотрит данные, предложит, какие признаки стоит добавить, напишет код, проанализирует возможные искажения. А само число посчитает старый добрый проверенный классический инструмент прогнозирования.
Выводы
Языковая модель предсказывает числа не потому, что она научилась считать. Она научилась узнавать форму закономерности в тексте, и, как оказалось, этого неожиданно достаточно для очень многих задач.
У этой способности LLM есть цена: непредсказуемость, стоимость и отсутствие гарантий. Есть и границы: там, где данных много и они аккуратные, старые инструменты по‑прежнему выигрывают. А ещё с недавних пор специализированные модели для работы с таблицами составляют весомую конкуренцию LLM.
Но там, где данных мало, а смысла много — в описаниях, в названиях, в человеческом контексте, — модель, которая читает, обходит модель, которая только считает.
И это, пожалуй, главный сюжет всей нашей истории. Не «нейросети победили статистику». А «умение понимать, о чём вообще идёт речь, иногда важнее умения считать».
ссылка на оригинал статьи https://habr.com/ru/articles/1067418/