Начало работы с НЛП

NLP

PS: Друзья, интересующиеся фронтендом и машинным обучением, можете подписаться на меня."Технический блог"Ой! Если это было полезно для вас, пожалуйста, пожертвуйте ⭐️, контент будет часто обновляться, так что следите за обновлениями! ❤️❤️


Введение в НЛП

Что такое НЛП

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

NLP=NLU (понимание значения языка) + NLG (построение языка по смыслу)

  1. NLU

NLU - это понимание смысла данного текста. Необходимо понять характер и структуру каждого слова в этой книге. С точки зрения понимания структуры NLU необходимо понимать следующие неоднозначности в естественном языке:

  • Лексическая неоднозначность: слова имеют несколько значений
  • Синтаксическая неоднозначность: операторы имеют несколько деревьев синтаксического анализа.
  • Семантическая неоднозначность: предложения имеют несколько значений
  • Анафорическая двусмысленность: фраза или слово, упомянутые ранее, имеют другое значение в более позднем предложении.
  1. NLG

NLG — это процесс автоматического создания текста в удобочитаемом виде из структурированных данных. Неразрешимость является серьезной проблемой при генерации естественного языка. Генерацию естественного языка можно разделить на три этапа:

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

Ниже представлен процесс разработки моделей, связанных с НЛП:

NLP模型发展

Связанные документы:

  1. Лучшие доклады конференции
  • Лучшие конференции по машинному обучению: NIPS, ICML, UAI, AISTATS, журналы: JMLR, ML, Trends inML, IEEE T-NN
  • Компьютерное зрение и распознавание изображений: ICCV, CVPR, ECCV, журналы: IEEE T-PAMI, IJCV, IEEE T-IP
  • Искусственный интеллект: IJCAI, AAAI, журнал: AI
  1. поисковый движок
  • Ученый Baidu, Ученый Google, Zhihu, Google, Bing

Сценарии применения

  • Преобразование текста в речь/синтез речи
  • Распознавание речи
  • Сегментация китайских слов
  • Маркировка частями речи
  • Синтаксический анализ (разбор)
  • Генерация естественного языка
  • Категоризация текста
  • Поиск информации
  • Извлечение информации
  • Проверка текста
  • Ответ на вопрос
  • Машинный перевод
  • Автоматическое суммирование
  • Текстовое следствие
  • Анализ эмоций
  • Чат-бот

Общие задачи глубокого обучения в НЛП:

  • Нейронная сеть: тегирование частей речи, сегментация слов, распознавание имени объекта, извлечение цели...
  • Рекуррентные нейронные сети: машинный перевод, ответы на вопросы, описание изображения, разбор предложений, анализ настроений, классификация отношений…
  • Сверточные нейронные сети: анализ предложения/текста, извлечение отношений, обнаружение спама, классификация поисковых терминов, извлечение семантических отношений…

Трудности исследования

  • Определение границ слов (сегментация слов, как написать алгоритм сегментации слов, в настоящее время существует библиотека сегментации слов, которая может напрямую сегментировать слова)
  • смысл слова
  • анализ части речи
  • Распознавание именованных объектов
  • Анализ зависимостей
  • синтаксическая неоднозначность
  • Дефектный или неправильный ввод
  • Вербальное поведение и планирование
  • Разреженные данные и методы сглаживания
  • ...
  1. Процесс построения системы вопросов и ответов

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

  1. поток обработки текста
文本处理流程

Основной процесс: сегментация слов — очистка данных — стандартизация — извлечение признаков — моделирование — оценка модели

Подробные этапы описанного выше процесса следующие:

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

слово вектор

词向量

В области НЛП для представления символов человеческого языка эти символы обычно преобразуются в математическую векторную форму для облегчения обработки.Мы встраиваем слова языка в векторное пространство, называемое词嵌入(word embedding). Например, есть популярный Google word2vec с открытым исходным кодом, который может генерировать векторы слов, которые также можно использовать для измерения сходства между словами в определенной степени. Модель, используемая word2vec, включает модель непрерывного набора слов (CBOW) и модель Skip-Gram и обучается с помощью нейронной сети.

  1. векторы слов в горячей форме

