Эволюция ИИ в процессе решения практических задач
Первый успешный инструмент создания эмбеддингов слов появился благодаря разработке сотрудников Google в 2013 году - этим инструментом явилась модель Word2Vec (дословно "слово в вектор"). Для обучения используется большой текстовый корпус, генерируется словарь корпуса, а затем модель обучается на входных текстах, вычисляя векторное представление слов.
Благодаря Word2Vec появился новый способ создания векторов слов более эффективный, чем разреженное представление слов с помощью кодирования OHE, которое мы рассмотрели выше. Использование технологии эмбеддингов слов позволило повысить производительность моделей и сократить время вычислений. Эмбеддинг может быть предобучен на больших корпусах текстов и выгружен в виде словаря, где слову ставится в соответствие вектор, формируя предобученные эмбеддинги, которые можно использовать без повторного обучения.
Эволюцию NLP-технологий можно представить в виде многослойной пирамиды, каждый из слоев в которой обозначает добавление новых возможностей (рис. 2.23). Мы рассмотрели два нижних этажа и далее рассмотрим следующий - это модели на базе рекуррентных нейронных сетей.
Рекуррентные нейронные сети (Recurrent Neural Network, RNN) сыграли важную роль в развитии NLP-технологий, и о них следует рассказать чуть более подробно.
Рекуррентные нейронные сети
Выше мы рассматривали сети прямого распространения, в которых сигнал распространяется строго от входного слоя к выходному. Подобные сети не имеют механизма запоминания информации о ранее полученных входах и, соответственно, не подходят для решения задач распознавания речи, в которых важно предсказывать, что будет дальше (например, какая буква будет следовать в слове или слово в предложении).
"Пусть всегда светит ***", нам очевидно, что финальное слово в предложении - "солнце". Естественно, мы можем сделать такое предсказание только при наличии механизма запоминания предшествующих слов. Этот механизм актуален для любых последовательностей. Например, в случае видео. Предположим, у нас имеется последовательность кадров, где запечатлено перемещение мяча. Сделать предположение о следующем положении мяча можно только при наличии механизма запоминания последовательности предыдущих кадров.
Рекуррентная нейронная сеть - это тип нейронной сети, которая содержит циклические связи между нейронами (в отличие от сетей прямого распространения), которые позволяют эффективно работать с временными паттернами и последовательностями данных. Таким образом, рекуррентные сети имеют внутреннюю память, что позволяет учитывать не только фактический вход, но и предыдущие, то есть запоминать то, что произошло ранее. Эта возможность рекуррентной сети и делает ее эффективной для работы с последовательными данными (рис. 2.24).
Видео, текст, речь, музыка - это все примеры последовательностей.
Первые рекуррентные сети были известны еще в 80-х годах прошлого века, однако широкое практическое применение они нашли существенно позже, как и многие другие алгоритмы глубокого обучения. Популярность рекуррентные сети получили в 2014 и 2015 годах благодаря достижениям в области глубокого обучения и увеличению вычислительных возможностей.
Рассмотрим в самом общем плане, как работают рекуррентные сети. Как мы заметили, RNN оптимально работает с последовательными данными, в случае текста можно сказать, что процедура использует i-ое слово в качестве входных данных и объединяет с выходом слова i-1, та же процедура будет применена для слова i+1, и именно поэтому алгоритм называется рекуррентной нейронной сетью, по-скольку нейронная сеть применяет одни и те же операции к каждому слову i в предложении [84].
На рис. 2.25 (слева) показана часть нейронной сети A, которая принимает входной сигнал x и выводит значение h. Цикл позволяет передавать информацию с одного шага сети на другой.
Справа представлена развертка цикла, которая показывает, что RNN можно представить как несколько копий одной и той же сети, каждая из которых передает сообщение преемнику. В процессе обучения происходит такое "разворачивание" сети, и развернутая копия обучается алгоритмом обратного распространения, получившим название BPTT (back propagation through time28Обратное распространение во времени ).
В рекуррентной нейронной сети каждое значение слова в предложениипредсказываетсянетольконаосноветекущеговходногосигнала, но и на основе предыдущих входных сигналов. Следует отметить, что рекуррентная сеть способна обрабатывать последовательности различной длины, что часто наблюдается при работе с естественным языком, например в случае перевода с одного языка на другой.
Один из недостатков нейронной сети - это так называемая "проблема с долгосрочной зависимостью", которая состоит в том, что по мере того, как разрыв между необходимой информацией становится больше, RNN становится менее и менее эффективной.
Суть проблемы легко понять при анализе ( рис. 2.26). Когда расстояние между словами, которые позволяют сделать правильный прогноз, минимально, то RNN не испытывает проблем, как например в случае фразы "пусть на небе светит ***" - "солнце".