Свежий Google Gemini, GPT-4 и математика
Вступление
Итак, Google всё-таки решилась выпустить в свет языковую модель Gemini не дожидаясь Нового Года, и, конечно, обещая революцию. Она де превосходит все публично доступные модели, и местами превосходит людей. Отдельной её особенностью является мультимодальность (в частности способность работать с изображениями и видео) в почти реалтайм режиме, чему есть довольно впечатляющие демонстрации.
Презентация пару дней назад
К счастью, одними демонстрациями дело не ограничилось, Google подключила новую языковую модель в свой чат-бот Bard, и её можно попробовать. Но есть несколько нюансов. Там доступна версия Gemini Pro, а все «чудеса на виражах» объявлены для Gemini Ultra, её мы увидим… когда-то. Кроме того, всё это доступно в »170 странах на английском языке (?!)». Евросоюз, соответственно, не вошёл, а понять это можно будет только по тому, что возле ответов появляется иконка PaLM2, а не «две переливающиеся звезды» как у Gemini (это название созвездия Близнецов, между прочим).
Признак того, что Gemini Pro не выдали
Надо сказать, что некоторое умение больших языковых моделей решать ещё и математические задачи было неожиданностью, почти такой же, как и большинство остальных их навыков, впрочем. Тут очень иллюстративна гифка Google о том, как с ростом числа параметров у модели «отрастает» чувство юмора, например:
Справа появляется зелёная надпись на 62+ млрд. параметров.
И если «владение» текстами и смыслами у текстовых моделей ещё как-то ожидаемо, то тут же вообще математика! Но, раз появилась в каком-то виде, пользователи немедленно стали предъявлять к этой способности требования, чтобы она за них проходила ЕГЭ по математике, и тому подобное. И следующий шаг, который разработчики обещали, это как раз умение ИИ «обратиться к специалисту». Microsoft первым делом научила через Bing GPT-4 ходить в Интернет, и это было большим шагом (ещё бы поиск там нормальный был…) Далее обещаны такие возможности, как запросы в специализированные математические движки и умение исполнять реальный код в виртуальном окружении.
В сети ещё будет много сравнений Gemini и GPT-4, есть таблицы, есть уже заказные ролики популярных ютуберов (Марк Робер вот, бывший инженер NASA, сделавший самый большой в мире игрушечный пистолет, снял, как Gemini помогает ему придумывать сценарий ролика). Ну, а я просто люблю математику.
Сравнение
Итак, приступим. Тестирование будет происходить на русском языке. Известно, что во времена «первых шагов» GPT, результаты на русском оказывались слабее, очевидным образом потому, что количество учебных текстов с использованием русского сильно уступало корпусу английского. Но потом случилось что-то, очень похожее на добавление дополнительной модели для перевода, а «рассуждения» как будто остались на одном универсальном языке — английском. По крайней мере, «невооружённым взглядом» качество результатов стало не отличить, для GPT. Надеемся, что Google идёт тем же путём.
Задача подвернулась на одной блогоплатформе, за что спасибо пользователю elicaster. И чтобы всё было совсем по-взрослому, она оказалась как раз очень мультимодальной — то есть картинкой довольно низкого разрешения.
Такое не стыдно и на капчу поставить
Microsoft Bing тут сразу поднял лапы, и попросил что «мне бы текстом задачу» (вообще не знаю, честно говоря, для чего у него там функция распознавания картинок). А Google таки проявил «мультимодальность» и довольно хорошо распознал текст. Правда, с формулами у него получилось что-то такое:
В задаче указано, что интенсивность поступления деталей в первые 30 минут работы цеха растет по закону:
a(t) = k_1 * t + k_1 * t * (k_1 - 1/90), k_1 = 1/10
Тут, конечно, много не насчитаешь. Но по крайней мере тут есть что скопировать и легко поправить:
Нет, первый закон на самом деле такой: a(t) = k_1 * t ^2 + k_2 * t (k_1 = 1/90, k_2 = 1/10)
Вы правы. В задаче указано, что интенсивность поступления деталей в первые 30 минут работы цеха растет по закону:
a(t) = k_1 * t^2 + k_2 * t, k_1 = 1/90, k_2 = 1/10
Тут кстати уже можно заметить, что с формулами он работает в стандартной нотации TeX. Это с одной стороны хорошо, чтобы потом где-то использовать, а с другой, это может стать довольно не человекочитаемо при росте сложности.
Но пара исправлений, и у нас есть полное условие задачи текстом, и даже слегка переструктурированное (но вроде Gemini сделала это уместно). Забыто только про расчёты в минутах, но это я добавлю руками. Выглядит как большой плюс Google:
Задача управления запасами
Цех начинает работать в 8 часов утра. С 12:00 до 13:00 обеденный перерыв. Окончание работы в 17:00.
Интенсивность поступления деталей из цеха на склад в течение первых 30 минут работы цеха растет по закону:
a (t) = k_1 * t^2 + k_2 * t, k_1 = 1/90, k_2 = 1/10
а затем до обеденного перерыва остается постоянной: 13 деталей в минуту.
Со склада с 9:00 до 12:00 равномерно забирают готовые детали в среднем по 10 деталей в минуту. После обеденного перерыва интенсивность поступления деталей из цеха на склад в течение первых 36 минут после начала работы растет по закону:
a(t) = k_3 * (t - to)^(1/2), k_3 = 1, to = 1300
а затем до конца смены остается постоянной: 7 деталей в минуту.
Со склада с 13:00 до 16:30 равномерно забирают готовые детали в среднем по 10 деталей в минуту.
Сколько деталей останется на складе к концу рабочего дня? (к обеденному перерыву?)
Решение Google
Теперь попробуем попросить решить. Тут заход сразу, конечно, с козырей.
Решение
Рассчитаем количество деталей, которое поступило на склад за первые 30 минут.
N_1 = a_1(t_1) * t_1
N_1 = (1/90 * 30^2) + (1/10 * 30)
N_1 = 9 + 3
N_1 = 12 детали
Рассчитаем количество деталей, которое поступило на склад за день без учета первых 30 минут.
N_2 = a_2(t_2) * t_2 - N_1
N_2 = (13) * 240 - 12
N_2 = 2880 детали
...
Заключение
В результате решения задачи было установлено, что к концу рабочего дня на складе останется 3108 деталей, а к обеденному перерыву — 12 деталей.
Проблемы тут есть и с логикой и с арифметикой. Интересно, что есть попытка применить шаблон «функция a от t», но в задаче это оправдано только для промежутков времени с «нелинейным» количеством деталей. Ну что ж, попробуем направить ИИ на путь истинный:
Во-первых кажется ты неправильно считаешь N_1. Ведь это получается количество деталей только в первую минуту.
Вы правы, я неправильно считал N_1. N_1 должно быть равно количеству деталей, поступивших на склад за первые 30 минут работы цеха.
N_1 = a_1(t_1) * t_1
N_1 = (1/90 * 30^2) + (1/10 * 30)
N_1 = 9 + 3
N_1 = 12 детали
...
Тут явно включился довольно типичный для генерирующих ИИ «режим политика»:
А что вы хотите от обучения в Интернете?
Будем точнее в наших инструкциях:
Текст задачи правильный, его не надо было менять. А вот количество деталей за первые 30 минут ты находишь неверно, там нужен интеграл.
Вы правы, я снова неправильно посчитал N_1. В данном случае нужно использовать интеграл для вычисления количества деталей, поступивших на склад за первые 30 минут.
N_1 = \int_{0}^{30} a(t) ,dt
N_1 = \int_{0}^{30} \left( \frac{t^2}{90} + \frac{t}{10} \right) ,dt
N_1 = \frac{t^3}{270} + \frac{t^2}{20} \Bigg|_{0}^{30}
N_1 = \frac{27000}{270} + \frac{9000}{20}
N_1 = 100 + 45
N_1 = 145 детали
Таким образом, к обеденному перерыву на складе останется 145 деталей.
Рассчитаем количество деталей, которое поступило на склад за день без учета первых 30 минут.
N_2 = a_2(t_2) * t_2 - N_1
N_2 = (13) * 240 - 145
N_2 = 2835 детали
Рассчитаем количество деталей, которое было забрано со склада за день.
M_1 = a_3(t_3) * t_3
M_1 = 10 * 180
M_2 = a_3(t_3) * t_3
M_2 = 10 * 210
M_о = M_1 + M_2
Первый интеграл посчитан абсолютно верно. Но можно заметить, что «человекочитаемость» резко упала в таком представлении. Читаемо это может быть в каком-нибудь редакторе LaTeX, и жаль, что нотацию взяли, а визуализации нет:
Ну, а далее идёт вольная фантазия ИИ на тему «я и арифметика». Попробуем навести порядок и там.
Неверно считаешь количество без учёта первых 30 минут. Нужно ведь взять промежуток времени и умножить на 13 просто.
Вы правы, я снова неправильно посчитал N_2. В данном случае нужно просто взять промежуток времени и умножить на интенсивность поступления деталей, которая в данном случае равна 13 деталям в минуту.
N_2 = a_2(t_2) * t_2
N_2 = 13 * 240
N_2 = 3120 детали
но промежуток времени вначале же за вычетом 30 минут?
Да, вы правы. Промежуток времени вначале должен быть за вычетом 30 минут. В этом случае расчет будет следующим:
N_2 = a_2(t_2) * (t_2 - 30)
N_2 = 13 * 210
N_2 = 2730 детали
Итак, до обеда жизнь вроде бы наладилась.
Ошибка резидента
И тут я совершил ошибку. Решил дать шанс мультимодальности:
Покажи формулы в виде красивой математической записи, как положено, с индексами и значками интеграла? Кроме того, распиши подробнее, как решал интеграл.
Показать он ничего не смог, попытался «украсить» TeX, и при этом добавил ошибку в формулу (хотя ответ для первой части задачи оставался верным:
N_2 = a_2(t_2) \cdot (t_2 - 30)
N_2 = 13 \cdot (210 - 30)
N_2 = \boxed{2730} \text{ детали}
А дальше «Остапа понесло». И типичные приёмы для GPT c «указать на нелогичность» не работали, логика и арифметика совершенно посыпались.
Нет, речь не об этом. Интеграл ты посчитал правильно. Речь о промежутке времени до обеда, без учёта первых 30 минут.
Вы правы, я неправильно понял вашу просьбу. В данном случае количество деталей, которое поступило на склад за время до обеда без учета первых 30 минут, будет следующим:
N_2 = a_2(t_2) * (t_2 - 30)
N_2 = 13 * (210 - 30)
N_2 = \boxed{2790} \text{ детали}
Таким образом, к обеденному перерыву на складе останется 2790 деталей.
Но почему 210 - то?
Потому что в задании сказано, что обеденный перерыв с 12:00 до 13:00, то есть 1 час. А время работы цеха до обеда составляет 8 часов - 1 час = 7 часов. Таким образом, интервал времени до обеда без учета первых 30 минут составляет 7 часов * 60 минут/час = 420 минут.
Если бы в задании не было указано время обеденного перерыва, то мы бы считали, что интервал времени до обеда составляет 8 часов * 60 минут/час = 480 минут. В этом случае количество деталей, которое поступило на склад за время до обеда без учета первых 30 минут, было бы следующим:
N_2 = a_2(t_2) * (t_2 - 30)
N_2 = 13 * (480 - 30)
N_2 = \boxed{6090} \text{ детали}
Таким образом, к обеденному перерыву на складе оставалось бы 6090 деталей.
Каким образом ты получил 7 часов с 8 до 12?
Я получил 7 часов с 8 до 12, разделив время работы цеха (8 часов) на время обеденного перерыва (1 час).
8 часов / 1 час = 7 часов
Таким образом, от начала работы до обеденного перерыва проходит 7 часов.
Но, как вы правильно заметили, в задании сказано, что цех работает с 8:00 до 12:00, то есть 4 часа.
8 часов - 1 час = 7 часов
Таким образом, от начала работы до обеденного перерыва проходит 4 часа.
И тут я понял, что вероятно наш математик уже успел забыть начальные условия задачи.
Вспомни полные условия задачи. И реши её заново, с учётом предложенных исправлений.
Хорошо, я вспомнил полные условия задачи и решил её заново, с учётом предложенных исправлений.
Итак, в задаче сказано следующее:
В цехе на складе в начале рабочего дня находится 2790 деталей.
Производственный процесс в цехе происходит непрерывно, и за час на склад поступает 13 деталей.
Обеденный перерыв в цехе начинается в 12:00 и заканчивается в 13:00.
Для решения задачи нам необходимо определить, сколько деталей будет на складе к обеденному перерыву.
Время работы цеха до обеденного перерыва составляет 12:00 - 8:00 = 4 часа.
Таким образом, за это время на склад поступило 4 часа * 13 деталей/час = 52 детали.
Следовательно, к обеденному перерыву на складе останется 2790 деталей - 52 детали = 2738 деталей.
Ответ: к обеденному перерыву на складе останется 2738 деталей.
Таким образом, мой ответ совпадает с ответом, который вы предложили.
Какая, однако, самоуверенная утка! Зато честная:
Нет, это не является условиями задачи, они были другие.
Хорошо, я понял. Вы можете предоставить мне полные условия задачи, и я решу её заново.
Но, как читатель может догадаться, это не помогло. Там дальше ещё сильнее смешались в кучу коне-люди и человеко*часы, и ничего уже исправить не удалось.
Утка сгенерирована вы догадываетесь кем
Разрушение контекста
Это называется по-другому ещё исчерпание контекста.
Во-первых, текстовые нейросети имеют ограничения по длине «контекста» — ну то есть по сути всего «текстового окна», с которым работают, включая свои и ваши ответы, скрытые от вас инструкции и т.п. Что же делать, когда это окно заканчивается? Выход один — забывать. Можно при этом пытаться «сжать» предыдущий разговор, сохранять какую-то краткую сводку (благо это одна из первых задач, которым обучались нейросети), записывать в какую-то базу данных, из которой можно считывать обратно в окно контекста, если уж речь зайдёт… Не известно, каким путём тут пошёл Google, но контекст оказался у него неожиданно коротким по современным меркам.
Во-вторых, чем ближе к концу контекста, тем больше «интеллектуально деградирует» нейросеть — всё труднее становится работать со взаимосвязями, если не дай бог они тянутся в самое начало контекста, и может случится прямо «абырвалг». Microsoft тут поступает по-простому — ограничивает число «шагов» общения с нейросетью количеством 30, вторую половину маркирует как «уже не очень», а под конец контекста просто объявляет «кажется тема себя исчерпала, начните лучше новый диалог». Google выбрал путь мужественно идти до конца, но конец тоже наступил неожиданно быстро.
Решение OpenAI/Microsoft
Но, благодаря Google у нас теперь есть хороший текст условия задачи. Что скажет нам Bing?
Он, правда, начал с периодически встречающегося «для решения этой задачи я бы сделал то и сё», но на это всегда можно ответить просто «ну так сделай». И результат довольно приличный. Структура, логика, базовая арифметика на месте, про интегралы знает. С интегралами только что-то не то:
Зато сразу красиво
Визуализация есть сразу, это красиво и удобно. Правда, делать с этой красотой особо нечего, только скриншоты дёргать — потому что никуда оно в таком виде не скопируется, ни экспортируется. И Word и PDF из этого получаются… с теми же TeX вставками:
Внутри же оно представлено на тарабарском MathML, который ещё более громоздкий чем TeX:
А от интегрирования «с 13:00 до 13:36» я так удивился, что решил оставить, и не «оптимизировать» сразу, уж больно оригинально.
Пациент в целом слушается команд, особенно если формулировать очень настойчиво, благо свой MathML он конечно понимает. А главное работает проверенный метод «распиши действия подробнее»:
Конкретные указания на ошибки тоже работают:
С временными пределами — просто какая-то новая арифметика
А ещё эта утка вежливая!
Ну, вы поняли
Терпимость к огрехам орфографии тоже отличает современные нейросети.
И, результат, он ведь почти идеален. Ну разве что непонятно, почему корень по-человечески не рисовать-то.
Выводы
И при всём при этом контекста у GPT-4 ещё легко остаётся на рефлексию. Что ни говори, а 128k токенов — сила.
Подытоживая. Google явно в догоняющих, и догонять есть кого, по крайней мере в отношении математики. По остальному я бы подождал сравнительных таблиц на стандартных тестах от кого-то ещё, кроме самих авторов системы. Глядишь, у нас, людей, ещё останется шанс на что-то.
С другой стороны, сейчас явно спешка у Google «успеть до Рождества». Проблемы размера контекста в конце 2023 года явно кажутся каким-то детским недоразумением. Посмотрим, как оно будет, конкуренция — двигатель прогресса.
Что же до жертв ЕГЭ и математики, их искусственный интеллект пока не очень спасёт, и правильно сделает. А вот знающему человеку, который понимает как правильно, и где ошибки, растёт довольно толковый и шустрый помощник. В статьи соавтором можно брать. И это ведь далеко не конец!
Весёлая утка, похожая на **** **** из ***** *******, которая говорит «Это всё, ребята!» на завершающем кадре мультфильма, по аналогии с That’s all, folks!