@TOC
предисловие
Представление слов всегда было одной из самых фундаментальных и важных задач в обработке естественного языка (NLP). Глубокое обучение произвело революцию в этой области. Одним из ключевых понятий является встраивание слов, которое является способом представления языка.Мы можем понять, что семантика слов представлена в виде векторов, а сходство между векторами используется для измерения отношения между словами и словами.Сила отношения между.
Эта статья представляет собой краткое изложение и размышления над главой о представлении словарного запаса в курсе глубокого обучения Ng Enda, и она составлена со ссылкой на некоторые книги и онлайн-материалы. Основная цель написания этой статьи - углубить мое понимание.Если есть какая-либо ошибка, пожалуйста, укажите на нее в комментариях, большое спасибо!
1. Горячее представление
Горячее представление — это важный способ представления дискретизированных функций в машинном обучении, и мы также можем использовать его для представления слов в задачах НЛП. В блоге модели последовательности нейронной сети я уже представил шаги использования однократных векторов для представления слов, здесь я кратко объясню:
- Создайте вектор, содержащий часто используемые слова, чтобы сформировать словарь. Размер словарного запаса искусственный, здесь мы используем 10 000 слов, чтобы построить наш словарный запас. Для бизнес-приложений общего масштаба обычно используются словари объемом от 30 000 до 50 000 слов, но не редкость и 100 000 слов, а некоторые крупные интернет-компании будут использовать словари на миллионы слов или даже на более крупные словари.
- Затем мы создаем однократный вектор для слова.Если порядковый номер слова в словаре равен 1234, то его однократный вектор представляет собой 10000-мерный вектор-столбец с 1 в строке 1234 и 0 в остальной части строки.
- В частности, нам необходимо рассмотретьНезарегистрированное слово (OOV), стартовый маркер (BOS), конечный маркер (EOS)и так далее. Незарегистрированные слова относятся к словам, которых нет в словаре, и нам нужно добавить токен \UNK в словарь, чтобы представлять их. Кроме того, в процессе построения языковых моделей и выполнения машинного перевода нам также необходимо использовать начальные и конечные маркеры, обозначающие начало и конец предложений. Например, после того как языковая модель сгенерировала конечный токен, мы можем считать предложение завершенным. Мы добавляем \BOS и \EOS в словарь для их обозначения.
Основным недостатком этого метода представления является то, что он изолирует каждое слово, что делает алгоритм менее обобщающим для связанных слов.Каждое горячее предназначено только для представления самого слова, и алгоритм нельзя легко обобщить на слова, то есть он не может представить отношения между любыми двумя словами, потому что скалярный продукт векторов горячих слов любых двух слов равен оба равны 0.
Например, нам нужно построить языковую модель для генерации предложений, предположим, мы выучили следующее предложение:
I want a glass of orange juice.
В другом задании мы предсказали следующие предложения:
I want a glass of apple __.
Поскольку в однократной нотации между словом «апельсин» и словом «яблоко» нет связи, это обычная ситуация, когда модель не может выучить яблочный сок, даже если она знает, что апельсиновый сок является обычной комбинацией.. Поэтому слово сок не может быть правильно заполнено в пропуске.
Кроме того, вектор one-hot обычно имеет большую размерность (соответствует размеру словаря) и в то же время очень разреженный (1 только в одной позиции),Следовательно, использование однократных векторов для представления слов увеличит количество параметров модели и затруднит ее обучение.
2. Представление встраивания слов
Есть ли способ лучше представить слова, уловить значение слов и ассоциации между словами? Ответ — да, мы можем использовать характеристику для представления слова.
Например, как показано на рисунке ниже, всего атрибутов 4 (в реальном приложении будет больше): пол, королевская ли это семья, возраст, еда ли это. Каждому слову присваивается его отношение к этим атрибутам из этих 4 атрибутов соответственно.Тогда любое слово может быть представлено 4-мерным вектором признаков., например Человек представлен как -1, 0,01, 0,03, 0,09.На данный момент ясно видно, что Apple и Orange очень похожи.Приведенный выше пример может легко заставить алгоритм заполнить слово «сок» во втором предложении.
Когда мы используем это многомерное представление признаков для слов, оно называетсявложение слов. Причина, по которой это называется встраиванием, вы можетеПредставьте, что каждое слово встроено в многомерное пространство. Встраивание слов — одна из самых важных идей НЛП.
Следует отметить, что приведенные выше функции являются просто интуитивными примерами, а фактические функции не разработаны вручную, а изучены с помощью алгоритмов (т. е. встраивания слов);И эти усвоенные признаки могут быть плохо интерпретируемы, но в любом случае алгоритм может быстро определить, какие слова похожи.
Кроме того, размерность вектора встраивания слов обычно намного меньше количества слов в словаре, поэтому количество параметров в определенной степени сокращается, а нагрузка на обучение снижается.
Мы можем использовать алгоритм t-SNE для визуализации многомерных векторов слов, и мы можем видеть, что слова с похожими значениями группируются вместе после встраивания слов:
3. Роль встраивания слов
1. Передача обучения
Возьмем в качестве примера задачу распознавания именованных сущностей (NER), предполагая, что в обучающем наборе есть такое предложение:
Sally Johnson is an orange farmer.
Здесь мы используем модель BRNN и используем векторы встраивания слов для представления слов в качестве входных данных для BRNN. BRNN может судить, что Салли Джонсон — это имя человека по словам фермера, выращивающего апельсины.
Когда мы сталкиваемся с новым вводом, например:
Robert Lin is an apple farmer.
Поскольку вложения слов яблоко и апельсин похожи, модель также может легко распознать, что Роберт Лин — это имя человека.
Предположим, наш ввод содержит редкие слова, такие как:
Robert Lin is a durian cultivator.
durian (дуриан) и cultivator (культиватор) — относительно редкие слова, вероятно, не появлявшиеся в нашем обучающем наборе. Используя наше традиционное представление с одним горячим вектором, было бы трудно предсказать, что Роберт Лин — это имя человека. И если мы используем обозначение встраивания слова, то у дуриана и апельсина будут одинаковые векторы, у культиватора и фермера будут аналогичные векторы, модель может вывести связь между культиватором дуриана и именами людей на основе связи между апельсиновым фермером и именами людей, и тогда предскажите, что Роберт Лин - это личное имя.
Почему встраивания слов могут изучать ассоциации слов, которых нет в текущем тексте обучающего набора? Это потому что:Обучение векторов встраивания слов обычно проводится на большом количестве неразмеченного текста, и позже мы представим его метод обучения.
Когда количество тренировочных наборов невелико, эффект встраивания слов становится очевидным., потому что это может значительно обогатить информацию входной модели и предоставить информацию о словесном смысле. То же самое верно и в других ситуациях трансферного обучения, если вы переходите от некоторой задачи A к некоторой задаче B, процесс переноса полезен только в том случае, если в A много данных и мало данных в B. Таким образом, для многих задач НЛП эффект встраивания слов очевиден, но не для некоторых языковых моделей и машинного перевода из-за их огромного объема данных.
2. Рассуждения по аналогии
Вложения слов также могут помочь в рассуждениях по аналогии. Или возьмите предыдущие данные в качестве примера:Используя вложения слов, мы можем обнаружить интересное свойство: известныеmanесли соответствующийwoman, мы можем автоматически получить, используя проекцию встраивания словkingсоответствоватьqueen.
Мы используем вектор встраивания мужского слова eman, чтобы вычесть вектор встраивания женского слова ewoman, мы можем получить:Мы используем вектор вложения слова короля eking минус вектор вложения слова ферзя queen, мы можем получить:
Можно обнаружить, что разница между ними очень близка. Это потому, что: основное различие между мужчиной и женщиной — пол (гендер), а главное различие между королем и королевой, согласно представлению вектора, — это тоже пол (гендер), так что два различия будут очень разными. похожий.
Благодаря этому свойству мы можем вывести из отношения данной пары слов, какое слово лучше всего соответствует отношению к другому слову. Например, учитывая отношения между мужчиной и женщиной, если вы хотите знать, какое слово и король также соответствуют отношениям, вам нужно только найти слово w, которое максимизирует сходство между eging-ew и eman-ewoman.Вообще говоря, здесь мы выбираем косинусное сходство, то есть вычисляем значение косинуса двух векторов для измерения сходства двух векторов u и v:
4. Word2Vec
Для обучения векторов встраивания слов мы можем использовать модель Word2Vec. Word2Vec — это простой и эффективный в вычислительном отношении алгоритм для изучения встраивания слов.
Основная идея Word2Vec заключается в изучении языковой модели нейронной сети для обучения векторов слов. Он основан на предположении, что слова с похожим контекстом имеют схожие векторы встраивания слов. Например, существуют следующие два предложения:
我喜欢吃苹果。
我喜欢吃梨子
Мы знаем, что семантика яблок и груш очень близка, и в приведенном выше примере контексты яблок и груш также очень похожи, поэтому наша модель будет обучена получать вложения слов, похожие на яблоки и груши.
Word2Vec использует распределенный семантический подход для представления значения слова. По сути, значение слова — это контекст, в который оно помещено. Вспомним, когда мы в старших классах занимались английским cloze, в коротком сочинении мы накопали много пропусков, поэтому подберем подходящие слова в соответствии с контекстом пропусков. То есть контекст смог определить значение слова, и если подбор слова правильный, значит, мы понимаем значение вакантного слова.
Языковые модели, используемые Word2Vec, делятся на две категории, то есть существует два способа изучения встраивания слов, а именно:
- Если слово используется в качестве входных данных для прогнозирования контекста вокруг него, модель называется «моделью пропуска грамм».
- И если контекст слова используется в качестве входных данных для предсказания самого слова, это «модель CBOW». (Это пример закрытия выше)
Skip-gram
Во-первых, мы представляем модель Skip-gram в Word2Vec. Он принимает слово в качестве входных данных и предсказывает контекст вокруг него.
Предположим, что в обучающем наборе задано такое предложение:
I want a glass of orange juice to go along with my cereal.
существуетSkip-GramВ модели нам нужно извлечь контекст и целевые пары слов, чтобы построить задачу обучения с учителем. Что мы хотим сделать, так это случайным образом выбрать слово в качестве слова контекста, например, слово «оранжевый», а затем то, что мы хотим сделать, это случайным образом выбрать другое слово в пределах определенного расстояния между словами (например, окно, окно), например 5 слова до и после слова контекста В пределах слова или в пределах 10 слов до и после мы выбираем целевое слово в пределах этого диапазона. Итак, мы создадим задачу обучения с учителем, которой задано контекстное слово и попросят вас предсказать целевое слово, случайно выбранное в пределах плюс-минус 10 расстояний до слова или плюс-минус 5 расстояний до слова, и построим цель этой контролируемой задачи. Проблема обучения Не для решения самой проблемы обучения с учителем, а для использования этой задачи обучения для построения хорошей модели встраивания слов.
Буквальное значение Skip-gram заключается в пропуске определенных элементов, то есть в случайном выборе слова в качестве целевого слова в контекстном окне, независимо от того, является ли оно непрерывным или нет.
Конечно, мы также не можем использовать практику случайного выбора целевых слов,Вместо этого выберите каждое слово в окне в качестве целевого слова и сформируйте образец с текущим словом контекста в модель для обучения.,Как показано ниже. Стоимость такого подхода соответственно выше. Чтобы решить эту проблему, можно использовать метод подвыборки, вычисляя вероятность удержания каждой выборки и используя эту вероятность для принятия решения об удалении соответствующей выборки. (По сути, это то же самое, что и случайный выбор слова в окне)
Затем мы используем простую базовую нейронную сеть с одним скрытым слоем для обучения желаемых векторов встраивания слов. Структура сети показана на следующем рисунке:
Вы можете видеть, что сеть имеет следующие детали:
- Входной слой — это горячий вектор контекстного слова, которое мы выбрали ранее, то есть исходное представление слова.
- Размер скрытого слоя настраивается.Мы можем установить скрытый слой, сколько слоев мы хотим получить вектор встраивания слова. Более того, скрытый слой является линейным, и не используется нелинейная функция активации, что позволяет упростить языковую модель, что также является преимуществом Word2Vec.
- Размер выходного слоя соответствует размеру словаря, а функция активации Softmax используется в качестве классификатора для вывода вероятности каждого слова в словаре в качестве целевого слова.
- Входной слой, выходной слой и скрытый слой полностью связаны.
Метод обучения нейронной сети уже был представлен в предыдущем блоге. Здесь, учитывая, что это проблема множественной классификации с учителем, мы можем использоватьФункция кросс-энтропийных потерь как цель оптимизации модели, и пройтиПараметры метода градиентного спуска для соответствия модели.
После обучения получаем весовые матрицы V и U модели. Среди них в матрице весов V из входного слоя в скрытый слой, поскольку вход представляет собой однократный вектор, активируется только весовой вектор Vx, соответствующий позиции x контекстного слова, и его размерность равна количество единиц скрытого слоя. , мы называем его входным вектором, потому что каждое слово не находится в одной и той же позиции в одном и том же векторе, и x может быть однозначно представлен с помощью Vx.
В матрице весов U от скрытого слоя к выходному слою мы также можем использовать вектор весов Ux позиции x контекстного слова в выходном слое для представления x. Точно так же его размерность равна количеству единиц скрытого слоя, который мы называем выходным вектором, который также может однозначно представлять x.
В общем, мы чаще используем входной вектор как представление встраивания слова для слова x.
Кроме того, Skip-gram также может выбирать несколько слов в качестве целевого слова текущего контекстного слова.Структура сети нуждается только в точной настройке, и один и тот же входной вектор и выходной вектор все еще могут быть выбраны в качестве представления встраивания слова контекстное слово.
CBOW
Модель CBOW, модель Continuous Bag-Of-Words, является полной противоположностью модели Skip-gram, использующей контекст слова в качестве входных данных для предсказания самого слова.Видно, что сетевые структуры модели CBOW и модели скип-граммы почти одинаковы, нам нужно только обратить вспять расчет сетевой структуры скип-граммы вышеупомянутых многоцелевых слов. Мы по-прежнему можем использовать функцию кросс-энтропийных потерь в качестве цели оптимизации модели и подобрать параметры модели с помощью градиентного спуска.
Кстати, принцип модели CBOW чем-то похож на Маску в Берте, но Маска в Берте состоит в том, чтобы случайным образом покрыть некоторые слова в предложении, а оставшиеся слова использовать для их предсказания для обучения встраиваниям слов. В то время как модель CBOW должна предсказывать каждое слово в предложении.
Оптимизация WordVec
1. Иерархический классификатор softmax
Один из основных недостатков модели Word2Vec заключается в том, что вычисления слоя Softmax слишком велики, особенно когда в словаре много слов. Нам нужно проиндексировать и суммировать баллы, рассчитанные всеми единицами слоя Softmax, На самом деле, когда количество слов достигает миллионов или десятков миллионов, это очень медленно.
В ответ на эту проблему ученые предложили метод оптимизации, называемый иерархическим классификатором softmax.
Основная идея иерархического классификатора softmax чем-то похожа на бинарное дерево поиска, он заменяет исходный слой softmax следующей структурой:Приведенная выше структура очень похожа на бинарное дерево поиска, и каждый узел дерева представляет собой сигмовидный бинарный классификатор. Предположим, у нас есть 10000 слов, т.е. выходной слой имеет 10000 единиц. Первый бинарный классификатор в корневом узле сообщит нам, находится ли результат в топ-5000, и если да, то перейти к левому поддереву, иначе перейти к правому поддереву. И так далее, и, наконец, мы найдем конечный узел, то есть результатом будет первое слово.
Согласно описанному выше методу мы уменьшаем линейную временную сложность O(n) до логарифмической временной сложности O(logn), тем самым ускоряя работу выходного слоя.
В частности, на практике иерархические классификаторы softmax не используют идеально сбалансированное дерево классификации или симметричное дерево с одинаковым количеством слов в левой и правой ветвях (дерево классификации, показанное на рис. 1 выше).На практике иерархический классификатор softmax будет построен с общеупотребительными словами вверху, а менее распространенные слова, такие как дуриан, будут находиться ниже по дереву (дерево классификации, показанное на рисунке 2 выше). Конкретная реализация обычно использует общую структуру дерева Хаффмана в структуре данных.
2. Отрицательная выборка
В модели Word2Vec много обучающих выборок, и если обновлять все параметры для каждой обучающей выборки, скорость обучения будет очень низкой. С этой целью ученые предложили метод отрицательной выборки, чтобы уменьшить количество образцов, обновляемых при каждом обучении.
Определим новую задачу обучения с учителем:Учитывая пару слов (например, апельсин и сок), предскажите, являются ли два слова парой контекст-цель. То есть исходная мультиклассификация softmax трансформируется в сигмовидную мультиклассификацию логистической регрессии (один против всех). Предположим, что в словаре 10 000 слов, что эквивалентно построению 10 000 независимых моделей логистической регрессии.
- Во-первых, мы генерируем положительный образец (положительный пример).Метод создания положительного образца аналогичен скип-грамме, выбору контекстного слова и случайному выбору целевого слова размером с окно. Например, для апельсина и сока в приведенном выше примере мы помечаем положительный образец как 1.
- Затем используйте тот же контекст для генерации отрицательного примера (Отрицательный пример), соответствующее слово отрицательного примера выбирается случайным образом из словаря, например, генерируется отрицательный пример оранжевый-король, а отрицательный пример помечается как 0. Точно так же генерируются все новые и новые отрицательные образцы, которые могут быть: апельсин-книжка, апельсин-то, апельсин-или. Поскольку он выбирается случайным образом, мы всегда думаем, что это отрицательный образец, поэтому, даже если приведенный выше пример Orange-of фактически является целью Orange, мы все равно помечаем его как 0. Окончательная запись выглядит следующим образом:
Положительный образец выберет несколько отрицательных образцов, количество которых обозначается как k,В небольшом наборе данных обычно рекомендуется значение k от 5 до 20. Если набор данных большой, значение k мало, например 2–5.
Мы строим независимые модели логистической регрессии для каждого из 10 000 слов (то есть метод множественной классификации «один против всех»), а затем обновляем параметры модели для положительных и отрицательных образцов каждый раз при обучении.Таким образом, нам не нужно обучать столько же параметров, сколько исходный 10000-мерный слой softmax (3 миллиона параметров) на каждой итерации, а нужно только обучать параметры 5 моделей логистической регрессии (1500 параметров), что значительно снижает объем тренировочных вычислений.
Как выбрать отрицательные образцы? Важной деталью этого алгоритма является выбор отрицательных выборок.Один метод заключается в выборке в соответствии с эмпирической вероятностью каждого слова в корпусе, но это приведет к высокой частоте выборки общих слов; , Фактическая частота слов полностью игнорируется.При отрицательной выборке вероятность выбора отрицательной выборки пропорциональна частоте слов, и чем больше частота слов, тем больше вероятность выбора.. Формула вероятности выглядит следующим образом:где f(wi) — наблюдаемая частота слова в корпусе. Принимая степень 3/4, учитывается корпусная частота слова, и вероятность выбора низкочастотных слов может быть увеличена.
5. ПЕРЧАТКА
Несколько алгоритмов встраивания слов были введены ранее.Есть также алгоритм GloVe (глобальные векторы для представления слов), который имеет определенный импульс в поле НЛП.Хотя он не так распространен, как Word2Vec или skip-gram, он достаточно прост.
Введение алгоритма Мы используем Xij для представления количества раз, когда слово i появляется в контексте слова j. Таким образом, Xij показывает, как часто слова i и j встречаются вместе. Используйте окно, чтобы пройти весь обучающий текст один раз, чтобы получить матрицу совместного появления X.
Если значение контекста определения находится в пределах до и после 10 слов, очевидно, что Xij=Xji, то есть симметрия. Если контекстом определения является непосредственно предшествующее слово, симметрии нет. Но для GloVe мы обычно выбираем первое определение.
Мы определяем цель оптимизации модели как (конкретный вывод см.RTC/art на blog.CSDN.net/co…
Минимизируя приведенное выше уравнение, можно изучить некоторые векторы, которые могут предсказывать частоту двух слов одновременно. Кроме того, f(Xij) в формуле имеет две функции:
- Когда Xij=0, log(Xij) бесконечен и не может быть рассчитан. В это время определено f(Xij)=0, то есть такая ситуация не учитывается в расчете. Другими словами, оба слова должны встречаться хотя бы один раз одновременно.
- Далее, как вес, так и очень распространенный корректировочный расчет прямо со словом вес. Ни общепринятым словам слишком большой вес, ни самим формулировкам слишком малый вес. Это справочные документы GloVe в деталях.
Кроме того, из-за симметрии GloVe, θ и e симметричны или играют одну и ту же роль в цели оптимизации, поэтому в конце мы обычно берем их среднее значение в качестве конечного вектора слов, а именно:
Кроме того, из-за симметрии GloVe, θ и e симметричны или играют одну и ту же роль в цели оптимизации, поэтому в конце мы обычно берем их среднее значение в качестве конечного вектора слов, а именно:Хотя функция оптимизации алгоритма GloVe очень проста (всего лишь квадратичная функция стоимости), результаты действительно работают, и можно научиться хорошим вложениям слов.
6. ЭЛМО
Хотя Word2Vec и GloVe являются одними из наиболее часто используемых моделей встраивания слов, они также имеют серьезный недостаток, предполагая, что каждое слово имеет только одно значение. другими словами,Word2Vec не может классифицировать обсуждения для разных смыслов слов для каждого слова. Многозначные слова часто встречаются очень часто, и нам нецелесообразно описывать их только вектором вложения слов. Например, у нас есть слово «бремя» и существуют следующие предложения:
他背起包袱向远方走去。
и еще одна фраза:
他的相声说的很好,经常都抖出有趣的包袱
Можно заметить, что одно и то же слово «бремя» имеет очень разные значения в разных контекстах. В приведенном выше примере мы называем «бременем» в разных предложениях один и тот же Тип, но разные Токены.
Для решения вышеупомянутых дефектов ученые предложили модель ELMO (Embedding from Language Model), реализовав таким образом контекстное встраивание слов (Contextual Word Embedding), то есть встраивание слов для Token. Таким образом, даже если одно и то же слово находится в другом контексте, его вектор встраивания слов также отличается, что устраняет недостаток Word2Vec в обработке полисемии.
Метод обучения модели ELMO заключается в использовании языковой модели на основе RNN (рекуррентной нейронной сети). Более подробно, используется двунаправленная языковая модель LSTM, а вектор встраивания слов Word2Vec используется в качестве входных данных модели, а встраивание слов ELMO получается путем обучения.
Знание BRNN и LSTM было представлено в моем блоге о модели последовательности нейронной сети. Эта языковая модель Bi-LSTM предсказывает правильное слово в текущей позиции, зная все предыдущие слова и все последующие слова, то есть максимизирует условную вероятность правильного слова в текущей позиции. Эту проблему оптимизации можно решить с помощью функции кросс-энтропийных потерь softmax.
Следует отметить, что используемый здесь Bi-LSTM-LM является многослойным, то есть Deep-Bi-LSTM-LM. Мы выбираем выходные данные модуля LSTM каждого слоя k-го временного шага, взвешиваем сумму и, наконец, умножаем вес текущего предложения, который является вектором встраивания слова ELMO для k-го слова текущего предложения, размерность который такой же, как и у скрытого слоя модуля LSTM. Дважды то же самое (вывод значения активации каждого слоя модулей LSTM представляет собой объединение значений активации из прямого и обратного распространения, поэтому оно двойное) . Принципиальную схему см. в PPT г-на Ли Хунъи:
Для k-го слова предложения задачи его вектор ELMO выражается как: уникальный вес каждого предложения αtask, умноженный на вес каждого слоя от 0 до L layer Staskj, умноженный на значение активации слоя Сумма выходных значений hLMk ,Дж.
Зачем нам нужно умножать выходные данные разных слоев с разными весами? Потому что исследователи обнаружили:Встраивание разных слоев подходит для разных задач. В общем, вещи, изученные каждым уровнем модели ELMO, разные, поэтому их объединение улучшит задачу. Результаты эксперимента показывают, что верхний слой Embedding лучше понимает семантику, а нижний слой лучше понимает части речи и лексические выражения. Staskj может быть установлен в соответствии с различными задачами.
Суммировать
Вышеизложенное является базовым знанием обычных предварительно обученных языковых моделей Word2Vec, GloVe и ELMO, Я кратко суммирую их здесь. На самом деле, лучшей предварительно обученной моделью на данный момент является модель BERT от Google, о которой я расскажу в своем следующем сообщении в блоге.