Descrição intuitiva para o treinamento de LSTM (com esquecer portão / olho mágico)?

9

Eu sou um graduado em CS (mas não sei muito sobre IA, mas não fiz nenhum curso sobre ela, e definitivamente nada sobre NN até recentemente), que está prestes a fazer um projeto escolar em AI, então escolho alguns tópicos sobre indução gramatical (da linguagem livre de contexto e talvez de algum subconjunto da linguagem sensível ao contexto) usando o aprendizado por reforço em uma rede neural. Comecei a estudar a abordagem bem-sucedida anterior primeiro para ver se elas podem ser aprimoradas e agora estou tentando entender a abordagem usando o aprendizado supervisionado com a Memória de Longo Prazo. Estou lendo "Aprendendo a esquecer: previsão contínua com LSTM". Também estou lendo o jornal no olho mágico, mas parece ainda mais complicado e estou apenas tentando algo mais simples primeiro. Acho que entendi corretamente como a célula de memória e a topologia de rede funcionam. O que não entendo agora é o algoritmo de treinamento. Então, eu tenho algumas perguntas a fazer:

  • Como exatamente diferentes entradas são distinguidas? Aparentemente, a rede não é redefinida após cada entrada e não há símbolo especial para delimitar entradas diferentes. A rede apenas recebe um fluxo contínuo de strings sem nenhuma pista sobre onde a entrada termina e a próxima começa?

  • Qual é o intervalo de tempo entre a entrada e a saída alvo correspondente? Certamente, é necessária alguma quantidade de tempo decorrido e, portanto, a rede nunca pode ser treinada para obter uma saída de destino de uma entrada que ela não tem tempo suficiente para processar. Se não foi usada a gramática Reber, mas algo mais complicado que poderia exigir muito mais informações para serem armazenadas e recuperadas, a quantidade de tempo necessária para acessar as informações variava dependendo da entrada, algo que provavelmente não pode ser previsto enquanto decidimos o tempo para fazer o treinamento.

  • Existe uma explicação mais intuitiva do algoritmo de treinamento? Acho difícil descobrir o que está acontecendo por trás de todas as fórmulas complicadas e preciso entender porque preciso ajustá-lo em um algoritmo de aprendizado reforçado posteriormente.

  • Além disso, o artigo não mencionou nada sobre dados de treinamento barulhentos . Li em outro lugar que a rede pode lidar com dados de teste muito barulhentos. Você sabe se o LSTM pode lidar com situações em que os dados de treinamento têm algumas chances de serem corrompidos / sobrecarregados com informações supérfluas?

Gina
fonte
3
Essa é uma pergunta muito grande que pode estar intimidando alguns leitores. Sugiro dividi-lo em vários pedaços (cada um dos seus pontos de bala, talvez). Além disso, este tópico faz a ponte entre Ciência da Computação e Validação Cruzada ; você pode perguntar sobre os aspectos mais relacionados ao CS aqui em Ciência da Computação e os aspectos mais relacionados a estatísticas no Cross Validated (mas não poste a mesma pergunta nos dois sites).
Gilles 'SO- deixe de ser mau'
algumas referências que podem ajudá-lo: lstm.iupr.com/files nntutorial-lstm.pdf nessa página pode ser de particular ajuda aqui
Brian Jack
PS: alguém poderia decodificar esses epsilons e deltas no apêndice talvez até algo que eu possa entender apenas com o cálculo do primeiro ano?
Brian Jack
Neste ponto, estou evitando o backprop para um algoritmo de treinamento evolutivo / mutagênico apenas porque o cálculo para o backprop parece um pouco assustador. Tentei um pequeno problema de previsão de texto de teste com um backpropMinus lstm no PyBrain, mas ele estava tendo problemas na convergência, mesmo com apenas uma mera sequência de entrada de 3 caracteres - treinamento mutacional e seleção de aptidão (no MSE de erro de saída na população de treinamento) podem permitir mais análise da área de pesquisa criativa
Brian Jack

Respostas:

1

O LSTM foi projetado para processar um fluxo de blocos de dados (cada bloco é o conjunto de entradas para a rede neste momento) que chegam ao longo do tempo e observam os recursos que ocorrem nos dados e produzem a saída de acordo. O intervalo de tempo (atraso) entre a ocorrência de recursos a serem reconhecidos pode variar e pode ser prolongado.

Seria possível treinar a rede transmitindo exemplos de treinamento em ordem aleatória, que também deve ter algum ruído de mudança de horário adicionado na forma de passes inativos (a rede será ativada quando as entradas estiverem com valores inativos padrão, por exemplo: quando não houver áudio no caso de uma fala) processador) [exceção: se algum dado de treinamento obedecer a padrões periódicos de desvio de tempo, como música, o ruído do desvio de horário deve manter o desvio de tempo sincronizado, por exemplo: na música, para garantir que um exemplo de treinamento no início da medida não seja alterado para a metade da medida e, portanto, adiante]

Também é possível ter uma configuração semi-supervisionada, em que a rede está sempre em uma configuração de treinamento e é treinada com exemplos que esperam uma saída de um valor inativo quando não há uma decoração presente ou o valor esperado apropriado quando um recurso é apresentado para o treinamento).

Se o treinamento em formato de feedback for desejado, ele pode ser emulado por:

  1. salvando o estado interno (hora t)
  2. ativar a rede nas entradas atuais (agora em t + 1)
  3. processo de supervisão avalia a produção obtida em t
    • 3a se a correção for necessária, primeiro rebobine para o estado salvo (rebobina a rede de volta para t)
    • 3b gerar um exemplo de treinamento com a correção
    • 3c executa um passe de trem (backprop) para esta fatia em vez de uma ativação

assim, implementa-se um sistema de estilo de feedback, pois os exemplos de treinamento são basicamente criados apenas enquanto a rede está "entendendo errado". O formato de feedback é útil se alguém quiser que a rede tente improvisar (como o exemplo da música de Schmidhuber).

  • deve-se salientar que parte do feedback de correção (e, portanto, exemplos de treinamento) inclui necessariamente aqueles que reforçam a saída com valor ocioso quando os recursos não estão presentes no momento atual

Foi mencionado pelo OP que [não há separação de entradas], exceto que realmente existe. Se alguém pensa em um cenário de reconhecimento de voz, possui períodos de enunciados (recursos que o LSTM deve detectar) intercalados com longos períodos de silêncio. Portanto, para lidar com a preocupação, seria justo dizer que esses períodos de silêncio estão de fato separando os grupos de entradas seqüenciados (esses silêncios também são, na verdade, um recurso que a rede precisa detectar e aprender a responder com resultados valiosos ociosos, ou seja: aprenda a fazer nada quando o silêncio).

Uma observação sobre a redefinição da rede

Qualquer redefinição ou recuperação de um estado de rede salvo no sentido LSTM tem o significado de "voltar no tempo", desfazendo assim qualquer aprendizado que o LSTM executou antes da redefinição.

Portanto, você estava certo ao afirmar que os LSTMs não são redefinidos antes de cada amostra de treinamento nem da época de transição. Os LSTMs desejam que seus dados sejam transmitidos ou fornecidos de maneira "on-line", por assim dizer.

Brian Jack
fonte