Что могут рекуррентные нейронные сети в НЛП?
16 апреля 2022 г.Надеюсь, вы уже знакомы с основами рекуррентных нейронных сетей (RNN). Если нет, не стесняйтесь ссылаться на [эту статью] (https://medium.com/mlearning-ai/introduction-to-recurrent-neural-networks-f8615c113019). В обработке естественного языка (NLP) RNN сыграли важную роль в моделировании последовательности. Давайте посмотрим, на что способны RNN и каковы их слабые места. Не углубляясь в тему, давайте потихоньку!
В RNN мы подаем выходные данные предыдущего временного шага в качестве входных данных для следующего временного шага. Мы обнаружили, что они хорошо работают с последовательной информацией, такой как предложения.
Для наглядности посмотрите на пример ниже:
Если мы рассмотрим пример предсказания следующего слова на основе предыдущих слов в предложении с использованием RNN, на изображении ниже показано, как RNN ведет себя на каждом временном шаге. Все скрытое состояние изображается прямоугольником желтого цвета.
Вы можете видеть, что, наконец, скрытое состояние содержит краткое изложение предложения.
Так соединяются нейроны и появляется RNN.
![Рекуррентная нейронная сеть для данного примера — изображение Русири Иллесингхе] (https://cdn.hackernoon.com/images/eYWkxDqBywhhLUv1HmIFB7KBZKx1-4ec3klk.png)
Но на каждом временном шаге у них есть индивидуальные потери. (Вы можете суммировать их вместе, чтобы получить единое значение потерь).
Если рассматривать обратное распространение, в RNN у нас есть дополнительный параметр, называемый «время», отличный от матрицы весов. Временной шаг 5 будет распространять градиент обычным образом. На временном шаге 4 мы также должны учитывать градиент временного шага 5. На временном шаге 3 мы должны учитывать градиенты всех временных шагов от последнего временного шага.
Таким образом, при обратном распространении RNN для временного шага r мы должны распространить градиенты последнего временного шага на временной шаг r-1.
Что вы могли увидеть из вышеизложенного?
✔ Вместо того, чтобы использовать одно или два предыдущих слова для предсказания следующего слова в предложении, этот подход сохраняет зависимость!
Рассматривая только предыдущее слово, например, «а» в приведенном выше контексте, нейронная сеть может иметь много возможностей для предсказания: река, студент, машина и т. д. (Возможности зависят от слов в ее «корпусе»).
Но в этом подходе, основанном на RNN, у нас есть последовательность «Энн купила», чтобы предсказать следующее слово. Так что теперь вероятность того, что следующим словом станет «река» или «студент», очень мала.
Это важный результат, который можно получить с помощью RNN.
Итак, что не так? Просто вспомните теоретический материал, который я только что объяснил на примере.
- Распад информации: Хотя мы обсуждаем, что RNN запоминает предыдущее содержимое, все внутренние выполнения происходят в математически ограниченных средах. Выход скрытого слоя — это вектор максимального размера. Так что, когда информация превышает этот размер, RNN начинает забывать материал. Это происходит на дальних дистанциях. Например, если вы посмотрите на данный пример, на временном шаге 2 в скрытом состоянии не было слова для запоминания, на временном шаге 2 это было только одно слово. Но на шаге 5 у него было 4 слова. Если это превышает емкость выходного вектора, информация будет распадаться.
- Исчезающий градиент: В процессе обратного распространения, если градиент функции активации имеет значение от 0 до 1 (пример: 0,3), градиенты последних временных шагов будут многократно умножаться на это значение. (Для понимания просто возьмите градиент последнего временного шага за 1 и на временных шагах 4,3,2,1 умножьте его на градиент функции активации (0,3): 1 x 0,3 x 0,3 x 0,3 x 0,3 = 0,0081. Итак, теперь вы можете понять, что в более длинной последовательности он может достигать 0. Градиент на время исчезает!
- Взрывной градиент : Это противоположность исчезающему градиенту. Просто представьте градиент вашей функции активации как 4,75 и градиент последнего временного шага как 1 . Что происходит при обратном распространении более 4 временных шагов? 1 х 4,75 х 4,75 х 4,75 х 4,75 = 509,06. Градиент быстро растет со временем и в настоящее время может иметь очень большое значение. Если последовательность очень велика, градиент может выйти за пределы диапазона значений используемого типа данных, и значение может быть помечено как «NaN», что сделает всю работу беспорядочной!
На данный момент была введена LSTM (долговременная кратковременная память), которая способна устранить подводные камни RNN!
Главное изображение от chenspec с Pixabay
Оригинал