Long short-term memory

Fonte: testwiki
Revisão em 22h15min de 1 de janeiro de 2024 por imported>Cosmo Skerry (padronização de títulos de seção)
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

Predefinição:Técnico Predefinição:Barra de aprendizagem de máquina

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,[1] é uma rede neural recorrente (RNN), projetada para lidar com o problema do gradiente desvanecente[2] 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".[1] É aplicável à classificação, processamento e previsão de dados com base em séries temporais, como em caligrafia,[3] reconhecimento de fala,[4][5] tradução automática,[6][7] detecção de atividade de fala,[8] controle de robôs,[9][10] vídeo games,[11][12] e cuidados de saúde.[13]

Uma unidade LSTM comum é composta por uma célula, uma porta de entrada, uma porta de saída[14] e uma porta de esquecimento.[15] 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),[2] 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.[16]

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.[15] 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.[17] 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 Wq e Uq contêm, respectivamente, os pesos das conexões de entrada e recorrentes, onde o subscrito q pode ser a porta de entrada i, a porta de saída o, a porta de esquecimento f ou a célula de memória c, dependendo da ativação que está sendo calculada. Nesta seção, estamos usando uma "notação vetorial". Assim, por exemplo, cth não representa apenas uma unidade de uma célula LSTM, mas apresenta as unidades de h 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:[1][15]

ft=σg(Wfxt+Ufht1+bf)it=σg(Wixt+Uiht1+bi)ot=σg(Woxt+Uoht1+bo)c~t=σc(Wcxt+Ucht1+bc)ct=ftct1+itc~tht=otσh(ct)

onde os valores iniciais são c0=0 e h0=0 e o operador denota o produto de Hadamard (produto elemento a elemento). O subscrito t indexa o passo do tempo.

Variáveis

  • xtd: vetor de entrada para a unidade LSTM
  • ft(0,1)h: vetor de ativação da porta de esquecimento
  • it(0,1)h: vetor de ativação da porta de entrada/atualização
  • ot(0,1)h: vetor de ativação da porta de saída
  • ht(1,1)h: vetor de estado oculto, também conhecido como vetor de saída da unidade LSTM
  • c~t(1,1)h: vetor de ativação da entrada da célula
  • cth: vetor de estado da célula
  • Wh×d, Uh×h e bh: matrizes de pesos e vetor de viés que precisam ser aprendidos durante o treinamento

onde os expoentes d e h referem-se ao número de características de entrada e ao número de unidades ocultas, respectivamente.

Funções de Ativação

  • σg: função sigmoide.
  • σc: função tangente hiperbólica.
  • σh: função tangente hiperbólica ou, como sugere o artigo da LSTM de orifício de espiada[18][19], σh(x)=x.

LSTM de olho mágico (peepholes)

Uma unidade LSTM de olho mágico com portões de entrada (ou seja, i), saída (ou seja, o) e esquecimento (ou seja, f)

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).[18][19] 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.[18] ht1 não é usado, sendo ct1 usado em seu lugar em sua maior parte.

ft=σg(Wfxt+Ufct1+bf)it=σg(Wixt+Uict1+bi)ot=σg(Woxt+Uoct1+bo)ct=ftct1+itσc(Wcxt+bc)ht=otσh(ct)

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. it,ot e ft representam as ativações, respectivamente, dos portões de entrada, saída e esquecimento, no marco de tempo t.

As 3 setas de saída da célula de memória c para os 3 portões i,o e f 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 c no marco de tempo t1, ou seja, a contribuição de ct1 (e não de ct , como a imagem pode sugerir). Em outras palavras, os portões i,o e f calculam suas ativações no passo de tempo t (ou seja, it,ot and ft) também considerando a ativação da célula de memória c no passo de tempo t1, ou seja, ct1.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 denotact.

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.[20] O símbolo * denota o operador de convolução.

ft=σg(Wf*xt+Uf*ht1+Vfct1+bf)it=σg(Wi*xt+Ui*ht1+Vict1+bi)ct=ftct1+itσc(Wc*xt+Uc*ht1+bc)ot=σg(Wo*xt+Uo*ht1+Voct+bo)ht=otσh(ct)

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 limnWn=0 se o raio espectral de W for menor que 1.[2][21]

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[22] e as treinam com classificação temporal conexa (CTC)[23] 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[24] 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.[11] 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.[11]

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.[10]

Em 2019, o programa AlphaStar da DeepMind usou um núcleo profundo LSTM para se destacar no complexo jogo de vídeo Starcraft II.[12] Isso foi visto como um progresso significativo em direção à Inteligência Artificial Geral.[12]

Aplicações

As aplicações da LSTM incluem: Predefinição:Div col

