Подробная XLNet

алгоритм

Это 31-й день моего участия в августовском испытании обновлений. Ознакомьтесь с подробностями мероприятия: Испытание августовского обновления

Видео объяснение станции B

«Сухая улица Сезам»

В 2018 году Google выпустила BERT, крупномасштабную языковую модель предварительного обучения, основанную на двунаправленном преобразователе, которая обновила лучшие записи производительности для 11 задач НЛП, преподнеся большие сюрпризы в области НЛП. Вскоре BERT стал популярным в кругу, и множество новых профессий, связанных с ним, появлялось одно за другим.

Шок, вызванный BERT, не утих: исследователи из Университета Карнеги-Меллона и Google Brain предложили новую предварительно обученную языковую модель XLNet, которая превосходит BERT в 20 задачах, таких как SQuAD, GLUE и RACE.

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

Основываясь на этих преимуществах и недостатках, в этом исследовании предлагается обобщенная авторегрессионная предварительно обученная модель XLNet. XLNet может: 1) изучать двунаправленную контекстную информацию, максимизируя логарифмическую вероятность всех возможных порядков факторизации; 2) преодолевать недостатки BERT с характеристиками самой авторегрессии. Кроме того, XLNet также включает в себя идеи текущей оптимальной авторегрессионной модели Transformer-XL.

В конечном счете, XLNet превосходит BERT в 20 задачах и достигает самой современной производительности в 18 задачах, включая машинные ответы на вопросы, вывод на естественном языке, анализ настроений и ранжирование документов.

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

AR и AE два лагеря

Авторегрессивная языковая модель (авторегрессивная LM)

До выхода ELMO/BERT языковая модель, о которой все обычно говорили, на самом деле предсказывала следующее слово, которое могло бы следовать, на основе вышеприведенного содержания, что является часто упоминаемой задачей языковой модели слева направо или наоборот (что на основе следующих предсказаний предшествующего слова). Этот тип LM называется моделью авторегрессионного языка. GPT — типичная модель авторегрессионного языка. Хотя ELMO, кажется, использует вышеизложенное и следующее, по сути, это все еще авторегрессионный LM, что связано с тем, как модель реализована. ELMO должен выполнить два направления авторегрессионного LM (языковые модели слева направо и справа налево), а затем соединить скрытые состояния двух направлений LSTM вместе, чтобы отразить двунаправленную языковую модель. Так что по сути это все еще авторегрессивная языковая модель.

заданная текстовая последовательностьx=[x1,,xT]\mathbf{x}=[x_1,…,x_T], целью языковой модели является настройка параметров для максимизации функции правдоподобия на обучающих данных:

maxθ  logpθ(x)=t=1Tlogpθ(xtx<t)=t=1Tlogexp(hθ(x1:t1)Te(xt))x'exp(hθ(x1:t1)Te(x'))\underset{\theta}{max}\; \log p_\theta(\mathbf{x})=\sum_{t=1}^T \log p_\theta(x_t \vert \mathbf{x}_{<t})=\sum_{t=1}^T \log \frac{\exp(h_\theta(\mathbf{x}_{1:t-1})^T e(x_t))}{\sum_{x'}\exp(h_\theta(\mathbf{x}_{1:t-1})^T e(x'))}

отметкаx<t\mathbf{x}_{<t}выражатьttвсе до моментаxx, это,x1:t1\mathbf{x}_{1:t-1}.hθ(x1:t1)h_\theta(\mathbf{x}_{1:t-1})Является ли скрытое состояние до времени t закодированным RNN или Transformer (Примечание. Transformer также можно использовать для языковых моделей, таких как в OpenAI GPT).e(x)e(x)это словоxxвстраивание

Недостатком авторегрессионной языковой модели является то, что она не может использовать контекстную информацию одновременно, вроде бы ELMO делается в обе стороны, и тогда сплайсинг вроде бы решает эту проблему, но на самом деле метод слияния слишком прост, так что эффект не очень. Его преимущества связаны с последующими задачами НЛП, такими как создание задач НЛП, таких как суммирование текста, машинный перевод и т. д. При фактическом создании контента он создается слева направо, и модель авторегрессионного языка естественным образом соответствует этому процессу. В режиме DAE (Denoise AutoEncoder) Берта при генерации задач НЛП процесс обучения и процесс применения несовместимы, в результате чего генерация задач НЛП пока не очень хороша

Языковая модель AutoEncoder (AutoEncoder LM)

BERT передает последовательностьx\mathbf{x}Случайным образом выберите 15% жетонов, чтобы они стали [MASK], чтобы получить шумную версию.x^\hat{\mathbf{x}}. Предполагая, что исходное значение маски равноxˉ\bar{\mathbf{x}}, то BERT надеется попытаться восстановить (угадать) исходное значение в соответствии с контекстом, то есть:

