1. Что такое механизм внимания
В разделе «Кодер-декодер (seq2seq)» декодер использует одни и те же фоновые переменные на каждом временном шаге для получения информации о входной последовательности. Когда кодировщик представляет собой рекуррентную нейронную сеть, фоновая переменная выходит из своего скрытого состояния на последнем временном шаге.
Теперь давайте снова подумаем о примере перевода, упомянутом в этом разделе: вводом является английская последовательность «Они», «являются», «наблюдают» «.», а выводом является французская последовательность «Ils», «regardent» «.». Нетрудно представить, что декодеру может понадобиться использовать информацию только из определенной части входной последовательности для генерации каждого слова в выходной последовательности. Например, на временном шаге 1 выходной последовательности декодер может в основном полагаться на информацию «Они» и «являются» для генерации «Ils», а на временном шаге 2 он в основном использует закодированную информацию из «просмотра». для создания "regardent" ", и, наконец, на шаге 3 период "." напрямую отображается.Похоже, что каждый временной шаг декодера уделяет различное внимание представлению или закодированной информации на разных временных шагах во входной последовательности. Отсюда и механизм внимания.
По-прежнему взяв в качестве примера рекуррентную нейронную сеть, механизм внимания получает фоновую переменную, взяв средневзвешенное значение скрытых состояний всех временных шагов кодировщика. Декодер регулирует эти веса, веса внимания, на каждом временном шаге, чтобы он мог сосредоточиться на разных частях входной последовательности на разных временных шагах и кодировать переменные контекста в соответствующий временной шаг.
В механизме внимания декодер будет использовать переменную фоновую переменную для каждого временного шага. Обратите внимание, что ct' является фоновой переменной декодера на временном шаге t', тогда скрытое состояние декодера на этом временном шаге можно переписать как:
Ключевым здесь является то, как вычислить фоновую переменную ct' и как использовать ее для обновления скрытого состояния st'. Эти два ключевых момента будут описаны отдельно ниже.
2. Рассчитайте фоновые переменные
Сначала мы опишем первый ключевой момент, а именно вычисление фоновых переменных. На рисунке ниже показано, как механизм внимания вычисляет фоновую переменную на временном шаге 2 для декодера.
- Функция a вычисляет входные данные для операции softmax на основе скрытого состояния декодера на временном шаге 1 и скрытого состояния кодировщика на каждом временном шаге.
- Операция softmax выводит распределение вероятностей и выполняет средневзвешенное значение скрытых состояний кодировщика на каждом временном шаге, чтобы получить фоновую переменную.
Пусть скрытое состояние энкодера на временном шаге t равно ht, а общее количество временных шагов равно T. Тогда фоновая переменная декодера на временном шаге t' представляет собой средневзвешенное значение всех скрытых состояний кодировщика:
Векторизованный расчет фоновых переменных
Мы также можем использовать более эффективные неколичественные вычисления для механизма внимания. Сначала мы определяем, что в приведенном выше примере элемент запроса — это скрытое состояние декодера, а элементы ключа и значения — это скрытое состояние кодировщика.
В широком смысле входные данные механизма внимания включают элементы запроса и взаимно-однозначные соответствующие ключевые элементы и элементы значения, где элемент значения представляет собой набор элементов, которые необходимо усреднить. При взвешенном усреднении вес элемента значения получается из расчета элемента запроса и ключевого элемента, соответствующего элементу значения.
Рассмотрим обычный простой случай, когда количество скрытых единиц как в кодере, так и в декодере равно h, а функция. Предположим, мы хотим вычислить фоновый вектор ct' из одного скрытого состояния декодера st'-1 и всех скрытых состояний кодировщика ht, t = 1,...,T. Мы можем установить матрицу терминов запроса Q как, и пусть матрица ключевых терминов K и матрица стоимостных терминов V одинаковы, а t-я строка. На данный момент нам нужно только вычислить без квантования:
Транспонированный фоновый вектор можно вычислить. Когда количество строк матрицы терминов запроса Q равно n, приведенная выше формула получит выходную матрицу из n строк. Выходная матрица соответствует один к одному в той же строке, что и матрица условий запроса.
3. Обновите скрытое состояние
Теперь опишем второй ключевой момент, обновление скрытого состояния. Взяв в качестве примера вентилируемый рекуррентный блок, в декодере мы можем немного изменить конструкцию вентилируемого рекуррентного блока в вентилируемом рекуррентном блоке (GRU), чтобы преобразовать выход yt′−1, скрытое состояние st′−1 и фоновая переменная ct' с механизмом внимания на текущем временном шаге t'. Скрытое состояние декодера на временном шаге: math:t’:
Портал сброса, портал обновлений и скрытые состояния-кандидаты:
Среди них W и b с нижними индексами — весовой параметр и параметр смещения блока контура управления соответственно.
4. Развитие
По сути, механизм внимания способен выделять больше вычислительных ресурсов для более ценных частей представления. Эта интересная идея быстро развивалась с тех пор, как была предложена, особенно вдохновленная механизмом внимания для кодирования входной последовательности и декодирования выходной последовательности.Модель трансформердизайн. Трансформеры отказываются от архитектуры сверточных нейронных сетей и рекуррентных нейронных сетей. Обычно она имеет очевидные преимущества перед моделью кодер-декодер на основе рекуррентной нейронной сети с точки зрения вычислительной эффективности. Структура кодирования преобразователя с механизмом внимания описана позже.Предобученная модель BERTи заставил последний сиять: точно настроенная модель достигла самых современных результатов в целых 11 задачах обработки естественного языка. Вскоре после этого, также на основе конструкции преобразователяМодель ГПТ-2После предварительного обучения на вновь собранном корпусе данных самые современные результаты были получены на 7 наборах данных языковых моделей, которые не участвовали в обучении. В дополнение к области обработки естественного языка механизмы внимания широко используются в классификации изображений, автоматическом описании изображений, чтении по губам и распознавании речи.
5. Реализация кода
Модель Attention реализует машинный перевод с китайского на английский.
-
Предварительная обработка данных
Сначала загрузите данные и код в этот каталог и выполнитеdatautil.py, генерировать китайский и английский словари.
-
воплощать в жизньtrain.ipynb, время обучения будет больше.
-
Протестируйте модель, запуститеtest.pyдокумент.
【Машинное обучение легко понять серия статей】
6. Ссылки
Практическое глубокое обучение
автор:@mantchs
GitHub:GitHub.com/NLP-love/ml…
Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]