Você está na página 1de 12

h

t
A

Redes Neurais Recorrentes


Os seres humanos não começam a pensar do zero a cada segundo. Ao
ler este ensaio, você entende cada palavra com base na sua
compreensão de palavras anteriores. Você não joga tudo e começa a
pensar do zero novamente. Seus pensamentos têm persistência.
As redes neurais tradicionais não podem fazer isso, e parece ser uma
deficiência importante. Por exemplo, imagine que deseja classificar o
tipo de evento que está acontecendo em cada ponto do filme. Não está
claro como uma rede neural tradicional poderia usar seu raciocínio sobre
eventos anteriores no filme para informar os mais tarde.
As redes neurais recorrentes abordam esta questão. São redes com
loops, permitindo que a informação persista.

As Redes Neurais Recorrentes possuem loops.

No diagrama acima, um pedaço de rede neural, A, olha para alguma


entrada xt exibe um valor ht. Um loop permite que as informações sejam
passadas de um passo da rede para a próxima.
Esses loops fassem as redes neuronais recorrentes parecerem
misteriosas. No entanto, se você pensar um pouco mais, vai notar que
eles não são tão diferentes do que uma rede neural normal. Uma rede
neural recorrente pode ser pensada como múltiplas cópias da mesma
rede, cada uma passando uma mensagem para um sucessor. Considere
o que acontece se desenrolarmos o loop:
Uma rede neural recorrente desenrolada.

Esses laços revelam que as redes neurais recorrentes estão intimamente


relacionadas com sequências e listas. Eles são a arquitetura natural da
rede para uso dos dados.
E eles certamente são usados! Nos últimos anos, houve um sucesso
incrível aplicando RNNs para uma variedade de problemas:
reconhecimento de fala, modelagem de idioma, tradução, legenda de
imagens ... A lista continua. Vou deixar a discussão sobre os feitos
surpreendentes que pode ser alcançado com as RNNs para a postagem
do blog de Andrej Karpathy, The Unreasonable Eficácia das Redes
Neurais Recorrentes . Mas eles realmente são bastante surpreendentes.
Essencial para esses sucessos é o uso de "LSTMs", um tipo muito
especial de rede neural recorrente que funciona, para muitas tarefas,
muito melhor do que a versão padrão. Quase todos os resultados
excitantes baseados em redes neurais recorrentes são alcançados com
eles. São estes LSTMs que este ensaio irá explorar.

O Problema das Dependências de Longo Prazo


Um dos apelos das RNNs é a idéia de que eles podem ser capazes de
conectar informações anteriores à tarefa atual, como o uso de frames de
vídeo anteriores podem informar a compreensão do frame atual. Se
RNNs pudessem fazer isso, eles seriam extremamente úteis. Mas eles
podem? Depende.
Às vezes, precisamos apenas olhar para informações recentes para
executar a tarefa atual. Por exemplo, considere um modelo de linguagem
tentando prever a próxima palavra com base nos anteriores. Se estamos
tentando prever a última palavra em "as nuvens estão no ….", não
precisamos de mais contexto - é bem óbvio que a próxima palavra será o
céu. Nesses casos, onde o espaço entre a informação relevante e o local
que é necessário é pequeno, as RNNs podem aprender a usar a
informação passada.

Mas também há casos em que precisamos de mais contexto. Considere


tentar prever a última palavra no texto "Eu cresci na França ... Eu falo
francês com fluência ". Informações recentes sugerem que a próxima
palavra provavelmente é o nome de uma linguagem, mas se quisermos
restringir qual idioma, precisamos o contexto da França, de mais para
trás. É perfeitamente possível a diferença entre a informação relevante e
o ponto em que é necessário tornar-se muito grande.
Infelizmente, à medida que essa brecha cresce, as RNNs não conseguem
aprender a conectar a informação.
Em teoria, as RNNs são absolutamente capazes de lidar com tais
"dependências de longo prazo". Um humano poderia escolher
cuidadosamente parâmetros para que eles solucionassem problemas de
brinquedos desta forma. Infelizmente, na prática, as RNNs não
conseguem aprender. O problema foi explorado em profundidade por
Hochreiter (1991) [Alemão] e Bengio, et al. (1994) , que encontrou
algumas razões bastante fundamentais pelas quais pode ser difícil.
Felizmente, LSTMs não têm esse problema!

LSTM Networks
As redes de memória de longo prazo - geralmente chamadas de "LSTMs"
- são um tipo especial de RNN, capaz de aprender dependências de
longo prazo. Eles foram introduzidos por Hochreiter & Schmidhuber
(1997) , e foram aprimorados e popularizados por muitas pessoas no
trabalho seguinte. 1 Eles funcionam tremendamente bem em uma
grande variedade de problemas, e agora são amplamente utilizados.
Os LSTMs são projetados explicitamente para evitar o problema de
dependência de longo prazo. Recordar a informação por longos períodos
de tempo é praticamente o seu comportamento padrão, não é algo que
eles lutam para aprender!
Todas as redes neurais recorrentes têm a forma de uma cadeia de
módulos repetitivos de rede neural. Em RNNs padrão, este módulo de
repetição terá uma estrutura muito simples, como uma única camada de
tanh.

