Perceptrón (II)
IA. Modelos y paradigmas. Machine Learning
Damos continuidad aquí a la entrada precedente. Una vez expuesta en ella el esquema de la arquitectura del perceptrón, vamos a desarrollar la forma en que se concreta cada una de sus partes. Empezaremos por cómo obtenemos z a partir de X₁ y X₂; de dónde procede esa operación, por qué se define del modo en que se define y cuál es el efecto esperado.
Cuando Rosenblatt ideo el perceptrón planteó como primer elemento de su arquitectura la operación siguiente: z=(X1*w1) + (X2*w2) + b. La elección de esta operación no fue casual. El perceptrón se desarrolla dentro de una tradición que buscaba construir modelos matemáticos simplificados de la actividad neuronal, iniciada por McCulloch y Pitts y desarrollada posteriormente por Rosenblatt. En este planteamiento, una unidad recibe diferentes señales, las integra y determina su activación a partir del resultado. Rosenblatt incorpora a esta estructura la posibilidad de modificar los pesos de las conexiones mediante aprendizaje.
Esta aproximación permitió convertir una determinada hipótesis sobre el procesamiento neuronal en un modelo matemático susceptible de aprendizaje, pero también implicó una considerable simplificación de la actividad de una neurona biológica. Conviene, por tanto, entender el perceptrón como un modelo computacional inspirado en la neurona, y no como una representación de su funcionamiento biológico.
En nuestro caso, la operación que integra las entradas puede expresarse como una suma ponderada: z=(X1*w1) + (X2*w2) + b, pero los dos términos que aparecen en esta expresión corresponden a las dos variables de entrada de la tabla AND. La formulación matemática del perceptrón permite, no obstante, ser ampliada a tantas entradas como requiera el problema: z=i=1∑nXiwi+b. Por tanto, AND determina nuestro ejemplo, no la estructura general del perceptrón. Las entradas tampoco tienen por qué ser necesariamente variables binarias: lo que importa para esta operación es que puedan representarse numéricamente y participar en la suma ponderada.
La utilización de pesos en la operación responde a una necesidad básica: las distintas entradas no tienen por qué ejercer la misma influencia sobre el resultado. Cada wᵢ permite ponderar la contribución de su correspondiente entrada Xᵢ, incluso en sentido positivo o negativo. El término bias (b) cumple una función diferente: permite desplazar el resultado de la suma ponderada y ajustar el nivel a partir del cual las entradas pueden conducir a una determinada respuesta. Ambos son, por tanto, parámetros de la función que el perceptrón deberá ajustar mediante aprendizaje y que veremos más adelante. De momento, nos interesa dejar clara su función en la formulación de esta suma ponderada.
Concretando lo anterior en el primer registro de nuestra colección de datos, la fórmula anterior modifica la composición de la tabla al implicar la creación de espacios (columnas) para la ubicación de los pesos y del resultado de la suma ponderada, lo que nos obliga a reformular la original en la hoja de Calc que hemos elegido como soporte del siguiente modo: De la tabla original...
... pasamos a...
| X₀ |
X₁ |
X₂ |
w₀ (b) |
w₁ |
w₂ |
z |
y |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Como punto de partida debemos entender que el sumatorio original (X1*w1) + (X2*w2) + b es ahora equivalente a (x0*w0) + (X1*w1) + (X2*w2) (1). Ello se debe a la introducción de la variable X₀ y la reformulación o equivalencia de b como w₀. Ambas transformaciones obedecen al interés por facilitar la expresión de la operación (de la suma ponderada) como el producto escalar de vectores (2). Pero para que la operación X₀*w₀ sea siempre igual a w₀, esto es, a b,que es como debe ser según se deduce de la equivalencia entre las dos fórmulas de la suma ponderada, X₀ debe tener un valor constante e igual a 1 (3).
Se debe observar, además, que estamos manteniendo el valor de la etiqueta (y) diferenciado de z, que resulta de la suma ponderada. Esto implica que no existe equivalencia entre el resultado de esa operación y el resultado esperado y (la etiqueta), debido a que todavía falta aplicar una segunda función que convierta el valor z en un resultado comparable con y, al que llamaremos y'. Será entonces y' el que podamos comparar con el valor esperado y. Esta función es la llamada función escalón.
La función escalón convierte el resultado cuantitativo z, obtenido mediante la suma ponderada, en una salida binaria y'. Para ello, evalúa una condición lógica que, en términos de programación, se puede expresarse mediante una estructura if: if z >= 0 then y' = 1 else y' = 0.
A nivel operativo, en cuanto a su expresión en nuestra hoja de cálculo, estas operaciones obligan de nuevo a modificar la estructura de nuestra tabla. Ahora..
| X₀ |
X₁ |
X₂ |
w₀ (b) |
w₁ |
w₂ |
z |
y' |
y |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
... entendiendo que en cada una de las celdas situadas bajo el encabezado y' de nuestra hoja Calc está la función built-in equivalente =SI(D2>=0;1;0)
Una vez obtenida la salida y' mediante la función escalón, ya podemos compararla con el valor esperado y, es decir, con la etiqueta de cada observación. Esta comparación permite determinar si la respuesta obtenida (y') coincide con la esperada (y), cuestión que resolvemos mediante una simple resta (y-y'), cuyo resultado es 0, si se produce tal coincidencia (concordancia) o diferente de 0 en caso contrario (divergencia).
En términos de nuestro soporte, esto implica que deberemos añadir una nueva columna donde quede recogido el resultado de esta resta...
| X₀ |
X₁ |
X₂ |
w₀ (b) |
w₁ |
w₂ |
z |
y' |
y |
y-y' |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
... ubicándose la fórmula correspondiente a y-y' en cada una de las celdas que se sitúan en la columna encabezada por la expresión y-y'. En nuestro caso, como valor primero obtenemos que y-y'= 0, lo que implica que el resultado es el esperado.
Cuando se da esta circunstancia, y-y'=0, no es necesario modificar los pesos, ya que los parámetros actuales han producido la respuesta correcta. Traducimos esto en que no es necesario activar el mecanismo de aprendizaje.
Esta situación puede repetirse con la entrada siguiente y con otras posteriores, pero no podemos concluir por ello que el aprendizaje haya finalizado. Para comprobarlo, debemos completar una época, que consiste en procesar una vez todos los ejemplos que forman parte de los datos de entrenamiento. En el caso de AND, por ejemplo, una época comprende las cuatro combinaciones posibles de x1 y x2. Al finalizarla podemos comprobar si se han producido errores y, en función de ello, determinar si el proceso de aprendizaje ha convergido.
Tenemos, por tanto, identificado que el llamado "aprendizaje" algorítmicamente requiere ser concretado dentro de una estructura condicional if, que consta necesarimente de dos términos; el primero de ellos implica la condición y-y'=0 y se concreta como respuesta como que los valores siguientes para la matriz de pesos wi, son los mismos que los precedentes. Dicho de otro modo, para nuestro ejemplo actual y siendo r2 el registro que sigue al precedente r1...
IF (y - y') = 0 THEN
w0(r2) = w0(r1)
w1(r2) = w1(r1)
w2(r2) = w2(r1)
ELSE
En términos de concreción en nuetro soporte Calc necesitamos añadir tres nuevas columnas, una para cada nuevo valor wi' y establecer mediante asignación de contenido el valor de las originales celdas de las columnas wi la relación entre estas celdas y las que contienen los valores wi'. Cada celda wi' deberá contener la fórmula built-in que expresamos antes, una vez esté plenamente desarrollada (que no es ahora el caso).
A pesar de ello, por ir avanzando, implementaremos la nueva modificación de nuestro soporte calc para dar cabida a la estructura que será plenamente funcional en breve. Observese que los nuevos valores de los pesos (incluido w0 o bias se identifican como wi', aunque su sóla ubicación diferenciada de los wi operativos lo hace innecesario.
| X₀ |
X₁ |
X₂ |
w₀ (b) |
w₁ |
w₂ |
z |
y' |
y |
y-y' |
w₀' |
w₁' |
w₂' |
| 1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
| 1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
Y no lo es porque aun nos falta por saber cómo se concreta el procedimiento de aprendizaje del perceptrón cuando no existe coincidencia entre y e y', dicho de otro modo, cuando es necesario activar el procedimiento de modificación de los valores que son modificables (los pesos y el bias).
Obsérvese también que en la nueva reformulación de la tabla hemos incluído lo que sería el inicio del segundo registro, incluyendo los valores conocidos de sus Xi, pero también los valores Wi que derivan, por asociación de los precedentes Wi' del registro que precede. En este caso, esos valores Wi se generan automáticamente mediante copia o mediante asociación, tomando, por ejemplo, W0(r2) su valor del contenido de la celda W0'(r1) (4).
Aun tenemos pendiente explicar como se expresa la regla de aprendizaje del perceptrón cuando no se produce la igualdad entre y e y', esto es, cómo se concrea la segunda rama (Else) del condicional anterior.
IF (y - y') = 0 THEN
w0(siguiente) = w0(actual)
w1(siguiente) = w1(actual)
w2(siguiente) = w2(actual)
ELSE
w0(siguiente) = w0(actual) + η * (y - y') * X0
w1(siguiente) = w1(actual) + η * (y - y') * X1
w2(siguiente) = w2(actual) + η * (y - y') * X2
BORRADOR
: w_i^{nuevo}=w_i^{actual}+\eta(y-y')X_i, donde eta representa la tasa de aprendizaje. La corrección no consiste, por tanto, en sustituir directamente un peso por otro valor arbitrario, sino en incrementar o reducir cada peso en función del error cometido y de la correspondiente entrada X_i. De este modo, la experiencia obtenida con cada observación modifica los parámetros que determinarán las respuestas ante las siguientes.
Es importante advertir que este proceso se realiza de manera iterativa. El perceptrón toma una observación, calcula z, obtiene y', compara y' con y y, si existe divergencia, ajusta sus pesos. A continuación procesa nuevas observaciones utilizando los pesos ya modificados. El aprendizaje consiste precisamente en esta sucesión de cálculo, comparación y ajuste, mediante la cual los pesos van adaptándose a los ejemplos utilizados para el entrenamiento.
En consecuencia, la coincidencia entre y' e y no significa que el proceso de aprendizaje haya terminado necesariamente. Significa únicamente que, para esa observación concreta, los pesos actuales han producido la respuesta correcta. Para considerar que el perceptrón ha aprendido el patrón presente en el conjunto de entrenamiento, será necesario comprobar su comportamiento a lo largo de una época, es decir, durante un recorrido completo por el conjunto de ejemplos, y repetir el proceso, si es necesario, hasta alcanzar el criterio de convergencia establecido.
NOTAS
1 Que es la fórmula que contiene la celda situada debajo de la b>cabecera z
2 Esta reformulación permite expresar la suma ponderada como un producto escalar, proporcionando una formulación matemática compacta y general que no depende del número de entradas y que facilita tanto su implementación computacional como la formulación del mecanismo de aprendizaje.
3 Estamos hablando de la propiedad del elemento neutro de la multiplicación. El 1 es el elemento neutro multiplicativo, porque cualquier número multiplicado por 1 permanece inalterado.
4 Realmente este procedimiento de asociación que genera los nuevos valores Wi resulta más difícil de explicar que de ejecutar. Analizar el funcionamiento del soporte Calc te va a permitir comprender la sencillez con la que se realiza con mucha mayor facilidad que lo que esta enrevesada explicación da a entender.