Predefinição:Div col end


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ã.[2]

1995: "Long Short-Term Memory (LSTM)" é publicado em um relatório técnico por Sepp Hochreiter e Jürgen Schmidhuber.[47]

1996: LSTM é publicado na conferência NIPS'1996, uma conferência revisada por pares.[14]

1997: O principal artigo do LSTM é publicado no jornal Neural Computation.[1] 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.[48]

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,[49]permitindo que o LSTM redefina seu próprio estado.[48]

2000: Gers, Schmidhuber e Cummins adicionaram conexões de "peephole" (conexões da célula para as portas) à arquitetura.[18][19] Além disso, a função de ativação de saída foi omitida.[48]

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.[18][50]

Hochreiter et al. usaram o LSTM para meta-aprendizado (ou seja, aprender um algoritmo de aprendizado).[51]

2004: Primeira aplicação bem-sucedida do LSTM para a fala Alex Graves et al.[52][50]

2005: Primeira publicação (Graves e Schmidhuber) do LSTM com retropropagação ao longo do tempo completa e LSTM bidirecional.[25][50]

2005: Daan Wierstra, Faustino Gomez e Schmidhuber treinaram o LSTM por neuroevolução sem um professor.[24]

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.[23] O LSTM treinado por CTC levou a avanços no reconhecimento de fala.[26][53][54][55]

Mayer et al. treinaram LSTM para controlar robôs.[9]

2007: Wierstra, Foerster, Peters e Schmidhuber treinaram LSTM por meio de gradientes de política para aprendizado por reforço sem um professor.[56]

Hochreiter, Heuesel e Obermayr aplicaram LSTM à detecção de homologia de proteínas no campo da biologia.[35]

2009: Um LSTM treinado por CTC venceu a competição de reconhecimento de escrita à mão conectada do ICDAR (Conferência Internacional sobre Análise e Reconhecimento de Documentos). Três modelos desse tipo foram submetidos por uma equipe liderada por Alex Graves.[3] Um deles foi o modelo mais preciso na competição e outro foi o mais rápido.[57] Foi a primeira vez que uma RNN venceu competições internacionais.[50]

2009: Justin Bayer et al. introduziram a busca de arquitetura neural para LSTM.[58][50]

2013: Alex Graves, Abdel-rahman Mohamed e Geoffrey Hinton usaram redes LSTM como componente principal de uma rede que alcançou uma taxa recorde de erro de fonema de 17,7% no conjunto de dados de fala natural clássico TIMIT (corpus de fala transcrita fonêmica e lexicalmente de falantes do inglês americano).[27]

2014: Kyunghyun Cho et al. apresentaram uma variante simplificada da LSTM da porta de esquecimento[49] chamada unidade recorrente fechada (GRU).[59]

2015: O Google começou a usar um LSTM treinado por CTC para reconhecimento de fala no Google Voice.[53][54] De acordo com a postagem oficial no blog, o novo modelo reduziu os erros de transcrição em 49%.[60]

2015: Rupesh Kumar Srivastava, Klaus Greff e Schmidhuber utilizaram princípios de LSTM[49] para criar a rede Highway, uma rede neural feedforward com centenas de camadas, muito mais profunda do que redes anteriores.[61][62][63] Sete meses depois, Kaiming He, Xiangyu Zhang, Shaoqing Ren e Jian Sun venceram a competição ImageNet 2015 com uma variante da rede Highway chamada rede neural residual, com portões abertos ou sem portões. [64] Esta se tornou a rede neural mais citada do século XXI.[63]

2016: O Google começou a utilizar uma LSTM para sugerir mensagens no aplicativo de conversa Allo.[65] No mesmo ano, o Google lançou o sistema Google Neural Machine Translation para o Google Translate, que utilizava LSTMs para reduzir erros de tradução em 60%.[6][66][67]

A Apple anunciou em sua Worldwide Developers Conference que começaria a usar a LSTM para o QuickType[68][69][70] no iPhone e para a Siri.[71][72]

A Amazon lançou o Polly, que gera as vozes por trás da Alexa, utilizando uma LSTM bidirecional para a tecnologia de texto para fala.[73]

2017: O Facebook realizava cerca de 4,5 bilhões de traduções automáticas diariamente utilizando redes neurais de LSTM.[7]

Pesquisadores da Michigan State University, IBM Research e Cornell University publicaram um estudo na conferência Knowledge Discovery and Data Mining (KDD).[74][75][76] O Time-Aware LSTM (T-LSTM) deles tem um desempenho melhor em determinados conjuntos de dados do que o LSTM padrão.