Размерность одной горячей формы обычно очень велика, потому что количество слов обычно находится на уровне 10W, что значительно увеличивает сложность обучения, что приводит к размерной катастрофе. Кроме того, многие измерения используют только последовательную информацию и используют только 1 и 0 для представления слов, что является пустой тратой места. Другое состоит в том, что любые два слова таким образом обособляются, и невозможно увидеть сходство между двумя словами. 2. Распределенные векторы слов Ввиду недостатков однократной формы векторов слов появилось другое представление векторов слов - распределенное представление слов. Распределенные векторы слов просто используют обычные векторы для представления векторов слов, а значением элементов является любое действительное число.Размерность вектора может быть определена заранее, обычно 50 или 100 измерений.

CBow (непрерывная модель мешка слов)Метод состоит в том, чтобы использовать {"The", "cat", "over", "the", "puddle"} в качестве контекста (или семантического фона), а затем предсказать и сгенерировать центральное слово "прыгнул" на основе этих слов. Модель называется моделью CBow.

Skip-GramЭтот метод заключается в создании модели путем задания заглавного слова «прыгнул» для предсказания и генерации окружающих слов (или контекста заглавного слова) «The», «cat», «over», «the», «лужа». Здесь мы обращаемся к контексту «пропустить» и называем этот тип модели моделью Skip-Gram. По сравнению с CBOW инициализация в основном такая же, за исключением того, что нам нужно преобразовать x и y, т.е. x в CBOW теперь y и наоборот. Я обозначаю входной один горячий вектор как x, а выходной вектор как y(c), модели V, U и CBOW одинаковы.

предварительная обработка текста

Причастие

  1. Алгоритм максимального соответствия (жадный алгоритм)

Включая прямое максимальное сопоставление и обратное максимальное сопоставление, недостатком является то, что семантика не может быть учтена, и это может быть локальный оптимум. 2. Учитывайте семантику Основная идея: по входному предложению сгенерировать все возможные сегментации и выбрать наилучший метод сегментации в соответствии с LM (языковая модель, которая используется для оценки разумности предложения, о которой будет сказано позже), но эффективность низкий. 3. Алгоритм ВитербиКак решить проблему эффективности?- По вероятности словаря построить граф соединений и использовать динамическое программирование DP

维特比算法

Основная проблема становится: как найти кратчайший путь

Суммировать:

  1. Метод, основанный на правилах сопоставления (max-matching)
  2. Вероятностные методы (LM, HMM, CRF)
  3. Сегментация слов может рассматриваться как решенная проблема, которая в основном не связана с переделкой сегментации слов и может иметь небольшие модификации в соответствии с потребностями бизнеса.

исправление орфографических ошибок

  1. Вычислить все слова с расстоянием редактирования 1 и 2 от слова, введенного пользователем, и отфильтровать бесполезные слова;
  2. Рассчитайте p с помощью байесовского алгоритма,p(s|c)=p(c|s)*p(c)/p(s), p(s) — фиксированное значение, нужно только вывестиp(c|s)*p(c)максимальное значение

undefined

Зачем выбирать строки с расстоянием редактирования 1, 2?Потому что это может охватывать более 99% сцены.

Каков алгоритм минимального расстояния редактирования?Минимальное расстояние редактирования относится к минимальному количеству операций для того, чтобы слово стало другим словом путем добавления, замены и удаления трех методов операции. Используя динамическое программирование DP для решения, алгоритм выглядит следующим образом:

最小编辑距离

Фильтрация стоп-слов, выделение корней

Фильтрация стоп-слов: удалите стоп-слова — слова, которые появляются нечасто и не важны Stemming: операция стандартизации, преобразующая слова в разных состояниях в унифицированное состояние, например:

went,go,going->go
fly,flies->fli
fast,faster,fastest->fast

Porter Stemmer:

stemmer

Операция Стеммера опирается на опыт лингвиста.

текстовое представление

  1. однократное обозначение

