Perguntas sobre células, unidades e entradas LSTM


9

Estou tentando aprender como as LSTMredes funcionam e, mesmo que eu entenda o básico, os detalhes da estrutura interna não estão claros para mim.

Neste link do blog , encontrei esse esquema de LSTMarquitetura

LSTM

Onde aparentemente, todo círculo deve corresponder a uma LSTMunidade individual como esta

LSTM

  1. Isso está correto?

  2. Cada unidade na célula é independente das outras? Ou eles compartilham informações?

  3. Imagine que tenho a seguinte configuração: Número de amostras = 1000 Número de etapas do tempo = 10 Número de recursos = 5

Nesse caso, cada unidade de uma célula terá como entrada um vetor de tamanho 5, certo?

Mas qual será o tamanho da saída para uma unidade? 1?

obrigado


11
Leia este pequeno trecho: colah.github.io/posts/2015-08-Understanding-LSTMs Uma e outra vez, se for necessário. Após três vezes, garanto que você aprenderá alguma coisa.
Eran Moshe

Respostas:


1

Eu acho que sua imagem está errada. Eu acho que cada caixa azul é uma camada LSTM, composta por várias células / unidades, cada uma das quais aceita uma entrada de vetor x_t.

Com isso, as respostas para suas perguntas são:

1) Sim

2) Sim, eles são independentes (em uma única etapa - eles compartilham informações entre si entre etapas)

3) Sim, cada célula unitária terá uma entrada do tamanho 5. Acho que o tamanho da saída é sempre 1, semelhante aos nós da rede neural (como unidades sigmoidais) que combinam e ativam.


Confirmo que o tamanho da saída é sempre um, porque cada unidade LSTM funciona essencialmente como um neurônio comum. É até o seguinte camada para distribuir este valor único para seus múltiplos neurônios
Kari

Uma "camada LSTM" também é chamada de AFAIK "célula LSTM". Quando você adiciona uma célula LSTM na maioria das estruturas, especifica o tamanho da camada. Portanto, a rotulagem parece seguir essa convenção.
Neil Slater

1

Na verdade, as formas são para simplificação. Se você deseja conhecer o comportamento correto, verifique as fórmulas de cada LSTMcélula. Para responder à sua primeira pergunta, pode haver respostas diferentes. O que as imagens estão representando pertence a tarefas que são muitas para muitos e, para cada entrada, você precisa exatamente de uma saída. Existem tarefas diferentes para sequências que podem ser definidas:

  • Um a um
  • Um para muitos
  • Muitos para um
  • Muitos para muitos

Você pode dar uma olhada aqui .

Para ilustrar as fórmulas de cada LSTMcélula, dei a seguinte imagem do curso do professor Andrew Ng sobre aprendizado profundo:

insira a descrição da imagem aqui

Como você pode ver, cada nó da LSTMcélula pode ser conectado indiretamente à saída das células adjacentes da etapa anterior. É indireto porque há portões entre eles. Considere também que a LSTMcélula compartilha os pesos para todas as entradas de diferentes etapas de tempo. Consequentemente, cada neurônio na LSTMcélula depende da entrada do intervalo de tempo atual e da saída dos nós adjacentes dos intervalos de tempo anteriores.

Sobre a terceira pergunta, o tamanho da entrada será igual ao número de recursos da entrada para cada etapa do tempo. O número de saídas depende da sua tarefa, como referi a princípio. Dê uma olhada no primeiro link.


1
  1. Isso está correto?

Sim, os diagramas parecem corretos para mim. O principal para entender os dois diagramas é que as entradas e saídas de uma célula LSTM são vetores.

Os círculos no primeiro diagrama representam o conceito de que a camada contém vários neurônios artificiais individuais e isso pode fazer você supor que o segundo diagrama é uma imagem de um desses neurônios. Pode-se argumentar que existem vários "neurônios" ou subcamadas com funções diferentes dentro de uma célula, porque existem vários lugares nos quais os cálculos da formaf(Wx+b)ocorrer, desempenhando papéis ligeiramente diferentes. Eu acho que o termo "célula" é usado para se referir a essa arquitetura de neurônios. Como uma mão curta quando digo "neurônio", costumo pensar no estágio de saída da camada oculta.

No entanto, no segundo diagrama, todas as operações mostradas funcionam com vetores. Mais importante ainda, as setas da esquerda para a direita no segundo diagrama representam vetores de estado oculto do timestep ao timestep de toda a camada . Portanto, cada neurônio da célula é conectado de forma recorrente a todos os outros neurônios da célula - duas vezes como acontece em um LSTM, porque os LSTMs têm um estado interno da célula e uma saída da camada.

  1. Cada unidade na célula é independente das outras? Ou eles compartilham informações?

Para corresponder à sua descrição dos diagramas, vamos definir uma "unidade" como uma coleção de um de cada tipo de neurônio / porta usado para formar a célula, que em teoria poderia ser conectado para formar uma camada de células LSTM funcionais com uma única estado da célula escalar e valor de saída.

Essas unidades são independentes, pois cada uma possui seus próprios parâmetros de peso. Não há parâmetros compartilhados para as conexões entre a entrada e as unidades ou para as conexões recursivas que encaminham o estado de uma etapa para outra. Nesse sentido, as unidades não compartilham informações.

No entanto, as conexões significam que, em cada etapa, dados de entrada e estado oculto, além da saída da última saída de todas as outras unidades da célula, são combinados, usados ​​nos cálculos. Qualquer unidade de célula pode basear seu novo estado interno mais sua saída nos valores de todas as outras saídas e estados internos de outras unidades na célula. Nesse sentido, as unidades compartilham informações. Acho que, com a sua pergunta, provavelmente é com esse segundo problema que você se preocupa, pois o segundo diagrama faz você pensar em um diagrama de fiação para um único neurônio, mas, como explicado acima, esse não é o caso.

  1. Imagine que eu tenho a seguinte configuração: Número de amostras = 1000 Número de intervalos de tempo = 10 Número de recursos = 5 Nesse caso, cada unidade de uma célula terá como entrada um vetor de tamanho 5, certo?

Quase. Cada neurônio dentro da célula recebe uma entrada de 5 dex, além de uma entrada da saída da camada oculta, h. Portanto, se no seu caso o tamanho da célula LSTM fosse 10, cada neurônio levaria um vetor combinado de 15. Além disso, um segundo vetor de estado celular é mantido, não rotulado em seu diagrama. Isso não é usado diretamente como entrada para nenhum neurônio (isto é, componentes do formuláriof(Wx+b)), mas interage com os outros valores e pode ser alterado por meio dos vários portões. No seu segundo diagrama, é a seta superior indo da esquerda para a direita.

Mas qual será o tamanho da saída para uma unidade? 1?

A célula como um todo terá a saída de qualquer tamanho que você criou na camada. É isso que o diagrama número 2 tenta mostrar. No entanto, usando nossa definição de trabalho de "unidade", a saída de cada unidade será de dois valores escalares - a saída da camada oculta e o estado da célula - que farão parte de seus respectivos vetores mostrados nos diagramas.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.