60
JAI 6 - Deep Learning Teoria e Prática Esteban Clua e Cristina Nader Vasconcelos (Universidade Federal Fluminense) Redes Recorrentes e LSTM 1

JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 [email protected] 20 Unroll [email protected] 21 Neurônio

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

JAI 6 - Deep LearningTeoria e Prática

Esteban Clua e Cristina Nader Vasconcelos (Universidade Federal Fluminense)

Redes Recorrentes e LSTM1

Page 2: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais: direcionamento das conexões● Redes Neurais Alimentadas para Frente (Feedforward Neural Networks): o

sinal é transmitido em uma única direção;

● Redes Neurais de Retroalimentação ou ainda Redes Neurais Recorrentes (Recurrent Neural Networks): há neurônios cujas saídas realimentam a si próprios e a outros neurônios de maneira a criar ciclos;

● Entre outras…;

[email protected] 2

Page 3: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 3

Page 4: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 4

Page 5: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 5

Page 6: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 6

Page 7: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 7

Page 8: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 8

Page 9: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 9

Page 10: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 10

Page 11: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 11

Page 12: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado interno● Os ciclos de retroalimentação permitem que haja informação persistente

entre computações;

[email protected] 12

Page 13: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: estado internoInformação persistente entre computações:

● valores que se propagam ao longo de uma sequência de análises na forma de ativações das conexões de retroalimentação.

Com isso permitem:

● manter memória interna na forma de estados escondidos/ocultos;

● exibir comportamento temporal dinâmico;

● processar sequências de "qualquer tamanho";

[email protected] 13

Page 14: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de paresProcessar sequência de coordenadas 2D:

[(x1, y1), (x2,y2), (x3,y3), (x4,y4), (x5,y5)]

Topologia RNN:

● 2 neurônios na camada de entrada;● ? na camada(s) escondida;● ? na camada de saída;

[email protected] 14

Page 15: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de paresProcessar sequência de coordenadas 2D:

[(x1, y1), (x2,y2), (x3,y3), (x4,y4), (x5,y5)]

Topologia RNN (exemplo):

● 2 neurônios na camada de entrada;● 3 na camada(s) escondida;● 2 na camada de saída;

[email protected] 15

Page 16: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

[email protected] 16

Page 17: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

[email protected] 17

Page 18: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

[email protected] 18

Page 19: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

[email protected] 19

Page 20: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

[email protected] 20

Page 22: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Neurônio recursivo

entradas pesos soma ponderada

função de ativação saída

...

be

we1

we2

wen

x1

x2

xn

1

∑ fwh1

wh2

whn...

pesos das entradas recursivas

[email protected] 22

Page 23: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Visualização simplificada

We

X

∑f Wh

Ws

O rede

[email protected] 23

Page 24: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

...

be

we1we2

wen

x1

x2

xn

1

∑ fwh1wh2whn

...

● We: matriz de pesos;

● be: vetor de bias;

● Wh: matriz de pesos;

Onde: fh é a função de ativação

Camada recursiva: parâmetros

We

X

f Wh

Ws

Oneurônio rede

[email protected] 24

Page 25: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

...

be

we1we2

wen

x1

x2

xn

1

∑ fwh1wh2whn

...

h(1) = fh( Whh(0) + WeX(1) + be)

h(2) = fh( Whh(1) + WeX(2) + be)

= fh( Wh( fh(Whh(0)+WeX(1)+be) ) + WeX(2) + be)

h(3) = fh( Whh(2) + WeX(3) +be)

= fh(Wh( fh(Wh( fh(Whh(0)+WeX(1)+be) )+WeX(2)+be) ) + WeX(3) + be)

h(t) = fh(Whh(t −1)+WeX(t)+be)

= fh(Wh(fh(Wh···( fh( Whh(0) + WeX(1) + be) )···+WeX(t−1)+be))+WeX(t)+be)

Camada recursiva: estado h(t)neurônio

[email protected] 25

Page 26: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Camada de saída

o(t)= fs(Wsh(t)+bs)

Parâmetros:

● Ws: matriz de pesos;● bs: vetor de bias;

Onde:

● fs: função de ativação

...

be

we1we2

wen

x1

x2

xn

1

∑ fwh1wh2whn

...

neurônio

[email protected] 26

Page 28: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes: processamento de sequências