one-hot имеет следующие три формы

  • представление на основе логического значения (учитывайте, появляется ли оно, внешний вид равен 1, иначе он равен 0)
  • представление на основе подсчета (с учетом количества слов)
  • Представление на основе tfidf (учитывая важность слов, дело не в том, что чем больше количество вхождений, тем важнее оно! Дело не в том, что чем меньше количество вхождений, тем оно менее важно!)

tf-idfФормула расчета:tfidf(w)=tf(d,w)*idf(w)tf(d,w)представляет частоту слова w в документе d,idf(w)указывает на важность слов,idf(w)=log(N/N(w))Среди них TF относится к словесной частоте вычисляемого слова, то есть частоте определенного слова в тексте, которое необходимо нормализовать; IDF относится к оборотной частоте документа, которая является мерой общей значимости слова. слово.

  1. векторное представление слова(учитывая семантику слов)

Использование вектора слова вектора слова для представления слов называется распределенным представлением. Общие модели глубокого обученияskip-gram,glove(глобальные векторы для представления слов),CBow,RNN/LSTM,MF(разложение матрицы)……

词向量可视化

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

Расчет схожести текста:

  1. Евклидово расстояние
  2. косинусное сходство

Перевернутый стол

Система ответов на вопросы должна выполнить сопоставление подобия, а затем вернуть тот, у которого наибольшее сходство. Временная сложностьo(n)*o(相似度计算), очень велик и не может удовлетворить требования времени вообще.

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

Как реализован фильтр? Необходимо ввести перевернутые списки — полную библиотеку словарей, которая фиксирует, в каких документах встречается каждое слово, например:

我们:[Doc1,Doc13]
昨天:[Doc2]
在:[Doc1,Doc4,Doc5]
运动:[Doc1,Doc3,Doc5]
什么:[Doc1,Doc6]

Таким образом, вы можете быстро найти, какое слово встречается в каком документе (иначе временная сложность поиска документов один за другим по слову очень высока)

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

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

