Перейти к содержанию

6.3.3.4 Наследники word2vec. Концепция внимания

Материал из Охота на электроовец: Большая Книга Искусственного Интеллекта

Успехи в обуздании семантики означали неминуемый прогресс в самых разных областях обработки естественного языка: в определении семантической близости слов, обнаружении синонимов, категоризации понятий, создании диалоговых моделей, машинном переводе, сентимент-анализе и интент-анализе (определении смысла высказываний), оценке похожести стилей текстов и так далее[1], [2], [3].

Вслед за word2vec Миколова и его коллег на свет появилось множество альтернативных векторных моделей: GloVe[4], fastText[5], ELMo[6], Indra[7] и так далее. Аналогичные подходы стали практиковаться в смежных областях, например в биоинформатике, где появились векторные представления для элементов биологических последовательностей, такие как ProtVec[8], BioVec, GeneVec[9], Mol2vec[10], SPVec[11].

Появление инструментов для построения эффективных словарных эмбеддингов, подобных word2vec, ознаменовало собой начало первой коннекционистской революции в обработке естественного языка и сформировало «лицо» моделей, использовавшихся в этой области в середине 2010-х гг. Типичным инструментом в эти годы стали рекуррентные сети (обычно LSTM), получавшие на вход последовательности векторов, соответствовавших словам текста. Иногда эти векторы обогащались путём добавления дополнительных компонент. Например, если слово содержится в некотором специальном списке (допустим, в перечне фамилий или имён людей, в словаре русского мата и т. д.), то дополнительная компонента вектора может принимать значение, равное 1, а в противном случае — значение 0. Для числительных можно в качестве дополнительной компоненты вектора использовать соответствующее числовое значение; например, для слова «первый» оно будет равно 1, для слова «семидесятый» — 70 и так далее.

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

Векторные представления слов можно рассматривать как своеобразные «облака» слов в многомерном пространстве, размерность которого равна размерности используемых векторов. Это чрезвычайно удобно, поскольку в арсенале математики в целом и теории алгоритмов в частности существует множество методов обработки данных, представленных в таком виде, начиная от кластеризации и заканчивая быстрым поиском, на базе индексов, основанных на разбиении пространства множеством гиперплоскостей. Векторные представления слов позволяют создавать модели, работающие с мультимодальными данными, например с изображениями, снабжёнными подписями. Такие модели могут, например, изобретать подписи к изображениям или оценивать степень соответствия подписи и изображения. Вслед за векторами для отдельных слов стали появляться модели, способные построить векторные представления предложений (sentence2vec), абзацев (paragraph2vec) и даже целых документов (doc2vec)[12]. Такие модели оказались весьма полезными в задачах поиска информации, классификации, перефразировки и реферирования текстов.

Обладая некоторой толикой фантазии, можно провести аналогию между векторными представлениями слов или их последовательностей с картами активации нейронов в человеческом мозге. Нейрофизиологические ассоциации нередко посещали исследователей в области глубокого обучения. Важным плодом этих бионических исканий стало появление такого важного механизма в нейросетевых моделях, как «внимание» [attention].

Концепция внимания — одна из идей, оказавших существенное влияние на развитие глубокого обучения во второй половине 2010-х гг. Несмотря на то что этот механизм в настоящее время используется в самых разных задачах, изначально он был разработан в контексте нейросетевого машинного перевода, основанного на seq2seq-моделях.

