Развитие больших языковых моделей (Large Language Model, LLM) привело к смене парадигмы в сфере обработки естественного языка (Natural Language Processing, NLP). LLM, обученные на огромных объёмах текста, взятого из интернета, могут осваивать выполнение новых задач, задействуя механизмы контекстного обучения. Это означает, что NLP‑специалисты, «натаскивая» такие модели на решение определённых задач, не занимаются обновлением их параметров. Вместо этого специалисты пишут для LLM промпты, демонстрирующие желаемое поведение моделей и содержащие инструкции или некоторое количество готовых примеров. Эти промпты передают моделям в виде входного контекста (потому это и называют «контекстным обучением»), а модели используют информацию из промптов для формирования ответов на похожие вопросы.
Например, предположим, мы хотим воспользоваться LLM для перевода предложения «Je te verrai demain» («Увидимся завтра») с французского языка на английский. Мы предлагаем модели сделать это, передавая ей промпт, содержащий инструкцию и предложение: «The translation of "Je te verrai demain.." in English is __». Затем модель, в ответ на наш промпт, выдаст текст «I will see you tomorrow».
Но LLM весьма чувствительны к тому, как именно написан промпт. Результаты их работы могут сильно меняться при внесении даже небольших изменений в оформление промпта, причём, даже в тех случаях, когда смысл изменённых промптов, с точки зрения человека, не меняется. При переводе текста на английский передача одной и той же модели слегка изменённых промптов, в том числе — с изменением форматирования и формулировки инструкций, может привести к появлению очень разных ответов. Мы исследуем феномен чувствительности LLM к разным вариантам промптов, испытав модели на двух базовых лингвистических задачах. Так же мы оценим то, как определённые варианты промптов могут влиять на поведение моделей.
Лингвистический анализ в эпоху LLM
Сейчас в моде два варианта использования парадигмы контекстного обучения для решения задач обработки естественного языка. Первый вариант ориентирован на генерирование текста, когда результаты работы моделей представляют собой строку или текст в свободной форме. Второй вариант нацелен на решение задач классификации, когда на выходе модели ожидается получить одиночный маркер или ответ.
В этой ситуации обходят вниманием целый спектр базовых задач NLP, имеющих отношение к языку. Задач, когда модели производят лингвистический анализ текстов, выраженный, например, в виде синтаксического дерева. Эта сфера NLP, которую часто относят к классу задач машинного обучения, известному как «структурное прогнозирование», требует от модели выдачи множества фрагментов выходных данных, которые затем собирают в базовую лингвистическую структуру.
Если выяснить то, что LLM узнают о лингвистике после крупномасштабного предварительного обучения — это будет хорошей базой для понимания того, как вообще работают такие модели. Поведение LLM может оказаться непростым предметом для обсуждений, особенно — когда неясно — действительно ли они как‑то кодируют информацию, на которой их испытывают. Но лингвистические структуры чётко определены, их присутствие предполагается во всех текстах на естественном языке. А то, что тексты, генерируемые LLM, вызывают ощущение того, что модели свободно владеют языком, указывает на то, что модели, по большей части, усваивают лингвистические структуры, лежащие в основе текстов. Мы собираемся задействовать эти знания LLM для того чтобы исследовать их поведение в контролируемом эксперименте.
Структурированных подход к составлению промптов: вопросы для LLM, нацеленные на сбор сведений об их лингвистических знаниях
Так как при передаче модели промпта ей достаются лишь инструкции или несколько примеров — почти все знания о задаче, которую модель может решить на основе промпта, должны уже иметься внутри модели. Поэтому мы можем рассматривать передачу LLM промптов как нечто вроде «взятия проб» из модели или её «зондирования», как проведение испытаний, направленных на исследование информации, хранящейся в весах модели. Это — разновидность «поведенческого зондирования», когда выходные данные интерпретируются напрямую. Есть и другие виды подобных исследований, основанные на изучении вспомогательной или диагностической информации, когда интерпретации подвергаются исходные представления модели. Подробнее об этом можно почитать здесь.
«Зондирование» — это полезный инструмент, с помощью которого можно понять особенности поведения NLP‑моделей. Но стандартные методы составления промптов позволяют получить только один ответ для каждого примера. А задачи структурного прогнозирования обычно требуют результатов, представленных несколькими спрогнозированными моделью маркерами. Если мы хотим пользоваться промптами в роли «зондов», собирающих сведения о лингвистических структурах, нам нужно изменить подход к подготовке промптов, что позволит решать с их помощью более сложные задачи.
Для того чтобы это сделать, мы разработали расширение системы контекстного обучения, названное «structured prompting» (структурный подход к составлению промптов). Вместо того, чтобы генерировать лишь один ответ для каждого примера, мы запрашиваем у модели лингвистические теги (маркеры, метки) для каждого слова из текста примера. Мы, кроме того, в качестве контекстных сведений, предоставляем модели архив её прогнозов, что должно помочь ей выдавать более согласованные результаты.
LLM могут выполнять лингвистическое аннотирование текстов при использовании структурного подхода к составлению промптов
Мы применили структурный подход к созданию промптов в работе с LLM серии GPT‑Neo. Это — опенсорсные модели от EleutherAI (вот, вот и вот — материалы о них). Нашей задачей было — узнать, способны ли эти модели использовать данный подход для решения двух задач лингвистического аннотирования текстов:
Частеречная разметка (Part‑of‑Speech tagging, POS tagging) — задача, которая заключается в идентификации части речи (такой, как имя существительное, глагол и так далее) каждого из слов в переданном модели тексте.
Распознавание именованных сущностей (Named Entity Recognition, NER) — в ходе решения этой задачи идентифицируются и маркируются именованные сущности (такие, как люди, места и так далее) в образце текста, который передан модели.
«Зондирование» моделей семейства GPT‑Neo с использованием структурного подхода к составлению промптов показало, что эти LLM способны выполнять лингвистическое аннотирование текста на основании совсем небольшого количества предоставленных им примеров. Как и при использовании других подходов к подготовке промптов, модели с большим количеством параметров обычно лучше показывают себя в контекстном обучении, ориентированном на работу со структурными данными, чем модели меньших размеров (например — речь об этом идёт здесь). Модели, кроме того, показывают лучшие результаты в том случае, если в промпте имеется больше примеров.
В целом можно сказать, что LLM, кроме того, способны реализовывать наиболее сложные сценарии правильного распознавания частей речи для многозначных слов, значение которых зависит от других частей предложения. Например, модель GPT‑NeoX способна правильно маркировать слова вроде «end», «walk» и «plants» (каждое из которых может быть и именем существительным, и глаголом) примерно в 80% или даже в большем количестве случаев. Мы, кроме того, обнаружили то, что когда LLM делает ошибки при применении структурированного подхода к составлению промптов, эти ошибки поддаются рациональному объяснению. Так, большинство ошибок при частеречной разметке текста с помощью самой большой из использованных нами LLM, GPT‑NeoX, возникает от того, что модель путает имена собственные с обычными именами существительными и со вспомогательными глаголами (то есть с глаголами‑«помощниками» вроде «be» и «may») при работе с глаголами. Другими словами — ошибки, совершаемые LLM, обычно проявляются при работе с тегами, которые тесно друг с другом связаны. Это похоже на те ошибки, которые делают люди, выделяя части речи в предложениях.
Наш эксперимент показал, что при использовании структурного подхода к составлению промптов результаты работы моделей похожи на результаты, которые дают другие подходы к работе с промптами. Мы выяснили, что те ошибки, которые делают модели, показывают понимание моделями взаимоотношений между похожими категориями тегов. Получается, что предложенный подход позволяет стабильно генерировать лингвистические структуры текстов на основе знаний, имеющихся в LLM. Это подтверждает то, что исследуемые нами модели косвенным образом изучают данные структуры в ходе их предварительного обучения.
Как работает структурный подход к составлению промптов?
Хотя мы и можем использовать структурный подход к составлению промптов для «зондирования» LLM и для показа того, что поведение систем при этом похоже на их поведение при использовании других методов работы с промптами, открытым остаётся вопрос о том, какую роль здесь играет контекстное обучение, как и когда оно себя проявляет. Мы знаем о том, что то, как сформулированы инструкции, оказывает огромнейшее влияние на результат работы моделей. Известно и то, что, в некоторых случаях, для описания правильно поставленной задачи даже нет необходимости в промпте! Более того, когда модели дают примеры того, как ей нужно решать задачу, демонстрационные метки не обязательно должны быть правильными для того, чтобы модель чему‑то научилась, анализируя их. Так как система, которая позволяет узнать о том, работает или нет контекстное обучение, не отличается интуитивной понятностью для пользователей LLM, невозможно понять особенности поведения модели, основываясь лишь на результатах её работы.
Это ведёт нас к следующей задаче: какие факторы структурного подхода к составлению промптов позволяют LLM аннотировать лингвистические структуры? Мы, работая с моделью GPT‑NeoX, исследовали три системы меток, изучая вопрос о том, как выбор меток воздействует на результаты работы структурного подхода к составлению промптов. Если модель использует только результаты контекстного обучения (то есть — не использует знания о задаче, которые имеются у неё изначально), тогда изменение меток должно оказывать небольшое воздействие на возможности модели.
Мы рассматриваем здесь следующие виды меток:
Исходные метки (Original labels в вышеприведённой таблице), присутствующие в наборе данных, на котором мы оцениваем модель.
Перемешанные метки (Shuffled labels). Здесь категории классификации представлены различными, произвольным образом выбранными метками (но при этом нужно обеспечить единообразное использование меток в примерах одной категории).
Метки-заместители (Proxy labels). В данном случае каждая категория представлена не неким текстовым наименованием, а целым числом, что ведёт к тому, что смысл метки больше не может повлиять на результаты работы модели.
Перемешивание меток запутывает модель и сильно ухудшает результаты её работы. Интересно то, что ошибки при использовании перемешанных меток часто выглядят как прогнозирование исходной метки для некоей категории задач. Это означает, что в таких случаях модель игнорирует перемешанные метки из контекстных примеров, так как ей уже известны правильные метки для конкретной категории. Это, в более общем плане, говорит нам о том, что модель будет игнорировать наши инструкции в том случае, если они конфликтуют с тем, что она узнала в ходе предварительного обучения.
А вот представление категорий с использованием меток‑заместителей вредит результатам работы моделей гораздо меньше, чем перемешивание меток. Это указывает на то, что LLM способны к контекстному обучению на примерах, даже тогда, когда метки не имеют смысловой связи с задачей. Но для того чтобы промпты, которые передают модели, оказывали бы на неё воздействие, контекстные примеры не могут противоречить тому, что уже известно модели.
Загрязнение данных: что можно сказать о совокупности текстов, на которых (пред)обучается модель?
Для того чтобы модель освоила бы навык контекстного обучения, она должна быть обучена на очень больших объёмах разнообразных текстовых данных. В данных, используемых для предварительного обучения, так много текстов, что даже создатели LLM точно не знают о том, что именно видит модель при обучении. Поэтому загрязнение наборов данных, или включение в обучающие тексты размеченных данных для задач, на которых оценивают модели, это — открытая проблема. Загрязнение набора данных означает то, что модель проходит обучение с учителем, осваивая те задачи, которые, по мнению пользователя, она решать никогда не училась. Когда подобное происходит — делаются некорректные оценки того, насколько хорошо предварительно обученная модель может обобщить свои исходные знания о текстах, написанных на естественном языке.
В некоторых работах по языковому моделированию проводятся исследования моделей на предмет загрязнения данных информацией, имеющей отношение к испытаниям, которым подвергают модель (вот и вот — примеры таких работ). Но обычно пользователи LLM не проверяют присутствие образцов, имеющие отношение к их задачам, в данных, на которых проводилось предварительное обучение моделей. Часто это происходит из‑за того, что тестирование моделей на загрязнение данных невозможно по причине использования для предварительного обучения закрытых данных. Например — это справедливо для популярных моделей с закрытым кодом, наподобие моделей от OpenAI.
Но отдельные примеры свидетельствуют о том, что загрязнение данных, вероятнее всего, влияет на результаты работы моделей наподобие GPT-4 от OpenAI, когда речь идёт о некоторых задачах. Среди них — задачи, связанные с собеседованиями по программированию, и задачи рисования животных с помощью LaTeX‑пакета TikZ. Так как мы обнаружили, что LLM уже многое известно о задачах, на которых мы их тестируем, логично будет предположить, что источником соответствующей информации являются примеры, которые просочились в набор данных, используемый для предварительного обучения модели.
К счастью, модель GPT‑NeoX была предварительно обучена на наборе данных Pile — это общедоступная коллекция текстовых документов из интернета, книг, новостных статей, разных других текстов. Это означает, что мы можем проверить на загрязнение сами данные, использованные для предварительного обучения модели. Для того чтобы найти образцы загрязнения данных, мы провели в Pile поиск контекстов, где появляются метки задач. Поиск меток, а не полных примеров, позволяет найти примеры задач даже в том случае, если их нет в нашем конкретном наборе данных.
После поиска меток в Pile мы обнаружили, что этот набор данных содержит множество примеров POS‑ и NER‑тегирования. В частности, примеры POS‑тегирования широко распространены в Pile, так как на GitHub хранится множество наборов данных с одним и тем же набором POS‑тегов (Universal Dependencies). Эти наборы данных включены в Pile. Тут есть и примеры задач из многих других видов текстов, в частности — тех, что можно найти на StackOverflow и на arXiv. Многие из этих примеров представляют собой единичные случаи описания задач и не поступают из формального набора данных. Из‑за этого сложно предотвратить загрязнение данных, просто отфильтровав материалы по некоему источнику данных или по точному совпадению с неким фрагментом текста, имеющем отношение к данным, на которых испытывают модели.
Пересмотр меток, используемых в структурном подходе к составлению промптов
Теперь, когда мы знаем о том, что модель GPT‑NeoX видела примеры обеих наших задач с соответствующими метками, становится понятным значительное ухудшение результатов работы модели при изменении меток. Всё дело в том, что модель, в ходе предварительного обучения, видела и задачи, которые нас интересуют, и соответствующие метки. Это ведёт нас к следующему вопросу: могут ли LLM проводить точное лингвистическое аннотирование текста в том случае, если дать им другие, но при этом осмысленные, метки? Это позволило бы учесть обнаруженное нами загрязнение данных, но при этом дало бы модели возможность использовать другие знания о задаче, которые она получила в ходе предварительного обучения.
Для того чтобы это исследовать, мы расширили вышеописанный эксперимент с метками, добавив к нему набор меток, где соответствующие категории названы своими полными названиями, а не сокращениями, используемыми в наборе данных. Например, теги «PROPN POS» выглядят теперь как «proper noun», а именованная сущность «LOC» теперь носит название «location».
Когда мы передали LLM названия сущностей в качестве меток в контекстных примерах, результаты работы модели оказались почти так же хороши, как и при использовании исходных меток. При решении задачи NER, по результатам нескольких прогонов системы, результаты использования новых меток даже попали в пределы стандартного отклонения от результатов использования исходных меток. Это говорит о том, что между этими двумя наборами меток нет существенной разницы. Но тут заметно серьёзное снижение точности POS‑тегирования. Это так, возможно, из‑за того, что бенчмарки Universal Dependencies в наборе данных Pile «научили» модель POS‑тегированию в ходе предварительного обучения.
В результате можно сказать, что изменение меток, используемых в ходе контекстного обучения модели, сильно влияет на возможность выдачи моделью лингвистических структур для переданных ей предложений. Неудивительно то, что лучшие результаты получаются при использовании меток, применяемых в существующих задачах. При этом предварительно обученные модели показывают устойчивые результаты на специфических, семантически адекватных вариациях промптов, например, когда в роли меток используют описания категорий. Но эти модели остаются уязвимыми ко многим другим типам вариаций меток, в особенности — когда эти варианты меток конфликтуют с предыдущими знаниями, закодированными в модели.
Итоги
По мере того, как LLM становятся всё более распространёнными, огромной проблемой, связанной с их внедрением в разные сферы нашей жизни, становится тот факт, что мы, на самом деле, не знаем о том, как они работают. Это делает предсказание их поведения сложной задачей. Мы, проведя эксперименты, внесли некоторую ясность в то, как подготовка промптов показывает себя в решении двух базовых NLP‑задач. А именно, выяснено, что LLM, решая задачи с использованием промптов, используют и контекстные примеры, и собственные знания. Но если примеры, которые им предоставляют, конфликтуют с тем, что им уже известно, модели эти примеры игнорируют. Мы, кроме того, выяснили, что источником многих из «ранее приобретённых знаний» являются размеченные примеры соответствующих задач, которые загрязняют наборы данных, предлагаемые моделям при их обучении. Правда, когда мы учитывали это в ходе экспериментов, оказалось, что LLM и при таком подходе способны к контекстному обучению с использованием наборов меток, заменяющих исходные метки.
Недавно были проведены исследования, расширяющие наши эксперименты. Было выяснено, что, при перемешивании или изменении меток, более крупные модели (до 540 миллиардов параметров) показывают себя лучше, чем более компактные модели (почитать об этом можно здесь и здесь). В других работах выяснено, что обнаруженная нами зависимость моделей от ранее приобретённых знаний распространяется и на задачи генерирования кода с помощью LLM.
Есть и другие свидетельства, подтверждающие то, что данные, на которых производится предварительное обучение моделей, могут объяснить множество странностей контекстного обучения. Например — как в случае, когда количество чисел в учебных данных коррелирует с лучшей точностью решения моделями математических задач. То же относится и к проникновению текстов, написанных не на английском языке, в модели, предварительно обученные на англоязычных материалах. Это позволяет таким моделям решать задачи на языках, отличающихся от английского. Хотя непосредственная оценка данных, используемых для предварительного обучения моделей, во многих случаях невозможна (в силу того, что это — закрытые данные), разработаны методы обхода этой проблемы. Один из них — использование показателя, характеризующего понятность промптов, для оценки распределения данных предварительного обучения (и результативности промптов).
Учитывая перспективы возможного применения LLM во многих сферах человеческой деятельности, можно сказать, что понимание того, как именно работают LLM — это жизненно важно для безопасного и максимально эффективного их использования. Сейчас LLM начинают применять для решения практических задач, обычным пользователям предлагают встраивать их в свою жизнь. Поэтому всё важнее и важнее становятся знания о том, на каких именно данных обучены наши модели, и о том, как это на них влияет.
О, а приходите к нам работать? ???? ????
Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.
Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.
Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.