Примечание: эта статья предназначена для читателей, которые уже знакомы с встраиванием слов и их использованием

TL;DR

Возьмите 10 самых распространенных английских слов и используйте их в качестве обучающего набора. Используйте линейную регрессию, чтобы научиться отображать одно на другое. Подключение этого усвоенного преобразования работает достаточно хорошо, даже если ценность потерь при обучении / проверке не так низка.

Структура статьи

  1. Проблема:
    Я описываю, почему было необходимо иметь как хорошо обученное общее встраивание слов, такое как GloVe, так и векторы слов, обученные на предметно-ориентированных документах с использованием FastText.
  2. Почему бы не выполнить точную настройку
    Почему я не смог просто настроить вложения GloVe в документах, относящихся к предметной области.
  3. Преобразование встраиваемых слов из FastText в GloVe
    FastText обеспечивает лучшую производительность для встраиваемых слов, зависящих от предметной области. Но моя модель была предварительно обучена с использованием вложений GloVe. Что мне делать? Используйте частые слова в качестве стержней, чтобы преобразовать одно пространство в другое.

Эта проблема

Столкнувшись с нехваткой данных, энтузиаст машинного обучения выберет один из четырех возможных подходов.

  1. Собирать / создавать необходимые данные вручную
  2. Передача обучения
  3. Увеличение данных.
  4. Увеличение данных

В трансфертном обучении используются вложения слов, чтобы собрать векторное представление слов из корпуса текста, которое может даже не иметь отношения к рассматриваемой проблеме. Они очень полезны. Однако у такого бедного инженера, как я, есть некоторые проблемы:

  1. Технические термины и жаргон, используемые в вашем домене, могут быть редкими или даже отсутствовать в наборе данных о встраивании слов, обученном в Википедии. Даже если они присутствуют, они могут не иметь того значения, которое вы от них хотите. Например, TILA - это хорошо известный федеральный закон в сфере ипотечного кредитования США. Ближайшим вектором встраивания GloVE является «текила». Ага, ты этого не хочешь.
  2. Общедоступные обученные модели, такие как GloVe и FastText, непросто на ноутбуке с оперативной памятью 4 ГБ. Мой ноутбук может загружать данные из 6 миллиардов слов со 100-мерными векторами слов. FastText не заботился о предоставлении менее 300 размерных векторов, как и в случае с векторами новостей Google, обученными с помощью word2vec.

Для первого пункта одним из решений является обучение ваших собственных векторов слов в документах, имеющих отношение к рассматриваемой проблеме. Если вы выберете это в определенных задачах, таких как поиск информации, когда вы хотите сначала потренироваться на общем наборе данных, таком как SQuAD, который содержит слова из действительно широкого набора доменов, ваш словарный запас будет неадекватным. Тогда было бы невозможно обучить вашу модель поиска абзацев на таких наборах данных, как SQuAD, и получить хорошую точность.

Таким образом, вы предварительно обучаете модель на общем наборе данных, используя вложения слов GloVe. Следующим шагом будет обучение его проблеме, связанной с конкретной предметной областью. Однако возникает проблема, описанная во втором пункте, технические слова и жаргон не представлены в наборе данных GloVe. У вас должны быть правильные вложения для этих слов.

Вот почему вам нужны оба лучших мира; огромный словарный запас GloVe и предметно-ориентированный словарь, полученный из ваших собственных документов. Как их обоих объединить? Возможные варианты: настроить вложения GloVe в документы предметной области или обучить новую модель, чтобы выучить вложения пропущенных слов и выяснить, как подключить их к модели, которая была изучена с помощью GloVe.

Почему не точная настройка?

  1. Это не легко. Посмотрите выпуски, размещенные в репозитории GloVe и здесь. Gensim также не поддерживает обучение встраиванию GloVe, даже если вы конвертируете его в формат word2vec.
  2. Вы не уверены, что выучили точные вложения существующих слов, которые были неправильными. Некоторая информация из прошлых документов, из которых он узнал о несоответствующем внедрении, будет сохранена.
  3. Перчатка сейчас устарела. Есть и другие лучшие способы получения векторных представлений слов. В частности, такие, как FastText, который использует информацию об уровне персонажа. В наших проблемных документах в области ипотеки мы обнаружили, что FastText работает лучше, чем word2vec.

