Mizející a explodující gradienty

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

David Cecchini

Data Scientist

Trénování modelů RNN

Rozvinutá verze modelu RNN zobrazující fázi dopředného šíření od jednoho vstupního slova k dalšímu až do konce věty a fázi zpětného šíření aktualizující váhy v čase

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Zobrazení fáze dopředného šíření s matematickou definicí použitých proměnných

Příklad: $$a_2 = f(W_a, a_1, x_2)$$

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

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Zobrazení fáze zpětného šíření s matematickými definicemi

Připomeňme si:

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

$a_T$ závisí také na $a_{T-1}$, které závisí na $a_{T-2}$ a $W_a$, a tak dále!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

BPTT – pokračování

Výpočet derivací vede k

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

  • $(W_a)^{t-1}$ může konvergovat k 0

  • nebo divergovat k $+\infty$!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Řešení problémů s gradienty

Existují známá řešení:

Explodující gradienty

  • Ořezání / škálování gradientu

Mizející gradienty

  • Lepší inicializace matice W
  • Použití regularizace
  • Použití ReLU místo tanh / sigmoid / softmax
  • Použití buněk LSTM nebo GRU!
Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Pojďme si procvičit!

Rekurentní neuronové sítě (RNN) pro jazykové modelování s Keras

Preparing Video For Download...