Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

El perceptrón es el bloque de construcción de las redes neuronales. Calcula una suma ponderada de sus entradas, agrega un sesgo y pasa el resultado por una función de activación. En este cuaderno:

  1. Construimos un perceptrón desde cero con NumPy.
  2. Lo entrenamos con la regla clásica de aprendizaje del perceptrón para separar eventos sísmicos del ruido.
  3. Reutilizamos el mismo perceptrón como regresor lineal entrenado por descenso de gradiente y lo comparamos con mínimos cuadrados ordinarios (OLS, ordinary least squares).
  4. Estudiamos cómo la tasa de aprendizaje cambia el entrenamiento.

🖥️ Diapositivas — Sesión 21 (mié 18 nov)

1. Un perceptrón desde cero

Un perceptrón con entradas x1,…,xnx_1, \dots, x_n, pesos w1,…,wnw_1, \dots, w_n y peso de sesgo bb calcula

o=ϕ(∑jwjxj+b),o = \phi\left(\sum_j w_j x_j + b\right),

donde ϕ es la función de activación. Implementamos tres activaciones: ninguna (identidad), sigmoide y escalón.

1.1 Probar el perceptrón

Con un peso fijado en 1, sesgo 0 y sin activación, el perceptrón debe devolver su entrada sin cambios.

array([100. , -1. , 0.1])

2. Clasificación de detecciones sísmicas

Los detectores sísmicos resumen ventanas cortas de un sismograma con unas pocas características (features). La tabla mlgeo_synth.detector_features contiene cuatro de esas características por ventana: la razón STA/LTA (sta_lta), la curtosis de la forma de onda, el centroide espectral en Hz y la frecuencia dominante en Hz. La etiqueta es 1 para una ventana de sismo y 0 para una ventana de ruido, con clases balanceadas.

Usamos dos características, sta_lta y spectral_centroid_hz. Los eventos tienen arribos impulsivos (STA/LTA alto) y más energía de alta frecuencia (centroide espectral alto) que el ruido de fondo.

     sta_lta   kurtosis  spectral_centroid_hz  dominant_freq_hz  label
0  10.419133  22.113184              9.556484          7.786286      1
1   3.314406   2.773164              1.716694          1.009758      0
2   2.336543   4.639630              1.271397          0.251278      0
3   3.976867  13.591792              6.692700          4.682170      1
4   1.151811   3.131239              4.474578          1.426544      0
<Figure size 600x450 with 1 Axes>

2.1 ¿Por qué un corte fácil de dos características?

La regla clásica de aprendizaje del perceptrón solo converge cuando los datos son linealmente separables: alguna recta debe clasificar correctamente cada muestra de entrenamiento. Si las clases se superponen, la regla sigue actualizando para siempre. El diagrama de dispersión de arriba muestra una pequeña banda de superposición entre las dos nubes, así que el conjunto de datos completo no es linealmente separable.

Por eso seleccionamos un subconjunto casi linealmente separable: calculamos un puntaje combinado simple, sta_lta + spectral_centroid_hz, y descartamos las muestras de la banda de superposición. También nos limitamos a exactamente dos características para poder dibujar la frontera de decisión como una recta en el plano. Los datos reales de detectores son más desordenados; los cuadernos posteriores manejan la superposición con redes multicapa y pérdidas basadas en gradiente.

<Figure size 600x450 with 1 Axes>

2.2 La regla de aprendizaje del perceptrón

Empezamos con todos los pesos en 0 y usamos la activación escalón, de modo que el perceptrón produce 0 o 1. Luego recorremos el conjunto de datos. Para cada muestra:

  1. Hacemos una predicción con los pesos actuales.

  2. Actualizamos cada peso con la regla

    wj=wj+Δwjw_j = w_j + \Delta w_j, donde Δwj=η (ti−oi) xji\Delta w_j = \eta\,(t^i - o^i)\,x^i_j

    Aquí η es la tasa de aprendizaje, tit^i y oio^i son el objetivo y la salida para la muestra ii, y xjix^i_j es la entrada jj de esa muestra. El peso de sesgo recibe la misma actualización con entrada 1. Note que las muestras clasificadas correctamente (ti=oit^i = o^i) dejan los pesos sin cambios.

  3. Repetimos pasadas completas (épocas) sobre los datos hasta que una época no produzca ningún error.

Un detalle: con pesos iniciales en cero, la tasa de aprendizaje solo escala el vector de pesos final. La activación escalón ignora esa escala, así que la secuencia de predicciones, y el número de épocas hasta converger, es la misma para cualquier η>0\eta > 0.

