Нейронные сети внесли свой вклад в выдающиеся достижения в таких областях, как компьютерное зрение [1,2] и распознавание речи [3]. В последнее время они также начали интегрироваться в другие сложные области, такие как обработка естественного языка (NLP). Но как нейронные сети способствуют развитию текстовых приложений? В этом посте я попытаюсь очень упрощенно объяснить, как применять нейронные сети и интегрировать вложения слов в текстовые приложения, а также некоторые из основных неявных преимуществ использования нейронных сетей и встраивания слов в НЛП .

Во-первых, что такое вложения слов? Вложения слов - это (примерно) плотные векторные представления словоформ, в которых ожидается, что похожие слова будут близки в векторном пространстве. Например, на рисунке ниже все большие кошки (например, гепард, ягуар, пантера, тигр и леопард) действительно близки в векторном пространстве. Вложения слов представляют собой одно из наиболее успешных применений обучения без учителя, в основном благодаря своей способности к обобщению. Конструкция этих вложений слов варьируется, но в целом нейронная языковая модель обучается на большом корпусе, а выходные данные сети используются для изучения векторов слов (например, Word2Vec [4]). Тем, кто интересуется тем, как создавать встраивание слов и текущими проблемами, я бы порекомендовал провести недавний обзор по этой теме [5].

И затем, как мы можем применить нейронные сети и встраивание слов в текстовые данные? Это зависит от задачи, хотя общая кодировка текста в любом случае довольно схожа. Учитывая текст, каждый вектор, соответствующий каждому слову, передается непосредственно в то, что мы называем слоем встраивания. Тогда может быть ноль, один или несколько скрытых слоев и выходной слой в конце, представляющий выходные данные системы в данной задаче. В зависимости от конкретной модели процесс обучения выполняется тем или иным способом, но необходимо изучить веса, представляющие связи (встраивание слов также обычно обновляется в процессе обучения), что обычно достигается за счет обратного распространения ошибки. Это очень упрощенный обзор того, как нейронные сети могут применяться к текстовым данным. Если вам интересно узнать больше, книга Йоава Голдберга «Методы нейронных сетей в обработке естественного языка» предоставляет исчерпывающий обзор нейронных сетей, применяемых к НЛП (короткая версия также доступна в свободном доступе в Интернете [ 7]).

И почему эти архитектуры полезны при обработке естественного языка? Давайте возьмем задачу классификации текста в качестве тестового приложения. При наличии текста и предопределенного набора ярлыков (например, спорт, дикая природа, политика и т. Д.) Цель классификации текста состоит в связать этот текст с его наиболее подходящей меткой. Для этого обычно требуется обучающий тест, в котором некоторые тексты уже связаны с их наиболее подходящей меткой. Несколько лет назад эта задача решалась с использованием контролируемых моделей линейной классификации (например, SVM) по набору выбранных функций. В простейшем виде эти особенности в основном соответствовали набору слов, присутствующих в тексте. Например, учитывая следующее предложение внутри текста:

«[…] Прыжок леопардов был замечен в лесу […]»

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

Однако есть несколько проблем:

  • Во-первых, не очевидно, что слово «леопарды» во множественном числе (которое было бы одним из основных ключей к правильной классификации текста) могло бы встречаться в наших обучающих данных. Если это слово не встречается в обучающих данных, наша модель не сможет ничего сделать из его появления. Это часто облегчается лемматизацией текста, т. Е. Связыванием всех вариантов одного и того же слова с одной и той же леммой: «леопарды» - › «леопард». Все эти методы предварительной обработки, хотя и полезны для линейных моделей [8,9], на самом деле не нужны в нейронных архитектурах [10].
  • Во-вторых, даже при такой предварительной обработке входного текста все еще вероятно, что лемма «леопард» отсутствует в нашем обучающем корпусе (или встречается только несколько раз). Здесь в игру вступают вложения слов. Если вы еще раз посмотрите на изображение из начала сообщения, вы увидите, что «леопард» очень близок в векторном пространстве к таким словам, как «тигр» или «пантера». Это означает, что свойства этих похожих слов являются общими, и поэтому мы можем делать выводы, когда встречается «леопард», даже если это слово не было явно замечено во время обучения.
  • Наконец, использование простых функций, основанных на словах, может хорошо работать для определения темы текста, но может не работать в других сложных задачах. Например, понимание синтаксической структуры предложения обычно необходимо для успеха в такой задаче, как анализ тональности. Давайте рассмотрим подзадачу определения полярности, в которой мы должны предсказать, будет ли отзыв о фильме положительным или отрицательным:

