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
Analicemos ahora la fórmula del llamado "aprendizaje" generalizándola a partir de una de sus concreciones. Para W0, por ejemplo, tenemos que W0'= W0 + η * (y - y') * X0, luego podemos decir que Wi' = Wi + η * (y - y') * X0, siendo...
- Wi' el valor que adquirirá el peso en la siguiente etapa del cálculo de z
- Wi el valor precedente del peso. Obsérvese que es el único elemento de la fórmula que se suma al producto de los restantes
- η (eta) es una constante (es la misma en cada una de las expresiones y a lo largo del todo el entrenamiento) que introducimos en la fórmula y que identificamos como tasa de aprendizaje (learning rate), que determina el tamaño del ajuste cuando el perceptrón "se equivoca". Como constante no resulta del propio "aprendizaje", siendo introducida por el programador como parte del algoritmo. Como tal elemento requiere su espacio en nuestra configuración Calc, lo que nos obliga a realizar una última modificación de nuestra hoja, con la peculiaridad que implica su carácter de constante.
| 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 |
0,2 |
| 1 |
1 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
- (y - y') es, como ya sabemos, el resultado de la diferencia entre y e y' que, como vemos participa de nuevo en la arquitectura del preceptrón. Ahora determinando la dirección del producto η * (y - y') * Xi, esto es, del ajuste de los sesgos
- Finalmente, Xi es el valor que tiene la variable de entrada correspondiente al peso que estamos ajustando. Su participación en la fórmula hace que la corrección de cada peso tenga en cuenta la presencia y el valor de esa variable en el ejemplo que produjo el error. De este modo, no todos los pesos tienen necesariamente que modificarse en la misma medida: el ajuste de cada uno depende también del valor que tenía su correspondiente Xi.
Para finalizar, diremos que se considera lograda la convergencia cuando, tras aplicar el procedimiento de aprendizaje las veces que sea necesario (siempre en términos de épocas), persiste la igualdad y' = y para todos los registros de una época, lo que se traduce en que todos los Wi' = 0.
Los valores Wi que deberemos tomar como referencia para la fase de aplicación serán los correspondientes a W0, W1 y W2 del primer registro a partir del cual se mantiene la igualdad y' = y y, por tanto, la diferencia y − y' = 0 y los pesos permanecen inalterados. Estos serán los valores definitivos de los diferentes pesos, incluida la bias o W0 (5).
Documento. Desde este enlace puedes descargar el archivo Calc que contiene la versión heurístico y perceptrón del abordaje de AND.
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.
5 Debemos tener en cuenta que esa posición, el momento en que se produce la convergencia, va a depender de varios factores, incluyendo el tamaño de la variable que implementemos como tasa de aprendizaje. Ello obliga a adaptar el procedimiento de uso del perceptrón de nuestro soporte Calc a la realidad concreta que resulte del proceso de aprendizaje.