O módulo de repetição em uma RNN padrão contém uma única camada.


Os LSTMs também possuem essa estrutura de cadeia, mas o módulo de
repetição tem uma estrutura diferente. Em vez de ter uma única camada
de rede neural, existem quatro, interagindo de forma muito especial.

O módulo de repetição em um LSTM contém quatro camadas de interação.

Não se preocupe com os detalhes do que está acontecendo.


Atravessaremos o diagrama LSTM passo a passo mais tarde. Por
enquanto, vamos tentar nos sentarmos com a notação que usaremos.

No diagrama acima, cada linha carrega um vetor inteiro, desde a saída


de um nó até as entradas de outros. Os círculos cor-de-rosa representam
operações pontuais, como a adição de vetores, enquanto as caixas
amarelas são camadas de rede neural aprendidas. As linhas de fusão
denotam concatenação, enquanto uma linha de bifurcação denote seu
conteúdo sendo copiado e as cópias indo para diferentes locais.

A Ideia do Núcleo Atrás dos LSTMs


A chave para LSTMs é o estado da célula, a linha horizontal que passa
pela parte superior do diagrama.
O estado celular é como uma correia transportadora. Ele corre
diretamente pela cadeia inteira, com apenas algumas pequenas
interações lineares. É muito fácil que a informação apenas flua ao longo
dela inalterada.

O LSTM tem a capacidade de remover ou adicionar informações ao


estado celular, cuidadosamente reguladas por estruturas chamadas
portões.
Gates é uma forma de permitir opcionalmente a informação. Eles são
compostos de uma camada de rede neural sigmóide e uma operação de
multiplicação de pontos.

A camada sigmoid produz números entre zero e um, descrevendo quanto


de cada componente deve ser deixado passar. Um valor de zero significa
"deixar nada", enquanto um valor de um significa "deixar tudo"
Um LSTM tem três desses portões, para proteger e controlar o estado
celular.

Passo a Passo LSTM Walk Through


O primeiro passo no nosso LSTM é decidir quais as informações que
vamos afastar do estado celular. Esta decisão é feita por uma camada
sigmoide chamada "esquecer a camada do portão". Olha para ht – 1 e xt, e
exibe um número entre 0e 1 para cada número no estado celular Ct - 1. A 1
representa "manter completamente isso" enquanto um 0 representa
"completamente se livrar disso".
Voltemos ao nosso exemplo de um modelo de linguagem tentando
prever a próxima palavra com base em todas as anteriores. Em tal
problema, o estado celular pode incluir o gênero do assunto atual, para
que os pronomes corretos possam ser usados. Quando vemos um novo
assunto, queremos esquecer o gênero do assunto antigo.

O próximo passo é decidir quais novas informações vamos armazenar no


estado celular. Isso tem duas partes. Primeiro, uma camada sigmoid
chamada "camada de entrada de entrada" decide quais valores vamos
atualizar. Em seguida, uma camada tanh cria um vetor de novos valores
candidatos, C~t, que poderia ser adicionado ao estado. No próximo
passo, combinaremos estes dois para criar uma atualização para o
estado.
No exemplo do nosso modelo de linguagem, gostaríamos de adicionar o
gênero do novo assunto ao estado da célula, para substituir o antigo que
estamos esquecendo.
Agora é hora de atualizar o estado da célula antiga, Ct - 1, no novo estado
celular Ct. As etapas anteriores já decidiram o que fazer, só precisamos
realmente fazê-lo.
Multiplicamos o estado antigo por ft, esquecendo as coisas que
decidimos esquecer anteriormente. Então, nós adicionamos it* C~t. Estes
são os novos valores candidatos, escalados por quanto decidimos
atualizar cada valor do estado.
No caso do modelo de linguagem, é aqui que realmente deixamos as
informações sobre o gênero do sujeito antigo e adicionamos as novas
informações, como decidimos nas etapas anteriores.

Finalmente, precisamos decidir o que vamos lançar. Esta saída será


baseada em nosso estado celular, mas será uma versão filtrada.
Primeiro, nós executamos uma camada sigmoide que decide quais
partes do estado celular vamos lançar. Então, colocamos o estado da
célula através de tanh(para empurrar os valores para estar entre -1 e 1) e
multiplique-a pela saída do portão sigmóide, de modo que apenas
produzimos as peças que decidimos.
Para o exemplo do modelo de linguagem, uma vez que apenas viu um
assunto, ele pode querer exibir informações relevantes para um verbo,
caso seja o que vem depois. Por exemplo, pode produzir se o sujeito é
singular ou plural, para que possamos saber em que forma um verbo
deve ser conjugado se for o que se segue a seguir.

