Estou tentando entender a arquitetura das RNNs. Encontrei este tutorial que foi muito útil: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
Como isso se encaixa em uma rede de feed-forward? Essa imagem é apenas outro nó em cada camada?
Estou tentando entender a arquitetura das RNNs. Encontrei este tutorial que foi muito útil: http://colah.github.io/posts/2015-08-Understanding-LSTMs/
Como isso se encaixa em uma rede de feed-forward? Essa imagem é apenas outro nó em cada camada?
Respostas:
A é, de fato, uma camada completa. A saída da camada é , na verdade é a saída do neurônio, que pode ser conectada a uma camada softmax (se você deseja uma classificação para o tempo , por exemplo) ou qualquer outra coisa, como outra camada LSTM, se desejar vá mais fundo. A entrada desta camada é o que a diferencia da rede feedforward regular: leva a entrada e o estado completo da rede no passo anterior (ambos e as outras variáveis da célula LSTM )
Observe que é um vetor. Portanto, se você deseja fazer uma analogia com uma rede de feedforward regular com 1 camada oculta, pode-se pensar em A como o lugar de todos esses neurônios na camada oculta (mais a complexidade extra da parte recorrente).
Na sua imagem, A é uma única camada oculta com um único neurônio oculto. Da esquerda para a direita é o eixo do tempo e, na parte inferior, você recebe uma entrada a cada momento. No topo, a rede poderia ser expandida ainda mais adicionando camadas.
Se você desdobrasse esta rede no tempo, como está sendo mostrado visualmente na sua imagem (da esquerda para a direita, o eixo do tempo é desdobrado), você obteria uma rede de feedforward com T (quantidade total de etapas de tempo) camadas ocultas, cada uma contendo um nó único (neurônio), como é desenhado no bloco A do meio.
espero que isso responda sua pergunta.
Gostaria de explicar esse diagrama simples em um contexto relativamente complicado: mecanismo de atenção no decodificador do modelo seq2seq.
No diagrama de fluxo abaixo, a são etapas de tempo (do mesmo comprimento que o número de entrada com PADs para espaços em branco). Cada vez que a palavra é colocada na i-ésima (etapa temporal) LSTM neural (ou célula kernal igual a qualquer uma das três em sua imagem), ela calcula a i-ésima saída de acordo com seu estado anterior ((i-1) ésima saída) e a i-ésima entrada . Ilustro seu problema usando isso porque todos os estados do timestep são salvos para o mecanismo de atenção, em vez de descartados apenas para obter o último. É apenas um neural e é visto como uma camada (várias camadas podem ser empilhadas para formar, por exemplo, um codificador bidirecional em alguns modelos seq2seq para extrair mais informações abstratas nas camadas mais altas).
Em seguida, ele codifica a sentença (com as palavras L e cada uma delas representada como vetor da forma: dimensão de incorporação * 1) em uma lista de tensores L (cada uma da forma: num_hidden / num_units * 1). E o estado passado para o decodificador é apenas o último vetor, como a sentença incorporada da mesma forma de cada item da lista.
Fonte da imagem: Mecanismo de Atenção