Объяснение токенизации в больших языковых моделях |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-09-07 11:54 Современные языковые модели предсказывают «токены», а не слова, но что именно представляют собой токены? В апреле платные подписчики Counterfactual проголосовали за пост, объясняющий, как работает токенизация в LLM. Как всегда, не стесняйтесь подписываться, если хотите проголосовать за будущие темы постов; однако сами посты всегда будут доступны публично. Большие языковые модели (LLM), такие как ChatGPT, часто описываются как обучаемые предсказывать следующее слово . Действительно, именно так я описал их в моем объяснении с Тимоти Ли . Но это не совсем так. Технически, современные LLM обучены предсказывать то, что называется токенами . Иногда «токены» — это то же самое, что и слова, но иногда нет — это зависит от типа используемой техники токенизации . Это различие между токенами и словами тонкое и требует дополнительных пояснений, поэтому его часто опускают в описаниях того, как работают LLM в целом. Но как я уже писал ранее , я думаю, что токенизация — это важная концепция для понимания, если вы хотите понять основы современных LLM. В этом объяснении я начну с того, что дам некоторую справочную информацию о том, что такое токенизация и почему люди ее используют. Затем я расскажу о некоторых различных методах токенизации и о том, как они связаны с исследованиями морфологии человеческого языка. Наконец, я обсужу некоторые из недавних исследований, которые были проведены в области токенизации, и о том, как это влияет на представления, которые изучают LLM. Всем, кто хочет узнать больше, я настоятельно рекомендую ознакомиться с обучающими материалами по токенизации , разработанными HuggingFace — компанией, которая разработала широко используемую библиотеку transformers на Python. Что такое «токены» и для чего они нужны? LLM — это предиктивные модели. То есть они обучены предсказывать элементы в последовательности на основе других элементов, которые появляются в этой последовательности. Токенизация — это процесс разбиения этой последовательности на несколько дискретных компонентов («токенов»). Эти токены, в свою очередь, можно рассматривать как словарь модели — типы вещей, которые модель обучена распознавать и производить. Чтобы обучить и использовать LLM, нам нужно принять некоторые решения о том, что входит в ее словарь. Чтобы немного прояснить ситуацию, давайте рассмотрим простую последовательность слов, в которой последнее слово отсутствует:
Читая это предложение, нам становится ясно, что это за слова. Но для компьютера блок текста («строка») — это всего лишь одна длинная последовательность символов. По умолчанию компьютерная программа не знает, что такое слово; например, в Python строка на самом деле представлена серией символов Unicode . Если мы хотим, чтобы система предсказывала следующий «элемент» в этой последовательности, мы сначала должны решить, что это за вещи и как идентифицировать их в тексте. Являются ли элементы словами? Отдельными символами? Естественно начать с разбиения последовательности на слова . В таком языке, как английский, написанные слова обычно разделяются пробелами, поэтому определение границ слов довольно просто ( это не так во всех языках! ). Мы можем разделить строку по каждому найденному пробелу, получив список «слов» (символов, не являющихся пробелами). Такие языки программирования, как Python, предлагают несколько способов сделать это, а такие пакеты, как Natural Language Toolkit (nltk), имеют полезные функции, которые могут облегчить нам жизнь. Конечной целью является создание чего-то вроде этого: Этот список слов является токенизацией предложения, с которого мы начали. Каждая единица в этой последовательности является токеном , который в этом случае соответствует словам в этом предложении. Языковая модель может использовать эти токены для определения того, какой токен, скорее всего, будет следующим. Технически, каждому токену назначается другой ID ; в современных LLM эти ID сопоставляются с токеном embedding , который, в свою очередь, подается в LLM. (Для получения более подробной информации о том, как работают LLM и встраивания, я рекомендую мой Explainer с Тимоти Ли. ) Эти уникальные ID являются просто числами. Чтобы проиллюстрировать, как это может выглядеть, я токенизировал предложение выше, используя тот же токенизатор, который использует BERT (языковая модель, созданная Google) :1
Обратите внимание, как по крайней мере один из этих идентификаторов повторяется: «1996» — это идентификатор, назначенный слову «the», которое встречается в предложении дважды. Как я уже упоминал выше, каждый из этих идентификаторов сопоставляется с уникальным вложением в языковой модели BERT. Чтобы сделать прогноз о том, какое слово будет следующим, BERT ищет каждое из этих вложений и пропускает их через слои модели. Токенизация является важным шагом для обучения языковой модели, поскольку она определяет словарный запас модели . Языковая модель должна «знать», как обрабатывать входные данные и какие типы вещей она должна предсказывать. Например, если мы хотим, чтобы наша модель обращала внимание на слова и производила слова , то модель должна знать, что это за слова и как их идентифицировать. Один из способов думать об этом заключается в том, что токенизация сообщает модели, какие типы вещей существуют в первую очередь. Вот почему исторически обработка неизвестных или «внесловарных» (OOV) слов была большой проблемой для языковых моделей: если токен не является словарем модели, как она узнает, что нужно производить этот токен или назначать ему некоторую вероятность в контексте других токенов? Вычислительные лингвисты разработали всевозможные методы для обработки неизвестных слов , например, назначая им некоторую постоянную, низкую вероятность. Конечно, мы могли бы решить, что наши токены должны быть символами, а не словами, и в этом случае токенизация для исходной последовательности выглядела бы следующим образом: Такая языковая модель будет основана на символах , а не на словах . Это означает, что языковая модель обучена предсказывать (и генерировать) отдельные символы. Обучение модели предсказывать символы вместо слов имеет некоторые преимущества. Во-первых, существует гораздо меньше возможных символов, чем слов; это означает, что словарь модели может быть намного меньше, чем если бы он был основан на словах. Аналогично, обучение на символах, а не на словах дает модели гораздо большую гибкость. Даже если модель никогда не наблюдала определенную последовательность символов, она, вероятно, наблюдала отдельные символы в этой последовательности, поэтому она все равно может назначить этой последовательности некоторую вероятность. Эта гибкость хорошо подходит для обработки слов OOV, но она имеет свою цену. Многие предсказания в языке зависят от предыдущих слов или даже синтаксических фраз , а сосредоточение на отдельных символах настолько низкоуровневое, что это затрудняет изучение этих более высоких уровней абстракции. Это также означает, что контекстное окно моделей должно быть значительно длиннее: если вы хотите узнать, какое слово встречалось три слова назад, то для словесной модели потребуется контекстное окно из трех токенов, тогда как для символьной модели, вероятно, потребуется контекстное окно из не менее 14 токенов (поскольку английские слова в среднем состоят примерно из 4,7 символов). Итак: токенизация пробелами приводит к огромному словарному запасу с меньшей гибкостью, а токенизация символами усложняет задачу моделирования языка. В наши дни языковые модели используют своего рода гибридный подход, который призван объединить лучшее из обоих миров. Этот подход называется токенизацией подслов. Рост токенизации подслов Токенизация подслов основана на наблюдении, что слова по определению состоят из меньших подстрок («подслов»), которые повторяются во многих других словах. Наименьшая возможная подстрока в слове — это, конечно, символ (например, «d»). Но более длинные подстроки также могут быть полезны для идентификации, особенно если они достаточно часты, чтобы их можно было найти в других словах. Чтобы проиллюстрировать, как это выглядит, я использовал токенизатор BERT, чтобы найти примеры двухсложных слов, которые были разложены на два (как в случае с «racket») или даже три (как в случае с «vanquish») токена. Здесь обозначение «##» указывает на то, что этот токен является токеном подслова в словаре BERT. Токену «##et» будет назначено собственное вложение, как и целым словам, например, «lesson». Что определяет, будет ли слово представлено одним токеном или разложено на более мелкие, общие подслова? Как объясняется в руководстве HuggingFace , все дело в частоте. Если слово встречается очень часто, токенизатор, вероятно, будет использовать один токен для его представления. Но если слово встречается реже, токенизатор может не беспокоиться о добавлении всего слова в свой словарь — вместо этого он будет полагаться на разложение слова на более общие подслова. Иногда это может приводить к странным токенизациям, как в случае с «vanquish» выше, но есть надежда, что это поможет современным LLM ориентироваться в Сцилле и Харибде моделей, основанных на словах и символах. На практике существует несколько различных методов токенизации подслов. Большинство из них работают по схожему принципу (используют один токен для распространенных слов и несколько токенов для менее распространенных слов), но реализуются немного по-разному. Один из популярных методов называется кодированием пар байтов (BPE) . BPE начинается с создания токенов для всех основных символов, используемых в обучающем тексте токенизатора, например, отдельных символов, таких как «d» или «o»; это аналогично словарю модели на основе символов. Затем BPE ищет способы начать объединение этих основных символов в общие строки. Операция «объединения» просто относится к объединению двух токенов, которые уже существуют в словаре модели. Сначала эти токены будут отдельными символами, поэтому объединение создаст двухсимвольные токены: например, символы «d» и «o» могут быть объединены для создания подстроки «do», если такая подстрока достаточно распространена. Это означает, что словарь модели теперь будет включать отдельные символы, а также подстроку «do». Позже эти более длинные подстроки можно будет использовать и в операциях слияния: например, подстроку «do» можно объединить с символом «g», что означает, что словарь модели теперь будет включать также строку «dog». Этот процесс применяется до тех пор, пока не будет достигнут некоторый предопределенный размер словаря. Например, исследователь может решить, что ему нужен словарь не больше 50 000 токенов. Это означает, что BPE будет продолжать объединять различные токены и добавлять новые элементы в словарь до тех пор, пока словарь не будет иметь 50 000 токенов. Как только желаемый размер словаря будет достигнут, токенизация будет завершена, и обучение языковой модели может начаться всерьез. На практике решения о размере словаря модели в основном сводятся к производительности. Большие словари позволяют использовать более конкретные представления слов (или подслов), но они также приводят к более крупным (и часто более медленным) моделям. Таким образом, исследователям приходится балансировать между требованиями лексического покрытия (сколько слов «знает» токенизатор) и эффективностью (насколько легко и быстро модель может быть обучена и запущена). Токенизация подслов не является панацеей, но, по крайней мере, в современных LLM она обычно работает лучше, чем явно основанная на символах или словах токенизация. Являются ли подслова тем же самым, что и морфемы? Если этот пост читают лингвисты, то все эти обсуждения «частых подслов» наверняка заставят вас задуматься о морфемах . Морфема определяется как наименьшая значимая единица выражения. Некоторые слова имеют только одну морфему (например, «dog»), в то время как другие имеют несколько морфем (например, «dogs» = «dog» + «-s»). Морфемы продуктивны , что означает, что их можно объединять вместе для создания новых слов с систематическими, предсказуемыми значениями. Например, суффикс «-s» можно добавлять к ряду различных английских существительных, чтобы указать, что существительное имеет множественное число . Морфология — пример композиционности, которая является частью того, что делает человеческий язык таким мощным. Вместо того, чтобы создавать совершенно новое слово, означающее «более одной собаки», мы можем просто склеить корневое слово («собака») с суффиксом множественного числа («-s»). В принципе, это должно сократить количество различных слов или морфем, которые нам нужно запомнить, и это также должно дать нам больше гибкости при создании новых выражений; что важно, это также, вероятно, делает эти новые выражения более легкими для понимания, поскольку понимающий язык может понять, что «собаки» — это просто «собака» и «-s», соединенные вместе, т. е. «более одной собаки».2 Морфология также играет важную роль в изучении языка, и было проведено много исследований, изучающих, как и когда дети приобретают понимание морфологии. Классическое исследование 1958 года, проведенное Жаном Берко, обнаружило, что дети в возрасте от 3 до 5 лет были способны обобщать морфологические правила (например, множественное число «-s») на новые слова, которые они никогда раньше не видели, например, «wug». Пример «wug» и «wugs» из классического исследования Жана Берко 1958 года . Эти преимущества кажутся весьма схожими с предполагаемыми преимуществами токенизации подслов, поэтому возникает соблазн думать, что токенизация подслов неявно изучает морфологию, — хотя на самом деле это не совсем так. Если бы токенизация подслов работала путем разложения слов на их морфемы , то такие слова, как «dog» были бы представлены одним токеном, в то время как такие слова, как «dogs», были бы представлены несколькими токенами. На практике это не то, что происходит: оба слова представлены одним токеном. Напротив, одноморфемные слова, такие как «racket», представлены двумя токенами («rack» + «##et»). Это потому, что токенизация подслов не обучена определять морфемы — она обучена определять наиболее частые подслова , которые могут соответствовать морфемам, а могут и не соответствовать. В некоторых случаях токенизация подслов сходится к морфемам случайно. Например, «de-» в «dehumidifier» представлено как его собственный токен (см. ниже). В то же время корень «humid» фактически представлен в виде двух токенов, когда он встречается в «dehumidifier», хотя сам по себе «humid» представлен в виде одного токена! Это потому, что токенизатор выучил представление для «humid» сам по себе, но, по-видимому, не для случаев, когда он встречается в середине строки. И технически, морфологический разбор «ifier», вероятно, будет двумя морфемами: «-ify» и «er». Быстрый неформальный анализ показывает, что префикс «de-» часто идентифицируется как отдельный токен (например, как в «decompose» или «deactivate»). Однако, как и в случае с «dehumidifer», корневые слова не всегда представлены как отдельные морфемы (например, «decompose» токенизировано как «de» + «##com» + «##pose»). В ответ на вопрос, вынесенный в заголовок этого раздела, подслова — это не то же самое, что морфемы. Если мы чувствуем себя великодушными, мы могли бы думать о подсловах как о «морфемах для языковых моделей», хотя я не уверен, полезна ли такая аналогия или нет. Но подслова, которые алгоритмы вроде BPE изучают, часто не отображаются на границах морфем человеческого языка и не имеют внутреннего значения — по крайней мере, для нас, людей. Насколько важна морфология? Морфология — важная часть человеческого языка. Поскольку токенизация подслов не гарантирует, что слова токенизированы в соответствии с границами морфем, можно подумать, что это может ухудшить способность языковой модели усваивать полезные представления. Так ли это? И если так, помогает ли обучение токенизаторов в соответствии с границами морфем? Примечательно, что растет интерес к так называемой «морфологически осведомлённой» токенизации. Эти подходы побуждают токенизаторов изучать токены подслов, которые соответствуют морфемам, а не просто изучать наиболее частые подслова. Один из способов сделать это — начать со списка известных морфем в языке (и того, как разные слова распадаются на эти морфемы) и заставить токенизатор начать с этих морфем. С одной стороны, современные LLM уже довольно впечатляют — что подразумевает, что, возможно, токенизация подслов работает просто отлично. В то же время, самые популярные LLM созданы для таких языков, как английский, которые имеют относительно простую морфологию . Напротив, синтетические языки , такие как немецкий, имеют известную сложную морфологию, которая может представлять большую проблему для неморфемных схем токенизации. Кроме того, как ясно показывает этот недавний препринт , просто не было достаточного анализа того, как именно различные схемы токенизации влияют на производительность ниже по течению. Например, можно было бы ожидать, что морфологически осведомлённая токенизация будет особенно полезна, когда LLM должен обобщать слова, не входящие в словарный запас, состоящие из нескольких морфем. Например, если бы слова «деактивировать» не было в словаре магистра права, то, по-видимому, магистрам права было бы легче представить это новое слово, если бы оно было токенизировано в соответствии с известными, значимыми токенами («de» + «activate»), а не в соответствии с какими-то случайными подсловами, которые сами по себе не имеют значения («deac» + «tivate»). Из того, что я прочитал, данные о том, влияет ли отсутствие морфологии в токенизаторах подслов на эффективность модели и каким образом, неоднозначны. В недавней работе на семинаре я исследовал этот вопрос вместе с тремя соавторами из Калифорнийского университета в Сан-Диего ( Кэтрин Арнетт , Пэм Ривьер и Тайлер Чанг ). Мы сосредоточились на феномене согласования артикля и существительного в испанском языке. В испанском языке (как и во многих языках) номер артикля должен «согласовываться» с номером существительного (например, «la mujer» против «la s mujer es »). Мы задались вопросом, насколько хорошо предварительно обученная модель испанского языка может предсказать правильный артикль (например, «la» против «las») из существительного. Что особенно важно, мы также задались вопросом, зависит ли способность LLM делать это от того, было ли существительное токенизировано в соответствии с границами морфем. Это было особенно актуально для существительных во множественном числе: в некоторых случаях существительные во множественном числе были токенизированы как целые слова («например, «mujeres» —> «mujeres»), в то время как в других случаях они были токенизированы в соответствии с границами морфем (например, «naranjas» —> «naranja» + «##s»), а в третьих случаях они были токенизированы в не имеющие смысла подслова (например, «neuronas» —> ««neuro» + «##nas»). (например, «mujeres»). Несколько удивительно, но мы обнаружили, что способ токенизации существительного на самом деле не оказал существенного влияния на способность LLM предсказывать правильный артикль — даже при контроле частоты существительного (которая коррелировала с тем, как оно было токенизировано). Конечно, отсутствие разницы здесь может быть просто связано с тем, что производительность была очень высокой по всем направлениям (около 100%). В будущей работе мы хотели бы разработать более сложную задачу на согласие, которая могла бы выявить различия, которые было трудно обнаружить в такой простой задаче. Одним из наиболее интересных результатов стало то, что производительность оставалась высокой даже при использовании «искусственной» схемы токенизации (внедренной Пэм ), которая заставляла модель токенизировать слово в соответствии с границами его морфем. То есть, даже несмотря на то, что LLM обычно токенизировал «mujeres» как «mujeres», мы заставили ее представлять «mujeres» как токены «mujer» и «##es» (оба из которых уже существовали в ее словаре). Несмотря на то, что модель по определению никогда не наблюдала «mujer» и «##es» как ряд токенов в своих обучающих данных, производительность все еще была очень высокой — что говорит о том, что ее представление «##es» абстрагировало что-то значимое о множественном числе существительных. Однако в другой работе было обнаружено большее влияние токенизации. Например, в этом недавнем препринте впервые был разработан аналогичный метод для определения того, было ли слово токенизировано в соответствии с границами морфем, неморфемными подсловами или как отдельный токен в словаре. Затем они разработали несколько новых критериев, которые требовали от разных английских LLM сопоставлять слова с определениями, определять количество и тип морфем в слове и определять, были ли два слова семантически связаны. В каждом случае LLM, как правило, давал лучшие результаты для слов, которые были токенизированы морфологически. Авторы пишут:
(Здесь «чужеродная» токенизация относится к словам, которые были разобраны на неморфемные подслова.) Влияние токенизации подслов на производительность модели — область растущего интереса в исследованиях LLM. Как я уже писал выше, одним особенно важным измерением, которое следует здесь учитывать, является тот факт, что языки значительно различаются по своей морфологии. Многое еще неизвестно о влиянии алгоритмов, таких как BPE, на разные языки, хотя в этой недавней статье было обнаружено, что, как и ожидалось, BPE изучает различные виды токенов в зависимости от рассматриваемого языка. Сосредоточившись конкретно на том, какие подслова изучаются первыми, авторы пишут:
Еще предстоит выяснить, влияет ли это на различия в числе магистров права, обучающихся по разным языкам, и если да, то каким образом. Могут ли токены заглянуть внутрь себя? Другим побочным эффектом текущих схем токенизации подслов является то, что для модели нетривиально «заглянуть внутрь» данного токена, чтобы узнать, какие символы он содержит. В конце концов, если слово «dog» представлено с его собственным уникальным идентификатором, не сразу становится очевидным, как LLM может определить, что «dog» пишется как «d», «o», «g». Конечно, ChatGPT-4 довольно хорошо справляется с определением символов в токене. Если попросить ChatGPT-4 перечислить символы в слове типа «inexplicable», например, он ответит правильно: В то же время, есть много примеров, когда даже самые современные LLM испытывают трудности с выполнением задач, которые зависят от знания отдельных символов в строке, например, подсчета того , сколько раз встречается данный символ. ChatGPT-4 довольно хорошо справляется с более короткими, предсказуемыми случаями, но можно также придумать входные данные, которые обманывают модель: В этом случае входная строка «iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii» содержит 30 символов , но только 29 из них содержат букву «i». ChatGPT отвечает, что буква «i» встречается 30 раз, и выдает строку, которая действительно содержит 30 вхождений «i». На самом деле таких случаев много, включая криптографические кроссворды и шифры. И как Том Маккой и другие демонстрируют в своей статье об «углях авторегрессии» , оказывается, что LLM справляются лучше, когда рассматриваемая строка (или задача) чаще встречается в обучающих данных LLM. Опять же, это не должно быть особенно удивительным. LLM обучены предсказывать токены, и если этот токен содержит несколько символов, неясно, почему или как LLM должен знать, что это за символы (или сколько раз каждый из них встречается). Я был заинтригован, когда наткнулся на эту статью Аюша Каушала и Кайла Маховальда о том, что токены «знают» о своих символах . В этой статье авторы задаются вопросом, содержат ли представления LLM токена ( например, для слова «cat») информацию о символах в этом токене (например, «c», «a» и «t»). Для этого они обучают классификатор обнаруживать наличие или отсутствие определенных символов (например, «c») в различных многосимвольных токенах, используя встраивание для этих токенов. Опять же, нет веских априорных причин ожидать, что встраивание для «cat» должно содержать информацию о том, как это слово пишется, поскольку «cat» представлено просто как уникальный идентификатор в словаре модели. Тем не менее, авторы обнаружили, что все протестированные модели работают намного выше случайности (50%). Некоторые модели, такие как GPT-J , работают более 80%, что означает, что они могут точно определить, содержит ли слово заданный символ (например, «M») более чем в 80% случаев. Как это возможно? Одна из возможностей заключается в том, что определенные части речи с большей вероятностью содержат определенные символы, а вложения слов уже содержат информацию о части речи слова. Например, наречия часто заканчиваются на «-ly», поэтому, если вложение указывает на то, что слово является наречием, должно быть возможно узнать, что это слово, вероятно, содержит «l» или «y» (даже если не все наречия заканчиваются на «-ly»). Однако авторы обнаружили, что предсказание того, какие символы есть в слове, на основе части речи слова, не работает так же хорошо, как использование вложений из GPT-J. Классификатор, использующий часть речи, работает прилично (около ~60%) и выше случайности, но это не может быть полным объяснением. Другая возможность заключается в том, что LLM неявно узнает, какие символы находятся в слове, поскольку одно и то же корневое слово («лемма») иногда токенизируется по-разному, в зависимости от того, как оно представлено. Например, токенизатор GPT может токенизировать корневое слово «словарь» как «d + ictionary» («словарь»), «словарь» («словарь»), «d + iction + aries» («словари») или «diction + aries» («словари»). Теоретически, для LLM было бы полезно узнать, что все эти различные комбинации токенов связаны с одним и тем же основным значением (СЛОВАРЬ), и один из возможных путей, по которому LLM мог бы это сделать, — узнать что-то о совпадении символов в этих токенах. Авторы пишут:
Затем авторы проводят контролируемый эксперимент, показывающий, что увеличение вариативности того, как токенизировано данное слово (при этом сохраняя это в разумных пределах), на самом деле приводит к улучшению прогнозов о символах, содержащихся в этом слове. Это согласуется с гипотезой о том, что некоторая вариативность того, как токенизировано корневое слово, заставляет модель изучать представления, которые захватывают обобщения по этим представлениям слова — возможно, аналогично в принципе идее о том, что представление модели «речь-текст» с различными «шумовыми» условиями заставляет ее изучать более надежные представления. Как и в случае с исследованиями морфологии, растет объем исследований того, что именно токены знают о своем содержании: сколько у них букв , а также какие гласные и согласные . В своей собственной работе я обнаружил, что LLM, такие как GPT-4, могут давать точные оценки того, насколько знаковым является слово, т. е. связано ли каким-либо образом значение слова с тем, как это слово звучит. Я до сих пор не понял, как GPT-4 это знает, но интуитивно ответ на такого рода вопросы, похоже, требует определенных знаний о том, как звучит слово (и, конечно, что оно означает). Будущее токенизации Во многих отношениях токенизация подслов является улучшением старых методов. Токенизаторы, основанные на пробелах или пунктуации (т. е. «токенизаторы на основе слов»), в конечном итоге имеют большой словарный запас и испытывают трудности с обработкой неизвестных слов, а также испытывают трудности с системами письма, которые не разделяют слова пробелами. Токенизаторы, основанные на отдельных символах, более гибки, но испытывают трудности с изучением полезных, зависящих от контекста представлений на более высоких уровнях абстракции (например, слов или фраз). В наши дни кажется, что токенизация подслов приводит к моделям, которые более устойчивы к словам, не входящим в словарный запас, а также формируют представления слов, которые помогают с прогнозированием. Все еще остается открытым вопрос, поможет ли и в какой степени включение информации о морфологической структуре слов языковым моделям лучше выполнять свою работу. Есть большая вероятность, что ответ на этот вопрос будет зависеть от рассматриваемой задачи, а также от языка: некоторые языки имеют более богатую и сложную морфологию, чем другие, и можно было бы ожидать, что морфологическая информация будет более полезной для этих языков, чем для аналитических языков, таких как английский. Этот вопрос еще больше усложняется тем фактом, что среди когнитивных ученых все еще ведутся споры о том, как именно морфология на самом деле работает в понимании человеческого языка. Храним ли мы морфологические знания как «правила» или мы в основном просто запоминаем все различные формы слова? Как эти стратегии меняются в ходе развития? И находится ли информация о правилах или сохраненных формах в разных частях мозга? Мне бы хотелось думать, что будущие исследования этого вопроса на людях могли бы дать информацию о стратегиях, реализуемых для токенизации языковых моделей, хотя, конечно, также возможно, что для языковых моделей окажутся полезными совершенно разные стратегии. Для меня самым большим вопросом в будущем будет то, как эти стратегии токенизации повлияют на производительность моделей. Как мы видели, это потребует проведения контролируемых экспериментов, сравнивающих различные подходы к токенизации, и выяснения того, как эти различные подходы влияют на производительность модели в какой-то нисходящей задаче. Ответ может заключаться в том, что при всех их различиях большинство подходов к токенизации подслов работают довольно хорошо в большинстве задач, но также может оказаться, что существуют общие, четко идентифицируемые режимы сбоев. Нам придется провести исследование, чтобы выяснить это. Для наглядности примера я удалил токены [CLS] и [SEP], которые токенизатор BERT автоматически добавляет к своим входным данным. Стоит отметить, что у многих слов нет регулярной морфологии. Например, прошедшее время слова «go» — «went», а не «goed». На самом деле, многие дети совершают ошибки чрезмерного обобщения при изучении языка, например, применяя правило, например, прошедшее время «-ed», в ситуации, когда оно не должно применяться. Это признак того, что ребенок на самом деле начинает изучать эти правила; в конце концов, он поймет, какие слова являются правильными (например, «walk»), а какие — нет (например, «go»). Источник: seantrott.substack.com Комментарии: |
|