Variantes na Memória de Longo Prazo Longo


O que descrevi até agora é um LSTM bastante normal. Mas nem todos os
LSTMs são os mesmos que os acima. Na verdade, parece que quase
todos os trabalhos envolvendo LSTMs usam uma versão ligeiramente
diferente. As diferenças são menores, mas vale a pena mencionar
algumas delas.
Uma variante popular de LSTM, introduzida por Gers & Schmidhuber
(2000) , está adicionando "conexões de geometria". Isso significa que
deixamos as camadas do portão olhar para o estado da célula.
O diagrama acima acrescenta olhares a todos os portões, mas muitos
documentos irão dar alguns peepholes e não outros.
Outra variação é usar portas de esquadrão e entrada acopladas. Em vez
de decidir separadamente sobre o que esquecer e sobre o que devemos
adicionar novas informações, juntamos essas decisões. Só nos
esquecemos quando entraremos em algo em seu lugar. Nós apenas
inserimos novos valores no estado quando esquecemos algo mais
antigo.

Uma variação ligeiramente mais dramática no LSTM é a Unidade


Recorrente Gated, ou GRU, introduzida por Cho, et al. (2014) . Ele
combina os portões de esquecer e de entrada em um único "portão de
atualização". Ele também mescla o estado da célula e o estado oculto, e
faz algumas outras mudanças. O modelo resultante é mais simples do
que os modelos LSTM padrão e tem crescido cada vez mais popular.
Estas são apenas algumas das variantes LSTM mais notáveis. Há muitos
outros, como Depth Gated RNNs por Yao, et al. (2015) . Há também uma
abordagem completamente diferente para abordar dependências de
longo prazo, como as RNN Clockwork by Koutnik, et al. (2014) .
Qual dessas variantes é melhor? As diferenças são importantes? Greff, et
al. (2015) fazem uma boa comparação de variantes populares, achando
que elas são quase as mesmas. Jozefowicz, et al. (2015) testaram mais
de dez mil arquiteturas RNN, encontrando algumas que funcionaram
melhor do que LSTMs em determinadas tarefas.

Conclusão
Anteriormente, mencionei os resultados notáveis que as pessoas estão
conseguindo com RNNs. Essencialmente, todos estes são alcançados
usando LSTMs. Eles realmente funcionam muito melhor para a maioria
das tarefas!
Escrito como um conjunto de equações, os LSTMs parecem bastante
intimidantes. Felizmente, caminhar através deles passo a passo neste
ensaio os tornou um pouco mais acessíveis.
LSTMs foram um grande passo no que podemos realizar com RNNs. É
natural admirar: há outro grande passo? Uma opinião comum entre os
pesquisadores é: "Sim! Há um próximo passo e é a atenção! "A idéia é
deixar cada passo de uma RNN escolher informações para analisar a
partir de uma coleção maior de informações. Por exemplo, se você
estiver usando uma RNN para criar uma legenda descrevendo uma
imagem, pode escolher uma parte da imagem a ser observada para
cada palavra que ela saia. Na verdade, Xu, et al. (2015) faça exatamente
isso - pode ser um divertido ponto de partida se quiser explorar a
atenção! Houve uma série de resultados realmente emocionantes
usando a atenção, e parece que muito mais estão ao virar da esquina ...
A atenção não é o único fio emocionante na pesquisa da RNN. Por
exemplo, Grade LSTMs por Kalchbrenner, et al. (2015) parecem
extremamente promissores. Trabalhe usando RNNs em modelos
generativos - como Gregor, et al. (2015) , Chung, et al. (2015) , ou Bayer
& Osendorfer (2015) - também parece muito interessante. Os últimos
anos têm sido um momento emocionante para redes neuronais
recorrentes, e os próximos prometem apenas ser mais!

Reconhecimentos
Agradeço a várias pessoas por me ajudar a entender melhor os LSTMs,
comentando as visualizações e fornecendo comentários sobre esta
publicação.
Agradeço aos meus colegas do Google os seus comentários úteis,
especialmente Oriol Vinyals , Greg Corrado , Jon Shlens , Luke Vilnis e
Ilya Sutskever . Agradeço também a muitos outros amigos e colegas por
terem tido tempo para me ajudar, incluindo Dario Amodei e Jacob
Steinhardt . Estou especialmente agradecido com Kyunghyun Cho por
uma correspondência extremamente pensativa sobre meus diagramas.
Antes desta publicação, pratiquei explicar LSTMs durante duas séries de
seminários que ensinei em redes neurais. Obrigado a todos os que
participaram daqueles por sua paciência comigo e por seus comentários.