maxθ  logpθ(xˉx^)t=1Tmtlogpθ(xtx^)=t=1Tmtlogexp(Hθ(x)tTe(xt))x'exp(Hθ(x)tTe(x'))\underset{\theta}{max}\;\log p_\theta(\bar{\mathbf{x}} | \hat{\mathbf{x}}) \approx \sum_{t=1}^Tm_t \log p_\theta(x_t | \hat{\mathbf{x}})=\sum_{t=1}^T m_t \log \frac{\exp(H_\theta(\mathbf{x})_{t}^T e(x_t))}{\sum_{x'}\exp(H_\theta(\mathbf{x})_{t}^T e(x'))}

В приведенной выше формуле, еслиmt=1m_t=1выражатьttМомент — это Маска, и его нужно восстановить.HθH_\thetaэто преобразователь, который преобразует длину вTTпоследовательностьx\mathbf{x}Карты в последовательности скрытых состоянийHθ(x)=[Hθ(x)1,Hθ(x)2,...,Hθ(x)T]H_\theta(\mathbf{x})=[H_\theta(\mathbf{x})_1, H_\theta(\mathbf{x})_2, ..., H_\theta(\mathbf{x})_T]. Примечание: RNN предыдущей языковой модели находится вttМоменты могут видеть только предыдущие моменты, поэтому обозначениеhθ(x1:t1)h_\theta(\mathbf{x}_{1:t-1}); в то время как преобразователь BERT (отличный от преобразователя, используемого для языковой модели) может одновременно видеть все токены всего предложения, поэтому токенHθ(x)H_\theta(\mathbf{x})

Преимущества и недостатки этого AE LM прямо противоположны таковым у AR LM: он может быть более естественно интегрирован в двунаправленную языковую модель, и в то же время он может видеть контекст и контекст предсказанного слова, который является преимуществом. В чем недостаток? Метка [Маска] в основном вводится на стороне ввода, что приводит к несоответствию между этапом предобучения и этапом Тонкой настройки, т.к. метка [Маска] не видна на этапе Тонкой настройки

Отправной точкой XLNet является то, может ли он объединить преимущества как авторегрессионного LM, так и DAE LM. В частности, с точки зрения AR, как ввести эффект, эквивалентный двунаправленной языковой модели.

Permutation Language Model

Авторы обнаружили, что, если к методам AR и AE добавить еще один шаг, их можно полностью унифицировать, а именноPermutation

Конкретный метод реализации,Случайным образом выбирая одно из предложений, а затем «маскируя» определенное количество слов в конце (что несколько отличается от прямой замены «[MASK]» в BERT) и, наконец, используя AR для следования этому расположению в соответствии с эта договоренность. Слово, которым это предсказание "замаскировано" из

Позвольте мне немного объяснить здесь, почему некоторые слова в конце «маскируются», и какой смысл в случайном перетасовывании порядка предложений? Обычный порядок входных предложений - «1 2 3 4 5 6 7», и обычный авторегрессионный LM не может одновременно учитывать контекстную информацию. Если контекстную информацию можно рассматривать одновременно, слово «3» должно иметь информацию «1 2 4 5 6 7», другими словами, прежде чем предсказать «3», нам нужно убедиться, что модель имеет видел "1 2 4 5" 6 7" (порядок не имеет значения). После нарушения порядка предложений (например, пример выше) в конец предложения приходит слово 3. В это время при прогнозировании числа 3 по авторегрессионной ЛМ модель уже видела «1 2 4 5 6" 7", принимая во внимание контекстную информацию "3". Конечно, неважно, как зашифровано предложение, потому что наша цель не в том, чтобы предсказать, какое именно слово, а в том,Кто в конце, предсказать, кто

Вот еще интересный момент,В конце концов, следует выбрать последние несколько, чтобы прикрыть?Здесь автор устанавливает гиперпараметр K,K равно общей длине, деленной на количество необходимых прогнозов.. В приведенном выше примере общая длина равна 7, а прогноз равен 2, поэтому K = 7/2. В то время как оптимальное значение K, экспериментально найденное в статье, находится между 6 и 7 (лучше), на самом деле, если мы возьмем обратное значение K (т.е.16,17\frac{1}{6},\frac{1}{7}), а затем конвертировать в проценты, вы найдетеОптимальное соотношение составляет от 14,3% до 16,7%., студенты, которые помнят статью BERT, обязательно почувствуют себя знакомыми. потому что в БЕРТПроцент маскировки токена как «[MASK]» составляет 15%., прямо между ними, я думаю, это не просто случайно, должна быть более глубокая связь

