Sesión 06 de Julio (Master class)¶
Redes recurrentes¶
Recursos¶
https://colab.research.google.com/drive/16-HF5hQqQw32KIld8i4VG1HwqTPg-GK6?usp=sharing
Definiciones¶
¿Que son?
- Son redes en las cuales la salida es una entrada adicional
- Para se entrenamiento podemos considerar un secuencia (acordeon) a lo largo del tiempo

En general la salida en términos del tiempo es:
En caso de capas se asume la capa como una sola neurona que recibe un vector de entrada y emite un vector de salida
¿Que redes recurrentes secuencia a secuencia?
Estas redes reciben un dato histórico, ejemplo, temperaturas de los ultimos 5 dias y se trata de predecir hacia el futuro (dias hacia adelante)
SimpleRNN(1, input_shape = [None,1], return_sequences=True)
¿Como es la salida?
array([[ 0.01594417],
[ 0.02717144],
[ 0.03144057],
[ 0.02980227],
[ 0.02544099],
[ 0.01712647],
[ 0.00630384],
....
¿Que son redes recurrentes de secuencia a vector?
Estas redes reciben una secuencia de datos y solo tomamos en cuenta la ultima salida (clasificacion), por ejemplo, en una analisis de sentimiento solo nos interesa saber si el texto es positivo o negativo.
SimpleRNN(1, input_shape = [None,1])
#Solo tomamos la última secuencia
Solo tendriamos una salida
array([-0.48530778], dtype=float32)
Procesamiento de lenguaje natural¶
Recursos¶
https://colab.research.google.com/drive/1ISGlD1UVncSJWMA3UXVPegRgNp48xUMh?usp=sharing
Definiciones¶
¿Que es el procesamiento de lenguaje natural?
El entendimiento del lenguaje a través de los algoritmos, en nuestro caso es la intesección entre el Deep Learning y la teoría de procesamiento de lenguaje natural.
La idea es comprender la semántica (significado) de los textos
Tokens
Los tokens son la unidad básica de un texto (letras, palabras, conjuntos de palabras)
import nltk
from nltk.tokenize import word_tokenize
nltk.download('punkt')
oracion = "....."
tokens = word_tokenize(oracion)
Estrategias de procesamiento
- Debemos transformarlo en una representación numérica
- Usar onehotencoding tiene el problema de muchos columnas y que no es posible mapearlo
- Para esto usamos embeddings a traves de Word2Vec
from gensim.models import Word2Vec
modelo = Word2Vec([tokens],vector_size=8,window=3, min_count=1, workers=4)
vectores = modelo.wv
Tomar en cuenta
Se debe hacer un preprocesamiento
- Normalizar los textos (minusculas o mayusculas) casa = Casa = CASA
- Eliminar caracteres no ASCII
- Eliminar stepwords (palabras muy usadas) conectores, pronombres, etc que no aportar valor al texto Yo soy un medico —> medico
- Extraer las raices (stemming) jugar, jugando, jugo, jugaria, —> jug (raiz)
- Posteriormente se vectoriza: Word2Vec, TIDF, CountVectorizer
Modelos de lenguaje¶
¿Que son?
Se basan en la probabilidad de aparición de las palabras en las oraciones a medida que las construimos, estos modelos aprenden estos patrones que construyen un lenguaje humano como el Español: Sintaxis (como se escribe) Semantica (Significado)
LSTM
Las Long Short-Term Memory (LSTM) son un tipo especial de red neuronal recurrente (RNN) capaz de aprender dependencias a largo plazo. Fueron introducidas por Hochreiter y Schmidhuber en 1997 y han demostrado ser efectivas en una variedad de tareas de secuencia, como el reconocimiento de voz y la traducción automática. Las LSTM cuentan con una estructura interna llamada celda de memoria que puede mantener información a lo largo de muchas iteraciones, lo que les permite recordar información durante largos períodos de tiempo.
Glove
Es un modelo preentrenado por la universidad de Standford, se descarga y carga como un embedding
https://colab.research.google.com/drive/1agsPAGU9J_9CA-LkdjssdzyUp5w_eQgN?usp=sharing
from keras.layers import Embedding
embedding_layer = Embedding(
num_tokens,
embedding_dim,
trainable=False,
)
embedding_layer.build((1,))
embedding_layer.set_weights([embedding_matrix])
Otros modelos
Otros modelos
- BERT Clasificación y comprensión de textos
- GPT Generación de texto (Gemini, ChatGPT, etc)
Afinación
- Preplexidad: “Sorpresa” de un resultado no esperado, debe ser el minimo
- Precisión / Recall / f1-score que deben tender 1.
- BLEU (Bilingual Evaluation Understudy)
Otras estrategias
Fine Tunning y transfer learning: Utilizar un modelo preentrenado y conectarle capas para entrenamiento, ejemplo Embeddings (ya tiene los pesos calculados) En este caso solo nos preocupamos por los hiperparametros de las capas que vamos entrenar
Autoencoders¶
Recursos¶
https://colab.research.google.com/drive/1SSkHb3NNnGa-X2DpbSoJSBkeznGjArur?usp=sharing MNIST modificado
Definiciones¶
¿Que es?
Tiene dos capas
- Encoder: Transforma la entrada en el codigo (embedding)
- Decoder: Transforma el codigo en la salida (que deberia ser igual a la entrada)
Algunas caracteristicas
Autocoder se dice que es subcompleto porque las representaciones de los vectores (codigo) es menor que la entrada (comprensión) y el decoder (descomprime)
Cuando un autoencoder tiene varias capas ocultas se le conoce como AUTOENCODER APILADO
Ventajas
Reducción del tamaño de entrada¶
Pensemos en MNIST (28x28) 784, para entrenar un MLP necesitamos que la capa de entrada tenga 784 neuronas (Es mucho)
Encoder + MLP
Supongamos que la capa de codigo tiene tamaño 30, nuestro MLP recibe una entrada de 30, es decir necesitamos 30 neuronas en la capa de entrada, es una reducción significativa.
Tipos de encoder
- Densos Capaces de reconocer patrones en las imagenes a través del algoritmo MLP Faciles de ajustar los hiperametros
- Recurrentes Capaces de reconocer secuencias dentro de las imagenes (especialmente util) si las imagenes son una secuencia movimientos (Piensen ajedrez) Dependen de los datos (que representen secuencias)
- Convoluciones Permiten extraer caracteristicas de las imagenes a través de las capas convolucionales y los paddings, son mas potentes para tareas de CLASIFICACION Depende mucho de como se ajustan las capas convolucionales Depende de los hiperparametros (aveces son mas dificiles ajustar)
Consideraciones
- Capa de codigo debe ser estadisticamente independiente: Cada uno de sus valores REPRESENTA efectivamente una caracteristica de la imagen
- La capa de codigo debe ser lo suficientemente grande para mapear correctamente las imagenes. Si la capa de codigo es muy pequeña, los valores no van ser apropiados, y si es muy grande: hay dos problemas, costo entrenamiento se incrementa y lo segundo es que hay valores que no tienen ninguna utilidad [Largo cm, ancho cm, color, estilo] si agregamos colorRGB este dato es inutil Tener cuidado con este tamaño, este tamaño se obtiene por EXPERIENCIA