тип выражение
unigram p(w1,w2,w3,w4,w5)=p(w1)+p(w2)+p(w3)+p(w4)+p(w5)
bigram p(w1,w2,w3,w4,w5)= p(w1)+p(w2
trigram p(w1,w2,w3,w4,w5)= p(w1)+p(w2

И так далее, чтобы получить выражение n-граммы.

Метод оценки языковой модели N-Gram:

  1. Практический метод

Это очень интуитивно понятно и практично для оценки, глядя на отображение модели в практических приложениях (таких как проверка орфографии, машинный перевод), но ему не хватает уместности и объективности. 2. Теоретический подход Расчет недоумения (perplexity), основная идея в том, что лучше та языковая модель, которая присваивает тестовому набору более высокое значение вероятности

Оцените качество ЛМ (рассчитайте недоумение):perplexity=2^(-x) x是最大似然估计

undefined

Метод расчета недоумения (измеряет качество языковой модели):perplexity=2*(-x), чем меньше недоумение, тем лучше. Каждое правдоподобие должно быть вычислено (вероятность появления следующего слова относительно предыдущего слова), а затем отдельно вычисляется логарифм, а затем вычисляется среднее значение для получения x.

Например, три обученные модели, униграмма, биграмма и триграмма, имеют недоумение соответственно 300, 200 и 100. Можно видеть, что модель триграммы, обученная на этот раз, является лучшей.

алгоритм сглаживания

Проблема решена: некоторые слова могут отсутствовать в корпусе (новые слова), как оценить их важность?

  1. add-one smoothing
  2. add-k smoothing
  3. interpolation
  4. хорошее сглаживание (учитывая новые слова)

Конкретный метод расчета алгоритма выглядит следующим образом:

undefined

в,add-k smoothingЗнаменатель , плюс V должен гарантировать, что сумма вероятностей равна 1,interpolationиспользовать униграмму, биграмму, триграмму для получения средневзвешенного значения соответственно,good-turning smoothingЕсть проблема с методом, то есть у Nc есть данные, но Nc зависит от Nc+1, а Nc+1 может не существовать (не существуют только слова, которые встречались c+1 раз), тогда аппроксимация кривой должна быть используется для ее решения.

экспертная система

Экспертная система = механизм вывода + знания, используя знания и рассуждения для решения проблем принятия решений Отличия экспертных систем от вероятностных систем:

  1. Экспертная система подходит для ситуаций, когда нет источника данных или мало источников данных, а правила формулируются в соответствии с опытом экспертов, чтобы соответствовать
if condition1:
	do something1
else if condition12
	do something2
else if ...
  1. Система, основанная на вероятности, предназначена для изучения отношения отображения от x к y на основе заданных данных D = {X, Y}, что обычно подходит для случая большого количества источников данных.
专家系统

Вероятностные системы

Используйте методы машинного обучения для решения проблем

Распространенные методы контролируемого обучения:

  • Линейная регрессия
  • логистическая регрессия
  • Наивный Байес
  • Нейронные сети
  • SVM
  • случайный лес
  • Adaboost
  • CNN

Распространенные методы обучения без учителя:

  • k-средние (кластеризация)
  • PCA (анализ основных компонентов)
  • ICA
  • MF (Матричная факторизация)
  • LSA (скрытый семантический анализ)
  • LDA (латентный анализ Дирихле)

обычный срок

  • L0: обычно не используется
  • L1: разреженный параметр, который превратит некоторые параметры в 0, разреженные параметры (эквивалентно активации некоторых нейронов)
  • L2: Уменьшить параметр, но не до 0

О модели:

  • Хорошие модели обладают высокой способностью к обобщению.
  • Более сложные модели более склонны к переоснащению.
  • Добавление регулярных терминов — это способ предотвратить переоснащение, а другие включают отсев, раннюю остановку и т. д.
  • Регулярность L1 принесет разреженные характеристики
  • Используйте перекрестную проверку при выборе гиперпараметров
  • Процесс параметрического поиска является наиболее ресурсоемким.

Стратегия параметрического поиска

Как правильно подобрать гиперпараметрыλШерстяная ткань?

  1. grid search
grid search
  1. случайный поиск

интервал λ1 [a,b], интервал λ2 [c,d], случайно выбранные значения

  1. Генетический алгоритм

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

  1. Байесовская оптимизация

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

MLE/MAP

  • MLE: оценка максимального правдоподобия (учитывайте только сами данные)
  • MAP: максимальная апостериорная оценка (необходимо учитывать предварительные знания)

Интуитивное понимание MLE и MAP:

  1. MLE (оценка максимального правдоподобия): подбросьте монетку и предскажите вероятность выпадения орла/решки всего по 2/3 наблюдений.
  2. MAP (Максимальная апостериорная оценка): Подбросьте монету и все равно получите 2/3 наблюдений, но владелец монеты сказал мне, что вероятность выпадения орла составляет около 80%, и она отклонится на 2/3 моих наблюдений ( Возможно, я не наблюдал достаточное количество образцов), в это время вероятность расчета положительной/отрицательной стороны должна быть объединена с априорной вероятностью (идеей владельца), которая находится между 66,7% и 80%.

По мере увеличения количества выборок эффект априорности будет становиться все меньше и меньше. Когда количество выборок N приближается к бесконечности, решение MAP приближается к решению MLE.Gaussian Prior is L2 regularization—— Гауссовский априор эквивалентен добавлению регулярного члена L2,Laplace Prior is L1 regularization—— Приор Лапласа эквивалентен добавлению регулярного члена L1

lasso

Стратегия выбора функций:

  1. исчерпанный поиск: рассмотрите все возможные комбинации признаков и оцените их соответствующую точность
  2. жадный подход: жадный алгоритм, выбор функций вперед или назад и расчет точности комбинированных функций
  3. Через регуляризацию: алгоритм лассо, который строит комбинации признаков по методу целевой функции, включая регуляризацию L1 и L2.

Почему он смещен в сторону разреженных функций?

  1. Если размер слишком велик, объем вычислений также становится большим.
  2. В условиях разреженности объем вычислений зависит только от количества ненулевых элементов.
  3. улучшить интерпретируемость

Используя L1 для регуляризации разреженных переменных, но есть точки, где производные не существуют, градиентный спуск не так просто выполнить с SGD. Производная регулярности L1 не является непрерывной и должна использоватьсяcoordinate descentГрадиентный спуск: основная идея состоит в том, чтобы сначала исправить другие w, настроить только одно измерение w, чтобы найти оптимальное решение, и найти оптимальное решение каждого измерения w по очереди. Цель лассо определенно сойдется.

Как выбрать следующую координату?

  1. выберите измерение
  2. random select

Важные модели и алгоритмы

attention

attention

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

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

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

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

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

5 основных применений внимания в предсказании последовательности:

  1. Приложение внимания к задачам перевода текста

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

  1. Применение Внимание в описании изображения

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

  1. Применение внимания в влечении

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

  1. Применение внимания в распознавании речи

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

  1. Применение внимания к текстовому резюме

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

self-attention

Само-внимание может быть частным случаем общего внимания.В само-внимании, Q=K, V Блоки в каждой последовательности и все блоки в последовательности выполняют расчеты внимания.

Идея внимания к себе похожа на внимание, но внимание к себе — это идея, которую Трансформер использует для преобразования «понимания» других родственных слов в слова, с которыми мы имеем дело.Давайте рассмотрим пример: Животное не перешло улицу, потому что слишком устало Представляет ли это животное или улицу, нам очень легко судить, но машинам трудно судить.Самовнимание позволяет машине ассоциировать это с животным, а затем соединиться. Давайте посмотрим на подробный процесс обработки.

  1. Во-первых, самостоятельное внимание вычислит три новых вектора.В статье размерность вектора составляет 512 измерений.Мы называем эти три вектора Запрос,Ключ иЗначение соответственно.Эти три вектора являются вложенными векторами и матрицей.Полученный результат путем умножения эта матрица инициализируется случайным образом, а размерность равна (64, 512).Обратите внимание, что вторая размерность должна быть такой же, как размерность встраивания, и ее значение будет обновляться в процессе БП. Получены три вектора Размерность 64.
self attention1
  1. Вычислите показатель собственного внимания, который определяет, сколько внимания мы уделяем другим частям входного предложения, когда кодируем слово в определенной позиции. Метод расчета этого значения оценки - запрос и ключ. Следующий рисунок является примером. Во-первых, нам нужно рассчитать значение оценки других слов для этого слова для слова «Мышление». Во-первых, это для себя, то есть q1 ·k1, Тогда это для второго слова, q1·k2.
self attention2
  1. Далее делим результат точки на константу, здесь делим на 8, это значение вообще корень первого измерения упомянутой выше матрицы, то есть корень из 64, 8 конечно можно и так выберите другое значение, а затем выполните вычисление softmax для полученного результата. Полученный результат - это релевантность каждого слова слову на текущей позиции Конечно, релевантность слова на текущей позиции однозначно будет велика.
self attention3
  1. Следующим шагом является умножение и сложение значения, полученного с помощью Value и softmax.Результатом является значение собственного внимания на текущем узле. В реальном сценарии приложения, чтобы повысить скорость вычислений, мы используем матричный метод, чтобы напрямую вычислить матрицу запроса, ключа и значения, а затем напрямую умножить значение вложения на три матрицы, и полученный новый матрица Q и умножить на K, умножить на константу, выполнить операцию softmax и, наконец, умножить на матрицу V.
self attention4

seq2seq

seq2seq относится к типу структуры кодер-декодер. Обычно это структура кодер-декодер. Основная идея заключается в использовании двух RNN, одного RNN в качестве кодировщика и другого RNN в качестве декодера. Кодер отвечает за сжатие входной последовательности в вектор заданной длины.Этот вектор можно рассматривать как семантику последовательности.Этот процесс называется кодированием.Самый простой способ получить семантический вектор - это напрямую использовать скрытое состояние последнего входа в качестве семантического вектора C. . Вы также можете выполнить преобразование для последнего скрытого состояния, чтобы получить семантический вектор, и вы также можете выполнить преобразование для всех скрытых состояний входной последовательности, чтобы получить семантическую переменную.

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

Сценарии применения seq2seq следующие:

  1. Машинный перевод (самый известный на данный момент Google-перевод полностью разработан на основе механизма Seq2Seq+Attention).
  2. Чат-боты (Xiaoai, Microsoft Xiaoice и др. также используют технологию Seq2Seq (не все)).
  3. Текстовые сводки генерируются автоматически (эта технология используется Toutiao et al.).
  4. Описания изображений генерируются автоматически.
  5. Машинное написание стихов, завершение кода, генерация сообщения о коммите, переписывание стиля истории и т. д.

LDA

(1) Процесс генерации Целью LDA является идентификация тем, то есть преобразование матрицы словаря документа в матрицу темы документа (распределение) и матрицу словаря темы (распределение).

LDA生成流程
  1. Сгенерировать документ длины N из глобального распределения с параметром Пуассона β;
  2. генерируют θ для текущего документа из глобального распределения с параметром Дирихле α;
  3. Затем выполните следующие два шага для каждого слова текущей длины документа N: 1) Первый — сгенерировать индекс (Индекс) z_n темы (Тема) из полиномиального (Полиномиального) распределения с θ в качестве параметра; 2) Два Генерировать слово (Word) w_n из полиномиального распределения с параметрами φ и z вместе.

