APRENDIZAJE AUTOMÁTICO, PASO A PASO

Inferencia en una red neuronal profunda.

Dibuja un dígito del 0 al 9 y observa cómo una red entrenada transforma sus píxeles en una predicción. Debajo encontrarás una guía para entender cada paso.

Entender la red: vectores, pesos y activaciones
14CAPAS
1.226NEURONAS
42,8kCONEXIONES
PROPAGACIÓN HACIA DELANTE
CONSTRUYENDO LA RED
Peso +Peso −Activación
ARRASTRA PARA ORBITAR · SCROLL PARA ACERCAR
Preparando entrada
00 / 14
RECORRIDO DE LA SEÑAL0 %
EntradaCapas ocultasSalida
ANALIZANDO EL INTERACTIVO

LA INFERENCIA PASO A PASO.

A continuación, vamos a desgranar cada una de las etapas que intervienen en la fase de inferencia.

01 / LA IDEA GENERAL

¿Qué significa hacer inferencia?

El aprendizaje automático o machine learning consiste en ajustar un modelo a partir de ejemplos. En este caso, los ejemplos son imágenes de números escritos a mano junto con la respuesta correcta: esto es un 3, esto es un 8. El modelo aprende una relación entre los valores de la imagen y esas diez categorías.

La inferencia es lo que ocurre después: usar lo aprendido para calcular una respuesta ante una entrada nueva. Cuando dibujas aquí, la red recibe tu trazo y asigna una puntuación a cada dígito del 0 al 9. La categoría con mayor probabilidad es la predicción que aparece en el panel de salida.

La escena representa una red neuronal profunda: una secuencia de capas que transforman números en otros números. Profunda indica que hay varias capas intermedias. Cada punto representa una neurona matemática; cada conexión, un peso que participa en el cálculo.

28 × 28imagen normalizada
784valores de entrada
12 × 64capas ocultas
10probabilidades
Arquitectura del modo Reconocer dígitos: una entrada, doce capas ocultas de 64 neuronas y una salida.
02 / REPRESENTAR LA ENTRADA

De un trazo a un vector de números.

Una red no recibe el concepto número tres: recibe valores. Primero se recorta el área dibujada, se ajusta su tamaño conservando las proporciones y se centra en una cuadrícula de 28 × 28 píxeles. En cada píxel, un valor próximo a 0 indica ausencia de trazo; un valor próximo a 1 indica trazo intenso. Los bordes suavizados pueden tener valores intermedios.

La cuadrícula contiene 784 valores. Al leer sus filas en un orden fijo, se convierte en un vector: una lista ordenada de números. Por ejemplo, x = [0, 0, 0.2, 0.9, …]. Su dimensión es 784 porque tiene 784 componentes. Cambiar el orden cambiaría la información que recibe cada conexión.

La misma imagen puede describirse como una matriz de 28 filas y 28 columnas o como un vector de 784 componentes. La operación de pasar de la cuadrícula a la lista se llama aplanado. En ambos casos son los mismos datos, organizados de otra manera.

Las capas siguientes también trabajan con vectores: cada capa oculta produce uno de 64 activaciones y la salida produce uno de 10 probabilidades. Aquí vector significa esa representación numérica; la posición de los puntos en el espacio 3D solo facilita verla.

En la demo. Centrar y escalar el dibujo ayuda a presentarlo de una forma parecida a los ejemplos usados en el entrenamiento. El reconocedor espera un único dígito; no está preparado para transcribir palabras o números de varias cifras.
03 / EL CÁLCULO DE UNA NEURONA

Pesos y sesgos: cuánto cuenta cada entrada.

Una neurona combina los valores que recibe. Multiplica cada entrada por un peso y suma los resultados. El peso determina cuánto influye esa conexión. Con las entradas no negativas de esta red, un peso positivo añade a la suma y uno negativo resta. Su magnitud determina la intensidad de esa contribución.

Después se añade un sesgo, también llamado bias: un valor propio de la neurona que desplaza el resultado, independientemente de las entradas. Tanto los pesos como los sesgos son parámetros: números que el entrenamiento ajusta y que permanecen fijos mientras utilizas el reconocedor.

z = w₁x₁ + w₂x₂ + … + wₙxₙ + bx: entradas · w: pesos · b: sesgo · z: valor antes de la activación
EJEMPLO ILUSTRATIVO · SOLO DOS ENTRADAS

Si las entradas son [0.8, 0.3], los pesos son [0.5, −0.4] y el sesgo es 0.1, el cálculo es:

(0.8 × 0.5) + (0.3 × −0.4) + 0.1 = 0.38

La primera conexión aporta 0.4, la segunda resta 0.12 y el sesgo añade 0.1. Así se obtiene el valor que pasará a la función de activación.

