Long Short Term Memory (LSTM)

Prof. Letícia Raposo

UNIRIO

Redes Neurais Recorrentes

  • As redes neurais recorrentes (RNR ou RNN — Recurrent Neural Networks) são uma família de redes neurais voltadas para o processamento de dados sequenciais.
  • Muito utilizadas quando surge a necessidade de predizer a próxima palavra a fazer parte de uma sentença no momento em que você está escrevendo um texto.
    • Ex: digitando algo no teclado do seu smartphone para enviar uma mensagem pelo WhatsApp.

Redes Neurais Recorrentes

  • As RNN usam conexões reversas, onde os nós podem se conectar a outros nós nas camadas anteriores, ou a si mesmos, formando um ciclo direcionado.
  • Essas arquiteturas têm capacidade de memória, onde o valor passado do neurônio, juntamente com a entrada da camada anterior, são a entrada do neurônio/camada. Portanto, os valores de saída passados do neurônio são determinados pelas entradas passadas, influenciando sua saída atual.

Redes Neurais Recorrentes

  • Elas podem ser pensadas como várias cópias da mesma rede, cada uma passando uma mensagem para um sucessor.
  • Pode ser vista como uma rede neural feedforward muito profunda, que se desenrola no tempo:

Redes Neurais Recorrentes

O problema das dependências de longo prazo

  • Às vezes, precisamos apenas olhar para informações recentes para realizar a tarefa atual.
    • Por exemplo, considere um modelo tentando prever a próxima palavra com base nas anteriores. Se estamos tentando prever a última palavra em “as nuvens estão no ___“, não precisamos de mais contexto – é bastante óbvio que a próxima palavra será céu. Nesses casos, as RNNs podem aprender a usar as informações anteriores.

O problema das dependências de longo prazo

  • Considere tentar prever a última palavra do texto “Cresci na França… falo ______ fluentemente”. Informações recentes sugerem que a próxima palavra é provavelmente o nome de um idioma, mas se quisermos restringir qual idioma, precisamos do contexto da França, mais atrás.
  • À medida que a lacuna cresce, as RNNs se tornam incapazes de aprender a conectar as informações.

O problema das dependências de longo prazo

As RNNs simples sofrem com o problema de gradiente de fuga (vanishing gradient), o que significa que a rede só pode se lembrar de entradas recentes e rapidamente esquece das entradas de longo prazo.

O problema das dependências de longo prazo

Para lidar com esse problema, foi introduzida uma variante do RNN conhecida como redes de memória de longo prazo, ou LSTMs (Long Short-Term Memory).

Long Short-Term Memory

  • As LSTMs são um tipo especial de RNN, capazes de aprender dependências de longo prazo. Elas foram introduzidas por Hochreiter & Schmidhuber (1997).
  • Elas alcançam capacidade de memória de longo prazo com uma nova arquitetura, sendo uma RNN com subestruturas que ajudam a gerenciar a “memória” da RNN.
  • Estas subestruturas são denominadas células de memória, e são fundamentais na solução do problema que a LSTM se propõem a resolver.

Arquitetura da RNN geral

Todas as RNN têm a forma de uma cadeia de módulos repetidos de rede neural. Em RNN padrão, esse módulo de repetição terá uma estrutura muito simples, como uma única camada de tanh.

Arquitetura da LSTM

LSTMs também têm essa estrutura de cadeia, mas o módulo de repetição tem uma estrutura diferente. Em vez de ter uma única camada de rede neural, existem quatro, interagindo de uma forma muito especial.

Notações

  • Cada linha carrega um vetor inteiro, desde a saída de um nó até as entradas de outros.
  • Círculos rosa: operações pontuais, como adição de vetores.
  • Caixas amarelas: camadas de rede neural aprendidas.
  • Linhas mescladas: concatenação.
  • Bifurcação de linhas: denota seu conteúdo sendo copiado e as cópias indo para locais diferentes.

