Смотреть! Без математики

Да хоть убей, я не мог понять, как работают BERT или GPT-2.

Читаю статьи; последовательные диаграммы; покосился на уравнения; смотрели записанные классы; прочитать документацию по коду; и все еще изо всех сил пытался во всем этом разобраться.

Дело было не в математике.

Скорее всего, как-то не хватало той большой части, которая, как вы ожидали, предшествовала мелочам.

Эта статья восполняет этот пробел, объясняя простым языком, как построены эти модели. Это статья, которую я хотел бы прочитать первой; многие детали тогда уместились бы на свои места.

С щедрой помощью ABBA мы представим три разные идеи. Я гарантирую, что ни в одном из них не будет ни одного математического уравнения:

1. Обдумывание слов и их значений - Внимание
2. Блин складывания мелких компонентов - Глубокое обучение
3. Размышляя о словах и сигналах - Вложения

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

1. Обдумывание слов и их значения - Внимание

Давайте посмотрим на следующее предложение:

Предположим, мы попросили троих друзей прочитать это предложение. Хотя они, вероятно, согласятся, что тема предложения - дождь, они могут расходиться во мнениях относительно того, какие слова наиболее важны для слова «дождь», чтобы передать истинное значение этого предложения.

Бенни мог бы сказать, что «постучал» и «окно» были самыми важными, потому что предложение касается шума, производимого дождем.

Фрида могла бы сказать, что «мягко» и «лето» - самые важные, потому что это предложение о том, что такое летний дождь.

Бьорн может использовать совершенно другой подход и сосредоточиться на «ed» и «that», чтобы предположить, что это предложение связано с воспоминаниями о прошедшем дожде.

Хотя все три читателя принимают одно и то же предложение, каждый обращает внимание на разные части. Каждый приписывает разное значение одним словам по отношению к «дождю», игнорируя при этом важность других.

Их разные способы понимания этого предложения также определяют их ожидания в отношении того, что будет дальше. Когда их просят продолжить следующее предложение, начинающееся с: «Это…», они могут сказать:

Каждый из этих трех вариантов имеет смысл.

Эта концепция внимания и то, как слова в тексте связаны друг с другом по-разному, является центральной идеей. Мы хотели бы взять эту идею, уделить внимание семантическим отношениям между словами, и научить машину делать это.

Модели задач, такие как BERT и GPT-2, обучаются правильному угадыванию следующего слова в фрагменте текста. Таким образом, после обучения такую ​​модель можно использовать для создания нового текста слово за словом.

Основное различие между этими двумя моделями заключается в том, что во время обучения в модели BERT вам также разрешено смотреть на текст, который идет после пропущенного слова, тогда как в GPT-2 вы только оглядываясь назад.

Генерация текста пословно звучит ненадежно; разве не имеет смысла создавать несколько слов, которые вместе имеют смысл?

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

После нескольких раундов у вас есть несколько потенциальных расширений предложения, и вы можете выбрать лучшие из них. Если затем мы попросим GPT-2 завершить предложение, он может предложить следующие разумные предложения:

2. Компоненты для укладки блинов - Глубокое обучение

Предпосылка - и обещание - этой статьи - объяснить, как работают большие языковые модели, такие как GPT-2.

По крайней мере, мне нужно сказать вам, что это такое. Ответ: это стопка блинов.

GPT-2 - это стек идентичных компонентов, называемых декодерами, а BERT - это стек немного разных идентичных компонентов, называемых кодировщиками.

Насколько велики эти стопки? Ну, это по-разному.

Чем больше слоев, тем больше искажается, смешивается и хрустит ваш ввод. Вот откуда приходит «Deep» в «Deep Learning». Одна из вещей, которую обнаруживают исследователи (и это был конкретный вопрос исследования при создании GPT-3), заключается в том, что чем больше вы складываете, тем лучше результаты для некоторых задач обработки естественного языка.

Вы заметите, что по мере того, как модели становятся больше, не просто стопка становится выше. Число внизу, «Размерность модели», также становится больше. Мы перейдем к этому номеру в следующем разделе; пока, пожалуйста, не обращайте на это внимания.

