Вектор слов на основе канонического корреляционного анализа

искусственный интеллект глубокое обучение Java Tomcat
Вектор слов на основе канонического корреляционного анализа

Эта статья была впервые опубликована на Lei Feng.com.

предисловие

В области НЛП для представления символов человеческого языка эти символы обычно преобразуются в математическую векторную форму для удобной обработки.Мы встраиваем слова языка в векторное пространство, что называется встраиванием слов.

Например, есть популярный Google word2vec с открытым исходным кодом, который может генерировать векторы слов, которые также можно использовать для измерения сходства между словами в определенной степени. Модель, используемая word2vec, включает модель непрерывного набора слов (CBOW) и модель Skip-Gram и обучается с помощью нейронной сети.

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

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

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

Его метод обработки прост и груб.Как правило, это подсчет всех V слов, содержащихся в тезаурусе, а затем фиксирование порядка V слов, после чего каждое слово может быть представлено V-мерным разреженным вектором. в позиции, где появляется слово, равно 1, а все остальные элементы равны 0. Например, в следующих словах первый элемент равен 1 для Китая, шестой элемент — 1 для США, а пятый элемент — 1 для Японии.

中国 [1,0,0,0,0,0,0,0,0,……,0,0,0,0,0,0,0]
美国 [0,0,0,0,0,1,0,0,0,……,0,0,0,0,0,0,0]
日本 [0,0,0,0,1,0,0,0,0,……,0,0,0,0,0,0,0]

Из этого видно, что размерность формы one-hot обычно очень велика, потому что количество слов обычно находится на уровне 10W, что значительно увеличивает сложность обучения, что приводит к размерной катастрофе. Кроме того, многие измерения используют только последовательную информацию и используют только 1 и 0 для представления слов, что является пустой тратой места. Другое состоит в том, что любые два слова таким образом обособляются, и невозможно увидеть сходство между двумя словами. Так что посмотрите, есть ли способ улучшить его.

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

Ввиду недостатков однократной формы векторов слов появилось другое представление векторов слов - распределенное представление слов. Распределенные векторы слов просто используют обычные векторы для представления векторов слов, а значением элементов является любое действительное число.Размерность вектора может быть определена заранее, обычно 50 или 100 измерений. Вектор слова в настоящее время подобен следующему (здесь предполагается, что он представлен 5 измерениями):

中国 [1.25, 0.2, 0.3, 0.5, 0.6]
美国 [0.1, 0.3, 0.5, 0.1, 1.5]
日本 [2.2, 0.2, 0.4, 0.6, 1.0]

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

Канонический корреляционный анализ

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

Традиционный простой метод анализа заключается в непосредственном использовании ковариационной матрицы, например, у нас есть два набора переменныхX=[X_1,X_2,...,X_m]иY=[Y_1,Y_2,...,Y_n], то самым примитивным методом является непосредственное вычисление ковариационной матрицы X и Y, а матрица имеет m*n значений. С помощью ковариационной матрицы получается корреляция между двумя переменными, напримерc_{ij}переменнаяX_iиY_jкорреляция. Однако у этого метода есть недостатки: рассматривается только корреляция между одним измерением между переменными, поэтому для его улучшения можно использовать классический корреляционный анализ.

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

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

смысл

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

这里写图片描述

обучение модели

Предположим, что наш корпус содержит n слов, обозначенных как {w1,w2,...wn}, размер нашего словаря равен v, размер окна равен h, а размерность вектора слов равна k. Матрица, состоящая из контекста слева и справа от слова, определяется какL_{n \times vh}иR_{n \times vh}, а матрица всего корпуса определяется какW_{n \times v}.

这里写图片描述

Теперь все, что нам нужно сделать, это найти ориентацию двух матриц L, которые лучше всего представляют левое окно и матрицу R правого окна соответственно.\Phi _lи\Phi _r, эти два направления должны максимизировать ковариацию проекций двух матриц в соответствующих направлениях, и проекцию можно рассматривать как сохраняющую наиболее репрезентативную информацию двух матриц окна в этих двух направлениях. Таким образом, цель максимизации может быть выражена как

\underset {\Phi _l,\Phi _r}{max} \frac{E [ <L,\Phi _l><R,\Phi _r> ] }{\sqrt{E [ <L,\Phi _l>^2<R,\Phi _r>^2 ] }}

где E — эмпирическое ожидание, и мы используемC_{lr}Обозначим ковариационную матрицу матрицы L и матрицы R, используяC_{ll}обозначим ковариационную матрицу между матрицей L и матрицей L, используяC_{rr}представляет ковариационную матрицу между матрицей R и матрицей R, тогда мы имеемC_{lr}=L^TR,C_{ll}=L^TL,C_{rr}=R^TR,

这里写图片描述

Путем преобразования решение вышеуказанной цели максимизации может быть дано следующим уравнением:

C_{ll}^{-1}C_{lr}C_{rr}^{-1}C_{rl}\Phi_l = \lambda \Phi_l \\ C_{rr}^{-1}C_{rl}C_{ll}^{-1}C_{lr}\Phi_r = \lambda \Phi_r

Решите приведенное выше уравнение, получите собственные векторы k самых больших собственных значений и сформируйте два вектора направления для левого и правого окон.\Phi _L \Phi _RИ их структура (VH × K). Затем левое окно MATRIX L и правое окна MATRIX R прогнозируются на два направления векторов соответственно, а именноS= [L\Phi_lR\Phi_r], получается матрица скрытого состояния S, соответствующая слову, и S представлен k наиболее релевантными компонентами. Наконец, выполните канонический корреляционный анализ на S и корпусной матрице W, то есть CCA(S, W), и получите окончательную матрицу вложения вектора слова со структурой (v × k), которая должна использовать k-мерную векторы для представления исходных слов v для реализации встраивания слов.

这里写图片描述

------------- Рекомендуем прочитать ------------

Резюме статьи 2017 г. — Машинное обучение

Резюме статьи 2017 г. — Java и ПО промежуточного слоя

Резюме статьи 2017 г. — Глубокое обучение

Резюме статьи за 2017 год — исходный код JDK

------------------рекламное время----------------

Меню официальной учетной записи было разделено на «Распределенное», «Машинное обучение», «Глубокое обучение», «НЛП», «Глубина Java», «Ядро параллелизма Java», «Исходный код JDK», «Ядро Tomcat», и т.д. Там может быть один стиль, чтобы удовлетворить ваш аппетит.

Моя новая книга «Анализ проектирования ядра Tomcat» продана на Jingdong, и нуждающиеся друзья могут ее купить. Спасибо друзья.

Зачем писать «Анализ проектирования ядра Tomcat»

Добро пожаловать, чтобы следовать:

这里写图片描述