*[http://karpathy.github.io/2015/05/21/rnn-effectiveness/]

[email protected] 28

Page 29: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: parâmetros● matrizes de pesos: We,Wh e Ws;

● vetores bias: be e bs;

● o vetor dos valores do estado escondido inicial: h0 (opcional);

Backpropagation Through Time (BPTT):

● ativações são dinâmicas e associadas a um t;● parâmetros são fixos e compartilhados;

Logo, o erro é acumulado ao longo da sequência

[email protected] 29

Page 30: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erroA função de perda é formulada como a soma dos erros de cada instante t comparando elemento a elemento a sequência desejada y = {y(1),y(2),...,y(Ns)} com a produzida pela rede o = {o(1),o(2),...,o(Ns)}:

E(o,y) = ∑ E(o(t),y(t))Assumindo:

● z(t) como a combinação linear das entradas do neurônio;● f(z(t)) como a função de ativação do neurônio;

[email protected] 30

Page 31: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Back Propagation Through TimeBack_Propagation_Through_Time(a, y) // a[t] entrada no instante t e y[t] sua saída desejada Desdobra-se a rede para conter k cópias de f Até convergir: h = vetor de magnitude 0;// contexto atual for t from 0 to n - k // n comprimento da seq de treinamento Entrada da rede: h, a[t], a[t+1], ..., a[t+k-1] p = forward-propagate pela rede desebrulhada e = y[t+k] - p; // error = target - prediction Retro-propaga o erro e, por toda a rede desembrulhada Soma mudanças obtidas para os pesos nas k cópias de f Atualiza todos os pesos x = f(x, a[t]); // calcula o contexto para o próximo instante de tempo

31

Page 32: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais: arquitetura com retroalimentação (recorrentes)

32Cam

ada

de

entra

daC

amad

a es

cond

ida

Cam

ada

de

saíd

a

Réplica ao longo de uma sequência

t-1 t t+1

Page 33: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento

33Cam

ada

de

entra

daC

amad

a es

cond

ida

Cam

ada

de

saíd

a

Forward propagation

Backward propagation

ERRO

Page 34: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(o1,y1) E(o1,y1) E(ot-1,yt-1) E(ot,yt)

...

[email protected] 34

Page 35: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

[email protected] 35

Page 36: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 36

Page 37: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(o1,y1) E(o1,y1) E(ot-1,yt-1) E(ot,yt)

...

[email protected] 37

Page 38: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

[email protected] 38

Page 39: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: pseudo-código

[email protected] 39

Page 40: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 40

Page 41: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: pseudo-código

[email protected] 41

Page 42: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 42

Page 43: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: pseudo-código

[email protected] 43

Page 44: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

EE(ot,yt)

...h0

[email protected] 44

Page 45: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: pseudo-código

[email protected] 45

Page 46: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 46

Page 47: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 47

Page 48: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Treinamento de RNNs: cálculo de erro

We

x1

∑f Wh

Ws

o1

We

x2

∑f Wh

Ws

o2

Wh

We

xt-1

∑f Wh

Ws

ot-1

Xt

∑f

Wh

ot

Ws

We

h0

EE(ot,yt)

...

[email protected] 48

Page 49: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

h(t) = fh(Whh(t −1)+WeX(t)+be)

= fh(Wh(fh(Wh···( fh( Whh(0) + WeX(1) + be) )···+WeX(t−1)+be))+WeX(t)+be)

Ao derivar h(t) em relação a Wh, h(t-1) não pode ser tratado como constante:

● h(t) depende de h(t-1) que depende de h(t-2)...

Camada recursiva: estado h(t)neurônio

[email protected] 49

Page 50: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Exemplo

http://karpathy.github.io/2015/05/21/rnn-effectiveness/ [email protected] 50

Page 51: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Redes Neurais Recorrentes empilhadasEntre outras arquiteturas...

[email protected] 51

Page 52: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Problemas com a versão padrão RNN[Bengio et al. 1994]

● explosão do gradiente;

● fuga/diluição do gradiente;

Ocorrência: propagação do erro através de múltiplas iterações

Muito exemplos de problemas práticos: eventos dependentes de estados distantes

[email protected] 52

Page 53: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Problemas com a versão padrão RNN: Heurísticas

Explosão do gradiente:

● limiarização

Fuga/diluição do gradiente:

● Inicializar Wh com matriz identidade;

● Uso da ReLU (derivada 1 ou 0)

[email protected] 53

Page 54: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

Long short term memory [Hochreiter and Schmidhuber 1997]

[email protected] 54

Page 55: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

LSTM: barreiras

Onde:i : barreira de entrada

o: barreira de saída

f: barreira de manutenção/esquecimento

[email protected] 55

Page 59: JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1 y1 x2 y2 x3 y3 x4 y4 x5 y5 crisnv@ic.uff.br 20 Unroll crisnv@ic.uff.br 21 Neurônio

LSTM X RNN padrão

● Mais parâmetros do que o modelo básico de RNNs;

● Na RNN básica os pesos de atualização dos estados ocultos são fixos ao longo das iterações X na LSTM a atualização dos estados ocultos ocorre dinamicamente.

● a LSTM consegue aprender dependências de longo prazo mais facilmente ao produzir o chamado Carrossel de Erro Constante (CEC).

● Junto com as GRU (gated recurrent unit - semelhante a uma LSTM sem o output gate), as LSTM dominam o estado da arte em diferentes tarefas de processamento de sequências;

[email protected] 59