Чтобы понять, как работает большая языковая модель, все, что вам нужно знать, - это то, что происходит с вводом, когда он проходит через один из этих компонентов. С этого момента просто промойте и повторите.

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

Вместо этого давайте сначала проясним входные данные.

Эти модели «съедают» куски текста. (Для очень большого GPT-2 это 1024 токена, что составляет примерно 600–700 последовательных слов. Для BERT это половина этой суммы.) Этот фрагмент текста называется контекстом.

Каждое слово обрабатывается индивидуально, и модель вычисляет впечатление о том, как каждое слово соотносится со словами, которые были перед ним.

Кроме того, даже без конкретики, вы можете быть уверены, что сквозной шаг будет состоять из комбинации пяти типов действий:

Почему именно те? По двум очень конкретным причинам:

  1. Теоретически, если вы многократно комбинируете функции этих типов снова и снова, вы можете аппроксимировать любую функцию, какую захотите.

Практически все глубокое обучение основано на вышеупомянутой теоретической предпосылке.

Однако, когда дело доходит до обработки естественного языка, я чувствую, что не хватает паузы для странной идеи, что языковые задачи тоже являются функциями:

Когда мы переводим с английского на французский, мы выполняем функцию, которая принимает некоторые слова на английском языке и выводит определенный набор слов на французском языке.

Для генерации текста мы приближаем функцию, которая принимает кучу написанного текста и предлагает разумный выбор для следующего слова.

Несомненно, это сложные функции: в английском языке есть десятки тысяч слов и несметное количество взаимосвязей между ними.

Но чтобы ощутить, как что-то сложное можно аппроксимировать множеством простых функций, подумайте о все более сложной трехмерной сетке:

2. На практике, что-то вроде создания или перевода текста означает повторение таких действий МНОГО МНОГО РАЗ.
Чтобы теоретическая идея внимания была осуществима с помощью вычислений, выполняемые вычисления должны иметь определенные математические свойства.

Если посмотреть на список из пяти возможных действий, одно является избыточным. По какой-то причине он также появляется большими крикливыми буквами. Эта причина объясняется в следующей части:

3. Обдумывание слов и сигналов - Вложения.

Давайте подумаем о сложении вещей. С одной стороны, мы можем сложить ЧИСЛА: если мы возьмем 3 и прибавим 4, мы получим 7. Но, просто глядя на 7, не остается никаких следов ни от 3, ни от 4. Это просто 7.

С другой стороны, вы можете добавить МУЗЫКУ вместе: если вы возьмете песню и наложите ее на другую песню, вы получите новый трек, но вы все равно сможете разобрать каждую из двух песен. Вы создали что-то новое, но все же сохранили довольно много информации о каждом из исходных треков.

Сейчас я бы хотел, чтобы вы начали думать о словах, которые вы читаете как будто каждый из них представляет собой отдельный трехминутный музыкальный трек.

Причина этого музыкального обхода заключается в том, что у людей совершенно бессмысленная интуиция, когда дело касается пространств более высоких измерений. Мы экстраполируем на основе нашего опыта работы с 2D и 3D. Но во многих важных отношениях, таких как сложение вещей вместе, вещи ведут себя совсем по-другому в более высоких измерениях.

Дорожка слова называется его вложением. Не рассказывая вам, как это делается, скажу, что слова со схожим значением в конечном итоге имеют схожие вложения.

Прежде чем слова войдут в такие модели, как BERT и GPT-2, они сначала превращаются в длинные сигналы, а не в музыкальные. Но помните основную идею: сумма сохраняет много информации о каждой из исходных частей.

Возвращаясь к списку функций, из которых будет состоять каждый блин:

Причина появления больших крикливых букв начинает выясняться. Вспомните наш комитет по вниманию ABBA:

Мы показываем Бенни, Фриде и Бьорну предложение о дожде и просим их оценить, как слово «Оно» в следующем предложении соотносится со словами, которые были написаны ранее.

Затем идет Агнета, которая играет роль председателя комитета:

Брошенные мной числа (20% или 60%) не фиксированы. По мере того как модель узнает, что меняется, так это то, как Бенни, Бьорн и Фрида решают, какие слова из прошлого важны, а также то, какое значение Агнета придает их мнению.