На протяженииTTпредложения, мы можем пройтиT!T!перестановки, а затем изучить параметры языковой модели, но это очень затратно в вычислительном отношении (предложения из 10 слов имеют 10!=3628800 комбинаций). Так что на самом деле мы просто случайным образом выбираемT!T!Часть расположения в , чтобы описать математическим языком, введем несколько обозначений.ZT\mathcal{Z}_Tпредставляет собой длинуTTмножество всех перестановок последовательности, тогдаzеZTz \in \mathcal{Z}_Tявляется одним из методов сортировки. мы используемztz_tпредставляет собой порядокttэлементы иz<tz_{<t}выражатьzzс 1-го по 1-йt1t-1элементы

Например, предположимT=3T=3,ТакZT\mathcal{Z}_TВсего 6 элементов, предположим один из нихz=[1,3,2]z=[1,3,2],ноz3=2z_3=2z<3=[1,3]z_{<3}=[1,3]

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

maxθEzZT[t=1Tlogpθ(xztxz<t)]\underset{\theta}{max} \mathbb{E}_{z \sim \mathcal{Z}_T}[\sum_{t=1}^T\log p_\theta(x_{z_t}|\mathbf{x}_{z_{<t}})]

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

Специфичная реализация перестановки бумаги не расстраивается на порядок входного предложения, а трансформаторомAttention Maskдействовать

Например, для предложений с порядковыми номерами 1234 сначала случайным образом выберите последовательность 3241. В соответствии с этим расположением мы сделаем Маску внимания, аналогичную приведенной выше картинке, сначала посмотрите на первый ряд, потому что в новом расположении 1 является последним, согласно методу AR слева направо, 1 может видеть все 234 , так что первая 234 позиция строки красная (она не закрыта, она будет использоваться), и так далее, вторая строка, так как 2 в новом расположении вторая, видно только 3, поэтому 3-я позиция красная, третий ряд, потому что 3-я в первой, других позиций не видно, так что закройте все это...

Проблема отсутствия информации о местоположении цели

Вышеупомянутая идея проста, но есть проблема, если мы используем стандартную реализацию Transformer. Вот пример

Предположим, входное предложение — «Мне нравится Нью-Йорк», а перестановка — z=[1, 3, 4, 2], предположим, что нам нужно предсказатьz3=4z_3=4, то по формуле Simple LM:

pθ(Xz3=xxz1z2)=pθ(X4=xx1x3)=exp(e(x)Thθ(x1x3))x'exp(e(x')Thθ(x1x3))p_\theta(X_{z_3}=x|x_{z_1z_2})=p_\theta(X_4=x|x_1x_3)=\frac{\exp(e(x)^Th_\theta(x_1x_3))}{\sum_{x'}\exp(e(x')^Th_\theta(x_1x_3))}

мы обычно используем верхний регистрXXпредставляет собой случайную величину, такую ​​какX4X_4, а в нижнем регистреxxПредставляет конкретное значение, например гипотезуxx"Йорк", тоpθ(X4=x)p_\theta(X_4=x)Указывает вероятность того, что 4-е слово — York. Опишите на естественном языке:pθ(X4=xx1x3)p_\theta(X_4=x|x_1 x_3)Значит этоВероятность того, что четвертое слово — «Йорк» при условии, что первое слово — «я», а третье — «новый».

Кроме того, мы предполагаем, что перестановка z'=[1,3,2,4], нам нужно предсказатьz3=2z_3=2,Так:

pθ(Xz3=xxz1z2)=pθ(X2=xx1x3)=exp(e(x)Thθ(x1x3))x'exp(e(x')Thθ(x1x3))p_\theta(X_{z_3}=x|x_{z_1z_2})=p_\theta(X_2=x|x_1x_3)=\frac{\exp(e(x)^Th_\theta(x_1x_3))}{\sum_{x'}\exp(e(x')^Th_\theta(x_1x_3))}

Независимо от того, каково истинное значение предсказания, давайте предположим,xx- вероятность "Йорка", тогдаpθ(X2=xx1x3)p_\theta(X_2=x|x_1x_3)Значит этоВероятность того, что второе слово — «Йорк» при условии, что первое слово — «я», а третье — «новый».

Если мы внимательно сравним приведенные выше две формулы, мы обнаружим, что они эквивалентны. Но исходя из опыта видно, что эти две вероятности различны, а та, что выше, более вероятна, потому что Йорк - это город после Нью-Йорка, а что такое "Йорк-Нью"?