Мы использовали FastText для поиска векторов для предметно-ориентированных слов и терминологии, используя алгоритм в библиотеке Gensim на примерно 360 МБ текстовых данных, связанных с ипотечными кредитами. Теперь нам нужно было найти способ подключить эти вложения к модели поиска отрывков, обученной на вложениях GloVe.

Сопоставление вложений слов из FastText в GloVe

FastText и GloVe - это два разных вектора обучения алгоритмов на основе различных характеристик входных текстовых данных. Они присваивают числовые значения различным измерениям с использованием разных критериев. Но было бы так безумно думать, что можно преобразовать векторы слов из одного пространства в другое, сохранив семантическое знание во время преобразования?

Рассмотрим следующую интуицию, которая лежит в основе этой работы; все существительные предположительно будут сгруппированы в обоих пространствах, поэтому простое вращение (и скалярное умножение) из векторного пространства FastText поместит их в ту же область, где присутствуют существительные в векторном пространстве GloVe. Однако вращение само по себе не сохранит всех значимых отношений между словами, которые могут иметь форму расстояний и углов, что, в свою очередь, потребует перевода, отражения и некоторого растяжения / сжатия для правильного отображения. Здесь тоже может быть некоторая нелинейность, но не следует ожидать чего-то слишком сложного.

Так что, если мы будем осторожны, мы сможем изучить осмысленное сопоставление между двумя пространствами, которое хорошо обобщается на невидимых векторах слов.

Полученные результаты

Цель сопоставления - передать недавно изученные векторы слов из другого векторного пространства в пространство хоста, в котором мы работаем. Здесь мы выучили векторы слов с помощью алгоритма FastText и хотим сопоставить изученные векторы в векторном пространстве GloVe.

Отметим, что часто встречающиеся слова, такие как предлоги, артикли, а также некоторые глаголы и существительные, присутствуют в документах, относящихся к предметной области, на которых был обучен FastText. Поскольку эти общеупотребительные английские слова используются в одном контексте и в одних и тех же стилях, представляя одно и то же значение во всем английском языке независимо от технической области, мы используем их в качестве стержней для преобразования векторов слов.

Мы берем топ-10000 наиболее часто встречающихся слов из корпуса nltk brown для использования в качестве сводных. Мы разделяем эти слова на набор для обучения и проверки и обучаем наши модели подгонке векторов слов из пространства FastText к соответствующим векторам в пространстве GloVe. Мы минимизируем среднеквадратичную потерю между предсказанными векторами и исходными векторами GloVe.

Были опробованы различные модели для уменьшения потерь среднеквадратичной ошибки при картировании. Оба вектора ввода и вывода являются 100-мерными. Простая линейная регрессия без смещения (член перехвата) работает так же хорошо, как и регрессия со смещением и даже с включенной нелинейностью tanh. Однако включение одного скрытого слоя из 1000 нейронов с tanh-нелинейностью снижает потери при проверке, хотя и не значительно. Это означает, что перевод и нелинейность были не так необходимы, и два алгоритма изучают очень похожие вложения, которые просто вращаются / растягиваются / сжимаются / отражаются друг от друга.

Linear regression without translation 
train_loss: 0.1842 - val_loss: 0.2103
One hidden layer tanh non-linearity
train_loss: 0.1392 - val_loss: 0.1962

Несмотря на не очень маленькую среднеквадратичную ошибку. Мы обнаруживаем, что слова в тестовом наборе (или те, которые мы, в конце концов, хотели значимо представить в пространстве GloVe при изучении с использованием алгоритма FastText) действительно трансформируются довольно значимо. Слово «TILA» больше не соответствует слову «текила» в новых векторах GloVe, но теперь похоже на «правила» и «законы», как и предполагалось.

Что касается модели, которая была предварительно обучена с использованием оригинальных вложений перчаток, обнаружено, что она лучше справляется с задачей поиска информации по ипотечным документам с недавно отображенными вложениями. В частности, первые 5 возвращенных абзацев для запроса имели правильный абзац в 61% случаев, в отличие от 48% баллов за ту же задачу с исходными встраиваемыми материалами GloVe.