|
|
||
|---|---|---|
| .. | ||
| lab | ||
| Perceptron.ipynb | ||
| README.md | ||
README.md
Introducción a Redes Neuronales: Perceptrón
Cuestionario previo a la lección
Uno de los primeros intentos de implementar algo similar a una red neuronal moderna fue realizado por Frank Rosenblatt del Laboratorio Aeronáutico de Cornell en 1957. Fue una implementación en hardware llamada "Mark-1", diseñada para reconocer figuras geométricas primitivas, como triángulos, cuadrados y círculos.
![]() |
![]() |
Imágenes de Wikipedia
Una imagen de entrada se representaba mediante una matriz de fotoceldas de 20x20, por lo que la red neuronal tenía 400 entradas y una salida binaria. Una red simple contenía una neurona, también llamada unidad lógica de umbral. Los pesos de la red neuronal actuaban como potenciómetros que requerían ajuste manual durante la fase de entrenamiento.
✅ Un potenciómetro es un dispositivo que permite al usuario ajustar la resistencia de un circuito.
El New York Times escribió sobre el perceptrón en ese momento: el embrión de una computadora electrónica que [la Marina] espera que pueda caminar, hablar, ver, escribir, reproducirse y ser consciente de su existencia.
Modelo de Perceptrón
Supongamos que tenemos N características en nuestro modelo, en cuyo caso el vector de entrada sería un vector de tamaño N. Un perceptrón es un modelo de clasificación binaria, es decir, puede distinguir entre dos clases de datos de entrada. Asumiremos que para cada vector de entrada x, la salida de nuestro perceptrón será +1 o -1, dependiendo de la clase. La salida se calculará usando la fórmula:
y(x) = f(wTx)
donde f es una función de activación escalón.
Entrenamiento del Perceptrón
Para entrenar un perceptrón, necesitamos encontrar un vector de pesos w que clasifique la mayoría de los valores correctamente, es decir, que resulte en el menor error. Este error E se define mediante el criterio del perceptrón de la siguiente manera:
E(w) = -∑wTxiti
donde:
- la suma se toma sobre aquellos puntos de datos de entrenamiento i que resultan en una clasificación incorrecta
- xi es el dato de entrada, y ti es -1 o +1 para ejemplos negativos y positivos, respectivamente.
Este criterio se considera como una función de los pesos w, y necesitamos minimizarlo. A menudo se utiliza un método llamado descenso de gradiente, en el cual comenzamos con algunos pesos iniciales w(0), y luego en cada paso actualizamos los pesos según la fórmula:
w(t+1) = w(t) - η∇E(w)
Aquí η es la llamada tasa de aprendizaje, y ∇E(w) denota el gradiente de E. Después de calcular el gradiente, terminamos con:
w(t+1) = w(t) + ∑ηxiti
El algoritmo en Python se ve así:
def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):
weights = [0,0,0] # Initialize weights (almost randomly :)
for i in range(num_iterations):
pos = random.choice(positive_examples)
neg = random.choice(negative_examples)
z = np.dot(pos, weights) # compute perceptron output
if z < 0: # positive example classified as negative
weights = weights + eta*weights.shape
z = np.dot(neg, weights)
if z >= 0: # negative example classified as positive
weights = weights - eta*weights.shape
return weights
Conclusión
En esta lección, aprendiste sobre el perceptrón, que es un modelo de clasificación binaria, y cómo entrenarlo utilizando un vector de pesos.
🚀 Desafío
Si te gustaría intentar construir tu propio perceptrón, prueba este laboratorio en Microsoft Learn que utiliza el diseñador de Azure ML.
Cuestionario posterior a la lección
Revisión y Autoestudio
Para ver cómo podemos usar el perceptrón para resolver un problema sencillo, así como problemas de la vida real, y para continuar aprendiendo, visita el cuaderno Perceptrón.
Aquí tienes un interesante artículo sobre perceptrones.
Asignación
En esta lección, hemos implementado un perceptrón para una tarea de clasificación binaria, y lo hemos utilizado para clasificar entre dos dígitos escritos a mano. En este laboratorio, se te pide resolver el problema de clasificación de dígitos por completo, es decir, determinar qué dígito corresponde más probablemente a una imagen dada.