Модели seq2seq обычно основаны на архитектуре «кодировщик — декодер» [encoder-decoder], в которой часть модели, называемая кодировщиком, обработав входную последовательность, формирует вектор контекста [context vector] (также называемый иногда вектором мысли [thought vector]), имеющий фиксированную длину. Ожидается, что это представление будет своеобразной выжимкой, обобщением для всей входной последовательности. Затем другая часть модели, называемая декодером, получив на вход вектор контекста, начинает генерировать выходную последовательность. Распространён приём использования рекуррентных сетей в качестве кодировщика и декодера, что позволяет модели работать с последовательностями переменной длины. При этом источник потенциальной проблемы заключается в том, что размер вектора контекста — фиксированный, и если он окажется недостаточным, то при работе с длинными последовательностями часть информации будет теряться. Напротив, при слишком большом векторе контекста число параметров модели может оказаться избыточным и она будет склонна к переобучению. К счастью, разброс предложений естественного языка по длине не так уж велик, что делает идею с рекуррентными кодировщиком и декодером жизнеспособной. В 2013 г. свет увидела статья двух исследователей из Оксфорда — Нала Калчбреннера и Фила Блансома — под названием «Рекуррентные непрерывные модели перевода» (Recurrent Continuous Translation Models)[13]. В ней впервые в задаче машинного перевода была использована архитектура «кодировщик — декодер», однако в качестве кодировщика использовалась свёрточная нейронная сеть над векторами представлений слов, которые, в свою очередь, были продуктами модели RNNLM. Полностью рекуррентный кодировщик был представлен в работе 2014 г., выполненной группой аспирантов под руководством Бенджио. В том же году на ежегодной конференции NIPS (Conference on Neural Information Processing Systems, Конференция по нейросетевым системам обработки информации) команда исследователей из Google, в составе уже знакомого нам Ильи Суцкевера, Ориола Виньялса и Куока Ле, представила систему машинного перевода, основанную на модели seq2seq, в которой роли кодировщика и декодера выполняли упомянутые ранее сети с долгой краткосрочной памятью (LSTM-сети)[14].

Очевидным недостатком моделей, использующих вектор контекста фиксированной длины, является их неспособность запоминать более длинные последовательности. Часто модель «забывает» ранние части последовательности по мере её обработки. Именно для решения этой проблемы было предложено использовать механизм внимания.

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

В классическом варианте модели «кодировщик — декодер» в качестве вектора контекста используется внутреннее состояние кодировщика, возникшее после обработки завершающего элемента последовательности. Представим себе, что наша модель переводит с английского на русский фразу better late than never [лучше поздно, чем никогда]. Кодировщик, представляющий собой LSTM-сеть, последовательно получает на вход векторы, соответствующие словам better, late, than, never. Возникшее внутреннее состояние кодировщика передаётся как стартовое состояние в декодер. После этого на первом шаге выдачи декодер должен выдать на выход слово «лучше», однако информация о нём в полученном состоянии уже отчасти «забыта» LSTM-сетью. Именно поэтому Суцкевер и его коллеги обнаружили, что точность перевода увеличивается, если слова входной последовательности будут подаваться в кодировщик в обратном порядке: never, than, late, better. Исследователи тестировали свою систему для пары «английский — французский», и в такой родственной паре порядок следования слов в предложении нередко был практически одинаковым. Очевидно, что точность перевода можно было бы повысить ещё больше, если бы для первого слова перевода («лучше») наш декодер использовал состояние кодировщика, возникшее после подачи в него слова better, для второго слова перевода («поздно») — состояние, возникшее после подачи в кодировщик слов better и late, и так далее. Для этого нам нужно использовать на входе декодера все состояния кодировщика, возникавшие в процессе обработки последовательности, а также некоторый механизм, который позволил бы определить, в какой степени эти состояния важны для выбора правильного слова в текущем контексте. Именно такой механизм получил название «механизм внимания».

Человек может с лёгкостью понять принципы отображения фрагментов входной последовательности во фрагменты выходной последовательности. Нашей же модели для этого потребуется отдельная нейронная сеть, которая должна будет «постичь» эти принципы в процессе обучения. На вход этой сети (называемой «сетью внимания») мы будем подавать все состояния кодировщика, а также текущее состояние декодера, а на выходе будем получать набор весов для каждого из состояний кодировщика. Этот набор весов обычно нормализуется при помощи функции softmax и носит название «баллы выравнивания» [alignment scores]. Каждый вес будет соответствовать степени «внимания», которую декодер должен «уделить» соответствующему состоянию кодировщика. Состояния кодировщика умножаются на соответствующие им веса, а затем суммируются. Полученный вектор путём конкатенации соединяется с выходом декодера на предыдущем шаге декодирования и подаётся на вход декодера, который в результате меняет своё внутреннее состояние и производит очередной элемент выходной последовательности. После чего вновь рассчитываются баллы выравнивания и так далее. Операция продолжается до тех пор, пока декодер не выдаст элемент, обозначающий конец последовательности. Этот механизм получил название «внимание Багданау» или «внимание Богданова» (Bahdanau attention), поскольку впервые был описан в статье «Нейросетевой машинный перевод путём совместного обучения выравниванию и переводу» (Neural Machine Translation by Jointly Learning to Align and Translate)[15] за авторством Богданова, Чо и Бенджио, препринт которой впервые был представлен общественности в сентябре 2014 г. Так что годом рождения механизма внимания следует признать 2014-й, а его создатель — Дмитрий Богданов — родом из Гомеля, неоднократный призёр международных олимпиад по программированию, выпускник Белорусского государственного университета, Бременского университета Якобса (Jacobs University Bremen, ныне — Constructor University) и аспирант Йошуа Бенджио (а ныне — преподаватель в Университете Макгилла). Именно во время стажировки у Бенджио в Монреале Богданов и предложил механизм внимания, что позволило добиться значительного прогресса в решении задачи машинного перевода[16].