A Microsoft relatou alcançar uma precisão de reconhecimento de 94,9% no corpus Switchboard, incorporando um vocabulário de 165.000 palavras. A abordagem utilizada foi "long short-term memory baseada em sessão de diálogo".[55]

2018: A OpenAI utilizou LSTM treinado por gradientes de política para vencer humanos no complexo jogo de vídeo Dota 2,[11] e para controlar uma mão de robô semelhante à humana que manipula objetos físicos com destreza sem precedentes.[10][50]

2019: A DeepMind utilizou LSTM treinado por gradientes de política para se destacar no complexo jogo de vídeo Starcraft II.[12][50]

2021: De acordo com o Google Scholar, em 2021, LSTM foi citado mais de 16.000 vezes em um único ano. Isso reflete aplicações de LSTM em muitos campos diferentes, incluindo saúde.[13]

Ver também

Referências

Predefinição:Reflist

Ligações externas

  • original com dois capítulos dedicados a explicar redes neurais recorrentes, especialmente LSTM.
  1. 1,0 1,1 1,2 1,3 Predefinição:Cite journal
  2. 2,0 2,1 2,2 2,3 Predefinição:Cite thesis
  3. 3,0 3,1 Predefinição:Citar periódico
  4. Predefinição:Cite web
  5. Predefinição:Cite arXiv
  6. 6,0 6,1 Predefinição:Cite arXiv
  7. 7,0 7,1 Predefinição:Cite web
  8. Predefinição:Cite arXiv
  9. 9,0 9,1 9,2 Predefinição:Cite book
  10. 10,0 10,1 10,2 Predefinição:Cite news
  11. 11,0 11,1 11,2 11,3 Predefinição:Cite news
  12. 12,0 12,1 12,2 12,3 Predefinição:Cite news
  13. 13,0 13,1 Predefinição:Cite news
  14. 14,0 14,1 Predefinição:Cite conference
  15. 15,0 15,1 15,2 Predefinição:Cite journal
  16. Predefinição:Cite book
  17. Predefinição:Citation
  18. 18,0 18,1 18,2 18,3 18,4 18,5 Predefinição:Cite journal
  19. 19,0 19,1 19,2 19,3 Predefinição:Cite journal
  20. Predefinição:Cite journal
  21. Predefinição:Cite book
  22. Predefinição:Cite journal
  23. 23,0 23,1 Predefinição:Cite journal
  24. 24,0 24,1 24,2 Predefinição:Cite journal
  25. 25,0 25,1 Predefinição:Cite journal
  26. 26,0 26,1 Predefinição:Cite book
  27. 27,0 27,1 Predefinição:Cite book
  28. Predefinição:Cite book
  29. Predefinição:Cite journal
  30. Predefinição:Cite journal
  31. A. 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.
  32. Predefinição:Cite book
  33. Predefinição:Cite book
  34. Predefinição:Cite arXiv
  35. 35,0 35,1 Predefinição:Cite journal
  36. Predefinição:Cite journal
  37. Predefinição:Cite journal
  38. Predefinição:Cite book
  39. Predefinição:Cite journal
  40. Predefinição:Cite arXiv
  41. Predefinição:Cite journal
  42. Predefinição:Cite conference
  43. Predefinição:Cite conference
  44. Predefinição:Cite journal
  45. Predefinição:Cite journal
  46. Predefinição:Cite journal
  47. Predefinição:Cite Q
  48. 48,0 48,1 48,2 Predefinição:Cite journal
  49. 49,0 49,1 49,2 Predefinição:Cite book
  50. 50,0 50,1 50,2 50,3 50,4 50,5 50,6 Predefinição:Cite arXiv
  51. Predefinição:Cite book
  52. Predefinição:Cite conference
  53. 53,0 53,1 Predefinição:Citar notícia
  54. 54,0 54,1 Predefinição:Citar notícia
  55. 55,0 55,1 Predefinição:Cite web
  56. Predefinição:Cite journal
  57. Predefinição:Citar livro
  58. Predefinição:Citar periódico
  59. Predefinição:Citar arXiv
  60. Predefinição:Citar web
  61. Predefinição:Citar arXiv
  62. Predefinição:Citar periódico
  63. 63,0 63,1 Predefinição:Citar notícia
  64. Predefinição:Citar conferência
  65. Predefinição:Cite news
  66. Predefinição:Cite magazine
  67. Predefinição:Cite web
  68. Predefinição:Cite web
  69. Predefinição:Cite news
  70. Predefinição:Cite web
  71. Predefinição:Cite web
  72. Predefinição:Cite journal
  73. Predefinição:Cite web
  74. Predefinição:Cite web
  75. Predefinição:Cite web
  76. Predefinição:Cite web