Saltar al contenido
Capítulo 03 · 11 min

Dentro de una red neuronal

Abramos la caja. Una red neuronal no es un cerebro. Es una pila de multiplicaciones de matrices con un aplastamiento no lineal entre medias. Una vez que lo ves así, la magia se vuelve mucho menos misteriosa.

A chain of votersThree rows of small circular nodes. Each row passes its vote to the next via thin lines, forming a forward chain. Some connections are highlighted in accent color to suggest weighted importance.LAYER 1LAYER 2LAYER 3 → GUESS

Una cadena de votantes; cada uno sopesa las pruebas y pasa una estimación al siguiente.

Una neurona, una decisión

La unidad atómica es la neurona. Toma un puñado de números como entrada, multiplica cada uno por un peso, suma una constante (el sesgo), y aplasta el resultado a través de una función no lineal. Salida: un número. Eso es todo. No ocurre nada biológico.

Si piensas en las entradas como pruebas y en los pesos como cuánto importa cada prueba, una neurona es una pequeña cabina de votación. «¿Mostraba esta foto un bigote? ¿una oreja puntiaguda? ¿pelaje? Sí, sí, sí: salida: puntuación alta para gato.»

A single neuronThree inputs x1, x2, x3 each travel along a weighted line to a summing node, where a bias is added, then pass through a non-linear activation function and emerge as one output y.x₁×w₁x₂×w₂x₃×w₃Σ+biasσACTIVATIONy
Las entradas viajan por cables ponderados hacia una suma-con-sesgo, luego a través de una activación no lineal. Sale un número.

Por qué capas, y por qué «profunda»

Una sola capa de neuronas solo puede aprender distinciones en línea recta: «¿está este punto por encima o por debajo de la línea?» Apila dos capas y puedes aprender curvas. Apila diez y puedes aprender lo que quieras, con suficientes datos. Esto es, formalmente, el «teorema de aproximación universal».

El truco interesante es lo que ocurre dentro de las redes profundas: cada capa aprende una característica algo más abstracta que la de debajo. En las redes de visión, la primera capa detecta bordes, la segunda esquinas y texturas, la quinta ojos y ruedas, la décima caras y coches. Nadie programó esta jerarquía; emerge del objetivo de entrenamiento.

Layer hierarchy of a deep networkFour columns of vertically stacked neurons. From left to right, the labels describe what each layer tends to learn: edges and textures, then patterns, then object parts, then whole objects.edges & texturesLAYER 1patternsLAYER 2parts (eye, wheel)LAYER 3objects (face, car)LAYER 4ABSTRACTION INCREASES →
Nadie le dice a la red que construya una jerarquía. Emerge porque es la forma más comprimida de predecir la respuesta.

El aplastamiento no lineal

Entre cada dos capas hay una pequeña función no lineal aplicada a cada salida. Las habituales: ReLU («si es negativo, salida cero; si no, consérvalo»), GELU, sigmoide, tanh. Sin ella, apilar capas no sirve de nada; toda la red colapsaría matemáticamente en una sola capa.

La no linealidad es toda la razón por la que las redes profundas pueden modelar curvas, formas y decisiones que una sola capa no puede. Es un pequeño detalle que hace un trabajo estructural enorme.

Cómo calcula de verdad una red

En la práctica, nunca calculas una neurona cada vez. Toda una capa es una gran multiplicación de matrices: vector de entrada por matriz de pesos, más vector de sesgos, aplicación de la no linealidad, vector de salida. La capa siguiente toma esa salida y hace lo mismo. Toda la red no es más que una cadena de multiplicaciones de matrices intercaladas con no linealidades.

Por eso las GPU importan tanto. Las GPU se construyeron para los gráficos, y los gráficos son multiplicaciones de matrices. Resultaron ser el hardware perfecto para algo para lo que nadie las diseñó. Todo el auge de la IA cabalga sobre esta casualidad.

# forward pass, two layers, in 5 lines
h1 = relu(x @ W1 + b1)   # input -> hidden
y  = h1 @ W2 + b2        # hidden -> output
# x: input vector
# W1, W2: weight matrices
# b1, b2: bias vectors
# relu: max(0, ...) applied elementwise

La retropropagación, en un párrafo

Entrenar una red significa ajustar cada matriz de pesos y cada vector de sesgos para que la pérdida sea menor. Para saber en qué sentido ajustarlos, necesitas el gradiente de la pérdida respecto a cada parámetro. Calcularlo de forma ingenua es inviable: puede haber cientos de miles de millones de parámetros. La retropropagación es el truco que los calcula todos en una sola pasada hacia atrás, aplicando la regla de la cadena capa por capa. Se ejecuta en aproximadamente el mismo tiempo que la pasada hacia delante.

La retropropagación fue la llave que volvió prácticas las redes profundas. Las matemáticas son las mismas desde 1986; la razón por la que la usamos hoy y no en 1986 es que las GPU nos permiten ejecutarla en redes un millón de veces más grandes.

Un momento: ¿dónde está la parte del lenguaje?

Todo lo anterior es genérico. Una red neuronal para fotos de gatos y una red neuronal para texto se parecen a este nivel: multiplicaciones de matrices y no linealidades. Lo que hace que una sea buena con imágenes y otra buena con el lenguaje es (a) qué le metes y (b) cómo están cableadas las capas. Nos encontraremos con el cableado específico del lenguaje, embeddings y atención, en los capítulos 4 y 5.

Una línea por cada uno

  • Una neurona es una suma ponderada seguida de un aplastamiento no lineal. Ese es todo el átomo.
  • Las capas apilan neuronas; la profundidad permite que la red aprenda una jerarquía de abstracción sin que se lo digan.
  • Todo el cálculo son multiplicaciones de matrices intercaladas con no linealidades, por lo que ganaron las GPU.
  • La retropropagación es cómo se calculan los gradientes de forma eficiente a través de cientos de miles de millones de parámetros.
Dentro de una red neuronal · Cursos de IA · SDEN