Суть вышеуказанной проблемы заключается в том, что модель не знает положение слова, которое нужно предсказать в исходной последовательности. Читатели, знакомые с Transformer, могут спросить: не введен ли код местоположения? Разве информация с кодировкой местоположения не работает? Примечание. Кодировка положения добавляется вместе с вводом Embedding в качестве ввода, поэтомуpθ(X4=xx1x3)p_\theta(X_4=x \vert x_1x_3)внутреннийx1,x3x_1,x_3С информацией о местоположении модель (вероятно) знает (догадываясь на основе входного вектора), что «I» — это первое слово, а New — третье слово, но вектор четвертого слова, очевидно, еще не знает (зная) , Таким образом, мы должны «явно» указать модели, где я хочу предсказать слово

Для дальнейшего описания запишем приведенные выше две формулы в более общем виде. Учитывая перестановку z, нам нужно вычислитьpθ(Xztxz<t=x)p_\theta(X_{z_t} \vert \mathbf{x}_{z_{<t}}=x), если использовать обычный Трансформер, то формула расчета такая:

pθ(Xzt=xxz<t)=exp(e(x)Thθ(xz<t))x'exp(e(x')Thθ(xz<t))p_\theta(X_{z_t}=x \vert \mathbf{x}_{z_{<t}})=\frac{\exp(e(x)^Th_\theta(\mathbf{x}_{z_{<t}}))}{\sum_{x'}\exp(e(x')^Th_\theta(\mathbf{x}_{z_{<t}}))}

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

pθ(Xzt=xxz<t)=exp(e(x)Tgθ(xz<t,zt))x'exp(e(x')Tgθ(xz<t,zt))p_\theta(X_{z_t}=x \vert \mathbf{x}_{z_{<t}})=\frac{\exp(e(x)^Tg_\theta(\mathbf{x}_{z_{<t}}, z_t))}{\sum_{x'}\exp(e(x')^Tg_\theta(\mathbf{x}_{z_{<t}}, z_t))}

В приведенной выше формулеgθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t)Указывает, что это новая модельgg, а его аргументы добавляются к предыдущему словуxz<t\mathbf{x}_{z_{<t}}, и положение слова для предсказанияztz_t

Two-Stream Self-Attention

Следующий вопрос заключается в том, какую модель использовать для представленияgθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t). Конечно, есть много необязательных функций (моделей), которые нам нужно использовать.xz<t\mathbf{x}_{z_{<t}}, извлечь требуемую информацию с помощью механизма «Внимание», а затем предсказатьztz_tслово местонахождение. Тогда он должен соответствовать следующим двум требованиям:

  • предсказыватьxzt\mathbf{x}_{z_t},gθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t)Использовать только информацию о местоположенииztz_tВместо того, чтобы использоватьxzt\mathbf{x}_{z_t}. Это очевидно: вы, конечно, не можете знать, какое слово предсказывать, когда предсказываете слово.
  • предсказыватьztz_tслова после,gθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t)должен быть закодированxzt\mathbf{x}_{z_t}информация (семантика)

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

Предположим, что входное предложение по-прежнему «Мне нравится Нью-Йорк», а одна аранжировка —z=[1,3,4,2]z=[1, 3, 4, 2], предполагаяt=2t=2(которыйzt=z2=3z_t=z_2=3), теперь мы хотим вычислитьgθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t), то есть, учитывая слово «I» в первой позиции, предсказать вероятность «Нового» в третьей позиции. Очевидно, что мы не можем использовать информацию самого «Нового», а можем только предсказывать, основываясь на «Я» в первой позиции. Предположим, нам посчастливилось найти хорошую функциюgg, он может лучше предсказать эту вероятностьgθ(x1,z2)g_\theta(x_1, z_2). Теперь наша очередь вычислитьt=3t=3(которыйz3=4z_3=4), то есть согласноgθ(x1,z2)g_\theta(x_1, z_2)иztz_tпредсказать "Йорк". Очевидно, что знание того, что третья позиция — «Новая», может быть очень полезно для предсказания того, что четвертая позиция — «Йорк», ноgθ(x1,z2)g_\theta(x_1, z_2)Информации о слове New нет. Читатели могут спросить: разве вы не говорилиggМожно ли лучше предсказать вероятность третьего слова «Новое» на основе первого слова «Я»? Здесь есть два момента: вероятность «Новой» после «И» невелика; при прогнозировании «Йорка» мы знаем, что третья позиция — «Новая», но из-за ограничений модели мы не можем повторно использовать эту информацию

Для решения этой проблемы в статье вводятся два потока, то есть два скрытых состояния:

  • Содержимое скрытоhθ(xz<t)h_\theta(\mathbf{x}_{z_{<t}}), сокращенноhzth_{z_t}, который, как и стандартный Transformer, кодирует как контекст, так иxzt\mathbf{x}_{z_t}Содержание
  • запросить скрытое состояниеgθ(xz<t,zt)g_\theta(\mathbf{x}_{z_{<t}}, z_t), сокращенноgztg_{z_t}, который кодирует только контекст и позицию для прогнозированияztz_t, но не содержитxzt\mathbf{x}_{z_t}

