От QANet, чтобы увидеть, как обработка естественного языка «хвастается»

глубокое обучение

В этой статье рассказывается о модели QAnet, запущенной совместно командой Google Brain и CMU.QAnet — первая модель в рейтинге SQUAD в марте 2018 года.Раз есть Берт, зачем говорить о QAnet? Поскольку QAnet включает в себя некоторые важные прорывы (все виды крутых навыков) в области НЛП с 2017 по 2018 год, изучив его, вы сможете получить более полное представление о развитии НЛП за последние два года.QAnet ссылка

Эта статья разделена на следующие части:

Часть 1: Введение в общую сетевую структуру модели QANet

Вторая часть: Познакомить с принципом работы каждого крутого технического пункта отдельно

Часть 3: Резюме (по сравнению с Бертом)

К основным достижениям в области НЛП и глубокого обучения, интегрированным QANet за последние два года, относятся:

(1) Fackbook 2017.5 предложил кодирование положения CNN seq2seq вместо LSTM.

(2) В Google 2017.6 предложено «Внимание — это все, что вам нужно».

(3) Разделимая по глубине свертка Разделимая по глубине свертка

(4) Высокоскоростная нейронная сеть сети автомагистралей

.........

  • 1. Введение в сетевую структуру модели QANet
Общая структура сети QAnet

(1) Входные данные состоят из контекста и вопроса.

(2) Преобразованный в вектор встраивания через слой встраивания, разделенный на встраивание слов и встраивание символов. Сеть Highway включена в слой внедрения.

(3) На уровне блока кодировщика блок кодировщика является важной частью QANet, как показано справа. Слой блока кодировщика проходит через четыре части: кодирование положения, слой свертки Conv, уровень самоконтроля и слой Feedword. Обработка Layernorm выполняется в начале каждой части, а остаточное соединение выполняется в конце.

(4) Вектор кодировщика контекста и вопроса, и корреляция рассчитывается с помощью контекстного запроса внимания.

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

(6) После того, как выход первого слоя и третьего слоя соединены, вероятность прохождения полностью связанного слоя в качестве начальной позиции.


  • два,Разберитесь с крутыми техническими моментами

1. Пункт навыка 1:Слой блока кодировщикасвертка в

В 2017 году Facebook опубликовал важную статью в области НЛП «Сверточная последовательность для обучения последовательности», в которой упоминалось, что они использовали сверточные нейронные сети для достижения seq2seq и машинного перевода.Эффект достиг уровня сети LSTM, а эффективность была значительно лучше, чем LSTM.

На эту тему есть много статей, на которые вы можете сослаться, поэтому я не буду вдаваться в подробности.

2. Пункт навыка 2: Глубинное разделяемое преобразование

Стоит отметить, что QANet не использует простую CNN, а использует Depthwise Separable Conv (свертку с разделением по глубине).

Общий смысл этой свертки состоит в свертывании и объединении каждой карты глубины по отдельности.Этапы: глубинное преобразование, а затем точечное преобразование, что значительно уменьшает количество параметров. Цель состоит в том, чтобы ускорить весь процесс вычисления свертки. Depthwise Separable Conv является производным от Inception и Xception.

Основная идея оригинальной версии, предложенной Inception, заключается в использовании ядер свертки разного размера для наблюдения за входными данными. То есть ядро ​​свертки большого размера заменяется несколькими ядрами свертки малого размера последовательно или параллельно, чтобы уменьшить объем вычислений.

Inception

Xception разработан на основе Inception, автор называет его Extreme Inception. Первое обсуждение касается многоразмерного ядра свертки Inception и замены ядра свертки, затем Узкое место и, наконец, Depthwise Separable Conv от Xception. From Inception to Xception значительно сокращает количество параметров, тем самым ускоряя обучение. N=1024, Dk=3, параметр снижен до 0,112.

Depthwise Separable Conv

3. Пункт навыка 3: внимание к себе

Внимание к себе исходит из многоголового внимания, предложенного в важной статье «Внимание — это все, что вам нужно», опубликованной Google в 2017 году. Если вы следите за областью обработки естественного языка, вы, вероятно, знакомы с этим. Multi-Head — сделать то же самое еще несколько раз (параметры не являются общими), а затем объединить результаты.Например, Multi-Head Attention означает, что Attention выполняется несколько раз, а затем объединяется, что аналогично свертки в CNN. Идея ядра та же. Само внимание означает, что два входа одинаковы, и вы делаете расчет внимания самостоятельно.

Принципиальная схема многоголового внимания

4. Пункт навыка 4: Кодирование положения

Метод кодирования позиции здесь может относиться к «Сверточной последовательности для последовательного обучения» Facebook, и его использование является последовательным. Рассчитывается следующим образом:

формула расчета кодирования положения

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

5. Пятый навык: Сеть автомобильных дорог.

Если вы внимательно прочитаете детали QAnet, то увидите, что уровень Embedding QAnet не просто соединяет встраивание слов и встраивание символов в качестве вывода, а через магистральную сеть для вывода.

Слой внедрения QAnet

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

6. Шестой пункт навыка: нормализация партии

Нормализация партии Очень близкие выборки в каждой партии нормализуются к дисперсии 0 означает 1.

Зачем нормализовать до 0 означает 1 дисперсию? По мере увеличения глубины обучения нейронной сети ее общее распределение постепенно смещается или изменяется, что приводит к исчезновению градиента нейронной сети во время обратного распространения и все более медленной сходимости глубокой сети. Пакетная нормализация переводит все более и более асимметричное распределение в нормальное, градиент становится больше, и проблема исчезновения градиента замедляется.Поэтому добавлена ​​пакетная нормализация для ускорения обучения глубоких нейронных сетей.

7. Пункт навыка семь: LayerNorm

Ввод каждой части уровня кодировщика использует LayerNorm для достижения приблизительно независимого и идентичного распределения.

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

3. Личное резюме

Если сравнивать Bert и QAnet, общая структура сети Bert проще, чем у QAnet. QANet делает упор на навыки, а Берт делает упор на вычислительную мощность. Из сравнения мы можем увидеть тенденцию развития НЛП.