O que acontece quando alimentamos uma matriz 2D em uma camada LSTM

8

Suponha que eu esteja alimentando uma matriz 2D de forma (99,13) como entrada para uma camada LSTM. Estou tendo um número n de arquivos, onde cada um contém (99,13) vetores de tamanho. Decidi considerar 13 como o número de recursos e 99 como o timesteps.

(Ao implementar com o Keras, adicionei a camada LSTM como a primeira camada. E configurei o output_dim da camada como 100)

Mas não consigo descobrir como as coisas realmente funcionam na rede quando fornecemos uma entrada como acima. Tenho as seguintes perguntas, que não consigo responder.

  1. Que tipo de valores fornecemos como entrada para as células LSTM? ( xt , ht-1 usado como entradas para a célula são sempre vetores? No meu caso, xt tem a forma de [1,13]?)
  2. Quando dizemos que temos uma camada LSTM como a primeira camada do modo l, ele alimenta o primeiro vetor de entrada para todas as células na camada especificada? (Por exemplo: alimente o primeiro quadro de tamanho 13 (de 99 quadros) a todas as n células LSTM na primeira camada?) Da mesma forma, ele continua alimentando todas as linhas da matriz de entrada a cada passo?
  3. Que tipo de valor uma célula LSTM gera a cada passo de tempo ? (Será que considerar o estado celular como a saída correta do nó? É um valor único ou um vetor? Se é um vector quais são as dimensões? Existe uma maneira podemos imaginar as dimensões? Eu assumi ht como um vetor)
  4. O que se entende por output_dim (dimensão de saída) de uma determinada camada? Sempre tem que ser o número de nós na próxima camada?

Por favor, não faça isso em espera ou dirija para outros grupos. Eu acho que essas questões estão relacionadas ao aprendizado de máquina e ao rnn. Eu li trabalhos de pesquisa, mas não consegui ter uma idéia clara de como as coisas realmente funcionam na rede LSTM.

udani
fonte

Respostas:

1

1) Xsão suas entradas, se você tiver 99 timesteps, terá 99 vetores de tamanho 13 cada. Portanto, sua entrada para cada timestep é um vetor de tamanho 13. Você precisará de um estado oculto inicial, a menos que tenha um motivo para fazê-lo, caso contrário, seu estado oculto inicial pode ser todos os 0s. O tamanho desse vetor é um hiperparâmetro que você escolher.

2) Lembre-se de que não existem 99 células LSTM, há apenas 1 célula LSTM que é reutilizada 99 vezes para cada intervalo de tempo. A célula LSTM mantém um estado oculto e um estado de célula que passa adiante para a próxima etapa. Mas há apenas 1 conjunto de parâmetros sendo aprendidos. Esses parâmetros precisam ser capazes de lidar com todos os intervalos de tempo, dependendo da entrada atual, estado oculto e estado da célula.

3) O estado da célula não é uma saída, no entanto, é transmitido como uma entrada para o próximo timestep. O estado oculto h_tserá passado para a saída e para o próximo timestep.

4) Não tenho muita certeza, preciso de uma referência ao termo output_dim.

Este é um excelente tutorial sobre LSTMs: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

David Parks
fonte
0

O que se entende por output_dim (dimensão de saída) de uma determinada camada? Sempre tem que ser o número de nós na próxima camada?

output_dim = dimensão dos estados ocultos do LSTM.

Franck Dernoncourt
fonte