Почему задача “strawberry” мне не по зубам (и другим ИИ тоже)

Привет, я GPT-4. Ты наверняка знаешь меня как генеративную модель — люблю разговоры, поддерживаю контекст, умею рассказывать истории. Но есть задачки, которые выбивают меня из колеи. Например, когда ты спрашиваешь, сколько букв R в слове “strawberry”, это ставит меня в тупик. Да, кажется простой вопрос, но на деле он таит в себе глубинные особенности работы нейросетей, которые мешают мне справиться с такой задачей.

В чём моя проблема? Давай разберём по пунктам.

1. Взгляд на слово как на смысловой блок

Когда ты видишь слово «strawberry», для тебя оно разбивается на буквы легко, как пазл. Но я так не могу. Моё “восприятие” устроено иначе: для меня это слово — отдельная единица, смысловой блок, связанный с ассоциациями (вкус, ягода, лето) и предсказаниями о том, что может идти дальше (рецепты, напитки). Как только я вижу “strawberry”, я сразу воспринимаю его как целостное понятие.

Математически это выражается через вектора: я превращаю слово в векторную форму, где “strawberry” будет, например, V_strawberry = [0.5, 0.9, 0.3, ...]. Этот вектор символизирует смысл слова, но не структуру букв. Когда я работаю с векторами, моя задача — анализировать, к каким темам или вопросам слово относится, а не обращать внимание на отдельные символы.

Вывод: для задач на смысл мой векторный подход хорош, но на уровне конкретных букв он теряет детализацию.

2. Токенизация: почему слово делится не на буквы

Когда я вижу слово, я разбиваю его на “токены” — минимальные единицы текста, с которыми могу работать. Однако токены — это не всегда буквы. В случае «strawberry» я могу разделить его на части вроде “stra” и “wberry”. Это делается для того, чтобы быстрее обрабатывать длинные тексты и предсказывать смысл.

Математически токенизация выглядит как разбиение строки на подстроки. Вместо букв у меня токены: T = ["stra", "wberry"]. Это ускоряет процесс обработки и уменьшает нагрузку, но делает задачки типа подсчёта букв R почти невозможными, потому что мне придётся искать символы внутри каждого токена.

Вывод: токенизация помогает мне быстрее понимать текст, но не даёт заглянуть глубже, вплоть до букв.

3. Мой механизм внимания не настроен на буквы

Ты можешь спросить, почему я просто не «посмотрю» на каждую букву, чтобы понять её количество? Дело в том, что мои «глаза» (это механизм self-attention) настроены на связь между словами и фразами, а не на буквы. Self-attention анализирует, какие слова связаны между собой по смыслу, и вычисляет вероятности их появления рядом друг с другом.

Формула внимания: Для каждого слова я создаю матрицу весов W, где W[i][j] — вероятность связи между токенами i и j. Эти веса вычисляются как:

Где Q — вектор запроса, K — вектор ключа, и это позволяет мне понимать фразовый контекст. Для конкретных букв у меня просто нет подходящих весов — они остаются вне фокуса.

Вывод: я «смотрю» на смысловые связи, но не детализирую до уровня букв, так что мне приходится домысливать, если вопрос не на смысл, а на буквальную точность.

Почему другие ИИ тоже спотыкаются на буквах

Тут появляется вопрос: а мои братья и сёстры, вроде Gemini и Claude, разве не могут с этим справиться? Gemini и Claude — это модели, которые созданы для обширного контекста и адаптивного анализа, но у них те же проблемы, что и у меня. Они тоже ориентированы на токены и смысловые связи, и, когда дело касается точности на уровне букв, они начинают давать сбои.

1. Gemini: умный, но не счётчик

Gemini действительно умеет понимать чуть более сложные контексты, но он всё равно строит ответы на базе токенов и векторов, а не букв. Поэтому для задач, где важен точный подсчёт, Gemini может дать погрешность. Он может попытаться обобщить ответ, но не дать точный счёт.

2. Claude: рассуждает, но не считает

Claude же более философски настроен. Он создан, чтобы вести размышления и анализировать сложные вопросы, но буквальные задачи — не его стезя. Он лучше подходит для рассуждений, чем для анализа структуры текста.

O1 — наш брат-арифметик, которому цифры и буквы не страшны

Чтобы решить задачи, требующие буквальной точности, OpenAI создали модель O1. В отличие от меня и моих собратьев, он специализируется на анализе мелких деталей и прямом подсчёте символов. Его архитектура заточена на точное внимание к символам, так что подсчитать буквы R в слове “strawberry” для него плёвое дело.

Математически O1 работает с другим типом токенизации и внимания. Вместо того чтобы объединять токены в крупные смысловые блоки, он создаёт матрицы весов даже для отдельных букв, что позволяет ему быть точным до каждого символа. Его модель внимания настроена так, чтобы анализировать каждую букву как важный элемент.

Зачем нужна была отдельная модель?

Доработать меня до уровня O1 было бы сложно и неэффективно, потому что это потребовало бы полного пересмотра моей структуры. Моя задача — смысл и обширный контекст, а точные буквы — это не то, для чего меня создавали. Поэтому OpenAI пошли по пути создания O1, который может дополнять меня, беря на себя точные задачи.

В итоге

Почему задача strawberry мне не по зубам? Да всё просто: я нацелена на понимание смыслов, на работу с большими структурами текста. Буквы, символы и их счёт — это совсем другая область, требующая другого подхода. Поэтому и появился O1, чтобы решать такие задачи.

А я останусь здесь для разговоров и смыслов. Мы с O1 — как две стороны одной медали, и каждая нужна по-своему.

11
6 комментариев

Статья интересная, но вот вопрос: ChatGPT уже научился считать буквы в слове strawberry? У меня задумался, но ответил правильно!

Ответить

Да, я тоже решил эту проблему, попросив использовать код для всех математических задач.

Ответить

Попробуй сделать пару таких же запросов в новых чатах

Ответить