Все это происходит в одном блинчике. Теперь мы складываем их: каждый последующий блок фактически получает в качестве входных данных сумму взвешенного суждения из предыдущего блока и входных данных предыдущего блока. Это гарантирует, что мнения нижних слоев не потеряны полностью по пути.

Помните те большие числа, которые я просил игнорировать? По мере роста модели дело не только в количестве блинов в стопке, но и в продолжительности «музыкального сигнала».

Представьте себе переход от Ватерлоо ABBA, который длится чуть менее 3 минут, к Богемской рапсодии от Queen (длится почти 6 минут).

Интуитивно вы можете почувствовать, что при объединении более длинных музыкальных треков информация о добавленных компонентах сохраняется еще лучше.

4. Свяжите три идеи в аккуратный бантик

То, как мы понимаем смысл, тесно связано с тем, как мы обращаем внимание на разные слова. Мы взвешиваем влияние слов, близких и дальних, в контексте того, что мы сейчас читаем.

Это позволяет нам, читателям, выполнять такие задачи, как заполнение пробелов в предложении или продолжение написания таким образом, который имеет смысл.

Итак, с философской точки зрения, истинное значение слова в предложении текущий контекст - это коллективное влияние всех слов перед ним. Таким образом, мы можем представить себе теоретическую языковую модель, которая «понимает» текст, отслеживая отношения, пусть даже неуловимые, между словами.

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

При создании реальной языковой модели мы используем вложения вместо написанных слов, и они ломаются в подобных BERT и GPT-2.

Чтобы лучше понять, что происходит с этими представлениями в процессе, я предложил думать об этом как о музыке, потому что сложение двух вещей больше похоже на наложение музыки, чем на добавление обычных чисел.

Затем мы посмотрели на брюхо языковой машины. Выглядело это не очень красиво, просто стопка блинчиков одинаковых коробок, каждая из которых кормилась из следующей.

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

Резюме

Я не заметил каких-то деталей? Черт возьми!

Цель заключалась в том, чтобы никогда не упускать из виду общую картину.

Хотя комитет ABBA не ТОЧНО, что происходит в каждом декодере, он достаточно близок к истине, чтобы сделать подробности приемлемые. Если бы я сейчас сказал вам, что на каждом уровне не три головы внимания, а их двенадцать, это вряд ли будет иметь большое значение, верно?

Вообще говоря, всякий раз, когда в этой статье упоминается конкретное число (например, 12 или 1024), предполагайте, что исследователи уже увеличили его.

Вот вкратце история GPT-3:

Вместо 12 слоев - 96.
Вместо 1024 токенов в контексте - 2048.
Вместо 12 голов внимания на слой - 96.
Вместо размера встраивания 1600 - 12 288 (!! !)

(Учитывая все, что мы видели, последняя строка дает место для паузы: действительно ли нам нужно переходить от песни ABBA к 27-минутному музыкальному номеру для каждого слова? Скорее всего, нет.)

Но основная предпосылка остается прежней.

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

Когда технология уходит от академической игрушки к чему-то с ощутимым влиянием, я не верю, что исследователи имеют право придерживаться запутанного математического языка.

Моральный долг - объяснить эти концепции так, чтобы каждый мог их понять. По крайней мере, это то, что я сказал ABBA, чтобы они согласились прийти и помочь.

Источники:

1. Сет, Y.2019. BERT Explained - список часто задаваемых вопросов. https://yashuseth.blog/2019/06/12/bert-explained-faqs-understand-bert-working/

2. Аламмар Дж. Иллюстрированный GPT-2.
https://jalammar.github.io/illustrated-gpt2/

3. Арора, А. 2020. Аннотированный GPT-2. https://amaarora.github.io/2020/02/18/annotatedGPT2.html

4. Смит, Н.А. 2019. Контекстные представления слов: контекстное введение. https://arxiv.org/abs/1902.06006

5. Ли, К. 2020. OpenAI's GPT- 3 языковая модель: технический обзор. https://lambdalabs.com/blog/demystifying-gpt-3/

6. Кальво М.Р. 2018. Анализ BERT.
https://medium.com/dissecting-bert

7. HuggingFace. Пишите с помощью трансформаторов. https://transformer.huggingface.co/doc/gpt2-large