A ideia central por trás das LSTMs

  • A chave para as LSTMs é o estado da célula, a linha horizontal que atravessa a parte superior do diagrama.
  • Ela representa a memória de longo prazo e percorre toda a cadeia.
  • Embora ela possa ser modificada por essa multiplicação e adição, não há pesos e vieses que possam modificá-la diretamente.
  • Essa falta de pesos permite que as memórias de longo prazo fluam através de uma série de unidades sem fazer com que o gradiente exploda ou desapareça.

A ideia central por trás das LSTMs

  • A LSTM tem a capacidade de remover ou adicionar informações ao estado da célula, cuidadosamente regulado por estruturas chamadas gates (portões).
  • Os gates são uma maneira opcional de deixar passar informações. Eles são compostos por uma camada de rede neural sigmóide e uma operação de multiplicação pontual.
    • A camada sigmóide gera números entre zero e um, descrevendo quanto de cada componente deve passar. Um valor 0 significa “não deixe nada passar”, enquanto um valor 1 significa “deixe passar tudo!”.

A ideia central por trás das LSTMs

Uma LSTM tem três gates para proteger e controlar o estado da célula.

A ideia central por trás das LSTMs

  • Forget Gate: decide quanto esquecer (apagar) cada valor no estado da célula.
  • Input Gate: decide quanto atualizar cada valor no estado da célula com os novos valores de entrada;
  • Output Gate: filtra a saída com base no estado da célula;

Passo a passo do LSTM

  • 1o: decidir quais informações vamos descartar do estado da célula.
  • Essa decisão é feita pelo forget gate. Ele olha para \(h_{t-1}\) (memória de curto prazo) e \(x_t\) (entrada) e gera um número entre 0 (“livre-se completamente disso”) e 1 (“manter isto completamente”) para cada número no estado da célula \(C_{t}\).
  • Ou seja, ela determina qual porcentagem da memória de longo prazo será lembrada.

Passo a passo do LSTM

Passo a passo do LSTM

  • 2o: decidir quais novas informações vamos armazenar no estado da célula.
  • Bloco à direita: combina a memória de curto prazo e a entrada para criar uma possível memória de longo prazo.
  • Bloco à esquerda: determina qual % dessa memória potencial deve ser adicionada à memória de longo prazo.
  • Primeiro uma camada sigmóide decide quais valores atualizaremos e, em seguida, uma camada tanh cria um vetor de novos valores candidatos, \(\tilde{C_t}\), que poderiam ser adicionados ao estado.

Passo a passo do LSTM

  • Agora é hora de atualizar o estado da célula antiga, \(C_{t-1}\), para o novo estado de célula \(C_{t}\).
  • Multiplicamos o estado antigo por \(f_{t}\), esquecendo as coisas que decidimos esquecer antes. Então adicionamos \(i_t * \tilde{C_t}\). Esses são os novos valores candidatos, dimensionados por quanto decidimos atualizar cada valor de estado.

Passo a passo do LSTM

Passo a passo do LSTM

  • Este estágio final atualiza a memória de curto prazo. A nova memória de longo prazo gerada na etapa anterior é usada como entrada para a função tanh, gerando uma memória de curto prazo em potencial.
  • Quanto dessa memória será repassada é decidida usando uma função de ativação sigmóide.
  • Essa nova memória de curto prazo é a saída de toda esta unidade LSTM. Esse estágio é chamado de porta de saída.

Passo a passo do LSTM

Referências

  • Canal do YouTube StatQuest, Josh Starmer (2022): https://www.youtube.com/watch?v=YCzL96nL7j0
  • “Análise de sentimentos com redes neurais recorrentes LSTM”, Luís Gonçalves (2018): https://medium.com/luisfredgs/an%C3%A1lise-de-sentimentos-com-redes-neurais-recorrentes-lstm-a5352b21e6aa.
  • “Long Short-Term Memory”, J. Hochreiter and J. Schmidhuber (1997): https://www.bioinf.jku.at/publications/older/2604.pdf.
  • “Understanding LSTM Networks”, Christopher Olah: http://colah.github.io/posts/2015-08-Understanding-LSTMs/.