Шрифт:
Интервал:
Закладка:
Хотя CBOW и Skip-gram, как выяснили Миколов и коллеги, хорошо отыскивают синонимы, объективно сравнить качество различных наборов векторов при решении этой задачи довольно сложно. Оценка степени семантической близости слов в ряде случаев сильно зависит от оценщика, поэтому Миколов и его коллеги поставили во главу угла обнаруженное ими интересное свойство вычисленных моделями векторов. Наблюдения исследователей показали, что отношения между векторами отражают различные семантические отношения между словами. Мы знаем, например, что слово «большой» относится к слову «больше» таким же образом, как слово «маленький» относится к слову «меньше», а слово «Москва» относится к слову «Россия» так же, как слово «Рим» относится к слову «Италия». Выяснилось, что если, например, из вектора, соответствующего слову «большой», вычесть вектор, соответствующий слову «больше», то результат будет близок к вектору, полученному путём вычитания из вектора слова «маленький» вектора слова «меньше». Благодаря этому свойству можно использовать полученные векторы для поиска ответов на вопросы вида «Какое слово так же относится к слову A, как слово X относится к слову Y?». Для этого нужно вычислить вектор B = A + X − Y и найти среди имеющихся векторов такой, который будет ближе всего к B (за исключением векторов, содержащихся в самом вопросе: A, X и Y).
Конечно, и такой подход в полной мере не исключает влияния субъективного фактора. Например, у ответов могут существовать синонимы. Но всё-таки такой способ выглядит гораздо более объективным, тем более что в ряде случаев тесты при его использовании можно создавать автоматически, что и сделали в своей работе Миколов и его коллеги. В частности, они использовали данные о столицах стран мира и штатов США, названия валют для стран, словарь антонимов, таблицы с разными формами слов и так далее. Используя эти наборы данных, можно было оценить, насколько успешно полученные наборы векторов способны давать ответ на вопросы типа «Какое слово относится к слову „Россия“ так же, как слово „доллар“ относится к слову „США“?» или «Какое слово относится к слову „дорогой“ так же, как слово „низкий“ относится к слову „высокий“?».
Миколов и его коллеги разделили все вопросы на две группы: семантические (например, нахождение страны по столице) и синтаксические (вопросы, в которых необходимо было подобрать близкие по форме слова: «быстро» — «быстрый»). Всего в тестовый набор было включено 8869 семантических и 10 675 синтаксических вопросов. На данной выборке модель Skip-gram с размерностью вектора признаков 300 продемонстрировала точность 53,3% (50,0% для семантических и 55,9% для синтаксических вопросов). Немного отстала от неё усовершенствованная версия модели NNLM с размерностью вектора признаков 100 — общая точность 50,8% (34,2 и 64,5% для семантических и синтаксических вопросов соответственно). Ранее же, при использовании векторов из более ранних работ других исследовательских групп, точность ответов на подобные вопросы не превышала 12,3%[2135].
Появление векторов, созданных при помощи моделей Миколова и его коллег, означало настоящий прорыв в «понимании» естественного языка моделями машинного обучения. При этом главная заслуга создателей word2vec состояла не в том, что они улучшили качество работы моделей, а в том, что они, собрав все лучшие на тот момент достижения предшественников, создали прикладную методологию и подарили всем новый мощный инструмент для решения задач в области обработки естественного языка.
Интересно, что в 2020 г., спустя семь лет после выхода word2vec, исследователи из компании Bloomberg обнаружили[2136], [2137], что в оригинальной реализации word2vec (конкретно — в алгоритме CBOW) содержится ошибка, приводящая к снижению эффективности работы этого алгоритма. Хотя в 2020 г. мало кто в индустрии разрабатывает модели на основе word2vec (с тех пор появилось множество более совершенных моделей), но в эксплуатации в наши дни до сих пор наверняка остаётся ряд систем, использующих построенные при его помощи наборы эмбеддингов.
Словарные эмбеддинги нашли применение далеко за пределами сферы искусственного интеллекта. В наши дни их используют при решении самых разных задач в области лингвистики и семантики. Кроме того, для них нашлось применение и в сфере когнитивной психологии — как выяснилось, словарные эмбеддинги можно использовать для прогнозирования человеческого восприятия и оценок в таких разнообразных областях, как социальное познание[2138], поведение людей в отношении вопросов здоровья, восприятие риска, организационное поведение[2139] и маркетинг[2140].
6.3.3.4 Наследники word2vec. Концепция «внимания»
Успехи в обуздании семантики означали неминуемый прогресс в самых разных областях обработки естественного языка: в определении семантической близости слов, обнаружении синонимов, категоризации понятий, создании диалоговых моделей, машинном переводе, сентимент-анализе и интент-анализе (определении смысла высказываний), оценке похожести стилей текстов и так далее[2141], [2142], [2143].
Вслед за word2vec Миколова и его коллег на свет появилось множество альтернативных векторных моделей: GloVe[2144], fastText[2145], ELMo[2146], Indra[2147] и так далее. Аналогичные подходы стали практиковаться в смежных областях, например в биоинформатике, где появились векторные представления для элементов биологических последовательностей, такие как ProtVec[2148], BioVec, GeneVec[2149], Mol2vec[2150], SPVec[2151].
Появление инструментов для построения эффективных словарных эмбеддингов, подобных word2vec, ознаменовало собой начало первой коннекционистской революции в обработке естественного языка и сформировало «лицо» моделей, использовавшихся в этой области в середине 2010-х гг. Типичным инструментом в эти годы стали рекуррентные сети (обычно LSTM), получавшие на вход последовательности векторов, соответствовавших словам текста. Иногда эти векторы обогащались путём добавления дополнительных компонент. Например, если слово содержится в некотором специальном списке (допустим, в перечне фамилий или имён людей, в словаре русского мата и т. д.), то дополнительная компонента вектора может принимать значение, равное 1, а в противном случае — значение 0. Для числительных можно в качестве дополнительной компоненты вектора использовать соответствующее числовое значение; например, для слова «первый» оно будет равно 1, для слова «семидесятый» — 70 и так далее.
Можно также использовать две разные таблицы векторов. Первую — построенную на огромном неспециализированном корпусе текстов, а вторую — построенную на небольшом корпусе текстов, имеющих непосредственное отношение к решаемой задаче (например, на текстах обращений клиентов в компанию и т. д.). Затем эти векторы можно сцеплять и, используя полученную комбинацию для эмбеддинга, создавать нейросеть для конкретной задачи. В мире и по сей день эксплуатируется множество систем, основанных на данном подходе.
Векторные представления слов можно рассматривать как своеобразные «облака» слов в многомерном пространстве, размерность которого равна размерности используемых векторов. Это чрезвычайно удобно, поскольку в арсенале математики в целом и теории алгоритмов в частности существует множество методов обработки данных, представленных в