1. Расскажите о GloVe
Как следует из названия документа GloVe, **полное название GloVe — Global Vectors for Word Representation, это инструмент представления слов, основанный на подсчете и общей статистике, который может преобразовывать список слов. Получение вектора действительных чисел, которые фиксируют некоторые семантические свойства между словами, такие как сходство, аналогия и т. д. ** Мы можем вычислить семантическое сходство между двумя словами с помощью операций над векторами, таких как евклидово расстояние или косинусное сходство.
2. Этапы внедрения GloVe
2.1 Построение матрицы совпадений
Что такое матрица совпадений?
Матрица совпадения, как следует из названия, означает совпадение.Матрица совпадения текстовых документов в основном используется для обнаружения тем и используется для тематических моделей, таких как LSA.
Матрица совпадения слов в локальном окне может извлекать синтаксическую и семантическую информацию,Например:
- I like deep learning.
- I like NLP.
- I enjoy flying
С приведенными выше тремя предложениями установите скользящее окно на 2, вы можете получить словарь:{"I like","like deep","deep learning","like NLP","I enjoy","enjoy flying","I like"}.
Мы можем получить матрицу совпадения (симметричная матрица):
Каждая сетка в середине представляет собой количество раз, которое фраза, состоящая из строк и столбцов, встречается в словаре вместе, что также отражаетсовпадениехарактеристики.
Матрица совпадений GloVe
Постройте матрицу совместного появления X в соответствии с корпусом,Каждый элемент Xij в матрице представляет количество совпадений слова i и контекстного слова j в пределах контекстного окна определенного размера.Вообще говоря, минимальной единицей этого количества раз является 1, но GloVe так не думает: он предлагает весовую функцию затухания в соответствии с расстоянием d двух слов в контекстном окне: для вычисления используется распад=1/d вес, то естьЧем дальше два слова, тем меньше вес общего количества (total count).
2.2 Приблизительная связь между вектором слов и матрицей совпадений
Чтобы построить приблизительную связь между вектором слов (Word Vector) и матрицей совместного появления (Matrix Co-occurrence Matrix), автор статьи предлагает следующую формулу для аппроксимации отношения между ними:
в,это вектор слов, который мы, наконец, хотим решить;являются условиями смещения двух векторов слов соответственно. Конечно, у вас должно быть много вопросов об этой формуле, например, откуда она взялась, почему вы используете эту формулу и зачем вам нужно строить два вектора слов ?w_i^T и \tilde{w}_j ?? Пожалуйста, обратитесь к ссылкам в конце текста.
2.3 Построение функции потерь
По формуле 2.2 мы можем построить его функцию потерь:
Базовой формой этой функции потерь является простейшая среднеквадратическая потеря, но на этой основе добавляется весовая функция., то что делает эта функция и зачем добавлять эту функцию? Мы знаем, что в корпусе должно быть много слов, которые часто встречаются вместе (частые совпадения), тогда мы надеемся:
- Вес этих слов больше, чем у тех слов, которые редко встречаются вместе (редкие совпадения), поэтому функция должна быть неубывающей;
- Но мы не хотим, чтобы этот вес был слишком большим (перевесным), и он не должен увеличиваться после достижения определенного уровня;
- Если два слова не появляются вместе, то есть, то они не должны участвовать в вычислении функции потерь, то есть f(x) должно удовлетворять f(0)=0.
Существует множество функций, удовлетворяющих трем вышеприведенным условиям, автор статьи принимает кусочную функцию следующего вида:
Изображение этой функции выглядит так:
2.4 Обучение модели GloVe
Хотя многие утверждают, что GloVe — это метод обучения без учителя (поскольку он не требует маркировки вручную), на самом деле у него есть метка — log(Xij) в приведенной выше формуле и вектор формулы вЭто параметры, которые необходимо постоянно обновлять / изучать, поэтому, по сути, его метод обучения ничем не отличается от метода обучения с учителем, основанного на градиентном спуске.
В частности, эксперименты в этой статье проводятся следующим образом: ** Алгоритм градиентного спуска AdaGrad используется для случайной выборки всех ненулевых элементов в матрице X, скорость обучения установлена на 0,05, а размер вектора Он выполняет 50 итераций. раз, когда оно меньше 300, и повторяется 100 раз на векторах других размеров до сходимости. ** Окончательный вывод состоит в том, что два вектора, так как X симметрично, в принципеДа, они тоже симметричны, разница между ними только в том, что инициализируемые значения разные, в результате получаются разные конечные значения.
Таким образом, они на самом деле эквивалентны, и оба могут быть использованы в качестве конечного результата.Но для надежности мы выбираем сумму двух ** В качестве конечного вектора (разная инициализация двух эквивалентна добавлению разного случайного шума, что может повысить надежность). **После обучения корпуса, состоящего из 40 миллиардов токенов, полученные экспериментальные результаты показаны на следующем рисунке:
Всего на этом графике используются три показателя: семантическая точность, синтаксическая точность и общая точность. Тогда нетрудно обнаружить, что векторное измерение может достигать наилучшего значения 300, а размер окна контекста составляет примерно от 6 до 10.
3. Сравнение GloVe с LSA и Word2Vec
LSA (латентный семантический анализ) — это ранний инструмент представления векторов слов на основе подсчета, который также основан на матрице совместной встречаемости, но использует технологию декомпозиции матриц, основанную на декомпозиции по сингулярным значениям (SVD), для уменьшения больших матриц. мы знаем, что сложность SVD очень высока, поэтому его вычислительная стоимость относительно высока. Другой момент заключается в том, что он придает одинаковый статистический вес всем словам. И эти недостатки один за другим преодолеваются в GloVe.
Самый большой недостаток word2vec заключается в том, что он не полностью использует весь корпус, поэтому GloVe фактически сочетает в себе преимущества обоих. Судя по экспериментальным результатам, приведенным в этой статье, производительность GloVe намного выше, чем у LSA и word2vec, но некоторые люди в Интернете говорят, что фактическая производительность GloVe и word2vec на самом деле похожа.
4. Реализация кода
Создание векторов слов
Загрузите проект GitHub:GitHub.com/Стэнфорд НЛП…
После распаковки войдите в каталог и выполните
make
Операция компиляции.
Затем выполните команду sh demo.sh для обучения и создания векторных файлов слов: vectors.txt и vectors.bin.
【Машинное обучение легко понять серия статей】
5. Ссылки
автор:@mantchs
Гитхаб:GitHub.com/NLP-love/ml…
Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]