Поколение α->θ, порождение β->Fai,Необходимо выполнить условия

  • и равно 1;
  • Больше 0, используйте распределение Дирихле для генерации

Генерация θi->Zij (тематическая выборка в тематическом распределении):Необходимо использовать полиномиальное распределение для выборки

(2) Разница между PLSA и LDA

PLSA определяет вероятность темы, LDA не определяет фиксированную вероятность темы, а только оговаривает, что вероятность темы подчиняется распределению Дирихле.PLSA

  1. по вероятностиP(di)выбрать документdi
  2. выбранный документdiПосле этого определите тематическое распространение статьи
  3. По вероятности из тематического распределенияP(zk/di)Выберите подразумеваемую категорию темыzk
  4. После выбора zk определите распределение слов по теме
  5. По вероятности от распределения словP(wj/zk)выбрать словоwij
PLSA与LDA

LDA

  1. По априорной вероятностиP(di)выбрать документdi
  2. Распространение от ДирихлеαСредняя выборка для создания документацииdiраспределение темθi(θiпо гиперпараметрамαГенерация распределения Дирихле)
  3. Раздача из темыθiКитайский J-like генерирует документациюdiпредмет j-го словаzij
  4. Распространение от ДирихлеβСредняя выборка для создания темzijСоответствующее распределение словFAIij(FAIijпо гиперпараметрамβГенерация распределения Дирихле)
  5. По вероятности от распределения словFAIijвыбрать словоwij