Ниже мы опишем процесс расчета. Сначала мы запрашиваем скрытое состояниеgi(0)g_i^{(0)}инициализируется переменнойww, скрыть содержимоеhi(0)h_i^{(0)}Встраивание инициализировано в словоe(xi)e(x_i). Верхний индекс 0 здесь означает слой 0 (несуществующий слой, используемый для расчета первого слоя). Поскольку скрытое содержимое может кодировать текущее слово, более целесообразно инициализировать Embedding как слово.

Затем от m=1 до M-го слоя вычисляем слой за слоем:

gzt(m)Attention(Q=gzt(m1),KV=hz<t(m1);θ)hzt(m)Attention(Q=hzt(m1),KV=hzt(m1);θ)\begin{aligned} g_{z_t}^{(m)} & \leftarrow Attention(Q=g_{z_t}^{(m-1)},KV=h_{\color{red} {z_{<t}}}^{(m-1)};\theta) \\ h_{z_t}^{(m)} & \leftarrow Attention(Q=h_{z_t}^{(m-1)},KV=h_{\color{red} {z_{\le t}}}^{(m-1)};\theta) \end{aligned}
  • Query Stream: use ztz_t but cannot see xzt\mathbf{x}_{z_t}
  • Content Stream: use both ztz_t and xzt\mathbf{x}_{z_t}

Вышеупомянутые два потока используют свой собственный вектор запроса соответственно.gztg_{z_t}и вектор содержимогоhzth_{z_t}; но используются оба вектора Key и Valuehh. Но обратите внимание, что поток запросов недоступенztz_t, поэтому K и V равныhz<t(m1)h_{z_{<t}}^{(m-1)}. И KV потока контентаhzt(m1)h_{z_{\le t}}^{(m-1)}, который содержитxzt\mathbf{x}_{z_t}

Вышеупомянутое обновление градиента такое же, как стандартное самостоятельное внимание. Во время тонкой настройки мы можем отказаться от потока Query и использовать только поток Content. Наконец, при вычислении формулы мы можем использовать вектор запроса верхнего слояgzt(M)g_{z_t}^{(M)}

Мы можем интуитивно понять процесс расчета с помощью следующего рисунка.

Верхнее левое изображение — это расчет потока контента, предполагая, что расположение32413→2→4→1, и теперь мы предсказываем вероятность слова в позиции 1. Согласно договоренности, мы можем обратиться к Содержимому всех 4 слов, поэтомуK&V=[h1(0),h2(0),h3(0),h4(0)]K\&V=[h_1^{(0)},h_2^{(0)},h_3^{(0)},h_4^{(0)}]Q=h1(0)Q=h_1^{(0)}

Нижний левый рисунок — это расчет потока запросов, поскольку он не может ссылаться на собственное содержимое, поэтомуK&V=[h2(0),h3(0),h4(0)]K\&V=[h_2^{(0)},h_3^{(0)},h_4^{(0)}]Q=g1(0)Q=g_1^{(0)}

Правая часть рисунка — это полный процесс расчета, смотрим на него снизу вверх. во-первыхhhиggинициализируются какe(xi)e(x_i)иWW, затем Content Mask и Query Mask вычисляют выходные данные первого слояh(1)h^{(1)}иg(1)g^{(1)}, а затем вычислить второй слой…. Обратите внимание на две маски справа, давайте сначала посмотрим на маску содержимого. Его первая строка заполнена красными точками, что указывает на то, что первое слово может относиться ко всем словам (согласно32413→2→4→1), второе слово может обслуживать себя, а третье слово…. Разница между маской запроса и маской содержимого заключается в том, что они не могут быть присоединены друг к другу, поэтому все диагональные линии представляют собой белые точки.

До сих пор основная идея XLNet была относительно ясна. Основное использование LM, но для решения проблемы контекста введение Permutation LM. Перестановка LM требуется при прогнозировании информации о целевой позиции, поэтому при введении двухпотока поток контента кодируется в контент текущего времени, а ссылка на предыдущую историю потока запросов только для прогнозирования и текущей позиции. После окончательного приказа решить проблему чрезмерного расчета, для приговора мы только прогнозируем1K\frac{1}{K}слово

Далее, XLNet использует преимущества Transformer-XL, который лучше, чем традиционный Transformer, для обработки очень длинных контекстов. Я просто кратко представляю здесь Transformer-XL, заинтересованные читатели могут обратиться кБумага Трансформер-XL

Transformer-XL

Segment Recurrence Mechanism

Хотя Transformer изначально создавался для задач перевода, последние тенденции показывают, что его применение для языкового моделирования также может привести к значительным результатам. Однако для оптимального применения требуются некоторые изменения в его архитектуре.

