Aprendizado de Máquina

Redes neurais recorrentes

Prof. Ronaldo Cristiano Prati

ronaldo.prati@ufabc.edu.br

Bloco A, sala 513-2

Redes de propagação forward

  • Redes de propagação forward consideram que os

    • exemplos de treinamento são IID,
    • entrada e saída têm tamanho fixo.
  • De que forma considerar dados de tamanhos variados em que há dependências de curto/longo prazo?

Redes recorrentes

  • Constituem uma ampla classe de redes cuja evolução do estado depende tanto da entrada corrente quanto do estado atual.

  • São sistemas Turing-completos i.e., com tempo, dados e neurônios suficientes, RNNs podem aprender qualquer coisa que um computador pode fazer.

  • Aplicáveis a dados sequenciais

    • Texto, vídeo, áudio, ...

Rede feed-forward

Redes recorrentes

Redes recorrentes simples

  • No caso da rede Elman, a camada oculta alimenta uma camada de estado de nodes de contexto que retém memória de entradas passadas.

  • As redes Jordan diferem em que, ao invés de manter o histórico da camada oculta, elas armazenam a camada de saída na camada de estado.

Redes recorrentes

Redes recorrentes

  • Uma RNN mantém em sua(s) camada(s) oculta(s) uma memória interna dos dados que lhe foram apresentados.
  • Essa memoria é uma combinação dos dados de entrada e do estado anterior da camada oculta.

Redes recorrentes

  • A rede aprende o que "relembrar"

Redes recorrentes

  • A rede aprende o que "relembrar"

Redes recorrentes

  • Além disso, a rede as redes podem aprender a esquecer ou relembrar memórias relevantes

  • A entrada muda o que está na memória, e a saída é baseada na memória e saída.

Desdobramento no tempo

  • RNNs são treinadas em uma sequência de sinais da entrada, um em cada passo de tempo.
  • Uma RNN que recebe uma sequência de nn vetores de entrada pode ser vista como uma rede alimentada adiante de nn camadas.
  • Matrizes de pesos são reusadas a cada passo de tempo (shared weigths).

Desdobramento no tempo

Desdobramento no tempo

  • Desdobramento no tempo permite o aprendizado de mapeamentos entre sequências de entrada e de saída com diferentes tamanhos:
    • um-para-muitos,
    • muitos-para-um,
    • muitos-para-muitos.

Desdobramento no tempo

Desdobramento no tempo

  • um-para-muitos
    • prever a legenda correspondente a uma imagem.
  • muitos-para-um
    • prever a carga de sentimento (positiva ou negativa) de uma frase de entrada.
  • muitos-para-muitos
    • traduzir uma frase do inglês para o português
    • rotular os quadros (frames) de um vídeo
    • TTS (text-to-speech)

Exemplo: Modelo de Linguagem

  • Considere uma RNN que, a cada passo de tempo, prediz o próximo caractere de uma sequência, dada uma sequência de caracteres anteriores.
  • Essa rede pode ser usada para gerar novos textos, um caractere por vez (character-level language model).

Exemplo: Modelo de Linguagem

  • Um para um

Exemplo: Modelo de Linguagem

  • Um para um

Exemplo: Modelo de Linguagem

  • Um para um

Exemplo: Modelo de Linguagem

  • Um para um

Exemplo: Análise de Sentimentos

  • Considere um RNN que, a cada passo de tempo, é alimentada com uma palavra.
  • Ao final de uma sentença, prever qual é a carga de sentimento daquela sentença.

Exemplo: Análise de Sentimentos

  • muitos para um

Exemplo: tradução

  • Considere um RNN que, a cada passo de tempo, é alimentada com uma sentença.
  • O objetivo é tentar predizer a tradução da sentença em uma outra língua.

Exemplo: tradução

Backpropagation Through Time (BPTT)

  • Variante do backprop para RNNs.
  • Pode ser entendido ao interpretarmos uma RNN como a uma rede alimentada adiante na qual:
    • há uma camada para cada passo de tempo;
    • a matriz de pesos de cada camada é a mesma (i.e., há o compartilhamento de pesos).

Backpropagation Through Time (BPTT)

  • Por exemplo, considere que w1w_1 e w2w_2 são pesos de conexões correspondentes na camada oculta em instantes de tempo distintos.
  • o BPTT calcula os gradientes relativos a Jw1\frac{\partial J}{\partial w_1} e Jw2\frac{\partial J}{\partial w_2} e usa a média dessas quantidades para atualizar w1w_1 e w2w_2.

Dissipação/explosão dos gradientes

  • Dois problemas que podem ocorrer durante o treinamento de RNNs:
    • Vanishing gradients
    • Exploding gradients
  • Uma das causas: o fluxo de informação (propagação dos gradientes) em uma RNN ocorre por meio de sequências de multiplicações.

