Документ Word2vec был выпущен исследовательской группой Google в 2013 г. Его выпуск сильно изменил развитие технологии НЛП.Мало того, что при использовании нейронных сетей для решения задач в различных областях разговор должен быть неотделим от встраивания, и что такое встраивание ? Студенты, знакомые с Word2vec, знают, что на самом деле это другое название Word2vec или Word2vec в широком смысле.это метод обучения представлению, который использует плотные векторы для представления функций.
Например, в области поиска и рекомендаций идея Word2vec может быть использована для кодирования ключевых функций, таких как Item, Query и User, для создания плотных векторов Item, Query и User, С помощью этих векторов они могут быть дополнительно используется для вызова и сортировки в сцене. Не будет преувеличением сказать, что это основа интеллектуальных систем поиска и рекомендаций, или появление Word2vec способствовало развитию интеллекта в области поиска и рекомендаций.
Для меня Word2vec - это технология, которая дала мне озарение, основная причина в том, что переход от ее основной идеи к технической реализации не такой прямой, например: вопросы типа "как он обновляет параметры вектора". Может быть потому, что после прочтения некоторых онлайн-курсов и обучающего кода модели вдруг прояснился ряд оставшихся до этого проблем, и в то же время я осознал важность этой технологии.
Хотя в интернете есть несколько отличных статей, знакомящих с этой технологией, я все же хочу ее записать, с одной стороны, чтобы проверить свое понимание ее, а с другой стороны, чтобы помочь людям вроде меня, которые тоже были в этом технология в начале Учащиеся, которые «борются» с пониманием, могут быстро ее понять.
Предварительные знания: в этой статье предполагается, что вы уже знакомы с концепциями горячего кодирования, логистической регрессии, Softmax, внутреннего продукта.
Основная идея word2vec
В области обработки естественного языка НЛП признаки состоят из слов. Чтобы позволить компьютеру обработать эти слова, их необходимо закодировать в числа, поскольку слова представляют собой дискретные данные. В прошлом наиболее интуитивно понятным методом кодирования было использование одного -горячее кодирование, и очевидная проблема с однократным кодированием заключается в том, что любые два вектора ортогональны, и их внутреннее произведение или косинусное сходство нельзя использовать для выражения корреляции между словами, и эта семантическая релевантность снова очень важна.
Поскольку метод однократного разреженного кодирования не подходит, мы, естественно, думаем об использовании плотного вектора для представления каждого слова, что похоже на радарную диаграмму в футбольном матче, в который мы играем, как показано на следующем рисунке:
Радарная диаграмма в игре использует 6 измерений для представления всех игроков в мире. Каждый игрок использует разные значения в этих 6 измерениях, чтобы выразить разницу в способностях. Игроки с одинаковыми значениями в некоторых измерениях будут более «похожими». "; например, игрок с большим количеством бросков и коэффициентом реализации, скорее всего, будет хорошим нападающим.
На самом деле, приведенная выше радиолокационная карта — это способ кодирования игроков в плотные векторы, а именно упомянутое выше вложение, но встраивание в машинном обучении, как правило, имеет гораздо больше измерений, и интерпретируемость каждого измерения не имеет радиолокационной карты. интуитивный.
Вышеизложенное является целью кодирования нашего Word2vec.Далее нам нужно определить, как кодировать.Идея этого метода кодирования заключается в следующем:
You shall know a word by the company it keeps. (J. R. Firth 1957: 11) -- from cs224n
смысл в том,Слова, которые часто встречаются вокруг слова, придающего этому слову значение. А skip-gram и CBOW (модель непрерывного мешка слов Continuous Bag Of Words) — это два алгоритма, которые кодируют слова вокруг этой основной идеи.
Модель пропуска грамм
Skip-gram выражается как предсказание окружающих слов на основе центрального слова, в то время как CBOW наоборот, оно предсказывает центральное слово на основе слов, окружающих центральное слово. Для окна «мужчина любит своего сына» центральным словом окна является любовь, а остальные 4 слова в этой статье называются оконными словами.Во время обучения методы скип-граммы и CBOW выражаются следующим образом:
Поскольку скип-граммы более распространены в практических приложениях, этот метод будет в основном объяснен позже. Левое изображение выше может быть выражено в терминах условной вероятности:
Предполагая, что вероятность появления каждого слова независима, приведенную выше формулу можно разложить на:
Мы надеемся, что чем больше приведенная выше условная вероятность, тем лучше.Поэтому для условной вероятности оконных слов, порожденных каждой группой центральных слов в корпусе, их умножение является показателем, который модель должна оптимизировать, или Loss, как следует:
В приведенной выше формуле T представляет собой количество окон, которое также является количеством центральных слов.представляет центральное слово,выражатьСлово берется в окне, а само центральное слово браться не будет, поэтомуОно выражается как оконное слово.
Вычислите -log для приведенной выше формулы, превратите умножение в сложение и превратите задачу оптимизации максимального значения приведенной выше формулы в задачу оптимизации минимального значения следующей формулы:
После определения Loss остается вопрос: как найтиВероятность?
Вернемся к основной идее: значение слова может быть представлено словами, которые часто встречаются вокруг него, что означаетиотносительно похожи, в то время какСходство с другими словами низкое. Предполагая, что вектор для каждого слова был обучен,Вектор,иВектор,ноиСходство может быть вычислено внутренним произведением их соответствующих векторов:, таким же образом мы можем также вычислить сходство между центральным словом и другими словами в корпусе.
Получив сходство между центральным словом и всеми словами, мы можем использовать softmax для преобразования сходства в вероятность, и, учитывая центральное слово, расчет условной вероятности его оконного слова можно рассчитать следующим образом:
В приведенной выше формулеУказывает количество независимых слов в корпусе.На данный момент вся потеря была выведена. Как видите, выражение по-прежнему очень лаконичное, где m (размер окна) — гиперпараметр, а векториЭто параметр, который модель должна оптимизировать. В частности, как оптимизировать, мы дополнительно проиллюстрируем на следующей диаграмме нейронной сети:
На приведенном выше рисунке входной слой представляет собой v-мерный вектор, v соответствует количеству независимых слов в корпусе, каждое измерение представляет слово, а вход на рисунке — второе слово в корпусе (индекс 1). , вы можете видеть, когда слово вводится, только значение второго нейрона равно 1, а значения других нейронов равны 0. Видно, что перед обучением вектора слова каждое слово по-прежнему кодируется с помощью одного- горячий.
Существует полностью связанный слой между входным слоем и скрытым слоем.Предполагая, что размерность скрытого слоя равна h, тогда параметр между входным слоем и скрытым слоем равенматрица, мы используем двумерный массивV[v][h]
для его представления, и для удобства здесь предполагается h = 3.
Когда матрица параметров V комбинируется с входным слоем горячего кодирования, происходит особое явление: будут активированы только параметры, связанные между нейроном (центральным словом) со значением 1 и скрытым слоем, как показано на рис. цифра 3 параметрыV[1][0]
,V[1][1]
иV[1][2]
, и после прямого распространения эти параметры будут передаваться каждому нейрону скрытого слоя. Активированные параметры — это то, что мы называем плотным вектором, используемым для представления центрального слова Размерность вектора определяется размерностью скрытого слоя.
Структура от скрытого слоя к выходному слою такая же, как структура от входного слоя к скрытому слою, потому что нам нужно вычислить сходство между центральным словом и всеми словами в корпусе.Каждое сходство учитывает 1 измерение выходной слой, затем выходной слой Нейроны также v-мерны, и форма матрицы U также.
Если каждый нейрон выходного слоя представляет собой сходство между центральным словом и другими словами, то для каждого нейрона параметр, связанный со скрытым слоем, представляет собой плотный вектор, используемый для представления соответствующего слова. Например, предположив, что третий нейрон выходного слоя соответствует подобию между оконным словом и центральным словом, то свяжем этот нейрон с параметрами скрытого слояU[2][0]
,U[2][1]
иU[2][2]
Это вектор слова этого оконного слова, потому что при прямом распространении процесс вычисления этого нейрона выглядит следующим образом:
это бываетV[1][:]
иU[2][:]
Внутренний продукт этих двух векторов можно получить, подключив выходной слой к softmax.. Наконец, слова окна помечаются на целевом слое, и параметры могут быть отрегулированы обратно пропорционально через функцию кросс-энтропийных потерь для оптимизации функции потерь.Когда потери постепенно сходятся, оставшиеся параметры U и V являются плотными векторами слов, которые мы нужно. .
Но в это время вы обнаружите, что для одного и того же слова вышеуказанная нейронная сеть выдаст 2 набора векторов, а именно v векторов в матрице V и v векторов в матрице U, тогда какой набор векторов мы возьмем в качестве слова вектор?? Обычно мы берем вектор, соответствующий центральному слову, то есть в skip-gram берем вектор между входным и скрытым слоями, а в CBOW берем вектор между скрытым и выходным слоями.
Вышеприведенный процесс выглядит идеально, но есть проблема, то есть каждый раз, когда повторяется центральное слово, будет вычисляться сходство между центральным словом и всеми словами в корпусе, а градиент всех векторов слов будет вычисляться во время обратное распространение, Эта вычислительная стоимость, несомненно, очень велика, поэтому нам необходимо дополнительно оптимизировать модель.
отрицательная выборка
Чтобы уменьшить объем вычислений во время обучения модели, мы обычно используем технологию отрицательной выборки для оптимизации модели.Как следует из названия, отрицательная выборка заключается в выборке только небольшого количества отрицательных выборок для обучения.Мы берем слова в окне так как положительные выборки центрального слова, а выборка K слов за пределами окна, которые в два раза больше положительных выборок, используются в качестве отрицательных выборок (K обычно занимает 5), поэтому нейроны в выходном слое сокращаются от v в полном корпуса в (m-1)(K+1), что очень много, объем вычислений во время обучения уменьшается.
Оконные слова являются положительными образцами, а небольшое количество неоконных слов используется в качестве отрицательных образцов, поэтому это становится проблемой бинарной классификации.Достаточно использовать сигмовидную функцию, и модель мультиклассификации softmax не требуется. , Условное выражение вышеМожно изменить следующим образом:
Это означает, что вероятность совпадения центрального слова и оконного слова близка к 1, а вероятность совпадения центрального слова и выбранных K неоконных слов близка к 0, а Максимальная вероятность используется для максимизации этой вероятности. Точно так же используйте -log для преобразования максимального значения непрерывного умножения в минимальное значение суммирования следующим образом:
Вышеупомянутая формула часто появляется в основных статьях, и студенты, которые видят ее здесь, могут обратить внимание. После обновления Loss с помощью этой формулы мы также изменим структуру сети следующим образом:
Основное изменение заключается в том, что выходной слой изменен с исходных v нейронов на (m-1)(K+1), из которых m-1 положительных образцов, K(m-1) отрицательных образцов, а слой Softmax заменен на Сигмовидные расчеты.
Следует отметить, что параметры из скрытого слоя в выходной слой здесьU[(m-1)(K+1)][h]
является лишь небольшой частью полной матрицы U, а размер матрицы полной U по-прежнему, текущая обучающая подматрица состоит из параметров положительной и отрицательной выборок.
резюме
Вышеизложенное является полным содержанием всего обучения принципам и оптимизации Word2vec.
Технология Word2vec имеет дальнейшее расширение в области рекомендаций по поиску, например, использование последовательности поведения пользователя в качестве последовательности слов в Word2vec для обучения плотного вектора, представляющего элемент, называемого Item2vec; Sequence, а затем использование этих последовательностей для кодирования технологии GraphEmbedding. и так далее.
В области NLP недостаточно, чтобы слово генерировало только одно вложение.В действительности многие слова имеют несколько значений и должны быть представлены несколькими вложениями, поэтому родилось новое поколение технологий Word2vec, таких как ELMo и BERT. Студенты, которым интересны эти знания, могут продолжить обучение.
Ссылаться на:
- Практическое глубокое обучение — встраивание слов (tinyurl.com/y8g37x2s)
- «Система рекомендаций глубокого обучения» — применение встраивания в систему рекомендаций
- cs224n-lecture1(tinyurl.com/yd7vmkap)