«Фильм был отличным»

Это предложение кажется явно положительным. Однако, если мы просто добавим между ними «далеко не так», мы получим предложение «Фильм далек от совершенства», что явно не вызывает положительных эмоций. Отрицательные слова, такие как «не» или в данном случае «далеко от», могут быть приняты во внимание как особенности для изменения полярности предложения. Тем не менее, это потребует дальнейшей разработки функций, и даже при такой интеграции вполне вероятно, что некоторые отрицательные слова будут упущены или их просто недостаточно, учитывая богатство человеческого языка. Например, это же предложение можно было дополнить словами «Фильм далек от совершенства в техническом плане, но мне он очень понравился, и я очень рекомендую его». Были подходы, пытающиеся справиться с отрицанием и полярностью предложений на уровне фраз [11], но такие решения становятся все более конкретными и чрезмерно сложными. Следовательно, вместо добавления сложных функций для работы со всеми случаями (что практически невозможно) нейронные архитектуры принимают во внимание всю отсортированную последовательность, а не каждое слово в отдельности. Ожидается, что при соответствующем количестве обучающих данных (не всегда тривиальных для многих задач и областей) они усвоят эти нюансы.

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

— — —

[1] Янн ЛеКун, Корай Кавукчуоглу и Клеман Фарабет. 2010. Сверточные сети и приложения в зрении. В Circuits and Systems (ISCAS), Proceedings of the 2010 IEEE International Symposium on IEEE, pages 253–256.

[2] Алекс Крижевский, Илья Суцкевер и Джеффри Э. Хинтон. 2012. Классификация Imagenet с глубокими сверточными нейронными сетями. В Достижения в области нейронных систем обработки информации, страницы 1097–1105.

[3] Алекс Грейвс, Абдель-Рахман Мохамед и Джеффри Хинтон. Распознавание речи с помощью глубоких рекуррентных нейронных сетей. Акустика, обработка речи и сигналов (ICASSP), Международная конференция IEEE 2013 г.. IEEE, 2013.

[4] Томас Миколов, Кай Чен, Грег Коррадо и Джеффри Дин. 2013. Эффективная оценка представлений слов в векторном пространстве. CoRR abs / 1301.3781. Https://code.google.com/archive/p/word2vec/

[5] Себастьян Рудер. 2017. Вложения слов в 2017 году: тенденции и направления на будущее. Http://ruder.io/word-embeddings-2017/

[6] Лоренс ван дер Маатен и Джеффри Э. Хинтон. 2008. Визуализация многомерных данных с помощью t-SNE. Journal of Machine Learning Research 9 (ноябрь): 2579–2605. Https://lvdmaaten.github.io/tsne/

[7] Йоав Гольдберг. 2016. Учебник по моделям нейронных сетей для обработки естественного языка. Дж. Артиф. Intell. Res. (JAIR), 57, стр. 345–420. Https://www.jair.org/media/4992/live-4992-9623-jair.pdf

[8] Эдда Леопольд и Йорг Киндерманн. 2002. Категоризация текста с помощью опорных векторных машин. как представлять тексты в пространстве ввода? Машинное обучение 46 (1-3): 423–444.

[9] Альпер Курсат Уйсал и Серкан Гунал. 2014. Влияние предварительной обработки на классификацию текста. Обработка информации и управление 50 (1): 104–112.

[10] Хосе Камачо-Колладос и Мохаммад Тахер Пилехвар. 2017. О роли предварительной обработки текста в архитектурах нейронных сетей: оценочное исследование категоризации текста и анализа тональности. Препринт arXiv arXiv: 1707.01780. Https://arxiv.org/abs/1707.01780

[11] Тереза ​​Уилсон, Янис Вибе и Пол Хоффманн. Признание полярности контекста при анализе тональности фраз. Труды конференции по технологиям естественного языка и эмпирическим методам обработки естественного языка. Ассоциация компьютерной лингвистики, 2005.