Зачем? Что не так с Трансформером? Основным улучшением Transformer по сравнению с RNN является его способность фиксировать долгосрочные зависимости. Однако Transformer должен хранить гораздо больше информации о промежуточных шагах (градиентах), чем RNN, и она увеличивается с увеличением длины последовательности. Другими словами, память может взорваться (БУООООУМ!), если вы попытаетесь напечатать весь документ сразу.

Чтобы предотвратить эту проблему, некоторые ранние методы заключались в том, чтобы разделить документ наТекстовый сегмент фиксированного размера (Segment), одна тренировка за раз. Это решает проблему с памятью, но нарушает способность модели фиксировать долгосрочные зависимости. Например, предложение «У дочери был хороший зонт | который ей подарила мать», если «дочь» и «ее» относятся к разным абзацам. то информация о "дочери" не будет известна при кодировании "её"

Как решить эту проблему? Теперь очередь Transformer-XL.

Один из важных компонентов Transformer-XL, **Segment Recurrence Mechanism (механизм сегментного цикла)**, который хочет сделать, заключается в том, может ли он сохранять все скрытые состояния, вычисленные им после расчета предыдущего сегмента, и сохранять их в Memeory, то при вычислении текущего сегмента,Объедините ранее сохраненное скрытое состояние и скрытое состояние текущего сегмента в качестве K и V механизма Attention для получения более подробной контекстной информации.

Согласно предыдущей идее, мы используем кеш для кэширования состояния части истории. При вычислении градиента используется только информация этого сегмента, но при пересылке фактически используется информация предыдущего сегмента (или даже сегмента давно прошедшего времени), поэтому он чем-то похож на RNN. Ниже мы опишем процесс повторного использования состояния на математическом языке. Предположим, что два соседних сегментаsт=[xт,1,xт,2,,xт,L]s_\tau=[x_{\tau,1}, x_{\tau,2}, …, x_{\tau,L}]иsт+1=[xт+1,1,xт+1,2,,xт+1,L]s_{\tau+1}=[x_{\tau+1,1}, x_{\tau+1,2}, …, x_{\tau+1,L}]. Гипотетический сегментsтs_\tauСкрытая последовательность состояний n-го слояhтnеRL×dh_\tau^n \in R^{L \times d}, затем вычислить отрезокsт+1s_{\tau+1}Процесс скрытого состояния выглядит следующим образом:

\begin{split} & \tilde{h}_{\tau+1}^{n-1}=[SG(h_{\tau}^{n-1}) \circ h_{\tau+1}^{n-1}] \\ & q_{\tau+1}^n,\ k_{\tau+1}^n,\ v_{\tau+1}^n=h_{\tau+1}^{n-1}W_q^T,\ \tilde{h}_{\tau+1}^{n-1}W_k^T,\ \tilde{h}_{\tau+1}^{n-1}W_v^T \\ & h_{\tau+1}^n=\text{Transformer-Layer}(q_{\tau+1}^n, k_{\tau+1}^n, v_{\tau+1}^n) \end{split}

в,SG(hтn1)SG(h_{\tau}^{n-1})представление функцииhтn1h_{\tau}^{n-1}Не участвует в расчете градиента.[huhv][h_{u} \circ h_{v}]представляет векторную конкатенацию,WqT,WkT.WvTW_q^T,W_k^T.W_v^Tявляются параметрами модели. При расчете Query используетсяпредыдущий слой этого абзацаИнформацияhт+1n1h_{\tau+1}^{n-1}, а вычисление ключа и значенияh~т+1n1\tilde{h}_{\tau+1}^{n-1}

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

Relative Positional Encoding

В Transformer важной частью является то, что он учитывает информацию о положении последовательности. В случае сегментации возникают проблемы, если позиционное кодирование в Transformer по-прежнему используется непосредственно только для каждого сегмента, т. е. представление каждого отдельного сегмента в одной и той же позиции использует одно и то же позиционное кодирование. Например, первыйi2i-2абзац и абзацi1я-1Первая позиция сегмента будет иметь ту же кодировку позиции, но они будутiiВажность моделирования сегментов, очевидно, не одинакова (например,i2i-2Первая позиция в сегменте может быть менее важной)

Поэтому Transformer-XL предлагаетКодирование относительного положения, больше не заботит информация об абсолютном положении слов в предложении, а относительная информация, такая как относительная информация, например, сколько слов находится между двумя словами

В стандартном Transformer тот же Segment'sqiq_iиkjk_jОценка внимания разбита следующим образом

