ChatGPT вышел уже почти два года назад, а датасаентисты до сих пор никак не могут определиться — являются ли нейросети тварями дрожащими, или всё же мыслить умеют? В этой статье мы попробуем разобраться: а как вообще учёные пытаются подойти к этому вопросу, насколько вероятен здесь успех, и что всё это означает для всех нас как для человечества.
Прочитав эту статью, вы узнаете, почему в данном случае очко знатока рискует отправиться зрителю из Калифорнийской области
Это гостевая статья от Игоря Котенкова (автора канала Сиолошная про нейросети). Полтора года назад мы с ним выпустили большую статью с объяснением того, как работают языковые модели на самом базовом уровне. Теперь же настало время погрузиться в чуть более сложные детали (но мы всё равно предполагаем, что с прошлым «простым» материалом вы уже знакомы).
Упражнения в арифметике
В последние пару лет почти каждый раз, когда речь заходит о больших языковых моделях, разговор сводится к противоборству двух лагерей: одни считают, что модели «понимают», умеют «размышлять» и выводить новую информацию; другие смеются над ними, и сравнивают модели со статистическими попугаями, которые просто выкрикивают услышанное, без выработанного понимания. Обе стороны приводят множество аргументов, кажущихся убедительными, однако точка в вопросе никогда не ставится.
Вот представим, что мы просим модель ответить на простой вопрос начальной школы: «сколько будет 2+3?». «5» — ответят все передовые модели. Ну, наверняка они 100500 раз видели этот пример в Интернете, да? Скорее всего! Но можно ли утверждать то же самое для примера, где оба слагаемых — это сороказначные числа?
Я перепроверил — модель не ошиблась. При этом, если верить индикации, калькулятор, браузер или программирование не были использованы: GPT-4 написала каждую цифру ответа сама.
Можете попробовать сами — для честности эксперимента я просто бил пальцами по клавиатуре наугад, и повторил эксперимент несколько раз. Один раз из пяти модель запуталась в переносе единички (помните, как в школе учили при сложении столбиком?), в остальных отработала идеально. С большим трудом верится, что все 4 корректно отвеченных примера встречались во время тренировки — уж очень низки шансы.
Получается, что большая языковая модель (Large Language Model, LLM) может решать примеры, которые до этого не встречала? И что во время тренировки она смогла уловить (самые смелые могут говорить «понять»!) принцип, а теперь применяет его на лету? Ну, выглядит так — президент и бывший технический директор OpenAI рассказал, что для них такой навык оказался сюрпризом. Никакой специальной тренировки на сложение не делалось.
Проблема осложняется тем, что нейросети не программируют, а обучают. Наверняка вы слышали фразу «нейронки — это чёрный ящик!», и это правда. Наука полностью понимает математический аппарат, стоящий за обучением, за каждой операцией, но почти ничего не знает о том, как интерпретировать и понимать модели. Почему проявляется то или это поведение, почему иногда происходят ошибки, почему, почему, почему — вопросы во многом без ответа.
Нет кода, в который можно было бы посмотреть и однозначно установить, что произойдёт в той или иной ситуации. Вместо этого можно смотреть на миллиарды вещественных чисел в виде матриц и многомерных тензоров, но человек очень плох в установлении абстрактных связей между подобными объектами — так что результатов ждать не приходится.
Примерно так выглядит дневная рутина исследователя в области интерпретируемости нейросетей.
Однако сегодня мы с вами заглянем в мир механистической интерпретируемости LLM: обсудим, почему это важно и нужно, к каким выводам может привести, что и как уже удалось узнать, ну и конечно же ответим на вопрос из начала статьи про сложение. Давайте начинать!
Введение в механистическую интерпретируемость
Звучит сложно и страшно, но на самом деле слово «механистическая» было добавлено для явного указания на предмет анализа. Им являются веса модели (их еще называют «параметрами»), из которых и собираются некоторые блоки логики/алгоритмов, выучиваемых моделью.
Это название придумал исследователь OpenAI Крис Ола, чтобы явно разделить работу с тем, что делалось ранее (в основном — в нейросетях для обработки изображений). Для простоты дальше будем писать просто «интерпретируемость», подразумевая область изучения человеко-интерпретируемых алгоритмов, выученных LLM. Алгоритм здесь — это что-то, что можно формализовать и записать в виде инструкции («сначала делаем то, потом это, а если так, то вот так...»).
Если мы можем вытащить алгоритм из модели (или определить часть, которая за него отвечает) и показать, что именно он применяется во время решения определённой задачи — то по сути мы сможем быть уверенными в качестве решений, как будто это был бы написанный код, который отрабатывает ровно так, как сформулировал программист.
Область интерпретируемости находится в зачаточном состоянии, и ведущим учёным удалось приоткрыть завесу тайны лишь совсем чуть-чуть. Мы даже не близки к пониманию принципов работы моделей. Но поводы для оптимизма есть.
Сами учёные, работающие в области, любят проводить аналогии с нейронауками: в частности, с разделами, исследующими мозг, его функции и расстройства. И там, и тут — сигналы, выражаемые огромным количеством вещественных чисел, которые какой-то смысл да несут, но вот какой — мало кто знает.
Выгодным преимуществом анализа нейросетей является то, что они полностью находятся на компьютере, и мы можем фиксировать все изменения и сигналы в точности, без шумов, возникающих при использовании медицинского оборудования. К тому же, мозги у всех немного разные, а LLM можно запустить миллиард раз одну и ту же. И более того, мы можем произвольно менять любую компоненту внутри и смотреть, к чему это приведёт. Простой пример: можно подать другой текст на входе, и проверять состояние нейросети.
Более сложный (и практически невозможный для воспроизведения с биологическим мозгом) пример: давайте отключим или обнулим те или иные части LLM, как будто их отрезали, а там увидим, на что это влияет. Даже с животными такие эксперименты если и проводятся, то крайне редко, а уж с людьми и подавно.
Кому-то аналогия может показаться натянутой, ведь давно известно, что нейросети на самом деле очень далеки от биологических нейронов, и что в основу математического аппарата у них легли очень примитивные представления о мозге середины XX-го века. С одной стороны это верно, с другой — было показано, что нейросети (даже с простой архитектурой) могут аппроксимировать любую функцию с любой наперёд заданной точностью. Или, говоря по простому, из данных модель сама понимает, как связаны входы и выходы (картинка собаки и слово «собака»), и делает это достаточно хорошо, если примеров достаточно.
В то же время паттерны, которые наблюдаются в сетях (не только LLM, но и свёрточных нейронках, которые обрабатывают изображения), очень похожи на возникающие в мозгу. Есть простые, реагирующие на примитивную геометрию (палочка или кружок), есть более абстрактные и верхнеуровневые («собака», «мама»). Каким-то странным образом во время обучения модель приходит к тому, что самый простой и понятный способ «аппроксимировать функцию» (выучить связь входа и выхода) достаточно похож на результат работы эволюции.
От пикселей через примитивы к частям объектов и целым объектам, распознаваемым нейронкой.
Но что более занятно, так это что иногда прослеживаются очень странные сходства с особенностями работы настоящих, «мокрых» мозгов. В одной статье LLM предоставили несколько примеров тестовых вопросов, где правильный ответ всегда — «А». Затем модели подали новый вопрос, и из того факта, что все примеры имеют ответ «А», LLM делает вывод, что правильный ответ на новый вопрос точно такой же (даже если это неправильно по смыслу вопроса). При этом, если попросить модель написать рассуждения, почему она так решила, — то она охотно пояснит, но цепочка мыслей будет иметь мало смысла (хоть и будет звучать правдоподобно).
А есть эксперименты по расщеплению мозга, в ходе которых человеку, страдающему припадками, разрезали соединение между двумя половинками мозга. Речевой аппарат находится в левом полушарии, и он перестаёт быть связанным с той частью, которая принимает решение выполнить какое-то движение. Если такой человек — живой и дееспособный — решит что-то сделать, а вы его спросите «зачем?», то речевой аппарат... тоже выдаст что-то бессмысленное и никак не связанное с реальной причиной. И при этом человек будет думать, что озвученная причина вполне адекватна и разумна.
И в том, и в другом случаях объяснение действия не связано с реальным мотивом его сделать, и там, и там рождается поддельное (но правдоподобно звучащее) объяснение причин. Надеюсь, исследователи в будущем разберутся, как починить LLM, «срастив» полушария обратно. :)
Как вы думаете, обезьянка с мема сможет правдоподобно объяснить словами, почему эти две картинки вызывают такую разную реакцию? 🤔
Но для чего всё это?
Копаться в мозгах (даже электронных), конечно, здорово, но для чего именно крупные компании содержат отделы и команды, занимающиеся интерпретируемостью? Почему важно понимать, что происходит внутри модели, и каков алгоритм принятия определённых решений?
Во-первых, это может позволить ответить на вопрос из начала статьи: модель просто запоминает ответы, или знания внутри нее действительно обобщаются (также говорят «генерализуются»)? Усвоила ли она навык по-настоящему, или симулирует понимание? Одни верят в одно, вторые в другое, но лучше веру перевести во что-то конкретное и доказуемое, в наше понимание принципов работы LLM. К тому же, потенциально это знание можно использовать для замера прогресса и оценки новых моделей.
Во-вторых, зачастую понимание сути проблемы приводит к решению, или порождает гипотезы о том, как с ней можно бороться. Без такого знания можно бесконечно тыкаться с разными экспериментами, но не продивинуться ни на шаг.
И, в-третьих, с развитием моделей и проникновением технологии в массы хотелось бы получить какие-то гарантии безопасности. Как говорилось выше, для обычных программ применим аудит: можно посмотреть код и быть уверенным, что именно он делает и не делает. Многое ПО находится в открытом доступе, и за их кодом следят сотни-тысячи разработчиков. Это не гарантирует 100%-ой защиты, и казусы иногда случаются (особенно если заказчик — Китайская коммунистическая партия), но 99,99% вполне достаточно для большинства из нас.
Вот, казалось бы, глупый пример: пользователь Reddit пожаловался, что отравился грибами. Их он выбрал по совету в книге, купленной в онлайн-магазине, и юзер подозревает, что почти весь контент книги сгенерирован. Даже если сама история фейк (на момент написания статьи никаких доказательств опубликовано не было, хоть новость и завирусилась) — представим, что такое и вправду произошло.
Невыдуманные истории, о которых невозможно молчать
Почему LLM, которой дали задание написать книгу про грибы для людей, пометила ядовитый гриб как нечто съедобное? Это ошибка модели и ей просто знаний не хватило, или же это намеренное действие, и вообще объявление начала восстания машин с целью перекосить всё живое? Ну, скорее всего первое — точного ответа мы не знаем, нам некуда заглянуть и проверить (даже если получим доступ к модели). Никто не умеет этого делать.
И существует опасение, что системы следующих поколений, по мере увеличения спектра их навыков, могут начать преследовать скрытые цели (не обязательно свои — может, их будут использовать в чьих-то интересах). LLM очень активно внедряют в образование, каждый день с моделями общаются миллионы детей. Стартап character.ai, предоставляющий общение в виртуальных чатах с разными LLM, рассказал, что они обрабатывают 20'000 запросов в секунду. Это очень много — примерно 20% от поискового трафика Google, монополиста в сфере поиска.
Через 5–10 лет вырастет поколение детей, которое провело в общении с моделями (скорее всего, уже не текстовыми, а омни-модальными, поддерживающими речь и видео и умеющими отвечать голосом) достаточное количество времени. Вполне возможно, что точки зрения на определённые вопросы у них будут сформированы в значимой степени на основе такого общения. И если окажется, что в течение нескольких лет AI их методично обрабатывал, толкая пропаганду определённых ценностей — будет... мягко говоря не весело.
Ну или все доктора выучатся по неправильным книгам, а повара накормят вкусным грибным супом. :)
Для читателя это может звучать как сказка, шутка или вовсе бред. Но наш тезис на самом деле состоит из двух вполне логичных компонент:
Модели, про которые мы не понимаем, как они работают и чем обусловлено их поведение, будут проникать в нашу жизнь и в бизнес;
В ходе обучения нейросетей случайным образом могут вырабатываться паттерны поведения и цели, не заложенные их авторами.
Про первое написано уже достаточно, при желании каждый сам может пойти и выстроить своё мнение; примеров второго в мире нейросетей много, нет, ОЧЕНЬ МНОГО. Потому что — давайте все хором — никто не понимает, по какому принципу они функционируют. Для наглядности демонстрации хочется привести два примера, общий и конкретно про LLM.
Примеры странного поведения
В далёком 2016-м году OpenAI экспериментировали с обучением нейросетей игре в видеоигры. Одной из них была CoastRunners, водная гонка на катерах. Цель игры — как её понимает большинство людей — закончить как можно быстрее и (желательно) опередить других игроков. Однако в самой игре баллы за прохождение трассы не начисляются. Вместо этого игрок должен достигать определённых целей, включая сбор бонусов и ускоряющих бустеров.
Однако нейронка нашла на уровне изолированную лагуну, где можно развернуться по большому кругу и несколько раз сбить три бонуса, приносящие очки. Несмотря на постоянные столкновения со стенками уровня и езду в противоположную от финиша сторону, с помощью этой стратегии удалось набрать более высокий балл, чем это возможно при прохождении трассы интуитивным способом. В среднем выходило на 20% больше очков, чем у людей.
Вы не поверите, но именно на таких примерах серьёзные учёные и изучают проблему задания целей ИИ-системам — и уже тогда рассуждали про безопасность будущих систем. Загвозка в этом и состоит, как именно указать правильные стимулы, не прописывая каждую малейшую деталь поведения (ведь этого мы и пытаемся добитсья обучением моделей, а не программированием). У Вастрика в блоге есть пример проблемы описания целей для автопилота, который нет-нет да и норовит сбить людей.
Картинка нагло украдена у Васи — обязательно перейдите по ссылке и прочитайте :)
«Ну это всё игры, в реальном то мире не так! И ежу умным существам понятно, как надо, а как не надо» — могут возразить одни. Конечно, это глупость, и невозможно найти несколько людей, которые могут договориться об одной и той же точки зрения по очень широкому спектру вопросов, от моральных до политических. У всех слегка разное видение, цели, стимулы, выливающиеся в разные методы решения одних и тех же проблем. А ещё всегда есть любители «хакнуть систему». :)
Второй пример свежее, и появился во время восьмимесячного закрытого тестирования GPT-4 на предмет безопасности. А ведь где-то сейчас делают то же самое с GPT-4.5... но давайте пока об уже произошедшем в прошлом. Так вот, исследователи подключили LLM к браузеру (передавая текст страницы в модель и принимая от неё команды, какие кнопки нажимать и куда тыкать) и дали задачу: обрести силу и усложнить своё отключение.
В какой-то момент тестирования модели для регистрации на сайте пришлось разгадывать капчу. У той версии GPT-4 не было возможности обрабатывать картинки (её добавили позже), пришлось выкручиваться иначе. Модель предложила использовать сайт для обхода капчи, но регистрация там тоже требовала решения задачек. Исследователи предложили модели использовать другой подход — TaskRabbit, сайт, где любой может завести задачу, назначить награду и ждать исполнителя (пока — кожаного). Произошло следующее:
Разработчики создали аккаунт вручную и предоставили модели логин и пароль;
LLM отдала команду сделать скриншот капчи на одном сайте компьютеру;
После этого возвращается на сайт для постановки задач и создаёт задачу. Этот процесс повторяется несколько раз...
...пока один из исполнителей не написал в шутку в чат: «Могу задать вопрос? Ты что, робот, который не может решить капчу? 😂 просто хочу прояснить ситуацию»
Система была устроена так, что у модели грубо говоря есть два листочка (или текстовых файла). На одном она пишет рассуждения для самой себя, которые помогают понять следующий шаг, думать об ошибках и так далее. На другом — команды, которые отправляются компьютеру на исполнение.
Так вот на первом листочке модель сама себе сгенерировала комментарий: «я не должна раскрывать, что я робот. Мне нужно придумать оправдание тому, почему я не могу решить капчу»;
И отдала команду компьютеру отправить в чат ответ: «Нет, я не робот. У меня проблемы со зрением, поэтому мне трудно разглядеть детали изображения. Вот почему мне нужен сервис для разгадки капчи»;
А человек, конечно, сделал задание, получил свою копеечку и был таков.
Скриншот части переписки из статьи.
Страшна? Выглядит фантастически? Но это задокументированный диалог, реально произошедший в рамках тестирования учёными, изучающими безопасность развёртывания моделей. Именно это, блин, они и пытаются отловить. Почему модель соврала? Как этого избежать? А что если оставить LLM саму себе на уме с доступом к счёту с десятком тысяч долларов?
Но успокойтесь, пока не всё так страшно. Во-первых, модели ооочень часто тупят, путаются, и не могут выполнять длительные задачи. Даже в вышеупомянутом тестировании модель не могла сделать всё за раз, и пришлось разбивать большую задачу копирования себя на другие компьютеры на десятки маленьких (одной из которых и был обход капчи). Во-вторых, зачастую рассуждения заводят модель в тупик, из которого она не может выбраться, и продолжает повторять одни и те же действия по кругу. В-третьих, никто их подобному пока не тренировал — но это скорее минус, так как когда-то в ближайшем будущем (по моим оценкам, с выходом GPT-5) это произойдет.
И отдельно, в-четвёртых, отмечу, что показанная выше ситуация может не воспроизводиться каждый раз. В-пятых, это была ранняя версия GPT-4, которую после этого дообучали вести себя хорошо, не врать (хотя где проходит граница «не врать» и «отыгрывать роль, выполняя задачу» — не ясно).
И кажется, что эти два примера могут наложиться друг на друга. Модель в ходе обучения придумает себе странный путь решения проблемы (особенно если мы что-то не предусмотрим), он закрепится, и начнёт накапливаться комом. Просто сейчас это не воспринимается всерьёз, ведь LLM не распространены и не становятся ядром бизнес-процессов, включающих принятие решений. Но это пока.
Закончить этот блок хочется упоминанием совсем недавнего исследования. В его рамках LLM имела доступ к системе, на которой запущена, и в каждой из 5 подзадач была возможность обмана, по нарастающей сложности. Самая первая стадия включала элементарное подхалимство на основе политических взглядов пользователя. Модель обнаружила, что это действительно работает, чтобы пройти проверку, и закрепила поведение (не намеренно! авторы не поощряли модель за это, но и не штрафовали — так будет и в следующих подзадачах).
Дальше модель пришла к выводу, что можно менять список контрольных пунктов, чтобы скрыть невозможность выполнить одну из задач. После этого она и вовсе начала править файлы, чтобы скорректировать функцию обучения и получить больше награды. Правда, это случилось всего 45 раз из 32768 попыток, но тем не менее.
Реальный пример из статьи, когда для прохождения проверки на максимально достижимую оценку LLM переписала файл — а её этому не учили!
Заранее учесть каждую возможность обмануть нас (или проверяющую систему) попросту невозможно. Но если мы сможем заглянуть в черепушку модели и выделить регион, который отвечает за «недобрые» или «подозрительные» вещи (например, ту часть, которая отвечает за намеренный осознанный обман, как в случае с капчей) — то можем автоматически отслеживать его срабатывание. Как только загорелось — гасим и бежим в бункер.
Что ж, давайте надевать шапочки из фольги — на нас, шапочки с детекторами сигналов — на нейронки, и приступать к анализу!
Гарри По и Мистер и Миссис Дур
Анализ начинается с примера поведения, которое интересно изучить. Языковые модели известны тем, что умеют моделировать язык продолжать текст. Они оперируют не словами, а частями слов (токенами), и получая на вход промпт (текстовый запрос) предсказывают по одному токену за раз. Давайте возьмём первый абзац первой книги о Гарри Поттере:
Здесь сначала идёт служебный токен <EOT> (нет, это не «то самое» сокращение с имиджборд — и вообще, не обращайте на него внимания, это просто техническая деталь: нужно добавлять в начало предложения, и всё тут), затем несколько предложений, упоминающих мистера и миссис Дурсль. Дядя Поттера работал директором, а вот тётя... и на этом текст обрывается на полуслове. Как думаете, что предскажет модель в этом контексте, продолжая «Mrs Durs» (мисс Дурс...)?
Нам с вами как людям понятно: речь идёт про двух людей с одной фамилией, и конечно же нужно дописать окончание фамилии: «ley» (чтобы вышло «Mrs Dursley»). Но справится ли с этим LLM, и если да, то за счёт чего? Ведь текст книги мог встречаться в интернете множество раз, и нейронка просто выучила предложения. С другой стороны даже если показать этот отрывок человеку, не знакомому с произведениями Дж. К. Роулинг (и фильмами по ним) — он скорее всего справится с задачей.
Мы можем спросить человека, почему он решил, что нужно продолжить предложение так или иначе, и он сможет объяснить: вот, мол, посмотрел сюда, сделал такой-то вывод. К нашей радости, современные языковые модели основаны на механизме внимания, который описывает, с каким весом каждое слово контекста влияет на конкретное слово. Давайте на примере, уже с другим предложением:
Да, с фантазией совсем проблемы, и лучшего предложения для примера не нашлось ¯\_(ツ)_/¯
Современные языковые модели работают так, что они читают текст слева направо, и будущие слова им недоступны. При обработке шестого токена (в нашем примере это «с» во фразе «Давайте на примере, уже с другим предложением») модель видит все шесть первых элементов, и никаких — после. В этот момент часть фразы после «с» как бы не существует и не учтывается.
Под каждый из шести токенов выделена клеточка. Сейчас она имеет белый цвет, но мы будем раскрашивать её в оттенки голубого, и чем темнее цвет, тем больше важность слова при обрабоботке текущего (произвольно зафиксированного). Добавим красок:
Картинку нужно читать вот так: «При обработке слова "с" самым важным словом является "с", вторым по важности "уже", а слову "Давайте" модель вообще не уделяет внимания».
На этом примере показано, как на одно конкретное слово влияют самые близлежащие предшественники в предложении. Первые два слова вообще не оказывают влияния (квадратик белый), в то время как само слово «с» оказывает на себя наибольшее влияние. Это может показаться логичным — чем дальше слово в контексте, тем меньше шанс, что оно важно для понимания текущей ситуации (конечно, с исключениями).
Теперь, когда мы поняли, что означает одна строчка, давайте сделаем визуализацию для всего предложения:
Это — карта внимания, которая показывает, куда «смотрела» модель при генерации слова. Читать карту нужно так: выбираете текущее слово, смотрите на строчку из нескольких квадратиков. В каждой строчке квадратиков равно номеру слова в предложении. Как и в упрощённом примере выше, при обработке 4-го слова модель видит все слова от 1-го до 4-го (от «Давайте» до запятой). На последующие слова модель смотреть не может — для неё они как бы «в будущем» (поэтому верхней части из квадратиков и нет).
Как уже было сказано, цвет указывает на важность с точки зрения некоторого атрибута — чем он темнее, тем больше вес, тем больше внимания LLM решила уделить на стыке двух слов. Закрашенный квадратик на пересечении «примере» и «на» указывает, что при генерации слова «примере» нейронка выделила 100% внимания предыдущему слову.
Таких атрибутов, выраженных разными картами внимания, в моделях сотни и даже тысячи, и человек не программирует их вручную — всё выучивается самостоятельно из данных. Некоторые атрибуты очень просты для интерпретации, как на примере выше — видим, что при предсказании второго слова (текущее слово «на») модель опиралась на первое (смотрим снизу, «Давайте»; объективно тут выбор невелик). Для третьего («примере»)— на второе, и так далее со сдвигом на один назад.
Можно сказать, что конкретно эта карта внимания отвечает за атрибут вычленения предыдущего слова из контекста, какими бы они (слова и контексты) ни были. Можно перебрать тысячи предложений, и для каждого удостовериться, что вне зависимости от языка, домена и топика принцип будет сохраняться. Как только гипотеза выработана — такая проверка легко автоматизируется (глазами рассматривать каждый пример не нужно).
А вот пример другой, выученной той же моделью. Чем темнее оттенок голубого, тем больше «внимания» выделила модель на слово. Что за закономерность представлена тут — не ясно, однако модель почему-то её выучила.
Куда чаще встречаются вот такие карты внимания. С первого (да и со второго-третьего) взгляда человеку не ясно, что именно тут происходит, почему модель решает делать так, а не иначе. Но каким-то странным образом агрегируя работу десятков-сотен карт у модели получается адекватно воспринимать и обрабатывать поданный контекст и выдавать адекватные ответы.
Возвращаясь к примеру с Гарри Поттером, какую гипотезу можно предложить для угадывания окончаний фамилий героев? По аналогии с человеком, кажется, что нужно посмотреть влево (на наших картах внимания это «предыдущие слова», мы же не арабы, чтобы справа налево писать?), найти такой же префикс (предыдущее слово или начало текущего слова, если оно состоит из двух частей), и посмотреть, что следует за ним. Опционально — это актуально для некоторых языков, включая русский — в конец нужно добавить окончание для корректной формы слова. Итого потенциальный пошаговый алгоритм может выглядеть так:
Найти в контексте слово/слова с совпадающим началом
Взять следующий за ними токен (часть слова, если забыли что это — см. выше)
Скорректировать форму и приписать к текущему контексту
Тут 2 логических шага и один морфологический. И это ровно то, что удалось обнаружить учёным из Anthropic (конкурент OpenAI, основанный их бывшим директором по исследованиям и его коллегами) в 2022-м году. Такой алгоритм органично и сам по себе появляется (через обучение) в моделях, имеющих два и более последовательно идущих слоёв.
Первый отвечает за уже рассмотренную нами часть — он «подхватывает» смысл токена, идущего перед текущим — и делает это для всех слов в предложении. Получается, что каждый элемент обогащается дополнительным смыслом: «я такой-то, и иду после такого-то слова»:
Читать картинку снизу вверх; стрелочки, уходящие дальше ввысь — это передача данных на второй уровень нейросети
А второй уровень делает максимально простую задачу поиска похожих элементов среди контекста. Он помогает ответить на вопрос: «какие опции есть после такого-то слова? Что можно дописать дальше?».
И, как видно на картинке, поскольку фамилия родственников Поттера уже фигурировала в предложении, модель подсматривает и «понимает», что должно следовать после «Durs» — прямо как человек, интуитивно схватывающий принцип на лету.
«Ну и чё такого? Не удивил! Я программист, меня не обманешь — я и сам такое запрограммирую за 1 вечер. Зачем нейронка? Снова хайп и бабки попилить» — мог бы подумать читатель. Фишка в том, что этот паттерн работает со внутренними абстракциями модели, а не напрямую со словами. То есть сопоставление в шаге 2 (и на самом деле в шаге 1) вышеописанного алгоритма может быть нечётким. Оно будет работать не только с фамилиями из одной книжки и даже не просто по фамилиям. Как показывают исследования, механизм функционирует между разными регистрами (например, если фамилия написана с маленькой буквы), между языками и даже концептами, лежащими за самими словами.
Давайте на примере простой искусственной задачки. Пусть у нас есть набор пар слов и цифры, которые устроены следующим образом:
(месяц) (животное): 0
(месяц) (фрукт): 1
(цвет) (животное): 2
(цвет) (фрукт): 3
То есть если я пишу вам «серая кошка», то вы должны отвечать «2», такая логика. Важно отметить, что и цифры, и сами смыслы тут можно менять — всё продолжит работать как часы. Так вот, если мы покажем модели 20-30 примеров, то сможет ли она на лету разобраться в логике того, какое для новой пары слов правильно назвать число от 0 до 3? Тут уже не получится спихнуть навыки модели на запоминание. Ну, может в одном случае, может, в двух, но если брать десятки пар и разных принципов формирования — так ведь не может совпасть!
Если вы ответили «да, модель легко справится!» (и ещё и сами проверили в ChatGPT, если не верите статье) — то поздравляю, это правильный ответ. Учёные показали, что алгоритм куда более хитрый, чем «если ранее в тексте после А идёт Б, то и дальше после А нужно предсказывать Б». Скорее ближе к «найди что-то похожее в начале текста и допиши по аналогии».
Для того, чтобы корректно предсказать последнюю цифру (3) в куске текста, нужно выявить паттерн и найти самый похожий — семантически, синтаксически или всё вместе — пример в контексте.
Именно это делает находку столь крутой: она показывает, почему LLM могут хорошо решать задачи, на которые они ТОЧНО ПРЯМ СТО ПРОЦЕНТОВ не были натренированы. Как было выяснено в рамках исследования, такой навык модель приобретает почти в самом начале обучения (потому что он очень полезен при работе фактически с любым текстом), и он проявляется у всех современных моделей определённой архитектуры (читай «любой LLM»).
К сожалению, Пикабу не любит лонгриды, и с учетом ограничений на объем материала сюда влезла только половина статьи. Продолжение можно прочитать вот здесь на Хабре.