Marcelo Finger
Alan Barzilay

RNN's

Parte 03: Modelos Sequência para Sequência

Conteúdos

  1. Recorrência Neural
  2. Treinamento Recorrente
  3. Modelos Sequência pra Sequência
  4. Problemas que Advem da Recorrência
  5. Soluções para Redes Profundas

Modelo Sequence-to-Sequence

Seq2Seq

Diversas tarefas de PLN lidam com sequências:

  • Tradução (Machine Translation)

  • Responder perguntas (Q&A)

  • Reconhecimento de fala (Speech Recognition): tradução de áudio para texto

Seq2Seq

RNN’s são capazes não somente de processar sequências como também de gerar sequências.

 

Uma arquitetura popular para tarefas Seq2Seq é a arquitetura Encoder Decoder.

Encoder Decoder

Redes Encoder Decoder possuem 2 partes:

  • Uma RNN chamada encoder que recebe uma sequência de tamanho qualquer e gera uma codificação: um vetor C de tamanho fixo.

  • Uma RNN chamada decoder que recebe o vetor C e gera uma sequência de tamanho qualquer, auto-regressivamente

Encoder Decoder

Redes Encoder Decoder possuem 2 partes:

  • Uma RNN chamada encoder que recebe uma sequência de tamanho qualquer e gera uma codificação: um vetor C de tamanho fixo.

  • Uma RNN chamada decoder que recebe o vetor C e gera uma sequência de tamanho qualquer.

Encoder Decoder

O decoder recebe o último token gerado até prever um token especial <eos> que representa o fim de uma frase.

Possibilita a geração de um modelo neural de linguagem

Auto-Alimentação do Decoder

h_{t} = f(h_{t-1}, x_t)
p(x_{t,i} = 1| x_{t-1}, . . . , x_1) = \frac{e^{w_i h_t}}{\sum^K_{j=1} e^{w_{j} h_t}}
p(x) = \prod^T_{t=1} p(x_t|x_{t-1}, . . . , x_1)

Encoder: uma rede recorrente

h_t = f(h_{t-1}, y_{t-1}, c)
P(y_t|y_{t-1}, y_{t-2}, . . . , y_1,c) = g(h_t,y_{t-1}, c)
\mathbf{\hat{y}} = \arg \max_y \sum^N_{n=1} \log P(y_n|y_{n-1},\ldots, y_1,\mathbf{x})

Decoder:  rede recorrente + c

Multiplicidade de Inputs e Outputs

\(T_x \neq T_y\) (Encoder-Decoder)

\(T_x=T_y\)

Ainda podemos adicionar camadas extras

Imagem de um botão estilizado de volta para pagina inicial