Обзор
Word2vec — это языковая модель, основанная на нейронной сети, целью которой является вычисление вероятности P(w|context), то есть условной вероятности слова w в его контексте. Контекст здесь — это n слов, непосредственно окружающих слово w в предложении. С P(w|context) вероятность предложения может быть рассчитана аналогично модели n-грамм. Языковые модели имеют широкий спектр приложений в области НЛП, таких как интеллектуальный метод ввода пиньинь, распознавание речи и машинный перевод, а также в других областях, где необходимо использовать языковые модели. Тем не менее, реальная сила модели word2vec заключается не только в том, что это инструмент с более высокой точностью, чем в традиционных языковых моделях, таких как n-gram, но и в том, что придатки (слововекторы), созданные в процессе ее обучения, имеют более широкий спектр приложений. .
Так что же такое вектор слов? В задачах НЛП мы передаем естественный язык алгоритмам машинного обучения, но машины не могут напрямую понимать человеческий язык. Итак, первое, что нужно сделать, — это математизировать язык, а векторы слов — отличный способ математизировать естественный язык.
Одним из простейших векторов слов является горячее представление, которое заключается в использовании очень длинного вектора для представления слова.Длина вектора равна размеру N словаря D. Только один компонент вектора равен 1, а все остальные равны 0 и 1. Позиция соответствует индексу слова в словаре. Это векторное представление слов имеет некоторые недостатки: оно легко страдает от проклятия размерности, особенно применительно к сценариям глубокого обучения; в то же время оно не может хорошо описать сходство между словами.
Другим вектором слов является распределенное представление, которое было впервые предложено Хинтоном в 1986 году и может преодолеть указанные выше недостатки прямого представления. Основная идея состоит в том, чтобы с помощью обучения преобразовать каждое слово в языке в короткий вектор фиксированной длины. Все эти векторы образуют векторное пространство слов, каждый вектор является точкой в пространстве, и, вводя в это пространство «расстояние», о расстоянии между словами можно судить по расстоянию между ними (лексически, семантически) сходства. Побочным продуктом модели Word2vec является вектор слов этого распределенного представления.
Как получить вектор слова распределенного представления? Существует множество различных моделей, которые можно использовать для оценки векторов слов, включая модель факторизации матрицы LSA, вероятностную модель латентно-семантического анализа PLSA и модель генерации документов LDA. Кроме того, использование алгоритмов нейронных сетей также является распространенным методом, хорошим примером является word2vec.
Векторы слов имеют широкий спектр применений при поиске информации, например, на основе векторов слов можно выполнять анализ связанных слов. Обратите внимание, что векторы слов упоминаются только для «слов». На самом деле, мы также можем обобщать для более мелкозернистых или крупнозернистых, таких как векторы слов, векторы предложений и векторы документов, которые могут быть словами, предложениями, документами и т. д. Ячейки обеспечивают лучшее представление. Крупнозернистые текстовые векторные представления имеют более практичное и широкое применение.
Для нейронной сети машина очень глупа, она не может понять построенный нами естественный язык более высокого уровня, она должна сначала преобразовать слова в математическую форму, которую она может понять, то есть преобразовать слова в векторы слов.
Для изображений само изображение является своего рода исходными экологическими данными.То, что видит человеческий глаз, является такими данными.Оно не подвергалось никаким изменениям и обобщениям.Так как мозг человека обрабатывает изображение,нейронная сеть может быть использована для сделать машину, чтобы имитировать метод обработки человеческого мозга, чтобы завершить такое событие. Но текст другой.Текст-это данные, организованные некоторыми символами, которые люди определяют сами после того, как они обретут мудрость, а не исходные экологические данные, поэтому вы должны восстановить текст в форме, которую может понять компьютер, то есть слово векторное кодирование, которое будет обсуждаться здесь.
Кодирование слов должно обеспечивать сходство слов
Это все о лягушкахПодобие распределений векторного пространства
Между языками, построенными разными цивилизациями, есть сходство
Мы надеемся, что из одной языковой семьи (английской) в другую языковую семью (испанский) их распределение может быть сохранено после отображения в векторное пространство.Например, два слева на рисунке ниже соответствуют dos в испанском векторном пространстве , и позиции у них примерно одинаковые.
векторное космическое основание
Мы увидим, что word2vec позволяет нам изучать такие отношения.Многие места любят называть это синонимом, но на самом деле это просто отношения, поэтому мы надеемся, что сможем получить некоторые отношения более низкого уровня между словами, такие как отношение между королем и королевой на самом деле очень и очень похоже на отношения между мужчиной и женщиной. Поэтому я надеюсь, что Vking минус Vqueen и Vman минус Vwomen результат должен быть одинаковым, король и королева, мужчина и женщина, по сути, одно и то же. После такого кодирования некоторая информация об исходном тексте может быть надежно гарантирована. Имея так много фоновых знаний, люди понимают такую информацию, и мы надеемся, что после кодирования слов мы сможем сохранить понимание этих вещей в фоновых знаниях.
представить слово в компьютере
Традиционный способ — создать словарь (Dict).
Трудно заметить разницу в деталях, например, если вы хотите знать, ближе ли красота к красоте или красота и красота ближе, вы не можете знать! ! , синонимы могут быть синонимами в разных направлениях.Дискретное представление: однократное представление (горячее кодирование)
Дискретное представление: мешок слов
Модель мешка слов: я знаю только, появляется или не появляется слово, и я не знаю, важно оно или нет.Информация о его важности была полностью утеряна.Дискретные представления: биграммы и N-граммы
Предыдущая модель мешка слов заботится только о встречаемости слов, а не о порядке их появления, например: Майк любит тебя, ты любишь Майка Это два разных предложения.
Мы хотим зафиксировать этот порядок, поэтому порядок предложений сохраняется через 2-грамм.
Таблица 1: Количество параметров модели — это всего лишь статистика, неважно, как она рассчитывается.Частота появления некоторых n-граммных терминов очень и очень мала, но вам нужно освободить место для их хранения. , очень длинный. , очень очень редкий (разреженный).
языковая модель
Языковая модель часто видит слова, которые следуют за этими словами. Как определить неправильные выражения, такие как: ты любишь меня, ты любишь меня.
Этот метод умножения вероятности редко используется в промышленности, потому что значение вероятности после умножения очень и очень мало. Обычно это в форме суммирования журнала.Проблема дискретного представления
Распределенное представление
20 цветов, 3 модели, 30 моделейАнализ распределенного представления: Вам трудно позволить мне взяться за эту вещь, поэтому я распределяю ее, бросаю на каждый дочерний узел или класс, а затем суммирую эти вещи обратно.
Распределенное представление слова рядом с другими словами.
Как и здесь, я не знаю, что означает слово "банкинг". Когда вы увидите много, скажем, 10 000 предложений со словом «банкинг», вы поймете, в каком контексте «банкинг» является наиболее подходящим. Я должен быть в состоянии понять, что это слово, кажется, связано с чем-то.Хотя я не знаю точного значения слова «банкинг», я, вероятно, могу знать, что то, что выражает эта вещь, связано с этой информацией.Матрица совпадения
Совместное возникновение: Часто происходит вместе.Размер окна: если вы хотите знать свое финансовое положение, вы должны знать, что несколько друзей вокруг вас подходят.
Частота сочетаемости: один или несколько раз.
Те люди, которые рядом с ним, будут считаться, а это проблема локального окна.
Это симметричная матрица. Вы можете использовать каждую строку или столбец как вектор слова по своей природе. Например, вектор слова I может быть представлен первой строкой. Друзьям я нравится и нравится, потому что они часто появляются вместе.Определяет текущее слово со словами, окружающими текущее слово.
Проблемы указанные выше
Если в это время появится новое слово (предложение), то каждый вектор модели увеличится на одно измерение.Размерность слишком велика и очень разрежена, так как же уменьшить размерность, сохранив при этом исходную информацию?
Уменьшение размерности СВД
Люди могут понимать только 2 и 3 измерения, а более высокие измерения понять сложно, поэтому здесь упоминается только 2-мерное смирение.Из координат видно, что расстояние между i и like и enjoy одинаково.
Проблема уменьшения размерности СВД
Каждый раз, когда добавляется новое слово, матрица меняется, и декомпозицию нужно проводить заново.Самое страшное в нейронных сетях то, что размерность слишком велика.Если размерность слишком велика, объем вычислений будет очень большим при соединении со следующими нейронами, поэтому я надеюсь, что эти разреженные векторы можно будет встроить в плотный вектор, а вектор сжат SVD Вроде бы такую задачу можно решить, но разница между SVD и нейронной сетью немного большая, проблема в том, что вы увидите, что word2vec во многих местах заранее не обучен, например, FM делает встраивание, есть такая ссылка, что они будут FM Embedded в большой фреймворк, такой как deeplearning, условием встраивания должно быть то, что его собственный режим или метод аналогичен, но SVD не является таким набором логики, поэтому он не подходит. Для решения этой проблемы был предложен NNLM, который является предшественником word2vec.
NNLM
Используйте нейронную сеть для реализации вероятности pNNLM (языковая модель нейронной сети) является предшественником word2vec. Первоначально она была разработана для решения проблемы языковой модели. Когда ваша языковая модель поднимается до биграммы, возникает много проблем с разреженностью, статистика не очень хорошая и эффект сглаживания это нехорошо Очень хорошо, поэтому использование статистического метода очень хорошее время, вам нужно пройти через весь корпус, и, наконец, вам нужно большое пространство для хранения, потому что вам нужно сохранить все вероятности появления всех слов.
Целевой функцией является максимальное правдоподобие, и параметр t (окно) можно сдвигать, чтобы переместить окно вперед. Строго говоря, это соотношение умножения, но из-за инженерного соотношения оно преобразуется в логарифмическую форму суммирования. Скользящее окно будет проходить по всему корпусу для суммирования, поэтому сумма его вычислений пропорциональна размеру корпуса.
ННЛМ: Структура
Нужно сделать следующее: у вас есть корпус, теперь используйте 4-граммы, возьмите первые 3 слова, чтобы предсказать четвертое слово, w1, w2, w3 предсказать w4, используйте горячее кодирование, например, теперь есть 10w слов, вектор каждого слова равен 1*10w.Следующий слой входного слоя называется проекционным слоем.Матрица состоит в том, что C - это вектор слов ваших 10w слов, а векторы-столбцы слов комбинируются один за другим.Предположим, теперь вам нужно сопоставить с 300-мерный плотный вектор, то матрица C представляет собой матрицу 300 * 10 Вт. Вес этого C инициализируется случайным образом, потому что я не знаю, каков окончательный вес.
Почему он называется проекционным слоем, ведь только одна позиция one-hot encoded вектора равна 1, а остальные позиции равны 0, а операция с матрицей C эквивалентна выниманию соответствующего столбца матрицы C.
После получения 300-битных плотных векторов трех слов w1, w2 и w3 он (проекционный слой) сделает одну вещь: объединит эти три вектора слов, чтобы получить 900-мерный вектор. Предположим, следующий скрытый слой проекционного слоя составляет 500 измерений, то 900 сделают полное соединение с этими 500.
Последний слой представляет собой линейный классификатор softmax. Размер последнего слоя такой же, как размер вашего словарного запаса, а также 10 Вт. Конечный результат, который я хочу получить, — это результат с наибольшей вероятностью векторов слов 10 Вт в словарь.
Вычислительная сложность NNLM
word2vec: CBOW (Мешок слов)
В word2vec задействованы две модели: модель CBOW (модель непрерывного набора слов) и модель Skip-gram (модель непрерывного Skip-gram). CBOW предсказывает текущее слово, зная контекст текущего слова, в то время как Skip-gram предсказывает его контекст, когда известно текущее слово.
Модель, представленная последней, делала сращивание в проекционном слое.Здесь он чувствовал, что размер этого сращивания слишком велик, поэтому он делал суммирование напрямую, а после суммирования он прямо предсказывал слово в середине, поэтому скорость был очень быстрым.Согласно тому, какое слово из 10 слов нужно предсказать.
CBOW: Hierarchical Softmax
Краткое описание.com/fear/53457027…
Размерность 10w-мерного вектора последнего слоя слишком велика, поэтому нужно найти способ справиться с 10w вектором: Первая идея Hierarchical Softmax, в случае маломерности все слова гарантированы , вы можете построить дерево.Я люблю смотреть чемпионат мира по футболу в Бразилии.Согласно предыдущему методу мне нужно преобразовать его в 6-мерный вектор.Если я думаю, что сгладить 6-мерный вектор очень проблематично, я могу использовать дерево Хаффмана для справиться с этим.Решение в дереве только Идти налево и идти направо (0 и 1). Как вес последнего слоя приведенной выше модели будет кратен θ (весам) 300*10w, потому что вы должны убедиться, что после умножения вы получите вектор 1*10w, этот расчет слишком велик. Здесь он сделал одну вещь. После кодирования этих слов в дерево Хаффмана он поставил θ на дереве и оставил веса на узлах дерева для принятия решения.Каждый раз, когда достигается узел, он вычисляется один раз, в каком направлении идти , Идти, потому что четыре слова пропали, и, наконец, произведение этих четырех решений должно быть максимизировано, и каждое решение рассматривается как LR-модель.
Для слова футбол мы можем получить следующие результаты:
Рассмотрим приведенный выше пример чемпионата мира по футболу в Бразилии.В процессе от корневого узла к листовому узлу футбола мы испытали четыре ветви, и каждая ветвь эквивалентна выполнению бинарной классификации. Так как задача рассматривается с позиции бинарной классификации, то для каждого нелистового узла необходимо указать категорию его левого и правого дочерних узлов, то есть какой положительный класс (метка равна 1), который это отрицательный класс (метка 0) ). Получается, что каждый узел в дереве, кроме корневого узла, соответствует коду Хаффмана со значением 0 или 1. Поэтому в word2vec узел, закодированный как 0, определяется как отрицательный класс, а точка, закодированная как 0, определяется как положительный класс.CBOW: выборка отрицательного образца
Например: Теперь есть 10w-мерный словарь, и, наконец, должен быть получен 10w-мерный вектор вероятности. Один положительный образец, 10w-1 отрицательные образцы, слишком много отрицательных образцов, могу ли я взять только часть отрицательных образцов. Метод отрицательной выборки выборки заключается в том, чтобы взять только часть отрицательных выборок, предполагая, что имеется 499 отрицательных выборок, без приведенного выше дерева Хаффмана общий конечный результат представляет собой 500-мерный вектор.Вопрос в том, почему часть отрицательных образцов может быть выбрана.Его подход:
Частота каждого слова разная.Так как частота разная, то и вес используется разный.По весу определяется, какой длины отрезок должен быть отнесен к отрезку, на котором находится слово.Например : Я (300) Лайк (200) Ты (100), то в этой степени 10^8 вынь площадь 3\5 и дай слово "Я", вынь площадь 2\5 и дайте слово "нравится", и отнимите 1\5 Площадь отдана слову "вы". Случайным образом сгенерируйте случайное число в диапазоне 1-10^8, это случайное число попадает в этот сегмент, а затем посмотрите, к чьей области относится этот сегмент (я, например, вы), вы бросите 499 раз, чтобы получить 499 отрицательных образцов, если Если вы выкинете положительный образец, то сделайте еще один бросок и используйте полученные 499 отрицательных образцов и 1 положительный образец для классификации softmax.