Найти тему
iPavlov.ai

iPavlov NLP: Recurrent Neural Networks (RNNs)

Chapter 3.

В прошлый раз мы научились находить ближайших соседей слова, а значит, что мы готовы перейти к следующему этапу  - генерации текста! Если вы хотите постить  смешные твиты, создавать стихи в одно касание по экрану или сокрушаетесь над тем, что любимый автор не успел дописать последнюю книгу, то алгоритмы генерации текстов были придуманы специально для Вас!  Все перечисленное и даже больше  можно реализовать, немного модифицировав уже известные нам архитектуры! Следуйте за iPavlov!

Прежде, когда мы говорили о skip-gram, мы имели дело с одним входом (слово, для которого ищем соседа) и с одним выходом (самый вероятный сосед). Такой принцип построения нейронных сетей получили название one-to-one. Но если мы захотим сгенерировать целый текст по заданному (условию), то нам необходимо подать на вход уже последовательность слов, и соответственно ожидать  на выходе  семантически связанное  друг с другом сочетание слов. Иными словами, осуществляется принцип many-to-many. Более того, выбор последующего слова для генерации зависит не только от 2-х  ближайших соседей, но и от более далеких предшествующих единиц языка, расположенных от данного слова несколько предложений назад. Это значит, что для генерации текстов мы уже не можем использовать в чистом виде знакомую нам модель skip-gram.

-2

Для этой цели были разработаны рекуррентные нейронные сети (RNN), реализованные согласно подходу many-to-many. Они позволяют решать задачи с последовательностями символов или слов, фактически моделируя механизм человеческой памяти.

Попробуйте  построить  такую сеть с нуля вместе с iPavlov!

Возьмем обычную нейронную сеть, принимающую на вход вектор, умножающую его на матрицу весов и тренирующуюся за счет обновления элементов этой матрицы выдавать нам верные результаты. Сигнал с промежуточного слоя будем  сохранять, конкатенировать (объединять) со следующим элементом последовательности и снова передавать на вход той же самой нейронной сети с той же самой матрицами весов.  Далее, продолжим этот алгоритм на всю последовательность символов. Таким образом,  сеть не только поэтапно обрабатывает все элементы последовательности, но и передает сама себе в будущее некоторое состояние, содержащее информацию “из прошлого”. Рекуррентную сеть можно рассматривать, как несколько копий одной и той же сети, каждая из которых передает информацию последующей копии, связывая информацию с текущей задачей. Результирующий выход сети, естественно, зависит от всего корпуса текста, как мы и хотели. Мы моделируем таким образом явление памяти и механизм, при помощи которого сеть запоминает контекст.

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

В следующий раз мы увидим, как подход many-to-many и RNNs используются для генерации текста! Оставайтесь с нами!

-3

www.ipavlov.ai

iPavlov NLP:

Часть 1.

iPavlov NLP: о тайнах в мире Искусственного Интеллекта и Цифровизации!

https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-o-tainah-v-mire-iskusstvennogo-intellekta-i-cifrovizacii-606de08cdcd0546954398081

Часть 2.

iPavlov NLP: Word embedding: word2vec или one-hot encoding?

https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-word-embedding-word2vec-ili-onehot-encoding-6076be8f8360a20f2fe69194

Часть 3.

iPavlov NLP: Recurrent Neural Networks (RNNs)

https://zen.yandex.ru/media/id/5fb59c3be146c2727a6f5f68/ipavlov-nlp-recurrent-neural-networks-rnns-610d0f3a6a385b554230dff5

Часть 4.

iPavlov NLP: RNNs - генерация текста

https://zen.yandex.ru/profile/editor/id/5fb59c3be146c2727a6f5f68/610d1817e54ec275aceba141/edit