En la escena, las líneas cian corresponden a pesos positivos y las coral a negativos. Negativo no significa incorrecto: restar puede ser tan útil como sumar para distinguir patrones. Un peso tampoco es un porcentaje ni la probabilidad de que una conexión sea correcta.

Ampliar: neuronas, pesos y sesgos · Google ↗
04 / CALCULAR UNA CAPA COMPLETA

Una matriz reúne todos los pesos.

Un vector es una lista; una matriz es una tabla de números organizada en filas y columnas. Para calcular una capa completa, se agrupan los pesos de sus neuronas en una matriz W. Si cada fila contiene los pesos de una neurona, la multiplicación W x obtiene todas las sumas ponderadas a la vez.

La primera capa oculta de este modelo tiene 64 neuronas y recibe 784 entradas. Por eso su matriz de pesos tiene 64 filas y 784 columnas. Cada fila combina la misma imagen de una forma distinta. Al añadir un vector de 64 sesgos, obtenemos 64 valores: uno por neurona.

z = W x + b(64 valores) = (64 × 784) · (784 valores) + (64 valores)

Las capas ocultas posteriores reciben 64 activaciones y producen otras 64: sus matrices son de 64 × 64. La última capa transforma 64 activaciones en 10 puntuaciones. La salida de una capa se convierte en la entrada de la siguiente; esa sucesión es la propagación hacia delante o forward pass.

Las capas intermedias se llaman ocultas porque sus resultados no son la entrada original ni la respuesta final. Son representaciones internas que el entrenamiento hace útiles para la tarea. No debemos interpretar cada punto como un detector conocido de curvas o esquinas sin analizarlo: la visualización muestra sus valores, no una etiqueta semántica de lo que ha aprendido.

En este modelo. Hay 95.872 pesos y 778 sesgos: 96.650 parámetros en total. Las 14 capas que cuenta el panel incluyen la de entrada, las 12 ocultas y la de salida.
Ampliar: perceptrones multicapa · TensorFlow ↗
05 / SEGUIR UN NÚMERO DE UNA CAPA A LA SIGUIENTE

La activación es el resultado que pasa a la siguiente capa.

Piensa en cada capa como una calculadora que recibe una lista de números y devuelve otra. La activación de una neurona es su valor de salida para la entrada que estamos procesando. Al reunir los valores de todas las neuronas, tenemos el vector de activaciones de esa capa. Ese vector completo será la entrada de la siguiente.

Activación nombra un resultado numérico; función de activación nombra una regla para calcularlo. En esta red, esa regla es ReLU y después se aplica una normalización. Para seguir la cuenta sin mezclar pasos, llamaremos z a la suma ponderada, h al resultado de ReLU y a al valor que se transmite tras normalizar.

Entradas aPesos + sesgosSuma zReLU: hNormalizar: a nueva

Qué ocurre al calcular una capa.

  1. Multiplicar y sumar. Cada neurona recibe todas las activaciones anteriores, multiplica cada una por su peso y añade su sesgo: z = W a_anterior + b. Cada neurona tiene sus propios pesos y sesgo, así que obtiene un resultado distinto.
  2. Aplicar ReLU. Se conserva cada resultado positivo y se sustituye cada negativo por cero: h = max(0, z). Por ejemplo, el vector [0.38, −0.10] pasa a ser [0.38, 0]. Esto permite que, para entradas distintas, participen combinaciones distintas de neuronas. La operación es no lineal: no se puede resumir toda la red en una sola multiplicación por una matriz más un sesgo.
  3. Normalizar el vector. En este modelo se calcula un único divisor compartido: r = √(media(h²) + 0.00001). Cada componente se divide por ese mismo número: a = h / r. Así se controla la escala. La proporción entre los valores positivos y los ceros se conserva. Una activación oculta puede superar 1; las probabilidades aparecen en la salida final.
  4. Repetir con otros pesos. La siguiente capa recibe ese nuevo vector a, lo combina con su propia matriz y vuelve a aplicar estos pasos. En el modelo entrenado se recorre esta secuencia en las doce capas ocultas.
EJEMPLO REDUCIDO E INTERACTIVO · PESOS ILUSTRATIVOS

Mueve la entrada. Sigue la cuenta hasta la predicción.

Usaremos dos entradas, dos neuronas ocultas y tres salidas etiquetadas 3, 8 y 0. Esta pequeña red sirve para hacer las cuentas visibles. La red que reconoce tus dibujos tiene 784 entradas, doce capas ocultas y diez salidas.

1 Multiplicar por los pesos y sumar el sesgo
NEURONA 1
NEURONA 2

Los pesos y sesgos de estas cuentas permanecen fijos al mover los controles.

2 Aplicar ReLU a cada resultado

Donde había un resultado negativo, ahora se transmite cero. Cada resultado positivo conserva su valor en este paso.

