iPavlov Media

iPavlov NLP: Word embedding: word2vec или one-hot encoding?

Мы уже говорили, что человеческий язык - уникальное свойство высокоуровневых систем, иными словами “протокол” для коммуникации. Обычно мы получаем основную информацию из контекста, например, когда мы слышим фразу: "продается коляска для ребенка синего цвета", мы понимаем, что коляска синего цвета, а не ребенок. Но вот вопрос! Как научить систему “дописывать” контекст, посылая только самые важные кусочки кода?

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

One-hot encoding. Признаковое пространство в one-hot векторах имеет размерность, равную мощности словаря коллекции текстов. Для каждого слова в вектор-столбце “зарезервировано” единицей свое место. Проще говоря: берем вектор, длина которого равна длине словаря, и на все места ставим нули, кроме того места, номер которого совпадает с номером слова в словаре. Такое представление и называется one-hot encoding. Возможны различные варианты учёта со-встречаемости слов: сумма по всей коллекции числа попаданий пары слов в окно фиксированного размера, количество документов, хоть раз содержащих пару слов, количество документов, хоть раз содержащих пару слов в окне. Здесь необходимо упомянуть: значительный минус данного подхода - он никак не учитывает семантическую близость слов, все векторы одинаково далеки друг от друга в признаковом пространстве. Помимо этого, часто бывает так, что словарь просто огромный, и на деле мы получим разреженные векторы большой размерности, что неудобно на практике. К тому же, одно и то же в написании слово может иметь разный смысл.

Word2vec. Как мы уже сказали ранее, с ростом размера выбранного текста, растет мощность словаря, а следовательно, и размер матрицы, в которой записывается совместная встречаемость слов. Именно поэтому был придуман алгоритм “word2vec” сжатого векторного представления в пространствах фиксированной размерности порядка десятков и сотен, а не десятков тысяч, как в случае “one-hot encoding”. Главная идея состоит в том, что семантически близким словам должны соответствовать в векторном пространстве векторы, которые находятся на небольшом расстоянии друг от друга. Например, слово “лиса” будет встречаться рядом с “деревом”, но вряд ли рядом с “акцией”, “покупкой” и так далее.

skip-gram model для нахождения ближайших соседей слова
skip-gram model для нахождения ближайших соседей слова

Меру, которая задает расстояние между элементами, мы вправе вводить сами, чаще всего используется косинусная мера. В целом, существует несколько моделей “word2vec”, предлагаем разобрать одну из самых популярных - skip-gram. Итак, выберем абзац текста, для каждого слова выделим предложение, в которое оно входит, и скомбинируем пары соседей в training sample (тренировочную выборку). Будем давать вектора на вход нейронным сетям, решающим задачу предсказания наиболее вероятного соседа. Сеть, зная правильные ответы, выучивает, как именно преобразовывать вектора, чтобы раз за разом получать качественные результаты на train sample. В результате, мы получим нейронные сети, которые с высокой точностью соответствуют нашей задаче и даже на не встречавшихся ранее в train sample словах угадывают окружение. Новое представление вектора после всех преобразований называется Distributed Representation - в нем признак равномерно распределен по осям, ни одна из них строк вектора в отдельности не определяет его классификацию слова. Более детально процесс устроен так: сначала умножим входной разреженный входной вектор высокой размерности (N - количество слов в словаре) на матрицу размером N*256 или N*512, тем самым мы понизим порядок вектора и ускорим тренировку нейронных сетей. Будем пропускать полученный вектор через нейронные сети, последний слой которых вновь восстанавливает исходную размерность вектора, равную N. После всех преобразований его можно условно представить в форме X * W + b, где W - матрица весов, b - вектор-столбец. По формуле softmax activation function, предполагая, что все исходы равновероятны, мы можем выразить условную вероятность того, что ближайший сосед = элементу в строке под номером i в полученном векторе, при условии, что на вход мы подали наше слово X. После такого преобразования, проводимого функцией softmax, наш финальный столбец будет содержать значения вероятности того, что слово под номером i является смысловым соседом слова X. Самое большое значение мы максимизируем, оно и становится самой точной догадкой.

Функция softmax для преобразования вектора-слов в вектор вероятности совместной встречаемости слов.
Функция softmax для преобразования вектора-слов в вектор вероятности совместной встречаемости слов.

Посмотрим на визуализацию пространства слов-векторов (word space):

Визуализация пространства слов-векторов (word space).
Визуализация пространства слов-векторов (word space).

Если из векторов, полученных до применения функции softmax, построить n-мерное пространство, то можно заметить, что словам, используемым в одном и том же контексте, отвечают близко расположенные векторы, так как алгоритм word2vec использует совместную встречаемость слов, чтобы сформировать их численные представления.
Следите за обновлениями, вместе мы будем шаг за шагом разбираться в технологиях NLP!
iPavlov (ООО "Айпавлов" спин-офф от МФТИ)

www.ipavlov.ai 

iPavlov NLP: 
Часть 1.
iPavlov NLP: о тайнах в мире Искусственного Интеллекта и Цифровизации!
https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-o-tainah-v-mire-iskusstvennogo-intellekta-i-cifrovizacii-606de08cdcd0546954398081
Часть 2.
iPavlov NLP: Word embedding: word2vec или one-hot encoding?
https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-word-embedding-word2vec-ili-onehot-encoding-6076be8f8360a20f2fe69194
Часть 3.
iPavlov NLP: Recurrent Neural Networks (RNNs)
https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-recurrent-neural-networks-rnns-610d0f3a6a385b554230dff5
Часть 4.
iPavlov NLP: RNNs - генерация текста
https://zen.yandex.ru/profile/editor/id/5fb59c3be146c2727a6f5f68/610d1817e54ec275aceba141/edit

Articles NLP IVA ABI