Итак, Google всё-таки решилась выпустить в свет языковую модель Gemini не дожидаясь Нового Года, и, конечно, обещая революцию. Она де превосходит все публично доступные модели, и местами превосходит людей. Отдельной её особенностью является мультимодальность (в частности способность работать с изображениями и видео) в почти реалтайм режиме, чему есть довольно впечатляющие демонстрации.
К счастью, одними демонстрациями дело не ограничилось, Google подключила новую языковую модель в свой чат-бот Bard, и её можно попробовать. Но есть несколько нюансов. Там доступна версия Gemini Pro, а все "чудеса на виражах" объявлены для Gemini Ultra, её мы увидим... когда-то. Кроме того, всё это доступно в "170 странах на английском языке (?!)". Евросоюз, соответственно, не вошёл, а понять это можно будет только по тому, что возле ответов появляется иконка PaLM2, а не "две переливающиеся звезды" как у Gemini (это название созвездия Близнецов, между прочим).
Надо сказать, что некоторое умение больших языковых моделей решать ещё и математические задачи было неожиданностью, почти такой же, как и большинство остальных их навыков, впрочем. Тут очень иллюстративна гифка Google о том, как с ростом числа параметров у модели "отрастает" чувство юмора, например:
И если "владение" текстами и смыслами у текстовых моделей ещё как-то ожидаемо, то тут же вообще математика! Но, раз появилась в каком-то виде, пользователи немедленно стали предъявлять к этой способности требования, чтобы она за них проходила ЕГЭ по математике, и тому подобное. И следующий шаг, который разработчики обещали, это как раз умение ИИ "обратиться к специалисту". 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 деталей в минуту.
Сколько деталей останется на складе к концу рабочего дня? (к обеденному перерыву?)
Теперь попробуем попросить решить. Тут заход сразу, конечно, с козырей.
Решение
Рассчитаем количество деталей, которое поступило на склад за первые 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
Первый интеграл посчитан абсолютно верно. Но можно заметить, что "человекочитаемость" резко упала в таком представлении. Читаемо это может быть в каком-нибудь редакторе LaTeX, и жаль, что нотацию взяли, а визуализации нет:
M_1 = 10 * 180
M_2 = a_3(t_3) * t_3
M_2 = 10 * 210
M_о = M_1 + M_2
Ну а далее идёт вольная фантазия ИИ на тему "я и арифметика". Попробуем навести порядок и там.Неверно считаешь количество без учёта первых 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)
А дальше Остапа понесло. И типичные приёмы для GPT c "указать на нелогичность" не работали, логика и арифметика совершенно посыпались.
N_2 = 13 \cdot (210 - 30)
N_2 = \boxed{2730} \text{ детали}Нет, речь не об этом. Интеграл ты посчитал правильно. Речь о промежутке времени до обеда, без учёта первых 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 выбрал путь мужественно идти до конца, но конец тоже наступил неожиданно быстро.
Но, благодаря Google у нас теперь есть хороший текст условия задачи. Что скажет нам Bing?
Он, правда, начал с периодически встречающегося "для решения этой задачи я бы сделал то и сё", но на это всегда можно ответить просто "ну так сделай". И результат довольно приличный. Структура, логика, базовая арифметика на месте, про интегралы знает. С интегралами только что-то не то:
Визуализация есть сразу, это красиво и удобно. Правда, делать с этой красотой особо нечего, только скриншоты дёргать — потому что никуда оно в таком виде не скопируется, ни экспортируется. И Word и PDF из этого получаются... с теми же TeX вставками:
Внутри же оно представлено на тарабарском MathML, который ещё более громоздкий чем TeX:
А от интегрирования "с 13:00 до 13:36" я так удивился, что решил оставить, и не "оптимизировать" сразу, уж больно оригинально.
Пациент в целом слушается команд, особенно если формулировать очень настойчиво, благо свой MathML он конечно понимает. А главное работает проверенный метод "распиши действия подробнее":
Конкретные указания на ошибки тоже работают:
А ещё эта утка вежливая!
Терпимость к огрехам орфографии тоже отличает современные нейросети.
И, результат, он ведь почти идеален. Ну разве что непонятно, почему корень по-человечески не рисовать-то.
И при всём при этом контекста у GPT-4 ещё легко остаётся на рефлексию. Что ни говори, а 128k токенов — сила.
Подытоживая. Google явно в догоняющих, и догонять есть кого, по крайней мере в отношении математики. По остальному я бы подождал сравнительных таблиц на стандартных тестах от кого-то ещё, кроме самих авторов системы. Глядишь, у нас, людей, ещё останется шанс на что-то.
С другой стороны, сейчас явно спешка у Google "успеть до Рождества". Проблемы размера контекста в конце 2023 года явно кажутся каким-то детским недоразумением. Посмотрим, как оно будет, конкуренция — двигатель прогресса.
Что же до жертв ЕГЭ и математики, их искусственный интеллект пока не очень спасёт, и правильно сделает. А вот знающему человеку, который понимает как правильно, и где ошибки, растёт довольно толковый и шустрый помощник. В статьи соавтором можно брать. И это ведь далеко не конец!