25  Regla de aprendizaje del perceptrón

Entre los distintos tipos de aprendizaje, el aprendizaje supervisado es el enfoque más directo para conocer los mecanismos de aprendizaje. En dicho aprendizaje, se tiene para cada entrada, o ejemplo disponible, \(X\) su correspondiente valor objetivo, \(y\). Por lo tanto, el entrenamiento consiste en obligar a que las predicciones del modelo, \(\hat{y} = \Phi_\theta (X)\), sean similares al valor objetivo, es decir, $$

> |y - |,

$$

para un \(\epsilon\) cercano a cero.

A lo largo de la historia, se han desarrollado diversas metodologías para determinar los parámetros, \(\theta\), que permiten satisfacer la condición establecida en la ecuación (#eq:epsilon_prediccion). En el caso del perceptrón, una de las arquitecturas más simples y fundamentales basadas en umbrales lineales, es posible encontrar una solución mediante la aplicación de la regla de aprendizaje propuesta por Rosenblatt en su trabajo seminal (Rosenblatt 1962).

La regla se compone de dos pasos. El primero, inicialización, establece un valor arbitrario para los pesos. Para no favorecer ciertos valores usualmente se una una distribución binaria, es decir, $$

W^0 = [r_1, , r_n] | r_i (a,b)$$

El segundo paso se repite de forma iterativa hasta que se converge a un cierto grado de precisión. Observe la siguiente definición.

Definición

Se calcula al cambiar los pesos anteriores con el producto de dirección de cambio y las entradas, es decir, $$

W^{t+1} = W^{t} + (y - ) X,

$$

donde \(t\) es el índice de iteración, \(\eta\) es un factor denominado tasa de aprendizaje, \((y - \hat{y})\) es la dirección de cambio calculada como la diferencia entre el valor esperado y el predicho y \(X\) es la entrada de la neurona.

Cabe señalar que la ecuación (#eq:regla_aprendizaje) esta diseñara para un solo ejemplo, en el caso de múltiples ejemplos la regla original actúa repitiendo el proceso para cada ejemplo como si se trataran de iteraciones.

Ejemplo

Suponga los siguientes datos, \(X = [3, 5, 8]\), \(y=0\) y \(\eta=0.5\). Determine el siguiente valor de los parámetros usando la regla de aprendizaje del perceptrón.

SOLUCION: El primer paso consiste en establecer los valores arbitrarios para los parámetros, bajo lo cual supondremos que después de un muestreo uniforme entre \(-1\) y \(1\) (intervalo escogido arbitrariamente) obtuvimos, $$

W^0 = [0.3, -0.4, 0.5], b^0 = 0.2$$

Al introducir estos parámetros en el perceptrón, ecuación (#eq:perceptron_simple), obtenemos $$

= 1$$

Como podemos observar, el error residual es $$

e = y- = 0-1 = -1$$

y por tanto sí es necesario ajustar los pesos, para lo cual ejecutaremos la regla de aprendizaje, ecuación (#eq:regla_aprendizaje). Resolviendo en forma de vectores columna:

$$

W^1 = \[\begin{bmatrix} 0.3 \ -0.4 \ 0.5 \end{bmatrix}\] \end{bmatrix} + 0.5 [-1] \[\begin{bmatrix} 3 \ 5 \ 8 \end{bmatrix}\]

\end{bmatrix}$$

El mismo proceso se usa para \(b\) únicamente considerando una multiplicación unitaria. $$

b^1 = 0.2 + 0.5 [-1][1]$$

por lo tanto, diremos que los nuevos valores para los parámetros son: $$

W^1 = \[\begin{bmatrix} -1.2 \ -2.9 \ -3.5 \end{bmatrix}\]

\end{bmatrix}, b^1 = -0.3$$

Cuando se usan conjuntos de datos con más de un ejemplo la regla se generaliza simplemente sumando la aportación de cada uno de los ejemplos. Es decir, suponiendo la representación del conjunto de datos como en la ecuación (#eq:dataset_matricial), los pesos se actualizan:

$$

W^{t+1} = W^{t} + (Y - )^T ,$$

La regla de aprendizaje de Rosenblatt permite entrenar un perceptrón y ésta siempre converge (Novikoff 1962). De tal forma que el perceptrón se convierte en una herramienta poderosa para aproximar funciones lineales y permitir la separación de conjuntos como una dicotomía.

25.1 Implementación

La implementación del perceptrón se divide en dos componentes fundamentales: el mecanismo de corrección individual y el ciclo iterativo de aprendizaje sobre el conjunto de datos.La primera función, aplicar_regla, codifica la actualización de los pesos basada en el error observado.

def aplicar_regla(w, x, error, eta):
    return w + eta * error * x

Por otro lado, la función entrenar_perceptron orquesta el proceso de optimización. En primer lugar, se realiza un aumento de los datos mediante np.insert, añadiendo una columna de unos a la matriz \(X\). Esto permite integrar el parámetro de sesgo directamente en el vector de pesos, simplificando la combinación lineal a un producto punto: \(h = W \cdot X\).

def entrenar_perceptron(X, y, eta=0.1, epochs=10):
    # Agrega columna de unos para el bias y genera pesos iniciales
    X = np.insert(X, 0, 1, axis=1)
    pesos = np.zeros(X.shape[1])
    
    for _ in range(epochs):
        errores = 0
        for i in range(len(y)):
            # Prediccion usando el escalon de Heaviside
            y_hat = 1 if np.dot(pesos, X[i]) >= 0 else 0
            error = y[i] - y_hat
            
            if error != 0:
                pesos = aplicar_regla(pesos, X[i], error, eta)
                errores += 1
        
        if errores == 0: break  # Convergencia prematura
            
    return pesos

25.2 Ejercicios

Ejercicio

Supongamos un perceptrón con dos entradas \(x_1\) y \(x_2\), y sus respectivos pesos \(w_1 = 0.5\) y \(w_2 = -0.3\). El sesgo es \(b = 0.4\). Si la función de activación es un escalón unitario. Y si el valor esperado (etiqueta real) para esa entrada es \(y = 0\).

  1. ¿Cuál es la salida del perceptrón si \(X = [1, 2]\)

  2. ¿Cuál es el error calculado como \(e = y - \hat{y}\)?

  3. Con una tasa de aprendizaje \(\eta = 0.1\). ¿Cuanto deben incrementarse o decrementarse los pesos?

  4. ¿Cuál es el nuevo valor de los pesos?

Ejercicio

Suponga que se desea ejecutar la regla de aprendizaje por 50 iteraciones en un conjunto de datos con 27 elementos. ¿Cuántos datos serán repetidos durante el entrenamiento?

Novikoff, A. B. J. 1962. «On Convergence Proofs on Perceptrons» 12: 615-22.
Rosenblatt, Frank. 1962. «Principles of neurodynamics». Perceptrons and the theory of brain mechanisms.