Шаги тренировки вектора перчаток:
1. Создайте матрицу совпадений
Предположим, что матрица совпадения равна X, а каждый элемент равен:, что означает: во всем корпусе количество раз, когда слово j и слово i появляются вместе в окне. Обратите внимание: вообще говоря, количество раз является целым числом, но Глов считает, что вес общего количества двух слов, которые находятся дальше друг от друга, должен быть меньше. Поэтому она использует функцию затухания, основанную на расстоянии d двух слов в контекстном окне.в качестве расчетного веса.
2. Ввести векторное представление и использовать свойства коллинеарных матриц для установления отношений
Сначала введите несколько символов:это строка, представляющая матрицу совпадений.Условная вероятность, указывающая вероятность того, что слово k появится в контекстной сводке слова i.Отношение двух условных вероятностей. Автор нашел это правило:
значение | слово j, k связано | слова j,k не связаны |
---|---|---|
слово i,k связано | приближается к 1 | очень большой |
слова i,k не имеют значения | очень маленький | приближается к 1 |
Мысль:Предположим, у нас есть вектор слова, если мы используем вектор словаВычисляется некоторой функцией, если мы также можем получить такое правило, это означает, что наш вектор слов имеет хорошую согласованность с матрицей совпадений, то есть наш вектор слов содержит информацию, содержащуюся в матрице совпадений, а вектор совпадений матрица содержит информацию, содержащуюся в матрице совпадения.Неявная информация - это информация о соотношении двух слов в корпусе.Следовательно, мы можем построить приблизительную связь между векторами слов и матрицами совпадения, используя следующую формулу:
вЭто вектор слова, который мы, наконец, просим. Насчет того, как появилась эта формула, в Интернете есть много объяснений.Вывод формулы 1,Вывод формулы 2.
3. Построить функцию потерь
Затем они могут построить свою функцию потерь:
Эта функция потерь является простейшей средней случайной потерей, но перед ней добавляется весовая функция., функция этой функции состоит в том, чтобы сделать какое-то ограничение в соответствии с количеством совпадений двух слов. Конкретно: В корпусе слов должно быть много и у них много совпадений (частых совпадений), надеемся:
- Вес этих слов больше, чем у тех слов, которые редко встречаются вместе (редкие совпадения), поэтому функция должна быть неубывающей;
- Но мы не хотим, чтобы этот вес был слишком большим (перевесным), и он не должен увеличиваться после достижения определенного уровня;
- Если два слова не появляются вместе, то есть, то они не должны участвовать в расчете функции потерь, т.е.удовлетворить
Автор использует кусочную функцию вида:
Изображение этой функции выглядит так:
4. Обучение
Алгоритм градиентного спуска AdaGrad используется для случайной выборки всех ненулевых элементов в матрице X. Скорость обучения установлена на 0,05, Когда размер вектора меньше 300, он повторяется 50 раз и повторяется на векторах других размеров ...100 раз до схождения. Поскольку X симметричен, его учатОн также должен быть симметричным, но итоговое значение отличается из-за разных начальных значений. Поэтому, чтобы повысить надежность, окончательно выбирается сумма двухкак окончательный вектор слова.
Согласно экспериментальному заключению, сделанному автором: размерность вектора = 300, размер контекстных окон от 6 до 10, эффект наилучший.
5. Практическое руководство
Я использую фиктивную версию Python,glove-python, потому что я просто тренируюсь, чтобы получить вектор слова, так что это относительно просто.
- Установите pip, установите Glow_Python
- Подготовьте собственный набор данных, разделяйте слова пробелами (можно поместить их все в одну строку, а можно поместить в отдельные строки)
- Затем измените имя файла на «text8».
- Запустите демо-скрипт прямо из командной строки
./demo.sh
- получить результат, vectors.txt
[Ссылаться на:]реализация pytorch
Вычислительные принципы, лежащие в основе GloVe
Обучение НЛП (1) --- модель перчатки --- модель вектора слова