Redes neuronales recurrentes

Aprendizaje profundo intermedio con PyTorch

Michal Oleszak

Machine Learning Engineer

neurona recurrente

  • Redes de alimentación directa
  • RNN: tienen conexiones que apuntan hacia atrás.
  • Neurona recurrente:
    • Entrada
    • Salida y.
    • Estado oculto h
  • en PyTorch:nn.RNN()

Esquema de una neurona RNN simple: la neurona que aplica pesos y activación recibe la entrada x y produce las salidas y y h, donde h se retroalimenta a sí misma.

Aprendizaje profundo intermedio con PyTorch

Desenrollando una neurona recurrente a lo largo del tiempo

Esquema de la neurona recurrente. En el paso de tiempo 0, recibe las entradas h0 y x0, y produce las salidas y0 y h1.

Aprendizaje profundo intermedio con PyTorch

Desenrollando una neurona recurrente a lo largo del tiempo

Esquema de la neurona recurrente. En el paso de tiempo 1, recibe las entradas h1 y x1, y produce la salida y1.

Aprendizaje profundo intermedio con PyTorch

Desenrollando una neurona recurrente a lo largo del tiempo

Esquema de la neurona recurrente. En el paso de tiempo 2, recibe las entradas h2 y x2, y produce las salidas y2 y h3.

Aprendizaje profundo intermedio con PyTorch

RNN profundas

Esquema de dos neuronas recurrentes que forman una capa. En cada paso temporal, las salidas y se pasan a otra neurona.

Aprendizaje profundo intermedio con PyTorch

Arquitectura secuencia a secuencia

  • Pasa la secuencia como entrada, utiliza toda la secuencia de salida.
  • Ejemplo: Reconocimiento de voz en tiempo real

Esquema arquitectónico: en cada paso temporal, hay una nueva entrada, mientras que todas las salidas y producidas en cada paso temporal se marcan en verde como utilizadas,

Aprendizaje profundo intermedio con PyTorch

Arquitectura secuencia a vector

  • Pasa la secuencia como entrada, utiliza solo la última salida.
  • Ejemplo: Clasificación de temas de texto

Esquema arquitectónico: en cada paso temporal, hay una nueva entrada, mientras que solo la última salida y del último paso temporal se marca en verde como utilizada,

Aprendizaje profundo intermedio con PyTorch

Arquitectura vectorial a secuencia

  • Pasa una sola entrada, utiliza toda la secuencia de salida
  • Ejemplo: Generación de texto

Esquema arquitectónico: solo hay una entrada, en el primer paso temporal, mientras que todas las salidas y producidas en cada paso temporal se marcan en verde como utilizadas,

Aprendizaje profundo intermedio con PyTorch

Arquitectura codificador-decodificador

  • Pasa toda la secuencia de entrada y solo entonces comienza a utilizar la secuencia de salida.
  • Ejemplo: Traducción automática

Esquema arquitectural: en la primera parte (codificador), las entradas se reciben en cada intervalo de tiempo, pero las salidas se ignoran; en la segunda parte (decodificador), no se reciben más entradas, pero se utilizan todas las salidas de cada intervalo de tiempo.

Aprendizaje profundo intermedio con PyTorch

RNN en PyTorch

class Net(nn.Module):
    def __init__(self):
        super().__init__()

self.rnn = nn.RNN( input_size=1, hidden_size=32, num_layers=2, batch_first=True, )
self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32)
out, _ = self.rnn(x, h0)
out = self.fc(out[:, -1, :]) return out
  • Define la clase de modelo con un método « __init__ ».
  • Define «capa recurrente». self.rnn
  • Define «capa lineal». fc
  • En forward(), inicializa el primer estado oculto a cero.
  • Pasa la entrada y el primer estado oculto a través de la capa RNN.
  • Selecciona la última salida de RNN y pásala a través de la capa lineal.
Aprendizaje profundo intermedio con PyTorch

¡Vamos a practicar!

Aprendizaje profundo intermedio con PyTorch

Preparing Video For Download...