Diego Oliveira
Irei explicar o funcionamento de uma rede neural LSTM, sigla para Long Short-Term Memory, ou seja, uma memória de longo prazo. De início precisamos entender o que é uma rede neural artificial, para em seguida, entender o que é uma rede LSTM. E então, vamos nessa?
Uma Rede Neural Artificial (RNA) é uma técnica computacional inspirada na estrutura neural de organismos inteligentes, exemplo, celulas neurais do cérebro humano. Assim como as células neurais, essa técnica tem como objetivo “adquirir conhecimento” através da experiência. Na rede neural artificial é aplicado a regra da cadeia para atualizar os pesos da última camada e calcular a derivada dos parâmetros até a primeira camada.
No entanto, na rede neural simples existe um problema, que é a dependência de longo prazo durante a retropropagação, ou seja, ela tem problemas para armazenar informações de longo prazo. Uma solução para isso são as redes neurais LSTM (Long Short-Term Memory).
Em uma arquitetura LSTM, a rede possue três entradas e retorna três saídas. A estrutura do LSTM possue três “portões”, que são o do Forget gate (portão do esquecimento), Input gate and output gate(portão de entrada e saída) e, por fim, o cell state (estado da célula). A imagem a seguir mostra como é uma célula de uma rede neural LSTM.
Célula LSTM
No portão do esquecimento é onde se decide quais informações devem ser lembradas ou esquecidas do estado anterior. A célula possue duas entradas, onde uma possue a informação do estado anterior, descrita como (ht -1) e a outra informação do estado atual, definida como (X(t)). Ambas são passadas pela função sigmóid, mas o que é uma função sigmóid? A função sigmóid é uma função matemática e seu nome advém do S do seu gráfico, como pode ser visto a seguir.
Função Sigmóid
O gráfico da função sigmóid pode ser obtida através da seguinte equação:
Equação da função Sigmóid
O valor de saída da função sigmóid estão entre 0 (zero) e 1 (um). Quanto mais próximo do valor 0 (zero) significa que será “esquecido” e quanto mais próximo do valor 1 (um) significa que será guardado a informação. Para tornar mais fácil o entendimento, basta verificar a imagem a seguir.
Forget gate (portão do esquecimento)
É possível verificar a equação utilizada para o cálculo do valor da função no portão do esquecimento, Onde;
Em seguida, é aplicado uma função sigmóide. Fazendo com que o valor obtido por ft seja um número entre 0 e 1.
A porta de entrada é responsável pela divisão das informações importantes que devem ser adicionadas ao estado da célula com base nas entradas anteriores. Para atualizar o estado da célula é necessário passar o estado oculto anterior (h(t-1)) e a entrada atual dada por (x(t)) através da função sigmóid. Isso faz com que seja decidido quais valores serão atualizados, transformando os valores entre 0 (zero) e 1 (um). 0 (Zero) significa não importante e 1 (um) significa importante. Além disso, é passado a função oculta (h(t-1)) e a entrada atual (x(t)) para a função tangente hiperbólica (tanh) para “esmagar” valores entre -1 e 1, ajudando a regular a rede. Mas o que é uma função tangente hiperbólica?
A função tangente hiperbólica é uma função hiperbólica. Ela é obtida através da razão entre o seno hiperbólico e o cosseno hiperbólico, de forma similar à relação trigonométrica da tangente. A sua equação é a seguinte.
Equação tangente hiperbólico
Através dessa equação é possível obter a função da tangente hiperbólica no gráfico. Como é possível ver através da imagem a seguir.
Gráfico tangente hiperbólico
Em seguida é multiplicada a saída da função tangente hiperbólico pela saída da função sigmóid. A saída sigmóid decidirá qual informação é importante manter da saída da função da tangente hiperbólica. A imagem a seguir mostra de maneira ilustrativa como é o Input gate (portão de entrada).
Input gate (portão de entrada)
Na imagem é possível verificar as equações utilizadas no input gate, onde cada símbolo significa o seguinte;
Já a função Ct+ é uma nova informação de função de estado oculto. A função tanh faz com que a nova informação fique entre 0 (zero) e 1 (um). Caso o valor de Ct+ seja negativo, a informação é substituida do estado da célula, e, se for positivo a informação é adicionada à célula estado atual. Entretanto Ct+ não será adicionado diretamente no estado atual da célula, para isso serve a função Ct que utiliza as equações descritas anteriormente.
Inicialmente o estado da célula é multiplicado pelo forget gate, isso possibilita descartar valores no estado da célula multiplicado por valores próximos a zero. Posteriormente, pega a saída do input gate e realiza uma adição pontual que atualiza o estado da célula para novos valores que a rede considera relevante, possibilitando obter um novo estado da célula (C(t)).
Cell State (estado da célula)
O portão de saída decide qual o próximo estado oculto. O estado oculto tem informações dos estados anteriores, também usado para previsões. Primeiro o estado oculto e a entrada atual por uma função sigmóid, posteriormente passa o resultado por uma função tangente hiperbólica, multiplicando a saída da tangente hiperbólica pela a saída da função sigmóid para decidir quais informações o estado oculto deve transportar. A saída é o estado oculto. O novo estado da célula eo novo estado oculto são então transportados para a próxima etapa de tempo.
Output gate (portão de saída)
Na imagem é possível verificar as equações utilizadas no Output gate, onde cada símbolo significa o seguinte;
O uso de redes neurais LSTM’s podem ser utilizadas para diversas soluções e aplicações, alguns exemplos destes são;
O uso de redes LSTM’s pode ser aplicado em diversas linguagens de programação, não existe a melhor linguagem, existe aquela que se adequa melhor no uso da aplicação, ou seja, a linguagem depende da aplicação que será realizada, exemplo, para séries temporais a linguagem de programação Python é mais adequada, pois já possuem diversas bibliotecas que facilitam a sua aplicação, mas se forem em outras aplicações como em sistemas embarcados, o ideal é utilizar a linguagem C ou C++.
Livro Mãos à obra: Aprendizado de Máquina com Scikit-Learn & TensorFlow
https://medium.com/turing-talks/turing-talks-27-modelos-de-predi%C3%A7%C3%A3o-lstm-df85d87ad210
https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21
https://www.analyticsvidhya.com/blog/2021/03/introduction-to-long-short-term-memory-lstm/