Entendendo a topologia do LSTM

9

Como muitos outros, eu achei os recursos aqui e aqui imensamente úteis para entender as células LSTM. Estou confiante de que entendo como os valores fluem e são atualizados, e estou confiante o suficiente para adicionar as mencionadas "conexões do olho mágico", etc. também.

No meu exemplo, tenho em cada etapa um vetor de entrada de comprimento ie um vetor de saída de comprimento o, em que o < i.

O que nenhuma das páginas realmente abordou é como elas são organizadas e treinadas.

Eu tenho 2 perguntas:

  1. Nos meus dados de treinamento, tenho muitos pares de vetores de entrada / saída correspondentes a muitas, muitas unidades de tempo. Suponha que eu treine o LSTM com todos os dados. Posso então executar uma entrada de comprimento arbitrária definida por ele? O que quero dizer é que, se eu tiver dados de treinamento para, digamos, todo o ano de 2015 e 2016, posso executar dados na rede para 2017? Ou talvez de 2017 a 2020?
  2. De acordo com o que li, parece que tenho uma célula LSTM por unidade de tempo; portanto, se eu tenho muitas unidades de tempo, tenho muitas células LSTM encadeadas. Como o comprimento da cadeia depende do comprimento dos dados que desejo executar na rede e, presumivelmente, é arbitrário, não consigo ver como treinaria isso, a menos que treine apenas uma única célula LSTM que, em seguida, duplique um número vezes. Então, parece que eu treinaria uma única célula LSTM e, em seguida, as uniríamos npara uma determinada lista de vetores de entrada de comprimento n? Mesmo que uma única célula LSTM contenha vários elementos e funções, parece que não é suficiente capturar tanta informação em algo tão pequeno?

Obrigado. Existem outros recursos que eu possa consumir (relativamente rápido) que me ajudarão a entender os detalhes da implementação? Os 2 links acima forneceram uma imagem fantástica de alto nível do que está acontecendo, mas não conseguiram capturar esses detalhes.

AKrip4k
fonte

Respostas:

1

Suponha que eu treine o LSTM com todos os dados. Posso então executar uma entrada de comprimento arbitrária definida por ele?

Abstratamente, sim. No entanto, algumas implementações de software têm regras rígidas sobre se as variáveis ​​precisam ou não ter um tamanho fixo ou se podem ter tamanhos variáveis; portanto, em termos de programação, você precisará verificar se está implementando as coisas corretamente.

Parece que eu treinaria uma única célula LSTM e, em seguida, encadeava n delas para uma lista de vetores de entrada de comprimento n?

xtxt+1 1

Sycorax diz restabelecer Monica
fonte