Lección 3 del curso PyTorch Nivel Intermedio.
En la lección anterior vimos cómo construir una Red Convolucional para realizar una tarea de regresión: la detección de objetos en imágenes.
En esta y en la próxima lección veremos cómo usar PyTorch para construir Redes LSTM, especializadas en el procesamiento de secuencias (como lo son el texto o las Series de Tiempo), para realizar tareas de clasificación y regresión.
Y específicamente en esta lección veremos cómo crear, entrenar, validar y poner a prueba una Red LSTM para llevar a cabo el análisis (o clasificación) de sentimientos, una tarea muy común en el procesamiento del lenguaje natural.
Teniendo en cuenta esto, recomiendo dar un repaso a varios conceptos esenciales sobre las Redes LSTM y que explico en detalle en el curso Fundamentos de Deep Learning con Python. Específicamente, sugiero revisar las lecciones:
- Las Redes LSTM (parte 1): las compuertas y la celda de memoria candidata y
- Las Redes LSTM (parte 2): actualización de la celda de memoria y del estado oculto
en donde explico en detalle el funcionamiento interno de estas redes.
Así que, después de estas aclaraciones, ya estamos listos para comenzar esta lección. Veamos entonces el problema a resolver y las características del set de datos que usaremos en esta práctica:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, el objetivo de este ejercicio es construir una Red LSTM capaz de predecir un sentimiento asociado a un «review» de una película. Este «review» es simplemente un texto en Español y el sentimiento asociado puede ser positivo o negativo.
Al hacer una exploración inicial del set de datos vemos que, como parte del pre-procesamiento, se requiere realizar una normalización del texto, así como ajustar la extensión de los diferentes «reviews» (para que todos tengan el mismo número de palabras) y posteriormente codificar numéricamente cada palabra. Veamos entonces cómo implementar todas estas etapas junto con la creación del Dataset de PyTorch:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Muy bien. Tras la normalización de los «reviews» contamos con secuencias de texto que no tendrán signos de puntuación u otros símbolos diferentes de los caracteres convencionales, además de representar todas las secuencias con minúsculas.
Además, hemos implementado funciones para realizar el ajuste de las secuencias a un tamaño fijo de 300 palabras, después de lo cual hemos codificado numéricamente cada palabra.
Con lo anterior hemos creado el Dataset de PyTorch, así que ya estamos listos para crear, entrenar, validar y poner a prueba la Red LSTM. Veamos entonces esta última parte de la implementación:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¡Perfecto! Acabamos de ver cómo interconectar capas como el «embedding», la celda LSTM y la capa de salida (una pequeña Red Neuronal) para crear nuestro clasificador de sentimientos.
Y al igual que vimos en las lecciones anteriores, la mayor parte del desarrollo corresponde al pre-procesamiento de los datos para poder entrenar adecuadamente el modelo implementado. Al final, aunque el desempeño obtenido no superó el 70% de exactitud, este modelo podría ser mejorado si logramos recolectar más datos para realizar el entrenamiento.
Así que con esto hemos visto una primera implementación de Redes LSTM en PyTorch para una tarea de clasificación. En la próxima lección nos enfocaremos en este tipo de redes pero para una tarea de regresión, así que veremos cómo crear una Red LSTM para generar pronósticos sobre Series de Tiempo.
Todas las lecciones del curso PyTorch Nivel Intermedio
