miniaturadaimagem|300x300px|A célula de long short-term memory (LSTM) pode processar dados sequencialmente e manter seu estado oculto ao longo do tempo. A long short-term memory (LSTM), em português: memória de curto longo prazo, é uma rede neural recorrente (RNN), projetada para lidar com o problema do gradiente desvanecente presente em RNNs tradicionais. Sua relativa insensibilidade ao comprimento do intervalo é sua vantagem sobre outras RNNs, modelos ocultos de Markov e outros métodos de aprendizado de sequências. Ela visa fornecer uma memória de curto prazo para RNN que pode durar milhares de passos, daí "curto longo prazo". É aplicável à classificação, processamento e previsão de dados com base em séries temporais, como em caligrafia, reconhecimento de fala, tradução automática, detecção de atividade de fala, controle de robôs, vídeo games, e cuidados de saúde.
Uma unidade LSTM comum é composta por uma célula, uma porta de entrada, uma porta de saída e uma porta de esquecimento. A célula lembra valores ao longo de intervalos de tempo arbitrários, e as três portas regulam o fluxo de informações para dentro e para fora da célula. As portas de esquecimento decidem quais informações descartar do estado anterior, atribuindo ao estado anterior, em comparação com uma entrada atual, um valor entre 0 e 1. Um valor (arredondado) de 1 significa manter a informação, e um valor de 0 significa descartá-la. As portas de entrada decidem quais partes de novas informações armazenar no estado atual, usando o mesmo sistema das portas de esquecimento. As portas de saída controlam quais partes de informações no estado atual produzir, atribuindo um valor de 0 a 1 às informações, considerando os estados anterior e atual. Produzir seletivamente informações relevantes do estado atual permite que a rede LSTM mantenha dependências úteis de longo prazo para fazer previsões, tanto nos passos temporais atuais quanto futuros. Motivação Em teoria, redes neurais recorrentes (também chamadas “vanilla”) RNNs podem acompanhar dependências de longo prazo arbitrariamente nas sequências de entrada. O problema com as RNNs "vanilla" é de natureza computacional (ou prática): ao treinar uma RNN "vanilla" usando retropropagação, os gradientes de longo prazo que são retropropagados podem "desaparecer" (ou seja, podem tender a zero) ou "explodir" (ou seja, podem tender ao infinito), devido aos cálculos envolvidos no processo, que utilizam números de precisão finita. RNNs usando unidades LSTM resolvem parcialmente o Vanishing Gradient Problem, também conhecido como Problema do Gradiente Desvanecente, pois as unidades LSTM permitem que os gradientes também fluam inalterados. No entanto, redes LSTM ainda podem sofrer do problema do gradiente explosivo.
O intuito por trás da arquitetura LSTM é criar um módulo adicional em uma rede neural que aprende quando lembrar e quando esquecer informações pertinentes. Em outras palavras, a rede aprende efetivamente quais informações podem ser necessárias mais tarde em uma sequência e quando essas informações não são mais necessárias. Por exemplo, no contexto de processamento de linguagem natural, a rede pode aprender dependências gramaticais. Uma LSTM pode processar a frase "Dave, como resultado das alegações controversas dele, é agora uma pária" ao lembrar o gênero e número gramatical (estatisticamente prováveis) do sujeito Dave, observar que essas informações são pertinentes para o pronome dele e perceber que essas informações não são mais importantes após o verbo ser.
Variantes Nas equações abaixo, as variáveis em minúsculas representam vetores. As matrizes e contêm, respectivamente, os pesos das conexões de entrada e recorrentes, onde o subscrito pode ser a porta de entrada , a porta de saída , a porta de esquecimento ou a célula de memória , dependendo da ativação que está sendo calculada. Nesta seção, estamos usando uma "notação vetorial". Assim, por exemplo, não representa apenas uma unidade de uma célula LSTM, mas apresenta as unidades de de células LSTM.
Porta de esquecimento com LSTM As formas compactas das equações para a passagem direta de uma célula LSTM com uma porta de esquecimento são:
onde os valores iniciais são e e o operador denota o produto de Hadamard (produto elemento a elemento). O subscrito indexa o passo do tempo. Variáveis : vetor de entrada para a unidade LSTM : vetor de ativação da porta de esquecimento : vetor de ativação da porta de entrada/atualização : vetor de ativação da porta de saída : vetor de estado oculto, também conhecido como vetor de saída da unidade LSTM : vetor de ativação da entrada da célula : vetor de estado da célula , e : matrizes de pesos e vetor de viés que precisam ser aprendidos durante o treinamento onde os expoentes e referem-se ao número de características de entrada e ao número de unidades ocultas, respectivamente. Funções de Ativação : função sigmoide. : função tangente hiperbólica. : função tangente hiperbólica ou, como sugere o artigo da LSTM de orifício de espiada, . LSTM de olho mágico (peepholes)
A figura à direita é uma representação gráfica de uma unidade LSTM com conexões de olho mágico (ou seja, uma LSTM de olho mágico). Conexões de LSTM de olho mágico permitem que os portões acessem o carrossel de erro constante (CEC), cuja ativação é o estado da célula. não é usado, sendo usado em seu lugar em sua maior parte.
Cada um dos portões pode ser considerado como um neurônio "padrão" em uma rede neural feedforward (ou multi-camadas): ou seja, eles calculam uma ativação (usando uma função de ativação) de uma soma ponderada. e representam as ativações, respectivamente, dos portões de entrada, saída e esquecimento, no marco de tempo .
As 3 setas de saída da célula de memória para os 3 portões e representam as conexões de olho mágico. Essas conexões de olho mágico denotam as contribuições da ativação da célula de memória no marco de tempo , ou seja, a contribuição de (e não de , como a imagem pode sugerir). Em outras palavras, os portões e calculam suas ativações no passo de tempo (ou seja, and ) também considerando a ativação da célula de memória no passo de tempo , ou seja, .A única seta da esquerda para a direita que sai da célula de memória não é uma conexão de olho mágico e denota.
Os pequenos círculos contendo um símbolo de representam uma multiplicação elemento a elemento entre suas entradas. Os grandes círculos contendo uma curva em forma de S representam a aplicação de uma função diferenciável (como a função sigmoide) a uma soma ponderada. LSTM de olho mágico convolutional LSTM de olho mágico convolucional. O símbolo denota o operador de convolução.
Treinamento Uma RNN usando unidades LSTM pode ser treinada de forma supervisionada em um conjunto de sequências de treinamento, usando um algoritmo de otimização como descida do gradiente combinado com retropropagação através do tempo para calcular os gradientes necessários durante o processo de otimização, a fim de alterar cada peso da rede LSTM proporcionalmente à derivada do erro (na camada de saída da rede LSTM) em relação ao peso correspondente.
Um problema ao usar descida do gradiente para RNNs padrão é que os gradientes de erro desaparecem exponencialmente rápido com o tamanho do atraso entre eventos importantes. Isso ocorre porque se o raio espectral de for menor que 1.
No entanto, com unidades LSTM, quando os valores de erro são retropropagados da camada de saída, o erro permanece na célula da unidade LSTM. Este "carrossel de erro" alimenta continuamente o erro de volta para cada um dos portões da unidade LSTM, até que aprendam a cortar o valor. Função de pontuação CTC Muitas aplicações usam pilhas RNNs LSTM e as treinam com classificação temporal conexa (CTC) para encontrar uma matriz de peso RNN que maximize a probabilidade das sequências de rótulos em um conjunto de treinamento, dadas as sequências de entrada correspondentes. CTC alcança tanto o alinhamento quanto o reconhecimento. Alternativas Às vezes, pode ser vantajoso treinar (partes de) uma LSTM por neuroevolução ou por métodos de gradiente de política, especialmente quando não há um "professor" (ou seja, rótulos de treinamento). Casos de sucesso Houve várias histórias de sucesso no treinamento, de maneira não supervisionada, de RNNs com unidades LSTM.
Em 2018, Bill Gates chamou isso de "um grande marco no avanço da inteligência artificial" quando bots desenvolvidos pela OpenAI foram capazes de vencer humanos no jogo Dota 2. O OpenAI Five consiste em cinco redes neurais independentes, porém coordenadas. Cada rede é treinada por um método de gradiente de política sem um professor supervisor e contém uma LSTM de uma camada com 1024 unidades que observa o estado atual do jogo e emite ações por meio de várias possíveis cabeças de ação.
Em 2018, a OpenAI também treinou uma LSTM semelhante por gradientes de política para controlar uma mão robótica semelhante à humana que manipula objetos físicos com destreza sem precedentes.
Em 2019, o programa AlphaStar da DeepMind usou um núcleo profundo LSTM para se destacar no complexo jogo de vídeo Starcraft II. Isso foi visto como um progresso significativo em direção à Inteligência Artificial Geral. Aplicações As aplicações da LSTM incluem:
Controle de robôs Previsão de séries temporais Reconhecimento de fala Aprendizado de ritmo
Composição musical Aprendizado de gramática Reconhecimento de caligrafiaA. Graves, J. Schmidhuber. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks. Advances in Neural Information Processing Systems 22, NIPS'22, pp 545–552, Vancouver, MIT Press, 2009. Reconhecimento de ação humana Tradução de língua de sinais Detecção de homologia de proteínas
Previsão da localização subcelular de proteínas Detecção de anomalias em séries temporais Diversas tarefas de previsão na área de gerenciamento de processos de negócios Previsão em trajetórias de cuidados médicos Análise semântica Cosegmentação de objetos Gerenciamento de passageiros de aeroportos Previsão do tráfego em curto prazo Desenho de fármacos Previsão de Mercado
Linha do tempo do desenvolvimento 1991: Sepp Hochreiter analisou o problema da dissipação do gradiente e desenvolveu os princípios do método em sua tese de diploma alemã.
1995: "Long Short-Term Memory (LSTM)" é publicado em um relatório técnico por Sepp Hochreiter e Jürgen Schmidhuber.
1996: LSTM é publicado na conferência NIPS'1996, uma conferência revisada por pares.
1997: O principal artigo do LSTM é publicado no jornal Neural Computation. Ao introduzir unidades de "Constant Error Carousel" (CEC), o LSTM lida com o problema da dissipação do gradiente. A versão inicial do bloco LSTM incluía células, portas de entrada e saída.
1999: Felix Gers, Jürgen Schmidhuber e Fred Cummins introduziram a porta de esquecimento (também chamada de "porta de prosseguir") na arquitetura do LSTM,permitindo que o LSTM redefina seu próprio estado.
2000: Gers, Schmidhuber e Cummins adicionaram conexões de "peephole" (conexões da célula para as portas) à arquitetura. Além disso, a função de ativação de saída foi omitida.
2001: Gers e Schmidhuber treinaram o LSTM para aprender idiomas que não podiam ser aprendidos por modelos tradicionais como os Modelos de Markov Ocultos.
Hochreiter et al. usaram o LSTM para meta-aprendizado (ou seja, aprender um algoritmo de aprendizado).
2004: Primeira aplicação bem-sucedida do LSTM para a fala Alex Graves et al.
2005: Primeira publicação (Graves e Schmidhuber) do LSTM com retropropagação ao longo do tempo completa e LSTM bidirecional.
2005: Daan Wierstra, Faustino Gomez e Schmidhuber treinaram o LSTM por neuroevolução sem um professor.
2006: Graves, Fernandez, Gomez e Schmidhuber introduzem uma nova função de erro para o LSTM: Connectionist Temporal Classification (CTC) para alinhamento e reconhecimento simultâneos de sequências. O LSTM treinado por CTC levou a avanços no reconhecimento de fala.