transform

Объяснение одним предложением:transformerэто сself-attentionизseq2seq, выходные данные могут быть рассчитаны одновременно и могут заменить структуру RNN (она должна быть рассчитана в порядке ввода), поэтому преобразователь более эффективен для последовательностей сценариев приложений.

Transformer — первая модель, которая полностью отказывается от повторения RNN, свертки CNN и использует внимание только для извлечения признаков. В Transformer отказались от традиционных CNN и RNN, а вся сетевая структура полностью состоит из механизма Attention.

(1) Интерпретация конструкции трансформатораСтруктурная схема модели трансформатора выглядит следующим образом:

transformer计算流程1

На приведенном выше рисунке левая половина — это кодер, а правая — декодер.

  1. Encoder
  • inputпройдетinput embedding layerстатьvector
  • этоvectorдобавитpositional encoding
  • positional encodingДалее он войдет в серый блок (серый блок будет повторяться N раз)
  • Среди них первый слой серого блокаMuti-head Attention, последовательность получит другую последовательность через этот слой
  • Далее черезAdd & Norm, функция состоит в том, чтобыMuti-Head AttentionизoutputиMuti-head AttentionизinputДобавьте и выполните нормализацию слоев (отличается от пакетной нормализации)
  • Далее черезFeed Forward layer, будет обрабатывать каждый вектор последовательности
  • затем подключите другойAdd & Norm
  1. Decoder
  • outputsпройдетoutput embedding layerстатьvector
  • этоvectorдобавитpositional encoding
  • positional encodingДалее он войдет в серый блок (серый блок будет повторяться N раз)
  • Среди них первый слой серого блокаMasked Muti-head Attention(замаскировано: обратите внимание на сгенерированную последовательность), последовательность получит другую последовательность через этот слой
  • Далее черезAdd & Norm
  • повторно войтиMuti-Head Attention layerперед получениемEncoderчастичный вывод
  • Далее черезAdd & Norm,Feed Forward layer,Add & Norm
  • проходить черезLinear,SoftmaxПолучите сфокусированный вывод.