Ниже показан пример «матрицы внимания» для перевода: сверху идут слова исходного предложения на английском языке, слева по вертикали — слова его перевода на французский язык, а яркость пикселя показывает соответствие конкретных слов в оригинале и в переводе, полученное в результате работы механизма внимания. Чем ярче пиксель, тем в большей мере для декодера, производящего соответствующее слово перевода, важно состояние кодировщика после получения соответствующего слова оригинала.

Рис. 130. Пример «матрицы внимания» при переводе с английского на французский

Если бы во французском переводе порядок слов был в точности таким же, как в английском оригинале, то на картинке выше мы увидели бы диагональную линию из белых точек. Но поскольку в выражениях European Economic Area и zone économique européenne соответствующие слова следуют в обратном порядке, то соответствующие им точки выбиваются из общего ряда.

Механизм внимания быстро завоевал популярность в сообществе специалистов по глубокому обучению, что привело к появлению множества модификаций этого метода. В конце 2014 г. на суд публики в виде препринтов или официальных публикаций было представлено сразу несколько работ, посвящённых применению механизма внимания при обработке изображений. Часть из них[17], [18], [19] была написана исследователями из Google и DeepMind, среди которых было несколько аспирантов Хинтона, в том числе Володимир Мних, брат Андрия Мниха, а также уже знакомый нам соавтор Хинтона в деле разработки каскадного метода обучения глубоких сетей Руслан Салахутдинов. Использование механизма внимания для обработки изображений напоминает моделирование процесса разглядывания картинки, при котором человек поочерёдно концентрируется на отдельных частях изображения, чтобы рассмотреть их более детально, и только после этого делает окончательный вывод в отношении всего изображения в целом. Отсюда и специфическая терминология, использованная при описании модели: «сеть быстрого взгляда» [glimpse network], «кодирование сетчатки» [retina encoding] и так далее.

В ещё одной статье, под названием «Покажи, проследи и скажи: нейросетевая генерация подписей к изображениям с использованием визуального внимания» (Show, Attend and Tell: Neural Image Caption Generation with Visual Attention)[20], написанной группой молодых исследователей под руководством Бенджио, на свет появилась «жёсткая» [hard] разновидность внимания, в которой вектор баллов выравнивания был one-hot-вектором. По сути, такая модель внимания на каждом шаге должна выбрать какое-то одно определённое состояние кодировщика, которое будет использовано декодером, в то время как классическое «мягкое» [soft] внимание может «смешивать» состояния кодировщика в некоторой пропорции.

Помимо жёсткого и мягкого, внимание может быть локальным [local] и глобальным [global]. Глобальное внимание работает с полным набором состояний кодировщика, в то время как локальное использует только некоторые состояния, находящиеся внутри некоторого «окна» заданного размера. Если в качестве центра этого окна используется номер шага декодера, такое локальное внимание называется монотонным [monotonic], если же положение центра окна определяется на основе внутреннего состояния декодера, то такое локальное внимание называется предиктивным [predictive].

