“`html
1. Введение
Любая модель глубокого обучения должна иметь какой-то числовой вход для работы. В компьютерном зрении это не проблема, так как у нас есть значения пикселей в качестве входных данных, но в обработке естественного языка у нас есть текст, который не является числовым входом. Один из распространенных способов преобразования текста в числа — использование one-hot представления. Например, предположим, у нас есть словарь на 10 000 слов, таким образом, любое слово может быть представлено вектором длиной 10 000, где везде 0, кроме одной позиции, где стоит 1.
2. Проблема с One-Hot Кодированием
Проблема с one-hot кодированием заключается в том, что вектор будет состоять из всех нулей, кроме одного уникального индекса для каждого слова. Представление слов таким образом приводит к значительной разреженности данных и обычно означает, что нам может понадобиться больше данных для успешного обучения статистических моделей.
Кроме вышеприведенной проблемы, основная проблема заключается в выявлении схожих слов с использованием векторов one-hot кодирования. Давайте посмотрим, что я имею в виду, с помощью 2 предложений. Примеры взяты из специализации по глубокому обучению – Coursera.
Допустим, у нас есть обученная языковая модель, и одним из примеров тренировочных данных является Я хочу стакан апельсинового сока. Эта языковая модель может легко предсказать слово “сок” как последнее слово, глядя на слово апельсин. Допустим, наша языковая модель никогда не видела слово яблоко раньше. Когда наша языковая модель сталкивается с предложением Я хочу стакан яблока, чтобы предсказать следующее слово, она сможет предсказать слово сок, если представления для обоих слов апельсин и яблоко будут схожи. Но в нашем случае, используя one-hot представление, связь между яблоком и апельсином не будет такой же близкой (схожей), как связь между любым из слов a или an или зебра и т.д. Это происходит потому, что скалярное произведение между любыми 2 разными векторами one-hot равно нулю. Таким образом, она не знает, что яблоко и апельсин гораздо более схожи, чем, скажем, яблоко и an или яблоко и король. Но суть в том, что яблоко и апельсин являются фруктами, и их представления должны быть схожими.
Таким образом, мы хотим, чтобы семантически похожие слова были сопоставлены с ближайшими точками, тем самым позволяя представлению нести полезную информацию о фактическом значении слова. Мы называем это новое представление векторными представлениями слов.
3. Векторные представления слов помогают переносу обучения
Как мы уже видели в примере, даже если в наших обучающих данных для языкового моделирования нет слова яблоко, если представление слова яблоко схоже со словом апельсин (оба фрукты, поэтому мы ожидаем, что большинство их характеристик схожи, значит, представления тоже схожи), то наша языковая модель с большей вероятностью предскажет следующее слово как сок в предложении Я хочу стакан яблока.
4. Как выглядят векторные представления слов
Векторные представления слов — это непрерывные представления слов в векторном пространстве. Обычно размеры векторов векторного представления составляют около 300 (общее значение embed_size). Таким образом, каждое слово в словаре представляется вектором размером 300. Но что означает каждое значение этого вектора размером embed_size? Мы можем считать их представляющими определенные характеристики, такие как возраст, еда, пол, размер, королевский статус и т.д. Давайте рассмотрим пример, чтобы понять это более подробно. Хотя нижеуказанный пример показывает, что векторы представляются характеристиками, такими как возраст, еда, пол и т.д., векторы, которые мы учим, не будут иметь легкого толкования типа: компонент один — это возраст, компонент два — это еда и т.д. Важный момент, который следует понять, заключается в том, что векторы учат определенные характеристики, которые будут очень схожи для схожих слов и различны для несхожих слов.
Если мы посмотрим на векторные представления слов яблоко и апельсин, они выглядят почти идентично. Таким образом, скалярное произведение этих двух векторов будет высоким.
Теперь, когда у нас есть хорошее понимание векторных представлений, давайте посмотрим, как мы можем произвести эти векторы размером embed_size для каждого слова в словаре.
5. Генерация векторных представлений слов:
Я собираюсь рассмотреть одну из самых ранних архитектур. Ниже представлена архитектура, которую мы будем исследовать. В настоящее время векторные представления слов обучаются как часть процесса обучения.
- Модель Word2Vec Skip-Gram
6. Модель Word2Vec Skip-Gram
Основная идея модели Word2Vec Skip-Gram заключается в том, что слова, которые появляются в схожем контексте, будут иметь схожее представление. Контекст = слова, которые, как правило, появляются вокруг них.
Давайте поймем это на примере:
-
Я играю в крикет каждый второй день
-
Дети играют в футбол через улицу
-
Доктор посоветовал мне играть в теннис каждое утро.
Если мы внимательно посмотрим, слова “крикет”, “футбол” и “теннис” окружены словом “играть” (схожий контекст). Таким образом, эти 3 слова будут иметь схожие векторные представления, что оправданно, так как эти 3 слова являются названиями видов спорта.
Для любого слова мы можем рассматривать контекст как окружающие слова. Таким образом, наша задача состоит в том, чтобы предсказать случайно выбранное окружающее слово из интересующего нас слова. Давайте поймем это с помощью примера Дети играют в футбол через улицу. Выберем наше интересующее слово — слово футбол — а играть — в качестве окружающего слова. Мы подаем слово футбол в нашу нейронную сеть (которую мы собираемся обучить и построить), и эта нейронная сеть должна предсказать слово играть с высокой вероятностью. Однако контекст может включать слова, которые находятся как перед, так и после нашего целевого слова, а не только одно слово. Авторы статьи использовали размер окна для выбора окружающих контекстных слов.
Архитектура модели
Ниже представлена архитектура модели, которую мы будем использовать.
Каждый вход для обучения, как показано на рисунке, сначала будет представлен в виде векторов one-hot, которые поступают в модель. Затем у нас есть слой встраивания с количеством нейронов = embed_size (обычно это устанавливается на 300), а выходной слой будет иметь 10 000 нейронов softmax (где размер словаря = 10 000), который выводит вероятность каждого слова в словаре.
Например, когда слово футбол отправляется в качестве входа в обученную модель Word2Vec, то последний слой выдаст высокие вероятности для слов являются, играют, через, улицу, поскольку это выходные слова для входного слова футбол в тренировочном наборе.
Модель обучается, как любая другая нейронная сеть, где мы обновляем коэффициенты, используя обратное распространение и функцию потерь.
Скрытый слой
Скрытый слой — это то, где происходит вся магия. Коэффициенты этого скрытого слоя являются фактическими векторными представлениями слов.
Например, предположим, что мы учим векторные представления размером 300 для каждого слова. Тогда коэффициенты или весовая матрица скрытого слоя встраивания будут размером 10000 (размер словаря) X 300 (размер встраивания). Выход скрытого слоя будет размером 300 (размер встраивания) X 1. Этот выход будет проходить через выходной слой с softmax для генерации 10000 значений.
Вместо матричного умножения, как показано выше, мы можем напрямую использовать матрицу весов встраивания как таблицу для поиска. Каждая строка в матрице весов встраивания дает вектор встраивания для слова (результат будет тем же) в словаре.
Интуиция
Как мы видели выше, основная идея модели Word2Vec Skip-Gram заключается в том, что
Слова, которые появляются в похожем контексте, будут иметь схожее представление.
Если два слова имеют схожий контекст (то есть одно и то же окружение), наша модель должна выдавать схожий результат для этих двух слов. Например, в наших трех предложениях слова крикет, футбол, теннис имеют схожий контекст, так как слово играет является окружающим словом. Говоря проще, если мы возьмем большие текстовые корпуса, существует высокая вероятность, что эти 3 слова (крикет, футбол, теннис) будут иметь играет в качестве окружающего слова. Таким образом, наша модель должна выдавать играет как результат с большей вероятностью для этих 3 слов. Это может произойти только если векторы встраивания для этих 3 слов схожи, потому что именно векторы встраивания подаются в выходной слой softmax, как показано на рисунке.
“`
Перейти к источнику