Конкретный поток расчета выглядит следующим образом:

Шаг 1: Рассчитайте q, k, v, соответствующие каждому вектору в соответствии с Wq, Wk, Wv, а затем рассчитайте αi по формуле в правом верхнем углу.

[PS] q, k и v представляют вектор запроса (запрашиваемое, взаимосвязь между каждым словом), вектор ключа (слово, ожидающее проверки) и вектор значения (фактическая информация о свойствах), которые являются вектор вложения X умножается на три разные матрицы весов Wq, Wk, Wv через три разные матрицы весов.

transformer计算流程1

Шаг 2: Рассчитайте значение softmax для каждого αi

transformer计算流程2

Шаг 3: Используя формулу в правом верхнем углу, вычислите выход b, соответствующий каждому вектору.

transformer计算流程3

[Примечание] Вышеупомянутые операции от x1 до xn могут выполняться одновременно.Благодаря размеру значения внимания можно генерировать контекстные ассоциации с другими векторами.

Номенклатура трансформаторных расчетов

Длина обрабатываемого текста Transformer установлена ​​на 512, а не на большее значение.Очень важным фактором является то, что в процессе расчета внимания его необходимо вычислять (Многоголовое внимание не уменьшит объем вычислений), поэтому Transformer Одна из причин того, что работа с удаленными зависимостями не так хороша.

многоголовый механизм(обычно несколько слоев, одного слоя недостаточно)

Несколько наборов Q, K и V могут получить несколько наборов выражений (аналогично фильтру в CNN), и различные схемы извлечения признаков могут быть интегрированы для получения комплексного выражения признаков.

  • Получите несколько выражений признаков с помощью разных головок (обычно 8)
  • соединить все функции вместе
  • Размерность можно уменьшить еще одним слоем полносвязной (умноженной на полносвязную матрицу)
multi-headed机制

Как выражается информация о местоположении?

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

Что такое нормализация слоя?

layer norm

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

Добавить и норма сделалостаточное соединение(Выбор нескольких путей модель выбирает сама)

Особенности декодера

  • Метод подсчета внимания разный (не только само-внимание, но и кодер-декодер внимание)
  • Добавлен механизм маски (вывод декодера может быть выведен только один за другим, и ему нужно опираться на предыдущий вектор, поэтому нужно использовать механизм маски, то есть вещи, которые не могут предсказать будущий вывод)
  • Даже слой softmax использует кросс-энтропию для расчета потерь.

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

1. Для вычисления q, k и v каждого вектора можно использовать матричное умножение Wqа. неделяа. Рассчитайте Wv*a:

transformer矩阵计算1

2. Вычисление α также может быть выражено умножением матриц, как показано на следующем рисунке:

transformer矩阵计算3 transformer矩阵计算4

3. Вычисление b также может быть решено умножением матриц:

transformer矩阵计算5

Ниже приведена иллюстрация синтетических матричных операций:

transformer矩阵计算6

Общий процесс расчета внимания:

  1. Q каждого слова будет оцениваться с каждым K (чем выше важность, тем выше оценка)
  2. Весь взвешенный результат будет получен после softmax (эквивалентно нормализации)
  3. В это время каждое слово видит не только последовательность перед собой, но и всю входную последовательность
  4. Результаты выражения всех слов могут быть вычислены одновременно (используя умножение матриц)