JAI 6 - Deep Learning Teoria e Práticagpu/wp-content/uploads/2017/07/3_JAI2017...2017/07/03  · x1...

Preview:

Citation preview

JAI 6 - Deep LearningTeoria e Prática

Esteban Clua e Cristina Nader Vasconcelos (Universidade Federal Fluminense)

Redes Recorrentes e LSTM1

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…;

crisnv@ic.uff.br 2

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

entre computações;

crisnv@ic.uff.br 3

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

entre computações;

crisnv@ic.uff.br 4

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

entre computações;

crisnv@ic.uff.br 5

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

entre computações;

crisnv@ic.uff.br 6

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

entre computações;

crisnv@ic.uff.br 7

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

entre computações;

crisnv@ic.uff.br 8

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

entre computações;

crisnv@ic.uff.br 9

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

entre computações;

crisnv@ic.uff.br 10

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

entre computações;

crisnv@ic.uff.br 11

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

entre computações;

crisnv@ic.uff.br 12

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";

crisnv@ic.uff.br 13

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;

crisnv@ic.uff.br 14

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;

crisnv@ic.uff.br 15

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

crisnv@ic.uff.br 16

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

crisnv@ic.uff.br 17

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

crisnv@ic.uff.br 18

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

crisnv@ic.uff.br 19

Exemplo: entrada sequência de pares

x1 y1 x2 y2 x3 y3 x4 y4 x5 y5

crisnv@ic.uff.br 20

Unroll

crisnv@ic.uff.br 21

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

crisnv@ic.uff.br 22

Visualização simplificada

We

X

∑f Wh

Ws

O rede

crisnv@ic.uff.br 23

...

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

crisnv@ic.uff.br 24

...

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

crisnv@ic.uff.br 25

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

crisnv@ic.uff.br 26

Processamento da RNN

crisnv@ic.uff.br 27

Redes Neurais Recorrentes: processamento de sequências

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

crisnv@ic.uff.br 28

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

crisnv@ic.uff.br 29

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;

crisnv@ic.uff.br 30

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

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

Treinamento

33Cam

ada

de

entra

daC

amad

a es

cond

ida

Cam

ada

de

saíd

a

Forward propagation

Backward propagation

ERRO

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)

...

crisnv@ic.uff.br 34

Treinamento de RNNs: cálculo de erro

crisnv@ic.uff.br 35

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)

...

crisnv@ic.uff.br 36

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)

...

crisnv@ic.uff.br 37

Treinamento de RNNs: cálculo de erro

crisnv@ic.uff.br 38

Treinamento de RNNs: pseudo-código

crisnv@ic.uff.br 39

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)

...

crisnv@ic.uff.br 40

Treinamento de RNNs: pseudo-código

crisnv@ic.uff.br 41

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)

...

crisnv@ic.uff.br 42

Treinamento de RNNs: pseudo-código

crisnv@ic.uff.br 43

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

crisnv@ic.uff.br 44

Treinamento de RNNs: pseudo-código

crisnv@ic.uff.br 45

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)

...

crisnv@ic.uff.br 46

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)

...

crisnv@ic.uff.br 47

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)

...

crisnv@ic.uff.br 48

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

crisnv@ic.uff.br 49

Exemplo

http://karpathy.github.io/2015/05/21/rnn-effectiveness/ crisnv@ic.uff.br 50

Redes Neurais Recorrentes empilhadasEntre outras arquiteturas...

crisnv@ic.uff.br 51

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

crisnv@ic.uff.br 52

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)

crisnv@ic.uff.br 53

Long short term memory [Hochreiter and Schmidhuber 1997]

crisnv@ic.uff.br 54

LSTM: barreiras

Onde:i : barreira de entrada

o: barreira de saída

f: barreira de manutenção/esquecimento

crisnv@ic.uff.br 55

LSTM: estado da célula

crisnv@ic.uff.br 56

LSTM: estado da célula

crisnv@ic.uff.br 57

LSTM: saída da célula

crisnv@ic.uff.br 58

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;

crisnv@ic.uff.br 59

Perguntas...

crisnv@ic.uff.br 60

Recommended