Converged after 2 epochs; mistakes per epoch: [42, 0]
Weights: [0.03415388 0.03796047], bias: -0.220, training accuracy: 1.000

La regla converge en unas pocas épocas y clasifica correctamente todas las muestras de entrenamiento. Como usamos dos características, la frontera de decisión es la recta w1x1+w2x2+b=0w_1 x_1 + w_2 x_2 + b = 0, que podemos dibujar directamente.

<Figure size 600x450 with 1 Axes>

Acabamos de implementar un algoritmo en línea (online): los pesos se actualizan después de cada muestra, no después de ver el conjunto de datos completo.

Ejercicio. Sustituya spectral_centroid_hz por kurtosis en la celda de selección del subconjunto (mantenga el mismo filtro por puntaje sobre las características originales). ¿La regla de aprendizaje sigue convergiendo en 50 épocas? ¿Por qué sí o por qué no?

3. Ajustar una recta con descenso de gradiente

El mismo perceptrón, sin activación, es un modelo lineal o=wx+bo = w x + b. En lugar de la regla del perceptrón, podemos entrenarlo por descenso de gradiente sobre una función de costo. Generamos un conjunto de datos lineal con ruido para ajustarlo.

<Figure size 600x400 with 1 Axes>

3.1 Función de costo

Usamos el error cuadrático medio (MSE, mean squared error) como costo.

np.float64(0.0)

3.2 Descenso de gradiente

El descenso de gradiente repite tres pasos: predecir, medir el costo y mover los pesos un paso pequeño en contra del gradiente del costo. Para el MSE y un modelo lineal, la actualización de los pesos es Δw=η XT(t−o)\Delta w = \eta\, X^T (t - o) y la del sesgo es Δb=η∑i(ti−oi)\Delta b = \eta \sum_i (t^i - o^i). Nos detenemos cuando el cambio del costo cae por debajo de una tolerancia, cuando el costo deja de ser finito (divergencia) o cuando alcanzamos el límite de iteraciones.

<Figure size 1200x400 with 3 Axes>
'The mean squared error of our perceptron on the test half is: 1.122684'

3.3 Comparación con mínimos cuadrados ordinarios

OLS resuelve el mismo problema en forma cerrada. Un perceptrón entrenado por descenso de gradiente que funcione debe llegar casi a la misma recta.

<Figure size 1200x400 with 1 Axes>

4. Cómo la tasa de aprendizaje cambia el entrenamiento

La tasa de aprendizaje η controla el tamaño del paso del descenso de gradiente. Demasiado pequeña, y el entrenamiento se arrastra; demasiado grande, y el costo oscila o diverge. La cuadrícula siguiente entrena el mismo perceptrón desde el mismo inicio en cero con cuatro tasas de aprendizaje y grafica la curva de costo de cada una (escala logarítmica en el eje del costo).

<Figure size 1000x700 with 4 Axes>

Lea los cuatro paneles: con η=10−5\eta = 10^{-5} el costo sigue bajando después de 2000 iteraciones (demasiado lento). Con η=10−4\eta = 10^{-4} converge, pero toma más de mil iteraciones. Con η=10−3\eta = 10^{-3} converge en unos cientos de iteraciones. Con η=10−2\eta = 10^{-2} el costo crece sin límite: los pasos sobrepasan el mínimo y el entrenamiento diverge (la curva se detiene donde el costo se vuelve infinito).

4.1 Explorador interactivo

El widget siguiente le permite variar la tasa de aprendizaje, el número de iteraciones, el criterio de parada y los pesos iniciales, y luego reentrenar y volver a graficar. Los widgets no funcionan en la versión estática del libro: descargue y ejecute este cuaderno en Jupyter para usarlo. La cuadrícula estática de arriba muestra la misma lección.

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Resumen

  • Un perceptrón es una suma ponderada más un sesgo, pasada por una función de activación.
  • La regla clásica de aprendizaje del perceptrón converge solo con datos linealmente separables. Separó nuestras ventanas de evento y de ruido usando dos características del detector, y la elección de dos características nos permitió dibujar la frontera de decisión.
  • Sin activación, el mismo perceptrón es un regresor lineal. El descenso de gradiente sobre el costo MSE recupera casi la misma recta que OLS.
  • La tasa de aprendizaje fija el compromiso entre convergencia lenta y divergencia.

Siguiente: 4.1 Redes neuronales apila perceptrones en capas para manejar datos que una sola recta no puede separar.