Una neurona es una calculadora con opiniones
Cuando oyes «red neuronal» quizá imaginas algo misterioso, casi mágico. Spoiler: la unidad básica es una suma ponderada y un filtro. Nada más. Todo el aprendizaje profundo, de ChatGPT al reconocimiento de caras, está hecho de millones de estas piezas diminutas.
Las tres piezas
Una neurona artificial recibe números de entrada x, y hace tres cosas:
- Multiplica cada entrada por un peso
w(cuánto le importa esa entrada). - Suma todo y añade un sesgo
b(su «mal humor» base). - Pasa el resultado por una función de activación que decide cuánta señal deja salir.
En fórmula: salida = activación(x1*w1 + x2*w2 + ... + b). Con NumPy, la parte lineal es un producto punto:
import numpy as np
x = np.array([2.0, 3.0]) # entradas
w = np.array([0.5, -1.0]) # pesos
b = 0.1 # sesgo
z = np.dot(x, w) + b # 2*0.5 + 3*(-1) + 0.1 = -1.9
print(z)
Funciones de activación
Sin activación, apilar neuronas sería inútil: una suma de sumas sigue siendo una suma. La activación mete no linealidad. Las dos más famosas:
| Función | Fórmula | Rango de salida |
|---|---|---|
| Sigmoide | 1 / (1 + e^-z) | entre 0 y 1 |
| ReLU | max(0, z) | de 0 a infinito |
| Escalón | 1 si z > 0, si no 0 | 0 o 1 |
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def relu(z):
return np.maximum(0, z)
print(sigmoid(0)) # 0.5
print(relu(np.array([-3, 0, 4]))) # [0 0 4]
La sigmoide «aplasta» cualquier número a una probabilidad. ReLU es la favorita en redes profundas porque es baratísima de calcular.
Qué hace cada pieza
- Un peso grande y positivo significa «esta entrada me emociona».
- Un peso negativo significa «esta entrada me da pereza».
- El sesgo mueve el umbral: con sesgo muy negativo, la neurona solo se activa si las entradas son contundentes.
La historia: la neurona de Valeria
Valeria quiere decidir si abrir su café con terraza. Entradas: soleado (1 o 0) y fin_de_semana (1 o 0). Bruno, su primo, propone pesos al azar «porque el azar es democrático». Pixel, el robot, suspira: «Si los pesos son al azar, la neurona decide como un horóscopo». Valeria prueba pesos [2, 1] y sesgo -1.5: ahora la terraza solo abre si hace sol y algo más. ¡Acaba de construir una compuerta lógica con una neurona!
💡 Truco: piensa en el sesgo como el «umbral de exigencia». Cuanto más negativo, más difícil es activar la neurona.
Errores típicos
- Usar
x * wy creer que es un número: eso da un vector; necesitasnp.dot(x, w)o.sum(). - Olvidar el sesgo: sin
b, la neurona siempre pasa por el origen y es menos flexible. - Usar
math.expcon arrays: usanp.exp, que trabaja con vectores. - Confundir la salida de la sigmoide con una clase: 0.7 es una probabilidad, no un «sí».
Reto
Construye una neurona con pesos [1, 1] y sesgo -1.5. Pruébala con las cuatro combinaciones de 0 y 1 y comprueba que solo se activa con (1, 1). ¿Qué compuerta lógica es? Cambia el sesgo a -0.5: ¿y ahora? Pixel apuesta a que no lo adivinas.