Dissipação/explosão dos gradientes

  • Vanishing: Os gradientes “desaparecem” (i.e., tendem a zero) quando são continuamente multiplicados por números inferiores a um.
  • Exploding: Os gradientes se tornam exponencialmente grandes quando são multiplicados por números maiores que 1.

Explosão dos gradientes

  • Algumas técnicas para atenuar o problema da explosão dos gradientes:
    • Truncar o BPTT (truncated BPTT)
    • Truncar os gradientes (gradient clipping)
    • Usar otimizadores que ajustem adaptativamente a taxa de aprendizado (os pacotes com keras, tensorflow, etc, implementam vários).

BPTT truncado

  • Corresponde a limitar a quantidade de passos de tempo no passo backward a um valor máximo preestabelecido.
    • e.g., aplicar backprop a cada 10 passos.
  • Desvantagem: perda do contexto temporal.

Gradiente truncado

  • Se o comprimento do vetor gradiente ultrapassar um valor máximo preestabelecido, truncar.
  • Várias possibilidades...uma delas:
    • new_gradients = gradients * threshold / l2_norm(gradients)
  • Técnica simples e efetiva!

Dissipação dos gradientes

  • Muito mais difícil de detectar!
  • Alternativas de solução:
    • Usar boas estratégias de inicialização dos pesos
    • Usar otimizadores que adaptam a taxa de aprendizado (os pacotes como keras, tensorflow, etc, implementam vários).
    • Usar LSTMs ou GRUs

Redes LSTMs

  • Tipo de RNN que possui uma dinâmica de propagação de gradientes mais rebuscada.
  • Adequada quando há intervalos muito longos de tamanho desconhecido entre eventos importantes.
  • Durante o treinamento, uma rede LSTM pode aprender quando deve manter ou descartar informações.

Intuição:

  • Em um vídeo (filme):
    • quando termina uma cena, podemos esquecer o dia em que ela ocorreu;
    • mas se um personagem morre na cena, devemos lembrar disso para entender as próximas.
  • Em um texto, quando termina uma frase, um tradutor pode esquecer o gênero do sujeito.

Intuição:

Intuição:

RNNs simples

LSTM


LSTMs

LSTMs

Há três portais em um bloco LSTM:

  • forget gate
  • memory gate (input gate)
  • output gate

LSTMs

LSTMs

LSTMs

  • O estado interno (hh) carrega a informação sobre o que uma célula (CC) leu ao longo do tempo.
  • Essa informação pode ser usada no tempo presente, de modo que uma função de custo não dependa apenas dos dados que está vendo neste instante, mas também dados vistos anteriormente.

LSTMs

  • O "tubo" superior é o tubo de memória, cuja entrada é a memória antiga Ct1C_{t-1} (um vetor).

LSTMs - Forget Gate

  • A conexão que se liga por baixo é ftf_{t}, o vetor resultante do portal esquecer (forget gate).
    load_elastic_tensor

LSTMs - Forget Gate

  • Se Ct1C_{t-1} for multiplicado por um vetor ftf_t cujas componentes são próximas de
    • 0, isso significa que a RNN quer esquecer a maior parte da memória antiga.
    • 1, isso significa que a RNN deixa a memória antiga passar.

LSTMs - Memory gate

  • A segunda operação aplicada ao fluxo de memória é uma soma.
  • A soma mescla as memórias antiga e nova.

LSTMs - Memory gate

  • A válvula abaixo da soma controla o quanto a nova memória deve ser mesclada com a antiga.

LSTMs - Memory gate

  • Esse portal controla o quanto a nova memória influencia a memória anterior.
  • Permite adicionar informação à memória da célula.
  • A RNA desse portal recebe as mesmas entradas que as do forget gate.

LSTMs - output gate

  • A última porta hth_t, a saída para o bloco LSTM.

LSTMs - output gate

  • Este passo possui uma válvula de saída que é controlada pelos seguintes componentes:
    • nova memória,
    • saída anterior $h_{t-1},
    • entrada XtX_t,
    • vetor bias.

CNN vs. LSTMs

  • RNNs clássicas sobrescrevem o estado interno.
  • LSTMs adicionam ao estado interno.
  • Unidades LSTM proveem à RNN células de memória, que possuem operações para manipular a memória:
    • leitura,
    • gravação e
    • reinicialização.

LSTMs

  • Geff Hinton sobre o artigo que propôs as LSTMs:

if you can understant the paper, you are better than many people in machine learning. It took 10 years until people understand what they were talkink about”.

LSTMs

  • O interesse vem aumentando consideravelmente nos últimos anos

  • Citações do Google acadêmico

Aplicações

Geração de textos:

https://reiinakano.github.io/tfjs-lstm-text-generation/

Aplicações

  • Geração de rótulos para imagens

Aplicações

Aplicações