3 Normalizar y entregar el nuevo vector

Estas dos activaciones son los números que recibe la capa de salida.

4 Calcular una puntuación por clase

Cada salida combina las mismas dos activaciones con pesos distintos. La puntuación obtenida se llama logit.

5 Convertir a porcentajes y escoger el mayor

Softmax conserva el orden de las puntuaciones: la clase con mayor logit tiene también la mayor probabilidad.

Y entonces, ¿qué me dice el brillo?

En la escena 3D, la activación calculada aumenta el brillo y el tamaño del punto, con una escala visual ajustada a cada capa. La escena mantiene un brillo de base para localizar todas las neuronas, y el pulso añade un resaltado temporal para seguir el recorrido. Por eso conviene pasar el cursor sobre una neurona para leer su activación numérica.

Una neurona oculta brillante está transmitiendo un valor relativamente alto dentro de su capa. Su efecto sobre una salida dependerá de los pesos de las conexiones siguientes: ese mismo valor puede sumar en una cuenta y restar en otra. La predicción se obtiene de las puntuaciones finales, después de combinar todos esos valores.

Ampliar: funciones de activación · Google ↗
06 / CÓMO EL CÁLCULO ACABA FAVORECIENDO UNA SALIDA

La elección se hace al comparar las puntuaciones finales.

Las capas ocultas van transformando el dibujo en una representación útil para clasificarlo. Al llegar a la última capa, cada dígito tiene una neurona de salida con sus propios pesos y sesgo. Esa neurona combina el vector de la última capa oculta y produce una puntuación: cuanto mayor sea esa puntuación respecto a las demás, más favorecido queda ese dígito.

z_dígito = Σ (peso × activación) + sesgoEn la red real, cada una de las diez salidas combina 64 activaciones.

Vuelve al ejemplo interactivo y pulsa Entrada que favorece al 3. Después de ReLU y la normalización, se entrega aproximadamente a = [1.414, 0]. La salida 3 multiplica el primer valor por 1.5 y obtiene un logit de 2.221. Las salidas 8 y 0 lo multiplican por pesos negativos y obtienen aproximadamente −0.324 y −0.707. Al comparar las tres cuentas, gana 3.

Ahora pulsa Entrada que favorece al 8. El vector cambia aproximadamente a a = [0.489, 1.327]. La segunda activación es ahora mayor. La salida 8 la multiplica por un peso positivo de 1.4, mientras que la salida 3 la multiplica por −0.5. Los logits pasan a ser aproximadamente [0.170, 1.811, 0.021]: esta vez gana 8. Los pesos son los mismos; el nuevo vector de activaciones ha cambiado el resultado de sus combinaciones.

Qué añade softmax.

Los logits pueden ser negativos y no tienen que sumar uno. Softmax convierte esas puntuaciones en valores entre 0 y 1 cuya suma es 1. Para cada salida, calcula una exponencial y la divide entre la suma de todas las exponenciales:

pᵢ = exp(zᵢ) / Σ exp(zⱼ)Se toma la clase con mayor p. Su logit ya era el mayor antes de softmax.

Con la primera entrada del ejemplo, los porcentajes son aproximadamente 88,3 % para 3, 6,9 % para 8 y 4,7 % para 0. Con la segunda, 8 recibe aproximadamente un 73,5 %. Los porcentajes mostrados pueden no sumar exactamente el 100 % por el redondeo. Softmax facilita interpretar y comparar la distribución; la separación entre clases procede de las puntuaciones calculadas con los pesos.

¿Por qué los pesos de la red real producen cuentas útiles? Durante el entrenamiento se ajustaron para asignar puntuaciones favorables a las etiquetas correctas de miles de ejemplos. Al dibujar aquí, esos pesos permanecen fijos y tu entrada determina las activaciones que los atraviesan. El apartado siguiente explica cómo se aprendieron.

Una probabilidad alta no garantiza una respuesta correcta. Si dibujas una letra, el modelo sigue teniendo diez dígitos entre los que elegir y podría dar mucha confianza a una respuesta inadecuada. Los porcentajes también se redondean al mostrarlos: un 100,0 % visible no equivale a una garantía.

Resultado y animación. La predicción se calcula al terminar cada trazo. Los pulsos reproducen ese cálculo de forma lenta para que puedas seguirlo. La velocidad del control cambia la reproducción visual, no la velocidad ni la precisión del modelo.
Ampliar: clasificación multiclase y softmax · Google ↗
07 / ANTES DE QUE DIBUJES

¿Cómo ha aprendido esos pesos?

Durante el entrenamiento supervisado, la red recibe imágenes junto con sus etiquetas correctas. Calcula una predicción y una función de pérdida mide su desacuerdo con la respuesta esperada. Aquí se utiliza entropía cruzada: penaliza que el modelo asigne poca probabilidad a la clase correcta.

