Imaginemos la siguiente situación: te encuentras laborando en una empresa en el área de análisis de mercado y te piden revisar en base a las reseñas de los clientes el éxito del producto insignia de la compañía: una chamarra de cuero. Cuando vas a revisar las reseñas te das cuenta que hay opiniones positivas con muy buena valoración (4/5 estrellas) y algunas opiniones negativas con valoraciones bajas (1/2 estrellas). Al ser miles de reseñas decides elaborar un software que registre las reseñas automáticamente en base al sentimiento de la opinión y a la valoración de estrellas para dar un reporte a tus jefes. Sin embargo, te topas con muchas reseñas del siguiente tipo:
“Excelente chamarra, es la ideal si quieres que nadie se te acerque” (2 estrellas)
“Me gustó tanto la chamarra que decidí regalársela al vagabundo de afuera de mi casa” (1 estrella)
Tu software que es capaz de detectar el sentimiento de la opinión y que toma en cuenta la valoración de estrellas entraría en confusión, ya que el sentimiento de las dos opiniones anteriores es positivo pero la valoración es baja. Tu software se estaría enfrentando a reseñas con ¡sarcasmo! la habilidad de saber cuando alguien esta siendo sarcástico es puramente humana ya que existen en nuestro cerebro algunas neuronas muy específicas ubicadas en la parte superior de nuestra materia gris que son las que se encargan de detectarlo, pero, al ser miles de reseñas, si tu quisieras detectar el sarcasmo de todas las reseñas te tomarías meses en darle un reporte a tus jefes, por lo que tuviste una idea. En todos tus años de experiencia habías oído hablar de una tecnología con un boom en los últimos años: Las Redes Neuronales, un modelo matemático capaz de emular al cerebro humano en actividades simples, por lo que esta tecnología es la principal candidata a ser la encargada de detectar el sarcasmo por ti. Esta red estaría compuesta de neuronas que serían las encargadas de procesar y darle flujo a la información.
Tomas manos a la obra y supones que debe haber alguna relación entre el sentimiento de la opinión y la valoración. Defines las siguientes cantidades:
Sentimiento -> {1, 0, -1}, 1 para sentimiento positivo, 0 para sentimiento neutral y -1 para sentimiento negativo.
Valoración -> [0, 5] puede tomar cualquier número entre 0 y 5, siendo 5 valoración máxima y 0 valoración mínima.
Sarcasmo -> [0, 1], puede tomar cualquier valor entre 0 y 1, siendo 1 para una seguridad de sarcasmo al 100% y 0 si no hay sarcasmo.
Tomamos una reseña con sentimiento positivo pero calificación baja, es decir, una reseña sarcástica. Construimos nuestra red neuronal de la siguiente forma:
Tenemos 3 capas, en la Input Layer establecemos los dos nodos en donde se almacenan los valores de la reseña. Posteriormente tenemos una Hidden Layer que almacenará los valores que determinarán si la reseña tiene o no sarcasmo. Como tomamos una reseña sarcástica esperamos que la Output Layer nos dé 1 como resultado.
Como primera aproximación asignamos pesos aleatorios como se observa en la siguiente imagen:
Para obtener los valores de la Hidden Layer sumamos los productos de los pesos:
Entonces nuestra red quedaría de la siguiente forma:
Ahora sumamos los productos de cada neurona de la Hidden Layer y sumamos.
En este caso hemos obtenido un valor de 0.97, sin embargo nos falta una operación por aplicar. Imaginemos que en lugar de 0.40 en la tercer neurona de la Hidden Layer tuvieramos 0.80, entonces el resultado nos daría 1.09, el hecho de que nos de un número mayor a 1 es un problema por lo que debemos aplicar una función que nos garantice que al aplicarla sobre cualquier número nos dé un resultado entre 0 y 1, a esta operación se le llama función de activación. La función sigmoide es la más utilizada en las redes neuronales por lo que aplicaremos esa. Entonces nos quedaría:
Ahora que hemos obtenido nuestro resultado final, toca entrenar a nuestra red hasta que el resultado nos dé exactamente 1, para ello, se varían los pesos hasta que se llega al número deseado, así, será capaz de detectar el sarcasmo en todas las reseñas de los clientes. A este entrenamiento se le denomina aprendizaje supervisado.
Existen otros dos tipos de métodos para entrenar nuestra red como lo son el aprendizaje no supervisado y el aprendizaje por refuerzo. El aprendizaje no supervisado se utiliza cuando no hay un conjunto de datos de ejemplo con respuestas conocidas. Por ejemplo, buscar un patrón oculto. En este caso, la agrupación, es decir, la división de un conjunto de elementos en grupos de acuerdo con algún patrón desconocido, se lleva a cabo en función de los conjuntos de datos existentes presentes. El aprendizaje por refuerzo se basa en la observación. La red neuronal toma una decisión observando su entorno. Si la observación es negativa, la red ajusta sus pesos para poder tomar una decisión requerida diferente la próxima vez.
Este ejemplo ha sido muy útil para comprender qué es una red neuronal, como funcionan y conocer una utilidad muy sencilla como lo es la detección del sarcasmo. Algunas otras aplicaciones son las siguientes:
- Detección de objetos, seguimiento y análisis de imagen/video a través de redes neuronales convolucionales: útil para la tecnología de vehículos autónomos y otras aplicaciones de visión por computadora.
- Procesamiento y traducción del lenguaje natural a través de redes neuronales recurrentes, específicamente variantes como redes de memoria a corto plazo y unidades recurrentes cerradas, útiles para el reconocimiento de voz y el análisis/traducción del lenguaje.
- Pronóstico y predicción de series temporales: útil para pronósticos meteorológicos, modelos de costos y mercados financieros.
A estas aplicaciones se les construye una red neuronal muy similar a la que hicimos, solo que se adecúan a la situación variando la estructura de entradas y salidas, el número de capas y neuronas ocultas, como se conectan las neuronas, el proceso de formación y la función de activación.