что такое размерность вложений слов?

Я хочу понять, что подразумевается под «размерностью» во вложениях слов.

Когда я встраиваю слово в виде матрицы для задач НЛП, какую роль играет размерность? Есть ли наглядный пример, который может помочь мне понять эту концепцию?


person manoveg    schedule 29.07.2017    source источник


Ответы (6)


Отвечать

Встраивание слов — это просто сопоставление слов с векторами. Размерность во встраиваниях слов относится к длине этих векторов.

Дополнительная информация

Эти сопоставления бывают разных форматов. Большинство предварительно обученных вложений доступны в виде текстового файла, разделенного пробелами, где каждая строка содержит слово в первой позиции и его векторное представление рядом с ним. Если бы вы разделили эти строки, то обнаружили бы, что они имеют длину 1 + dim, где dim — размерность векторов слов, а 1 соответствует представляемому слову. Реальный пример см. в предварительно обученных векторах GloVe.

Например, если вы загружаете glove.twitter.27B.zip, разархивируете его и запускаете следующее код питона:

#!/usr/bin/python3

with open('glove.twitter.27B.50d.txt') as f:
    lines = f.readlines()
lines = [line.rstrip().split() for line in lines]

print(len(lines))          # number of words (aka vocabulary size)
print(len(lines[0]))       # length of a line
print(lines[130][0])       # word 130
print(lines[130][1:])      # vector representation of word 130
print(len(lines[130][1:])) # dimensionality of word 130

вы бы получили вывод

1193514
51
people
['1.4653', '0.4827', ..., '-0.10117', '0.077996']  # shortened for illustration purposes
50

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


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

Более распространенной практикой является представление их в виде матриц (также называемых интерполяционными таблицами) размерности (V x D), где V – размер словарного запаса (т. е. количество слов, которые у вас есть), а D – размерность каждый вектор слова. В этом случае вам нужно сохранить отдельный словарь, сопоставляющий каждое слово соответствующей строке в матрице.

Фон

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

Вы можете визуализировать 3D-проекцию нескольких вложений слов здесь и посмотреть, например , что слова, наиболее близкие к «дорогам», — это «шоссе», «дорога» и «маршруты» во вложении Word2Vec 10K.

Для более подробного объяснения я рекомендую прочитать раздел «Вложения Word» в этот пост Кристофера Олаха.

Для получения дополнительной теории о том, почему использование вложений слов, которые являются экземпляром распределенных представлений, лучше, чем использование, например, однократных кодировок (локальные представления), я рекомендую чтение первых разделов Распределенные представления Джеффри Хинтона и др.

person jabalazs    schedule 19.06.2018

Вложения слов, такие как word2vec или GloVe, не встраивают слова в двумерные матрицы, они используют одномерные векторы. «Размерность» относится к размеру этих векторов. Он не зависит от размера словаря, который представляет собой количество слов, для которых вы фактически сохраняете векторы, а не просто выбрасываете их.

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

Вот рисунок с главной страницы GloVe.

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

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

person polm23    schedule 31.07.2017

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

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

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

Для получения дополнительной информации по этой теме вы можете найти это пост полезный.

person Thava    schedule 04.12.2018

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

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

Предварительно обученные модели встраивания слов, такие как Glove, Word2vec, предоставляют несколько вариантов измерения для каждого слова, например, 50, 100, 200, 300. Каждое слово представляет точку в пространстве размерности D, а слова-синонимы — это точки, расположенные ближе друг к другу. Чем выше размерность, тем лучше будет точность, но потребности в вычислениях также будут выше.

person Kaustuv    schedule 30.12.2019

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

Недавно я видел эту визуализацию встраивания из библиотеки Tensor Flow: https://www.tensorflow.org/get_started/embedding_viz

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

В этой статье Википедии о сокращении измерений и связанных с ней страницах обсуждается, как объекты представлены в измерениях, и проблемы иметь слишком много.

person scipilot    schedule 30.07.2017

Согласно книге Neural Network Methods for Natural Language Processing от Goldenberg, dimensionality в word embeddings (demb) относится к количеству столбцов в первой весовой матрице (веса между входным слоем и скрытым слоем) алгоритмов встраивания, таких как word2vec. N на изображении dimensionality встраивается в слово: модель пропуска грамм

Для получения дополнительной информации вы можете перейти по этой ссылке: https://blog.acolyer.org/2016/04/21/the-amazing-power-of-word-vectors/

person hamed baziyad    schedule 08.08.2019