La retropropagación o backpropagation calcula cómo cambia la pérdida al modificar cada parámetro. Esas derivadas forman los gradientes. Un optimizador utiliza esa información para actualizar pesos y sesgos; en este modelo se usó Adam. La tasa de aprendizaje controla el tamaño de las actualizaciones. Repetir el proceso con muchos ejemplos permite mejorar la clasificación.

Para esta demo se entrenó con 55.000 imágenes de MNIST durante 25 épocas. Una época es un recorrido por el conjunto de entrenamiento. Se añadieron variaciones de giro, escala y posición para ampliar los tipos de trazo que veía la red. Otras 5.000 imágenes sirvieron para validar el progreso y seleccionar una versión del modelo.

Finalmente se evaluó esa versión en 10.000 imágenes de prueba que no se habían usado para ajustar ni seleccionar sus pesos: acertó el 98,51 %. Esa cifra describe esa prueba concreta. Tu forma de dibujar puede ser distinta; lo que buscamos es generalización, es decir, responder bien ante entradas nuevas, no solo ante los ejemplos de entrenamiento.

Cuando usas esta página, los pesos ya están aprendidos y no se actualizan. Cambian la entrada y las activaciones, pero la red no aprende de tus dibujos.

Ampliar: entrenamiento y retropropagación · Google ↗
08 / VOLVER A LA VISUALIZACIÓN

Una leyenda para leer la red.

Qué representa cada elemento del laboratorio
En pantallaEn el modelo
Punto o neuronaUna entrada, una activación intermedia o una salida, según la capa.
BrilloLa activación representada con una escala visual. El pulso añade un resaltado para seguir el recorrido.
Línea cian / coralUna conexión con peso positivo / negativo. El peso permanece fijo durante la inferencia.
Pulso en movimientoUna representación didáctica de la propagación; no son partículas físicas viajando por un cerebro.
Capas en 3DUna distribución espacial para separar los grupos de neuronas. La profundidad de la cámara no es una variable de entrada.
Barras de salidaLas diez probabilidades de softmax. Se destaca la de mayor valor.

En Reconocer dígitos ves el cálculo de la red entrenada. Su arquitectura permanece fija porque los pesos corresponden a unas dimensiones concretas. En Explorar arquitectura puedes cambiar la profundidad y el número de neuronas con pesos sintéticos; ese modo sirve para experimentar con la estructura, pero su salida no es un reconocimiento aprendido.

El control de conexiones visibles reduce las líneas dibujadas para facilitar la lectura; el cálculo sigue usando todos los pesos. Orbitar y acercar la cámara tampoco modifica la predicción. La línea de tiempo y el avance por capas permiten inspeccionar las activaciones de una misma inferencia. El contador de FPS mide la fluidez gráfica, no la capacidad del modelo para reconocer.

Compruébalo en el laboratorio.

  1. Compara el 0 y el 8. Cambia la muestra y observa que varían las activaciones y la distribución de salida, aunque la estructura sea la misma.
  2. Dibuja un dígito y pausa. Recorre las capas con la línea de tiempo y pasa el cursor sobre varias neuronas para comparar sus valores.
  3. Reduce las conexiones visibles. Verás menos líneas, pero la predicción seguirá siendo la misma: solo ha cambiado la representación.
  4. Prueba Explorar arquitectura. Añade capas y comprueba cómo cambia la escena. Vuelve a Reconocer dígitos para recuperar el modelo entrenado.
Volver a la red y probarlo
DENTRO DE LA RED

Del píxel a la activación.

Cada píxel del dibujo es una entrada. La señal atraviesa capas densas: cada neurona combina las activaciones de la capa anterior con pesos positivos o negativos, añade un sesgo y aplica ReLU.

al = ReLU(Wl al−1 + bl)

El brillo representa la activación. Los pulsos muestran el recorrido de la señal; cian indica pesos positivos y coral, negativos. La última capa aplica softmax para producir diez probabilidades.

El modo Reconocer dígitos usa una red entrenada con 55.000 ejemplos MNIST, 12 capas ocultas de 64 neuronas y normalización RMS. El dibujo se recorta, se escala a 20 × 20 y se centra dentro de 28 × 28 píxeles.

La red obtuvo un — de aciertos en los 10.000 ejemplos de prueba de MNIST; los trazos de ratón o dedo pueden ser distintos y la predicción puede fallar. La probabilidad del modelo no garantiza un acierto. En Explorar arquitectura puedes cambiar las capas usando pesos sintéticos; ese modo no reconoce dígitos.

Arrastra para orbitar, pasa el cursor sobre una neurona para inspeccionarla o selecciona una capa en la línea de tiempo. Espacio pausa; → avanza una capa.

Leer la explicación completa ↓