Loading comments...
  1. Baroni M., Dinu G., Kruszewski G. (2014). Don’t count, predict! A systematic comparison of context-counting vs. context-predicting semantic vectors / Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) // https://doi.org/10.3115/v1/P14-1023
  2. Sivakumar S., Videla L. S., Rajesh Kumar T., Nagaraj J., Itnal S., Haritha D. (2020). Review on Word2Vec Word Embedding Neural Net / 2020 International Conference on Smart Electronics and Communication (ICOSEC) // https://doi.org/10.1109/icosec49089.2020.9215319
  3. Adewumi T. P., Liwicki F., Liwicki M. (2020). Word2Vec: Optimal Hyper-Parameters and Their Impact on NLP Downstream Tasks // https://arxiv.org/abs/2003.11645
  4. Pennington J., Socher R., Manning C. (2014). GloVe: Global Vectors for Word Representation / Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 1532–1543. // https://doi.org/10.3115/v1/D14-1162
  5. Bojanowski P., Grave E., Joulin A., Mikolov T. (2016). Enriching Word Vectors with Subword Information // https://arxiv.org/abs/1607.04606
  6. Peters M. E., Neumann M., Iyyer M., Gardner M., Clark C., Lee K., Zettlemoyer L. (2018). Deep contextualized word representations // https://arxiv.org/abs/1802.05365
  7. Sales J. E., Souza L., Barzegar S., Davis B., Freitas A., Handschuh S. (2018). Indra: A Word Embedding and Semantic Relatedness Server / Proceedings of the Eleventh International Conference on Language Resources and Evaluation (LREC 2018) // https://aclanthology.org/L18-1211/
  8. Asgari E., Mofrad M. R. K. (2015). ProtVec: A Continuous Distributed Representation of Biological Sequences // https://arxiv.org/abs/1503.05140
  9. Asgari E., Mofrad M. R. K. (2015). Continuous Distributed Representation of Biological Sequences for Deep Proteomics and Genomics / PLoS One, Vol. 10 (11), e0141287 // https://doi.org/10.1371/journal.pone.0141287
  10. Jaeger S., Fulle S., Turk S. (2017). Mol2vec: Unsupervised Machine Learning Approach with Chemical Intuition. / Journal of Chemical Information and Modeling, Vol. 58. Iss. 1, pp. 27–35. // https://doi.org/10.1021/acs.jcim.7b00616
  11. Zhang Y.-F., Wang X., Kaushik A.C., Chu Y., Shan X., Zhao M.-Z., Xu Q., Wei D.-Q. (2020). SPVec: A Word2vec-Inspired Feature Representation Method for Drug-Target Interaction Prediction / Frontiers in Chemistry, 2020-01-10. // https://doi.org/10.3389/fchem.2019.00895
  12. Le Q. V., Mikolov T. (2014). Distributed Representations of Sentences and Documents // https://arxiv.org/abs/1405.4053
  13. Kalchbrenner N., Blunsom P. (2014). Recurrent Continuous Translation Models / Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, pp. 1700—1709 // https://www.aclweb.org/anthology/D13-1176/
  14. Sutskever I., Vinyals O., Le Q. V. (2014). Sequence to Sequence Learning with Neural Networks / Proceedings of the 27th International Conference on Neural Information Processing Systems, Vol. 2, pp. 3104–3112 // https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf
  15. Bahdanau D., Cho K., Bengio Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate / International Conference on Learning Representations (ICLR-2015) // https://arxiv.org/abs/1409.0473
  16. «В Минске пытался прибиться хоть куда-нибудь». Дима Богданов изобрёл механизм attention и работает с лауреатом премии Тьюринга. Говорим про ML и Монреаль (2019). / Dev.BY, 3 апреля 2019 // https://devby.io/news/dmitry-bogdanov
  17. Mnih V., Heess N., Graves A., Kavukcuoglu K. (2014). Recurrent Models of Visual Attention / Proceedings of the 27th International Conference on Neural Information Processing Systems, Vol. 2, pp. 2204–2212 // https://papers.nips.cc/paper/5542-recurrent-models-of-visual-attention.pdf
  18. Ba J. L., Mnih V., Kavukcuoglu K. (2015). Multiple object recognition with visual attention / International Conference on Learning Representations (ICLR-2015) // https://arxiv.org/abs/1412.7755
  19. Vinyals V., Toshev A., Bengio S., Erhan D. (2015). Show and Tell: A Neural Image Caption Generator / 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) // https://doi.org/10.1109/CVPR.2015.7298935
  20. Xu K., Ba J. L., Kiros R., Cho K., Courville A., Salakhutdinov R., Zemel R. S., Bengio Y. (2015). Show, Attend and Tell: Neural Image Caption Generation with Visual Attention / Proceedings of the 32nd International Conference on International Conference on Machine Learning, Vol. 37, pp. 2048—2057 // http://proceedings.mlr.press/v37/xuc15.pdf