View
1
Download
0
Category
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
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
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 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
Recommended