¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo calcula una red neuronal su salida

Después de esta lección: Puedo calcular a mano qué da una red pequeña.

Lección de 55 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

El paso hacia delante da la respuesta

El paso hacia delante (forward pass en inglés) es el cálculo con el que una red neuronal convierte unas entradas en una salida. Cada capa usa el resultado de la anterior.

Si sabes hacerlo a mano en una red pequeña, entiendes lo que hace una red enorme: es el mismo cálculo, repetido muchas veces.

Al final de esta lección

Nota

Puedo calcular a mano qué da una red pequeña.

Palabras clave

PalabraQué significa
Entradaun dato que recibe la red
Suma ponderadacada entrada por su peso, sumadas, más el sesgo
Activaciónel número que sale de una neurona tras su función
Paso hacia delantecalcular la salida capa por capa
Salidael número que da la última capa

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una neurona hace una suma ponderada

Para calcular una neurona, multiplica cada entrada por su peso y suma los resultados. Después añade el sesgo.

Con entradas 2 y 1, pesos 1 y 1 y sesgo -1, el total es 2 × 1 + 1 × 1 - 1 = 2. ReLU lo deja en 2.

Ejemplo resuelto: dos neuronas con las mismas entradas

NeuronaPesosSesgoTotalTras ReLU
Oculta 11 y 1-12 × 1 + 1 × 1 - 1 = 22
Oculta 21 y -202 × 1 + 1 × -2 + 0 = 00

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La neurona oculta 1 en el laboratorio

Comando
docker exec jupyter python3 -c "print(max(0, 1 * 2 + 1 * 1 - 1))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Cada capa usa la salida anterior

Primero calculas todas las neuronas de la capa oculta con las entradas. Los números que salen forman una lista nueva.

Esa lista es la entrada de la capa de salida. Así la red avanza capa por capa hasta dar su respuesta.

Ejemplo resuelto: el día [2, 1] completo

PasoCálculoResultado
Oculta 12 × 1 + 1 × 1 - 1 = 2, ReLU2
Oculta 22 × 1 + 1 × -2 + 0 = 0, ReLU0
Salida2 × 1 + 0 × 1 - 2 = 0total 0
Respuesta0 no es positivo0, pocos alquileres

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El mismo cálculo en Python

Código: python
# Red de 2, 2 y 1 neuronas. Entradas: temperatura y lluvia, en unidades pequeñas.
entradas = [2, 1]
pesos_ocultos = [[1, 1], [1, -2]]
sesgos_ocultos = [-1, 0]
pesos_salida = [1, 1]
sesgo_salida = -2

ocultas = []
for n in range(len(pesos_ocultos)):
    total = sesgos_ocultos[n]
    for i in range(len(entradas)):
        total = total + pesos_ocultos[n][i] * entradas[i]
    if total < 0:
        total = 0
    ocultas.append(total)
print("capa oculta:", ocultas)

total = sesgo_salida
for n in range(len(ocultas)):
    total = total + pesos_salida[n] * ocultas[n]
print("total de salida:", total)
if total > 0:
    print("muchos alquileres")
else:
    print("pocos alquileres")
# Cambia entradas a [1, 3] y ejecuta otra vez.

Un error muy común

Advertencia

Mucha gente se olvida del sesgo, o lo suma antes de aplicar ReLU en una neurona y después en otra. El sesgo va siempre dentro del total, antes de la función de activación, en todas las neuronas.

El total de salida del día [2, 1]

Comando
docker exec jupyter python3 -c "print(2 * 1 + 0 * 1 - 2)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: un día con lluvia

Con la red de la lección, prueba el día [3, 1] y el día [1, 1] a mano. Apunta las dos neuronas ocultas, el total de salida y la respuesta.

Después cambia el sesgo de salida de -2 a -4 y repite. ¿Qué días siguen dando «muchos alquileres» y cuáles ya no?

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.