Estou tentando aprender como as LSTM
redes 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 LSTM
arquitetura
Onde aparentemente, todo círculo deve corresponder a uma LSTM
unidade individual como esta
Isso está correto?
Cada unidade na célula é independente das outras? Ou eles compartilham informações?
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
Respostas:
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.
fonte
Na verdade, as formas são para simplificação. Se você deseja conhecer o comportamento correto, verifique as fórmulas de cada
LSTM
cé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:Você pode dar uma olhada aqui .
Para ilustrar as fórmulas de cada
LSTM
célula, dei a seguinte imagem do curso do professor Andrew Ng sobre aprendizado profundo:Como você pode ver, cada nó da
LSTM
cé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 aLSTM
célula compartilha os pesos para todas as entradas de diferentes etapas de tempo. Consequentemente, cada neurônio naLSTM
cé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.
fonte
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.
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.
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.
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.
fonte