Por que os pesos das redes RNN / LSTM são compartilhados ao longo do tempo?

20

Recentemente, fiquei interessado em LSTMs e fiquei surpreso ao saber que os pesos são compartilhados ao longo do tempo.

  • Sei que, se você compartilhar os pesos ao longo do tempo, as seqüências de tempo de entrada poderão ter um comprimento variável.

  • Com pesos compartilhados, você tem muito menos parâmetros para treinar.

Pelo que entendi, a razão pela qual alguém se voltaria para um LSTM vs. outro método de aprendizado é porque você acredita que há algum tipo de estrutura / dependência temporal / seqüencial em seus dados que você gostaria de aprender. Se você sacrifica o comprimento variável 'luxo' e aceita um longo tempo de computação, um RNN / LSTM sem pesos compartilhados (ou seja, para cada etapa que você tem pesos diferentes) teria um desempenho muito melhor ou falta algo?

beeCwright
fonte

Respostas:

17

A resposta aceita enfoca o lado prático da pergunta: exigiria muitos recursos, se não houver parâmetros compartilhados. No entanto, a decisão de compartilhar parâmetros em uma RNN foi tomada quando qualquer computação séria era um problema (1980 de acordo com o wiki ), então eu acredito que não foi o argumento principal (embora ainda válido).

Existem razões teóricas puras para o compartilhamento de parâmetros:

  • Ajuda na aplicação do modelo a exemplos de diferentes comprimentos. Ao ler uma sequência, se o modelo RNN usar parâmetros diferentes para cada etapa durante o treinamento, ele não será generalizado para sequências invisíveis de diferentes comprimentos.

  • Muitas vezes, as seqüências operam de acordo com as mesmas regras na sequência. Por exemplo, na PNL:

                                                     "Na segunda-feira estava nevando"

                                                     "Estava nevando na segunda-feira"

... essas duas frases significam a mesma coisa, embora os detalhes estejam em diferentes partes da sequência. O compartilhamento de parâmetros reflete o fato de estarmos executando a mesma tarefa em cada etapa; como resultado, não precisamos reaprender as regras em cada ponto da frase.

O LSTM não é diferente nesse sentido, portanto, também usa parâmetros compartilhados.

Máxima
fonte
4
Esta é de longe a razão mais importante do que a resposta aceita!
jlh 4/01
Acredito que minha resposta tenha sido descaracterizada aqui. Eu disse que seriam necessários mais recursos computacionais sem o compartilhamento de peso, mas esse não era o ponto principal. Em particular, também escrevi que um modelo sem pesos compartilhados seria muito mais flexível e, portanto, mais propenso a sobreajuste. Compartilhar pesos ao longo do tempo é uma maneira de superar isso. Como corretamente apontado aqui, essa estratégia corresponde ao 'prior' que as mesmas regras se aplicam a cada passo do tempo. Portanto, as duas respostas não estão em desacordo.
user20160
12

A perspectiva de 'pesos compartilhados' vem do pensamento sobre as RNNs como redes feedforward desenroladas ao longo do tempo. Se os pesos fossem diferentes a cada momento, isso seria apenas uma rede de feedforward. Mas, suponho que outra maneira de pensar sobre isso seria como uma RNN cujos pesos são uma função que varia no tempo (e isso pode permitir que você mantenha a capacidade de processar sequências de comprimento variável).

Se você fizesse isso, o número de parâmetros aumentaria linearmente com o número de etapas de tempo. Isso seria uma grande explosão de parâmetros para seqüências de qualquer tamanho apreciável. De fato, tornaria a rede mais poderosa se você tivesse recursos computacionais massivos para executá-la e dados massivos para restringi-la. Para sequências longas, provavelmente seria inviável em termos computacionais e você teria um super ajuste. De fato, as pessoas geralmente seguem na direção oposta executando a retropropagação truncada ao longo do tempo, que apenas desenrola a rede por um curto período de tempo, e não por toda a sequência. Isso é feito para viabilidade computacional. Curiosamente, as RNNs ainda podem aprender a estrutura temporal que se estende além do comprimento do truncamento, porque as unidades recorrentes podem armazenar memória de antes.

user20160
fonte
Se você não compartilhar pesos, ainda terá o estado da célula que persiste ao longo do tempo. Um LSTM desenrolado com pesos de tempo exclusivos pareceria uma rede de feedforward em que cada 'camada' representaria uma fatia de tempo, mas cada 'camada' teria informações de estado de célula recebidas. Seria semelhante a um feedforward, mas com a adição do estado da célula.
22417 beeCwright
0

Eu acho que, como as RNNs com recorrências ocultas a ocultas (e pesos compartilhados no tempo) são equivalentes às Máquinas de Turing Universal, deixá-las ter pesos diferentes para diferentes etapas no tempo não as torna mais poderosas.

Hossein
fonte
Você poderia elaborar o que você quer dizer com "poderoso"? A referência a Turing Machines sugere que o que você tem em mente pode ser completamente diferente do que se entende por estatística.
whuber
Os RNNs são usados ​​para processar a sequência de dados. Um de seus tipos mais comuns obtém uma sequência como entrada e produz outra sequência como saída (como sistemas de tradução de idiomas). Eu digo que uma família de modelos RNN M1 é mais poderosa do que outra família de modelos RNN M2, se por um problema (como mapear um conjunto de sequências de entrada para um conjunto de sequências de saída) houver algum modelo m1 em M1 onde possa resolver esse problema mas não há modelo no M2 onde possa resolver esse problema.
Hossein