Ai,jabs=(Wq(Exi+Ui))T(Wk(Exj+Uj))=(Exi+Ui)TWqTWk(Exj+Uj)=ExiTWqTWk(Exj+Uj)+UiTWqTWk(Exj+Uj)=ExiTWqTWkExj(a)+ExiTWqTWkUj(b)+UiTWqTWkExj(c)+UiTWqTWkUj(d)\begin{aligned} A_{i,j}^{abs} & = (W_q(E_{x_i}+U_i))^T ·(W_k(E_{x_j}+U_j)) \\ & = (E_{x_i}+U_i)^TW_q^TW_k(E_{x_j}+U_j) \\ & = E_{x_i}^TW_q^TW_k(E_{x_j}+U_j) + U_i^TW_q^TW_k(E_{x_j}+U_j)\\ & = \underbrace{E^T_{x_i}W_q^TW_kE_{x_j}}_{(a)}+\underbrace{E^T_{x_i}W_q^TW_kU_j}_{(b)} \\ & + \underbrace{U_i^TW_q^TW_kE_{x_j}}_{(c)}+\underbrace{U_i^TW_q^TW_kU_j}_{(d)} \end{aligned}

в,ExiE_{x_i}это словоiiвектор слова,UiU_iэто словоiiвектор положения

Четыре пункта (a)(b)(c)(d) имеют свое собственное значение: (a) представляет собой адресацию, основанную исключительно на содержании; (b) и (c) соответственно.iiСодержимое местоположения и информация о местоположении соответственно относятся кjjАдресация по информации о местоположении и содержании; (d) основана исключительно на адресации между местоположениями. Поэтому, если вы хотите улучшить, вам нужно улучшить последние три элемента, связанные с информацией о местоположении.

Схема улучшения, данная Transformer-XL, выглядит следующим образом:

Ai,jrel=ExiTWqTWk,EExj(a)+ExiTWqTWk,RRij(b)+uTWk,EExj(c)+vTWk,RRij(d)\begin{aligned} A_{i,j}^{rel} & = \underbrace{E^T_{x_i}W_q^TW_{k,E}E_{x_j}}_{(a)}+\underbrace{E^T_{x_i}W_q^TW_{k,R}\color{blue}{R_{i-j}}}_{(b)} \\ & + \underbrace{{\color{red}{u^T}}W_{k,E}E_{x_j}}_{(c)} + \underbrace{{\color{red}{v^T}}W_{k,R}\color{blue}{R_{i-j}}}_{(d)} \end{aligned}
  • и предыдущийAi,jabsA_{i,j}^{abs}Напротив, первое изменение заключается в кодировании абсолютных позиций в (b) и (d).UjU_jзаменяются векторами кодирования относительного положенияRijR_{i-j}. Обратите внимание здесьRRэто метод кодирования синусоидальной функции, введенный ранее, он фиксирован и не требует изучения
  • В (c) используйте обучаемыйuеRd{\color{red}{u}} \in R^dзаменить оригиналUiTWqTU_i^TW_q^T. поскольку мы предполагаем, что оценка внимания зависит только отiiиjjотносительное положениеiiне зависит от абсолютного положения, поэтому здесь для всехiiвсе так же. этоUTWqTU^TW_q^T, так что вы можете использовать новыйu\color{red}uПредставлять. Точно так же в (г)vеRd{\color{red}{v}}\in R^dСлишком
  • Наконец, мы помещаем матрицу преобразования КлючаWkW_kразделить наWk,EW_{k,E}иWk,RW_{k,R}соответственно для вектора содержимого и вектора относительного положения

В приведенной выше новой формуле значение каждого пункта очень ясно: (а) представляет расчет содержимого, т. е.xix_iМатрица преобразования времени встраиванияWqW_qиxjx_jВложение, умноженное наWk,EW_{k,E}Внутренний продукт ; (b) представляет позиционное смещение на основе содержимого, то естьiiВектор умножается на относительный код положения; (c) представляет глобальное смещение контента; (d) представляет глобальное смещение положения

Relative Segment Encoding

Поскольку многие последующие задачи НЛП содержат несколько предложений, например, задачи с ответами на вопросы. Ниже мы обсудим, как предварительно обучить два сегмента в авторегрессионной структуре. Подобно BERT, мы выбираем два предложения, которые с вероятностью 50% являются последовательными предложениями (семантически связанными до и после) и с вероятностью 50% являются прерывистыми (нерелевантными) предложениями. Мы изучаем перестановку LM, объединяя эти два предложения в одно предложение. Ввод аналогичен BERT: [A, SEP, B, SEP, CLS], где SEP и CLS — два специальных токена, а A и B — два сегмента. Немного отличаясь от BERT, CLS здесь ставится в конец. Причина в том, что для BERT Самостоятельное внимание может воспринимать положение, потому что мы кодируем информацию о положении во входной вектор, а сам расчет Самостоятельного внимания не учитывает информацию о положении. Как мы обсуждали ранее, чтобы уменьшить объем вычислений, языковая модель перестановок здесь обычно предсказывает только последние 1/K токенов. Мы хотим, чтобы CLS кодировала семантику всех двух сегментов, поэтому мы хотим, чтобы это был предсказанный объект, который обязательно будет предсказан в конце

