NLP
Redes neuronales recurrentes
(RNNs)
Dr. Rodrigo Cardenas Szigety
[Link]@[Link]
Facultad de Ingeniería Universidad de Buenos Aires
Programa de la materia
Clase 1: Introducción a NLP, Vectorización de documentos.
Clase 2: Preprocesamiento de texto, librerías de NLP, bots de información.
Clase 3: Word Embeddings, CBOW y SkipGRAM, entrenamiento de embeddings.
Clase 4: Redes recurrentes (RNN), problemas de secuencia y estimación de
próxima palabra.
Clase 5: Redes LSTM, análisis de sentimientos.
Clase 6: Modelos Seq2Seq, traductores y bots conversacionales.
Clase 7: Celdas con Attention. Transformers, BERT & ELMo, fine tuning.
Clase 8: Cierre del curso, NLP hoy y futuro, deploy.
*Unidades con desafíos a presentar al finalizar el curso.
*Último desafío y cierre del contenido práctico del curso.
Facultad de Ingeniería Universidad de Buenos Aires
2
Timeline
1990: Celda RNN básica (Elman)
1997: LSTM
2016: LSTMs se convierten en
SotA para traducción automática
Facultad de Ingeniería Universidad de Buenos Aires
3
Redes Neuronales Recurrentes (RNNs)
Es un tipo de neurona con un estado interno (o memoria) de manera que la
información del pasado influye en los resultados futuros.
Se utiliza principalmente para resolver problemas de secuencia, en
donde el valor anterior está relacionado con el valor futuro.
Permite construir modelos cuyos vectores de entrada o salida no posean
una dimensión fija.
Implementa modelos de lenguaje de la forma:
"Hoy el día está hermoso y despejado, se puede ver un hermoso cielo... azul”
Facultad de Ingeniería Universidad de Buenos Aires
4
Algunos problemas de secuencia
Bots Name entity Traducción de
Conversacionales recognition idiomas
Speech to text Generar música Completar una
Facultad de Ingeniería Universidad de Buenos Aires imagen 5
Celda RNN básica (Elman) LINK API KERAS
Forward (implementación de TF SimpleRNN)
ht = σ(Whh * ht-1 + Whx * x + bh)
yt zt = h t yt
ht-1 ht
ht
xt Salida general xt
zt = σ(Why * h t + b z)
Representación
Unidad básica
compacta
Facultad de Ingeniería Universidad de Buenos Aires
6
Propagación (ejemplo)
En este ejemplo conceptual
entra una palabra/letra y sale
otra
En estas redes de secuencia su
grafo de cómputo es en serie,
no es posible paralelizar, ya
que el estado futuro depende
del estado anterior.
Con cada salida se actualizan
los pesos Whh, Wxh y Why para
el próximo cómputo
Facultad de Ingeniería Universidad de Buenos Aires Misma celda RNN en diferentes instantes 7
Grafo de cómputo de una RNN y BPTT
(Backpropagation through time)
Hasta que no se complete la
secuencia que permite calcular
el loss no se actualizan los
pesos (W) de la/s celda/s
Facultad de Ingeniería Universidad de Buenos Aires
8
Forward & backward LINK BACKPROPAGATION NUMPY
Facultad de Ingeniería Universidad de Buenos Aires
9
Arquitecturas LINK
y y y y
RNN
RNN
RNN
RNN
RNN
RNN
x x x x x x
many-to-one many-to-many
Facultad de Ingeniería Universidad de Buenos Aires
10
Multi-layer RNN
Tal como se vio en los ejemplos se trata de apilar layers RNN en
donde la salida de una se traslada a la entrada de la siguiente
Facultad de Ingeniería Universidad de Buenos Aires
11
Problema de una RNN tradicional LINK
"Una RNN tradicional solo usa información del pasado y no de las futuras palabras
para predecir"
Ejemplo: Data una sentencia determinar si existe una entidad que
represente al nombre de una persona utilizando (name entity recognition)
Ejemplo 1:
“Hoy escuche que Victoria terminó su bot para NLP” → persona La
contextualización
de la palabra es
Ejemplo 2:
a futuro
“Hoy escuche que Victoria cambió de intendente” → ciudad
Facultad de Ingeniería Universidad de Buenos Aires
12
Bidirectional RNN (BRNN) BRNN PAPER API KERAS
“La palabra anterior y la palabra futura tienen impacto en la presente predicción”
y1 y2 y3
h23 h23 h21 h20
h10 h11 h12 h13
h1t = σ(Whh1 * h1t-1 + Whx1 * x + b1)
x1 x2 x3 h2t = σ(Whh2 * h2t+1 + Whx2 * x + b2)
Las dos salidas pueden concatenarse, sumarse o
Facultad de Ingeniería Universidad de Buenos Aires promediarse 13
many-to-one
"Dada una sentencia o oración de entrada de tamaño fijo, el sistema arroja un
único resultado que la representa”.
Este tipo de estructuras se utilizan para determinar cuál es
y la siguiente palabra o elemento en la secuencia o para
clasificación (sentiment analysis).
RNN
RNN
RNN
x x x Predicción de Análisis de
próxima palabra sentimientos
many-to-one
Facultad de Ingeniería Universidad de Buenos Aires
14
many-to-one
Link al Colab
LINK
Facultad de Ingeniería Universidad de Buenos Aires
15
Predicción de texto/modelos de lenguaje
Se utilizará many-to-one, por lo que hay que seleccionar la
dimensión de la sentencia de entrada y dividir el texto en grupos:
Sentencia
Tokens
Predicción de
próxima palabra
Vectores de entrada de 4 tokens
Facultad de Ingeniería Universidad de Buenos Aires
16
Generación de texto en modelos de lenguaje:
Beam search
num_beams=2
Paso 1:
“The nice” → 0.5
“The dog” → 0.4
Paso 2:
“The nice woman” → 0.5x0.4 = 0.2
“The dog has” → 0.4x0.9 = 0.36
Siempre encuentra una secuencia
con prob >= que Greedy Search
Es un método heurístico. No
asegura que encontrar la más
probable. (“The car drives”)
Facultad de Ingeniería Universidad de Buenos Aires
Generación de texto en modelos de lenguaje:
Muestreo con temperatura
Temperatura = 0.5 Temperatura = 1 Temperatura = 10
Facultad de Ingeniería Universidad de Buenos Aires
Text prediction
Link al Colab
LINK
Facultad de Ingeniería Universidad de Buenos Aires
19
Desafio
Utilizar otro dataset y
poner en práctica
la generación de
secuencias con las
estrategias presentadas.
Facultad de Ingeniería Universidad de Buenos Aires
20