Qual é a diferença entre rede neural feed-forward e LSTM ? Como eles diferem em sua arquitetura?
Resposta
Uma rede neural feed-forward tem a seguinte aparência:
entrada -> camada oculta 1 -> camada oculta 2 -> … -> camada oculta k -> saída.
Cada camada pode ter um número diferente de neurônios, mas essa é a arquitetura .
Um LSTM (célula de memória de longo-curto prazo) é um tipo especial de nó dentro de uma rede neural. Ele pode ser colocado em uma rede neural feedforward, e geralmente é . Quando isso acontece, a rede neural feedforward é chamada de LSTM (para confusão!).
Então, como funciona um LSTM? Dê uma olhada em minha resposta aqui: Esqueça a camada em uma rede neural recorrente (RNN) –
tl; dr: uma célula LSTM tem três portas, cada uma das quais é usada para modular sua entrada de alguma forma: uma porta de entrada, uma porta de esquecimento e uma porta de saída. Ela tem uma “memória” e uma saída que é modificada pelas portas. Ou seja, dentro de uma única célula LSTM:
(entrada estado da célula anterior) -> (input & esquecer as portas) -> (atualizar estado da célula)
(input & estado da célula anterior & estado da célula atualizado) -> (porta de saída)
Você pode empilhar essas células em muitas configurações diferentes. Portanto, não há uma única “rede LSTM” – em vez disso, um conjunto de muitas arquiteturas possíveis que podem ser construídas a partir desses nós básicos.
Espero que você comece!
Comentários
- Muito obrigado pela sua resposta, mas você pode adicionar algumas imagens para melhorar minha compreensão da arquitetura
- E sobre a propagação reversa na rede feed forward, ela ocorre em feed forward network
- Olá @codezcar, há imagens do LSTM em minha resposta que vinculei. Para uma rede neural feedforward, uma imagem está aqui: medium.com/random-techpark/… Sim, você pode usar retropropagação para encontrar os pesos ideais em qualquer tipo de rede neural (feed forward, LSTM, GRU, … qualquer coisa!).
Resposta
Conforme mencionado por Philipp, as redes com loops de feedback ajudam a modelar o tempo nos dados.
Você gostaria de ver aqui uma visão geral de várias arquiteturas NN: https://i.stack.imgur.com/LgmYv.png
Resposta
Redes feed forward são redes em que cada nó está conectado apenas a nós da camada seguinte. Eles não têm conexões “circulares”. Os dados só podem viajar da entrada para a saída sem loops. Os exemplos seriam Simple Layer Perceptron ou Multilayer Perceptrion. Redes Neurais Convolucionais também são puramente redes feed forward
Em oposição a que são redes neurais recorrentes. LSTM é uma delas. Essas RNN também podem ser conectadas “lateralmente”. Isso significa que seus dados podem viajar não apenas para a próxima camada, mas também para outros nós na mesma camada ou para trás. De uma arquitetura ponto de vista, isso significa que, embora você tenha uma rede com talvez apenas uma camada oculta, você obtém “profundidade” adicionando loops aos nós dessa camada. Normalmente, eles representam o “tempo” nos dados.
Esta imagem mostra o que quero dizer com “profundidade” por meio de ciclos de feedback: https://en.wikipedia.org/wiki/Recurrent_neural_network#/media/File:Recurrent_neural_network_unfold.svg
Embora seja tecnicamente um nó em sua arquitetura de camada, ele se torna cada vez mais profundo quanto mais loops você adiciona
Resposta
Eu quero discutir algumas intuição de alto nível por trás das redes LSTM. Aqui estão algumas perguntas para ajudar a explorar os aspectos do por quê :
- Por que / quando usaríamos um LSTM em uma rede neural feed forward (FFNN)?
- Quais são os prós e contras dos LSTMs e como eles se comparam ao FFNN?
- Como eles são diferentes das redes neurais recorrentes tradicionais (RNNs)?
Feed Forward Neural Networks (FFNN)
Vamos primeiro considerar um FFNN padrão com arquitetura:
Como você provavelmente sabe, este FFNN pega três entradas, processa-as usando a camada oculta e produz duas saídas. Podemos expandir essa arquitetura para incorporar mais camadas ocultas, mas o conceito básico ainda se mantém: as entradas chegam, são processadas em uma direção e são enviadas no final.
Esse conceito é muito bem explicado por outros artigos, então não vou entrar em muitos detalhes.A principal conclusão é:
A condição primária que separa FFNN das arquiteturas recorrentes é que as entradas para um neurônio devem vir da camada anterior a esse neurônio.
Redes Neurais Recorrentes (RNN)
As redes neurais recorrentes são matematicamente muito semelhantes aos modelos FFNN. A principal diferença é que a restrição colocada no FFNN não é mais aplicada:
As entradas para um neurônio podem vir de qualquer outra camada.
Você verá frequentemente que essa arquitetura é frequentemente “transformada” em uma unidade recorrente, como a seguinte:
As unidades “enroladas” que você pode ver nos diagramas de arquitetura podem, portanto, ser enganosamente pequeno. Ao desenrolá-los, a rede geralmente estará bem profunda!
Memória de longo-curto prazo (LSTM)
LSTMs são um tipo especial de RNN projetado para lidar com o problema de gradiente de desaparecimento / explosão.
Quando você treina um RNN tradicional, a rede geralmente sofre de gradientes de desaparecimento / explosão: o desenrolamento de uma unidade recorrente resulta em uma rede muito profunda! Se você passar pelo algoritmo de retropropagação usando arquiteturas RNN tradicionais, as camadas anteriores se tornarão cada vez menos significativas à medida que propagamos pela rede. Isso torna os RNNs tradicionais propensos a esquecer informações, especialmente dados que aparecem muitos passos de tempo antes da hora atual.
Um exemplo de célula LSTM é ilustrado como:
Esta estrutura é semelhante à unidade RNN desenrolada tradicional, mas a principal diferença com o LSTM são as portas: porta de entrada, porta de saída e porta de esquecimento. A função dessas portas é bem descrita por seus nomes:
- porta de entrada controla o dados que entram na célula
- esquece o portão controla até que ponto os dados permanecem dentro da célula
- portão de saída controla a saída da célula por meio da função de ativação
Esta postagem do Github IO é uma ótima introdução aos fundamentos dos LSTMs. Ele também faz um trabalho incrível ao explicar a intuição por trás da matemática de um LSTM.
Propriedades e um exemplo de caso de uso de RNN
Os loops de feedback emprestam redes neurais recorrentes melhor aos desafios temporais. O tempo é fatorado em sua arquitetura!
Vamos explorar um exemplo:
Talvez você esteja usando uma rede para prever a próxima palavra em uma frase. Digamos que você receba as informações:
Faminta, Alice dirige até a loja mais próxima para comprar [previsão]
Uma rede neural recorrente pode esquecer a primeira palavra “morrendo de fome” enquanto um LSTM idealmente o propagaria. Um LSTM usaria, portanto, o contexto que ouviu anteriormente na frase para adivinhar “comida”, enquanto um RNN poderia adivinhar qualquer coisa que seja comprada em uma loja, especialmente com uma frase longa ou várias frases.
Os mecanismos de bloqueio que permitem esse tipo de memória é bem explicado por @StatsSorceress aqui: Esqueça a camada em uma rede neural recorrente (RNN) –
RNNs são projetados para lidar com sequências. Isso pode ser usado para analisar vídeo (sequências de imagens), escrita / fala (sequências de palavras) , etc.
Os LSTMs são projetados para permitir que informações importantes persistam ao longo do tempo. Os RNNs freqüentemente “esquecem” com o tempo.
FFNNs são sistemas sem memória; depois de processar alguma entrada, eles esquecem tudo sobre essa entrada. Digamos, por exemplo, que treinamos um FFNN que recebe 5 palavras como entradas e prevê a próxima saída. Este modelo, então, receberá a entrada do exemplo acima:
a loja mais próxima para comprar [previsão] .
Isso está claramente perdendo o contexto, e nós obteria um resultado ruim.
Agora, você pode perguntar: e se fizéssemos um FFNN que recebesse muitas entradas de modo que incluísse a palavra “fome” em suas entradas? Em outras palavras, não poderíamos aumentar o número de entradas para um FFNN para representar suficientemente os dados anteriores?
A resposta é sim, mas esse método é ineficiente e muitas vezes impraticável. Digamos, por exemplo, que precisamos nos lembrar do contexto de um parágrafo inteiro atrás. Precisaríamos de um FFNN muito grande! Além disso, como sabemos quantas palavras de volta queremos como contexto? 20 seriam suficientes? 30? 100? A arquitetura LSTM elimina totalmente esses problemas, permitindo que a rede gerencie uma memória temporária. Este problema é agravado pelos desafios de processamento de vídeo porque cada quadro exigirá significativamente mais entradas do que as tarefas de PNL.
Observe, no entanto, que as unidades LSTM são inerentemente mais complexas do que as unidades de um FFNN, então treiná-las é frequentemente mais difícil e leva mais tempo. Apesar dessas desvantagens, seu sucesso em desafios de dados temporais justifica claramente seu uso sobre FFNN.