Но в отличие от BERT, XLNet не добавляет задачу для предсказания следующего предложения, потому что не всегда полезно добавлять эту задачу через экспериментальный анализ. [Примечание: на самом деле многие практики основаны на опыте некоторых авторов. После того, как многие авторы увидят, что определенная модель хороша, все последователи не обязательно будут хорошими. Иногда это может повлиять только на определенный набор данных, или эффект может быть вызван другими факторами.В статье изменено 5 факторов.На самом деле, это может быть только один или два фактора, которые действительно приводят к улучшению, и другие 3 фактора могут быть бесполезны или даже иметь небольшое количество побочных эффектов]

BERT использует абсолютное кодирование сегментов, то есть идентификатор сегмента первого предложения равен 0, а второго предложения — 1. Таким образом, если изменить порядок двух предложений, вывод будет другим. XLNet использует относительное кодирование сегментов, которое определяет, принадлежат ли два слова одному и тому же сегменту при расчете внимания, если местоположениеiiиjjслова принадлежат к одному и тому же сегменту, затем используйте обучаемое вложениеsij=s+s_{ij}=s_+,в противном случаеsij=ss_{ij}=s_-, то есть нам важно только, принадлежат ли они к одному и тому же сегменту или к разным сегментам. когда мы выходим из положенияii attend to jj, мы рассчитаем новый показатель внимания следующим образом:

aij=(qi+b)Tsija_{ij}=(q_i+b)^Ts_{ij}

вqiq_iпервыйiiВектор запроса позиций, b — обучаемое смещение. Наконец, мы добавим этот показатель внимания к исходному рассчитанному показателю внимания, чтобы он мог узнать, когдаiiиjjотносятся к характеристикам сегмента иiiиjjОсобенности, принадлежащие разным сегментам

Conclusion

Весь процесс расчета Transformer-XL выглядит следующим образом:

h^тn1=[SG(mтn1hтn1)]qтn,kтn,vтn=hтn1WqnT,h^тn1Wk,EnT,h^тn1WvnTAт,i,jn=qт,inTkт,jn+qт,inTWk,RnRij+uTkт,jn+vTWk,RnRijaтn=Mask-Softmax(Aтn)vтnoтn=LayerNorm(Linear(aтn)+hтn1)hтn=Positionwise-Feed-Forward(oтn)\begin{aligned} \hat{h}_{\tau}^{n-1} & = [SG(m_{\tau}^{n-1} \circ h_{\tau}^{n-1})] \\ q_{\tau}^n, k_{\tau}^n, v_{\tau}^n & = h_{\tau}^{n-1}{W_q^n}^T, \hat{h}_{\tau}^{n-1} {W_{k,E}^n}^T, \hat{h}_{\tau}^{n-1} {W_{v}^n}^T \\ A_{\tau, i,j}^n & = {q_{\tau,i}^n}^T k_{\tau,j}^n + {q_{\tau,i}^n}^T W_{k,R}^nR_{i-j} + u^Tk_{\tau,j}^n +v^T W_{k,R}^nR_{i-j} \\ a_\tau^n & = \text{Mask-Softmax}(A_\tau^n)v_\tau^n \\ o_\tau^n & = \text{LayerNorm}(\text{Linear}(a_\tau^n)+h_\tau^{n-1}) \\ h_\tau^n & = \text{Positionwise-Feed-Forward}(o_\tau^n) \end{aligned}

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

Что касается потери при обучении, XLNet использует только потерю PLM, но не использует потерю предсказания следующего предложения, как BERT, но хорошо работает в задачах на уровне предложений. Я чувствую себя очень волшебным в этом явлении. Это должно было бы помочь

Следующий контент представляет собой только личное мнение

XLNet в целом выглядит очень отвратительно, не так просто и прямолинейно, как Transformer, и дает мне ощущение, что восточную стену демонтируют и строят западную стену (введение Permutation, поэтому нет информации о местоположении, таким образом привлекая внимание Shuangliu). XLNet представляет механизм случайной перестановки и двухпотокового внимания на основе Transformer XL, что делает всю модель очень сложной.

Обучение XLNet использует в общей сложности126 ГБ текстовых данных, в то время как обучение BERT использует только 13 ГБ данных. Итак, хотя итоговая оценка XLNet превзошла BERT, это из-за помощи данных или модель действительно хороша?

Reference