Zanikające i eksplodujące gradienty

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

David Cecchini

Data Scientist

Trenowanie modeli RNN

Rozwinięta wersja modelu RNN pokazująca fazę propagacji w przód od jednego słowa do następnego aż do końca zdania oraz fazę propagacji wstecznej aktualizującej wagi w czasie

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Faza propagacji w przód z matematyczną definicją zmiennych

Przykład: $$a_2 = f(W_a, a_1, x_2)$$

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

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Faza propagacji wstecznej z definicjami matematycznymi

Pamiętaj, że:

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

$a_T$ zależy również od $a_{T-1}$, które zależy od $a_{T-2}$ i $W_a$ itd.!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

BPTT – ciąg dalszy

Obliczanie pochodnych prowadzi do

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

  • $(W_a)^{t-1}$ może dążyć do 0

  • lub rozbiegać do $+\infty$!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Rozwiązania problemów z gradientem

Znane są pewne rozwiązania:

Eksplodujące gradienty

  • Przycinanie / skalowanie gradientów

Zanikające gradienty

  • Lepsza inicjalizacja macierzy W
  • Regularyzacja
  • ReLU zamiast tanh / sigmoid / softmax
  • Użycie komórek LSTM lub GRU!
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Czas na ćwiczenia!

Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras

Preparing Video For Download...