Затухание и взрыв градиентов

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

David Cecchini

Data Scientist

Обучение моделей RNN

Развёрнутая версия модели RNN: фаза прямого распространения от одного входного слова к следующему до конца предложения и фаза обратного распространения с обновлением весов во времени

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Фаза прямого распространения с математическим определением задействованных переменных

Пример: $$a_2 = f(W_a, a_1, x_2)$$

$$= f(W_a, f(W_a, a_0, x_1), x_2)$$

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Фаза обратного распространения с математическими определениями

Напомним:

$$ a_T = f(W_a, a_{T-1}, x_T) $$

$a_T$ также зависит от $a_{T-1}$, которое зависит от $a_{T-2}$ и $W_a$, и так далее!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Продолжение BPTT

Вычисление производных приводит к

$$ \frac{\partial a_t}{\partial W_a} = (W_a)^{t-1}g(X) $$

  • $(W_a)^{t-1}$ может стремиться к 0

  • или расходиться до $+\infty$!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Решения проблем с градиентами

Известные решения:

Взрыв градиентов

  • Обрезка / масштабирование градиентов

Затухание градиентов

  • Лучшая инициализация матрицы W
  • Применение регуляризации
  • Использование ReLU вместо tanh / sigmoid / softmax
  • Использование ячеек LSTM или GRU!
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Давайте потренируемся!

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Preparing Video For Download...