El problema XOR en las redes neuronales.
Introducción
Este es el primero de una serie de posts que exploran las implementaciones de redes neuronales artificiales (RNA). El propósito del artículo es ayudar al lector a intuir los conceptos básicos antes de pasar a las implementaciones algorítmicas que vendrán a continuación.
No se asumen conocimientos previos, aunque, en aras de la brevedad, no se explica toda la terminología en el artículo. En su lugar, se proporcionan hipervínculos a Wikipedia y a otras fuentes en las que puede ser necesaria una lectura adicional.
Este es un gran tema. Las RNA tienen una gran variedad de aplicaciones y pueden utilizarse para el aprendizaje supervisado, no supervisado, semisupervisado y de refuerzo. Eso antes de entrar en las arquitecturas de problemas específicos dentro de esas categorías. Pero hay que empezar por algún sitio, así que para reducir el alcance, empezaremos con la aplicación de las RNA a un problema sencillo.
El problema XOr
El problema XOr, o «exclusivo o», es un problema clásico en la investigación de las RNA. Es el problema de utilizar una red neuronal para predecir las salidas de las puertas lógicas XOr dadas dos entradas binarias. Una función XOr debe devolver un valor verdadero si las dos entradas no son iguales y un valor falso si son iguales. Todas las entradas posibles y las salidas predichas se muestran en la figura 1.
XOr es un problema de clasificación y uno para el que las salidas esperadas se conocen de antemano. Por lo tanto, es apropiado utilizar un enfoque de aprendizaje supervisado.
En la superficie, XOr parece ser un problema muy simple, sin embargo, Minksy y Papert (1969) demostraron que éste era un gran problema para las arquitecturas de redes neuronales de la década de 1960, conocidas como perceptrones.
Perceptrones
Como todas las RNA, el perceptrón está compuesto por una red de unidades, que son análogas a las neuronas biológicas. Una unidad puede recibir una entrada de otras unidades. Al hacerlo, toma la suma de todos los valores recibidos y decide si va a transmitir una señal a otras unidades a las que está conectada. Esto se llama activación. La función de activación utiliza un medio u otro para reducir la suma de los valores de entrada a un 1 o a un 0 (o a un valor muy cercano a un 1 o a un 0) para representar la activación o la falta de ella. Otra forma de unidad, conocida como unidad de sesgo, siempre se activa, normalmente enviando un 1 codificado a todas las unidades a las que está conectada.
Los perceptrones incluyen una sola capa de unidades de entrada -incluyendo una unidad de sesgo- y una sola unidad de salida (ver figura 2). Aquí una unidad de sesgo se representa con un círculo discontinuo, mientras que las otras unidades se muestran como círculos azules. Hay dos unidades de entrada no sesgadas que representan los dos valores binarios de entrada para XOr. Se puede incluir cualquier número de unidades de entrada.
El perceptrón es un tipo de red feed-forward, lo que significa que el proceso de generación de una salida -conocido como propagación hacia adelante- fluye en una dirección desde la capa de entrada a la capa de salida. No hay conexiones entre las unidades de la capa de entrada. En su lugar, todas las unidades de la capa de entrada están conectadas directamente a la unidad de salida.
Una explicación simplificada del proceso de propagación hacia adelante es que los valores de entrada X1 y X2, junto con el valor de sesgo de 1, se multiplican por sus respectivos pesos W0..W2, y se analizan en la unidad de salida. La unidad de salida toma la suma de esos valores y emplea una función de activación -típicamente la función escalonada de Heavside- para convertir el valor resultante en un 0 o un 1, clasificando así los valores de entrada como 0 o 1.
Es el ajuste de las variables de peso lo que da al autor de la red el control sobre el proceso de conversión de los valores de entrada en un valor de salida. Son los pesos los que determinan dónde se dibuja la línea de clasificación, la línea que separa los puntos de datos en grupos de clasificación. Si a todos los puntos de datos de un lado de una línea de clasificación se les asigna la clase 0, todos los demás se clasifican como 1.
Una limitación de esta arquitectura es que sólo es capaz de separar los puntos de datos con una sola línea. Esto es desafortunado porque las entradas XOr no son linealmente separables. Esto es particularmente visible si usted traza los valores de entrada XOr a un gráfico. Como se muestra en la figura 3, no hay manera de separar las predicciones 1 y 0 con una sola línea de clasificación.
Perceptrones multicapa
La solución a este problema es ampliar más allá de la arquitectura de una sola capa mediante la adición de una capa adicional de unidades sin ningún acceso directo al mundo exterior, conocida como una capa oculta. Este tipo de arquitectura -que se muestra en la figura 4- es otra red de avance conocida como perceptrón multicapa (MLP).