Curso de Matemáticas para IA · Lección 7 de 180

Potencias para la IA: por qué duplicar el contexto puede cuadruplicar el trabajo de atención

Aprende las leyes de los exponentes y las raíces, y usa un explorador en escala logarítmica y NumPy para ver por qué duplicar las dimensiones del modelo o el contexto puede crear cuatro veces más cantidades.

Comparte este artículo

Una secuencia de 2,0482{,}048 tokens contiene 4,194,3044{,}194{,}304 pares ordenados de tokens. Duplica la secuencia hasta 4,0964{,}096 tokens y el número de pares se convierte en 16,777,21616{,}777{,}216: cuatro veces más. El número 22 no cambió; cambió la operación aplicada a él.

Esa operación es una potencia. Las potencias comprimen la multiplicación repetida en un pequeño superíndice, y el superíndice nos dice cómo responde una cantidad cuando cambia la escala de su entrada. Al terminar esta lección podrás manipular exponentes positivos, cero, negativos y fraccionarios; tratar las raíces como potencias inversas con límites en el dominio de los números reales; y calcular cuándo una cantidad de IA crece lineal o cuadráticamente.

Esta lección se apoya en la visión de la lección 2 de las funciones como reglas reutilizables. Aquí la regla puede ser f(n)=n2f(n)=n^2, y la pregunta es cómo cambia su salida cuando cambia nn. El sitio complementario oficial de Mathematics for Machine Learning separa los fundamentos matemáticos de los sistemas de aprendizaje automático que los usan. Su capítulo introductorio presenta esos fundamentos como herramientas para comprender los modelos y sus supuestos; el álgebra de exponentes que sigue es un puente original de prerrequisitos desarrollado para este curso.

Un superíndice controla la regla de crecimiento

En apa^p, aa es la base y pp es el exponente. El exponente indica cómo participa la base en la operación.

La intuición es «multiplicar la base por sí misma pp veces», pero eso solo define exponentes enteros positivos. El punto de partida formal es:

Los exponentes cero y negativos amplían esta definición conservando las mismas leyes algebraicas. Para cualquier aa distinto de cero,

a0=1yap=1ap.a^0=1 \qquad\text{y}\qquad a^{-p}=\frac{1}{a^p}.

La condición a0a\ne0 importa. Una potencia negativa crea un recíproco, y dividir entre cero no está definido. Por ejemplo,

23=123=18,2^{-3}=\frac{1}{2^3}=\frac{1}{8},

mientras que 030^{-3} no tiene valor real.

La regla del exponente cero se deduce de la ley del cociente, no de «ninguna multiplicación». Si a0a\ne0, entonces

a3a3=1ya3a3=a33=a0.\frac{a^3}{a^3}=1 \qquad\text{y}\qquad \frac{a^3}{a^3}=a^{3-3}=a^0.

Las dos expresiones solo pueden coincidir si a0=1a^0=1. Como la cancelación usó a0a\ne0, este argumento no decide el caso 000^0; ese límite necesita su propio contexto.

Las leyes de los exponentes dan cuenta de cada factor

Para enteros positivos mm y nn, multiplicar dos potencias con la misma base une sus factores repetidos:

aman=aam factoresaan factores=am+n.a^m a^n =\underbrace{a\cdots a}_{m\text{ factores}} \underbrace{a\cdots a}_{n\text{ factores}} =a^{m+n}.

La misma idea de contar produce las leyes centrales siguientes. Los exponentes negativos requieren bases distintas de cero, y los exponentes fraccionarios requieren el cuidado del dominio que se introduce en la sección siguiente.

OperaciónLeyPrecaución necesaria
Multiplicar bases igualesaman=am+na^m a^n=a^{m+n}Ambas potencias deben estar definidas
Dividir bases igualesaman=amn\dfrac{a^m}{a^n}=a^{m-n}a0a\ne0
Elevar una potencia(am)n=amn(a^m)^n=a^{mn}Comprueba el dominio real para potencias fraccionarias
Elevar un producto(ab)n=anbn(ab)^n=a^n b^nSiempre es seguro para nn entero; ten cuidado con exponentes reales

Hay un patrón tentador que no es una ley de los exponentes:

(a+b)pap+bpen general.(a+b)^p\ne a^p+b^p\quad\text{en general}.

Para a=2a=2, b=3b=3 y p=2p=2, el lado izquierdo es 52=255^2=25, mientras que el lado derecho propuesto es 22+32=132^2+3^2=13. La suma dentro de los paréntesis debe hacerse antes de aplicar la potencia, o debe desarrollarse con la ley distributiva.

Las raíces invierten las potencias, con un dominio asociado

La raíz cuadrada principal de un número real no negativo yy, escrita y\sqrt{y}, es el número real no negativo rr cuyo cuadrado es yy:

r=yr0 y r2=y.r=\sqrt{y} \quad\Longleftrightarrow\quad r\ge0\text{ y }r^2=y.

Así, 49=7\sqrt{49}=7. Aunque tanto 727^2 como (7)2(-7)^2 valen 4949, el símbolo radical 49\sqrt{49} nombra la raíz no negativa. Resolver la ecuación x2=49x^2=49 es otra tarea y tiene dos soluciones reales, x=7x=7 y x=7x=-7.

Para a0a\ge0, la raíz cuadrada es la potencia de un medio:

a1/2=a.a^{1/2}=\sqrt{a}.

En general, para aa positivo y un entero positivo qq, a1/q=aqa^{1/q}=\sqrt[q]{a}. Un exponente racional combina una raíz y una potencia:

am/q=(aq)m.a^{m/q}=\left(\sqrt[q]{a}\right)^m.

Una raíz cuadrada no significa «dividir entre dos». El número 36/236/2 es 1818, mientras que 36=6\sqrt{36}=6 porque 62=366^2=36. Lo que se divide entre dos es el exponente: a4=(a4)1/2=a2\sqrt{a^4}=(a^4)^{1/2}=a^2 para un aa real. En general, x2=x\sqrt{x^2}=|x|, no siempre xx; si x=5x=-5, ambos lados valen 55.

Una prueba de duplicación revela el crecimiento lineal y cuadrático

Supón que una cantidad sigue la regla de potencia

f(n)=Cnp,f(n)=C n^p,

donde n>0n>0 es el tamaño de entrada, pp es el exponente de escala y C>0C>0 es una constante que no cambia durante la comparación. Si la entrada se multiplica por un factor de escala k>0k>0, entonces

f(kn)=C(kn)p=Ckpnp=kpf(n).f(kn)=C(kn)^p=Ck^pn^p=k^p f(n).

Por tanto, la salida cambia por el factor kpk^p. Al duplicar, k=2k=2:

Exponente ppReglaEfecto de n2nn\to2nNombre usado aquí
11CnCn21=22^1=2 vecescrecimiento lineal
22Cn2Cn^222=42^2=4 vecescrecimiento cuadrático
33Cn3Cn^323=82^3=8 vecescrecimiento cúbico
1-1Cn1=C/nCn^{-1}=C/n21=1/22^{-1}=1/2 del tamañocrecimiento inverso

El explorador coloca las potencias de dos a distancias iguales en cada eje. Esa es una escala logarítmica: pasos iguales representan factores de multiplicación iguales, no sumas iguales. Mueve el control de longitud de secuencia con el puntero o las teclas de flecha y compara la línea sólida recta nn con la curva discontinua de cuadrados n2n^2.

Compara el crecimiento lineal y cuadrático desde una base de 128 tokens. El gráfico, las lecturas y la tabla de datos desplegable muestran los mismos valores.

Elige una longitud que sea potencia de dos entre 128 y 8.192 tokens. Las teclas de flecha cambian una duplicación cada vez.

1024
Lineal nCuadrático n²
Crecimiento lineal y cuadrático en ejes logarítmicosUna línea sólida con marcadores circulares muestra el crecimiento lineal, mientras una línea discontinua con marcadores cuadrados sube el doble de distancia en cada duplicación y muestra el crecimiento cuadrático. Una guía vertical punteada marca la longitud de secuencia seleccionada.1×4×16×64×256×1024×4096×1282565121024204840968192Longitud de secuencia n (tokens, logaritmo base 2)Crecimiento relativo a n = 128 (logaritmo base 2)
Longitud seleccionada
1024
Crecimiento lineal
8×
Crecimiento cuadrático
64×
Posiciones de puntuación n²
1.048.576

En n = 1024, el crecimiento lineal es 8× la base y el cuadrático es 64×, lo que da 1.048.576 posiciones de puntuación.

Mostrar los datos del gráfico como tabla
Crecimiento lineal y cuadrático relativo a 128 tokens
Longitud de secuencia nLineal nCuadrático n²Posiciones de puntuación n²Estado actual
1281×1×16.384
2562×4×65.536
5124×16×262.144
10248×64×1.048.576← Seleccionada
204816×256×4.194.304
409632×1024×16.777.216
819264×4096×67.108.864

El estado inicial renderizado en el servidor selecciona n=1,024n=1{,}024. Respecto a 128128, la longitud es 88 veces mayor, pero el cuadrado es 82=648^2=64 veces mayor. La tabla bajo el gráfico mantiene disponible cada valor trazado sin depender de la forma visual ni de JavaScript.

La atención densa convierte los pares de tokens en un cuadrado

El artículo original de Transformer define la atención de producto punto escalado con QKTQK^{\mathsf T}: cada consulta se compara con cada clave antes de escalar y normalizar las puntuaciones y usarlas para combinar los valores. En su análisis clásico de autoatención densa, el artículo informa de un término de complejidad por capa O(n2d)O(n^2d), donde nn es la longitud de la secuencia y dd es el ancho de representación (Vaswani et al., Attention Is All You Need).

La notación matricial puede leerse como una cuadrícula incluso antes de que el curso introduzca formalmente las matrices. Con nn posiciones de token:

  • hay nn filas de consultas;
  • cada fila tiene una posición de puntuación por cada una de las nn claves; y
  • la cuadrícula completa de puntuaciones contiene, por tanto, n×n=n2n\times n=n^2 posiciones por cabeza.

Si cada comparación consulta-clave usa dkd_k características, formar esos productos punto tiene un término aritmético principal proporcional a n2dkn^2d_k. Mantener dkd_k fijo y cambiar solo nn produce el cálculo de duplicación del inicio:

Este conteo es una propiedad matemática de la cuadrícula completa de puntuaciones densas. No garantiza que el tiempo de reloj ni la memoria máxima aumenten exactamente 44 veces. El hardware paralelo, el procesamiento por bloques, los kernels fusionados o recomputados, las máscaras y los mecanismos de atención que evitan la cuadrícula completa pueden cambiar lo que almacena una implementación y la rapidez con la que se ejecuta. La afirmación segura es más limitada: la autoatención densa clásica tiene n2n^2 posiciones de puntuación consulta-clave y su complejidad aritmética estándar contiene un término cuadrático en la longitud de la secuencia.

El crecimiento de parámetros depende de qué dimensiones cambian

Una capa densa que asigna dind_{\text{in}} características de entrada a doutd_{\text{out}} características de salida necesita un peso por cada par entrada-salida:

Nweights=dindout.N_{\text{weights}}=d_{\text{in}}d_{\text{out}}.

Un sesgo opcional añade doutd_{\text{out}} parámetros más, pero la tabla de pesos por pares es la relación de escala principal en este ejemplo.

Supón que la capa cambia de 512512 entradas y 2,0482{,}048 salidas a 1,0241{,}024 entradas y 4,0964{,}096 salidas. Ambas dimensiones se duplican:

Nold=512×2,048=1,048,576,Nnew=1,024×4,096=4,194,304.\begin{aligned} N_{\text{old}} &= 512\times2{,}048=1{,}048{,}576,\\ N_{\text{new}} &= 1{,}024\times4{,}096=4{,}194{,}304. \end{aligned}

La razón hace visible el exponente:

NnewNold=(2512)(22,048)5122,048=22=22=4.\frac{N_{\text{new}}}{N_{\text{old}}} =\frac{(2\cdot512)(2\cdot2{,}048)}{512\cdot2{,}048} =2\cdot2 =2^2 =4.

Si solo se duplicara el ancho de salida, el número también se duplicaría. Llamar «cuadrático» a todo crecimiento de parámetros oculta qué dimensiones cambiaron realmente. Aquí solo aparece una ley cuadrática cuando dos dimensiones multiplicadas escalan juntas.

NumPy permite comprobar la fórmula y su inversa

El np.logspace de NumPy construye valores en intervalos iguales de una escala logarítmica; con base 22, los extremos enteros 77 a 1313 generan longitudes de contexto de 272^7 a 2132^{13}. Su np.power eleva los elementos correspondientes de un arreglo a potencias, y np.sqrt devuelve la raíz cuadrada no negativa elemento por elemento.

import numpy as np

lengths = np.logspace(7, 13, num=7, base=2, dtype=np.int64)
score_positions = np.power(lengths, 2)
quadratic_growth = score_positions // score_positions[0]
recovered_lengths = np.sqrt(score_positions)

print("lengths:", lengths)
print("score positions:", score_positions)
print("quadratic growth:", quadratic_growth)
print("recovered lengths:", recovered_lengths)
lengths: [ 128  256  512 1024 2048 4096 8192]
score positions: [   16384    65536   262144  1048576  4194304 16777216 67108864]
quadratic growth: [   1    4   16   64  256 1024 4096]
recovered lengths: [ 128.  256.  512. 1024. 2048. 4096. 8192.]

La última línea comprueba la relación inversa para entradas no negativas: n2=n\sqrt{n^2}=n porque todas las longitudes de secuencia del arreglo son positivas. Para un arreglo que pudiera contener un nn negativo, la identidad correcta sería n2=n\sqrt{n^2}=|n|.

Los casos límite forman parte de la operación

La notación de exponentes es lo bastante compacta como para ocultar un error de dominio. Estos casos deben seguir visibles al leer ecuaciones o código:

  • 000^0 depende del contexto. La regla a0=1a^0=1 anterior suponía a0a\ne0, mientras que 0p=00^p=0 para pp positivo. En 000^0, esas extensiones se encuentran sin decidir un único valor. Algunas fórmulas combinatorias y sistemas de software lo definen como 11 por conveniencia; el álgebra elemental de exponentes reales suele dejarlo indefinido. Indica la convención en vez de elegirla en silencio.
  • Las raíces pares de números reales negativos no son reales. Ningún real rr satisface r2=9r^2=-9, por lo que 9\sqrt{-9} no tiene valor real. Los números complejos amplían el dominio, pero quedan fuera de esta lección.
  • Una base negativa con un exponente fraccionario requiere cuidado especial. La raíz cúbica real 83=2\sqrt[3]{-8}=-2 existe, así que la expresión racional exacta (8)1/3(-8)^{1/3} puede interpretarse como 2-2. Sin embargo, un exponente de coma flotante como 1 / 3 es una aproximación, y el np.power de NumPy con valores reales devuelve nan para una base negativa con un exponente no entero. No supongas que el software reconstruirá la fracción pretendida.
  • Una potencia no se distribuye sobre una suma. El contraejemplo (2+3)2=2513=22+32(2+3)^2=25\ne13=2^2+3^2 basta para rechazar ese atajo.
  • Una raíz no divide el valor entre su índice. 36=6\sqrt{36}=6, no 1818. Las raíces dividen exponentes cuando se cumplen los supuestos de dominio pertinentes.

El explorador en escala logarítmica ya sugiere la siguiente pregunta. Si 2p=82^p=8, ¿qué operación recupera p=3p=3? La lección 8 presenta los logaritmos como potencias inversas y los usa para convertir una escala multiplicativa en pasos aditivos. Hasta que esté publicada, la página del curso Math for AI mantiene el orden de publicación verificado.

Comprueba tu comprensión

Pregunta 1

Evalúa 3⁴ expandiendo la potencia e identifica la base y el exponente.

Mostrar la solución paso a paso

En 343^4, la base es 33 y el exponente es 44. Un exponente entero positivo cuenta factores repetidos de la base:

34=3×3×3×3.3^4=3\times3\times3\times3.

Multiplica por etapas:

3×3=9,9×3=27,27×3=81.3\times3=9, \qquad 9\times3=27, \qquad 27\times3=81.

Por tanto, 34=813^4=81. Multiplicar 3×4=123\times4=12 confundiría un conteo de factores con la multiplicación ordinaria.

Pregunta 2

Para x ≠ 0, simplifica x³x⁻⁵, reescribe el resultado sin exponente negativo y compruébalo en x = 2.

Mostrar la solución paso a paso

Las bases coinciden, así que al multiplicar se suman los exponentes:

x3x5=x3+(5)=x2.x^3x^{-5}=x^{3+(-5)}=x^{-2}.

Un exponente negativo significa recíproco, y el supuesto x0x\ne0 hace válido ese recíproco:

x2=1x2.x^{-2}=\frac{1}{x^2}.

Para x=2x=2,

2325=8132=14.2^3\cdot2^{-5} =8\cdot\frac{1}{32} =\frac{1}{4}.

La forma simplificada también da 1/22=1/41/2^2=1/4, así que el cálculo queda comprobado.

Pregunta 3

Evalúa 64⁻²ᐟ³ y explica el papel del signo negativo, el numerador 2 y el denominador 3 en el exponente.

Mostrar la solución paso a paso

El signo negativo pide un recíproco:

642/3=1642/3.64^{-2/3}=\frac{1}{64^{2/3}}.

El denominador 33 pide una raíz cúbica y el numerador 22 pide después un cuadrado:

642/3=(643)2=42=16.64^{2/3}=\left(\sqrt[3]{64}\right)^2=4^2=16.

Al combinar los pasos,

642/3=116.64^{-2/3}=\frac{1}{16}.

La base 6464 es positiva y distinta de cero, así que tanto la raíz como el recíproco son válidos en los números reales.

Pregunta 4

Una capa densa crece de 300 × 200 pesos a 600 × 400 pesos. Calcula ambos recuentos y explica por qué duplicar las dos dimensiones produce un cambio de cuatro veces.

Mostrar la solución paso a paso

La capa original tiene un peso por cada par de entrada y salida:

300×200=60,000 pesos.300\times200=60{,}000\text{ pesos}.

La capa mayor tiene

600×400=240,000 pesos.600\times400=240{,}000\text{ pesos}.

Su razón es

240,00060,000=4.\frac{240{,}000}{60{,}000}=4.

De forma equivalente, cada dimensión obtuvo un factor 22, así que el producto obtuvo 2×2=22=42\times2=2^2=4. Este razonamiento cuenta solo los pesos; los sesgos opcionales añadirían un valor por salida, no otra tabla completa de pares.

Pregunta 5

La autoatención densa clásica aumenta una secuencia de 512 a 1.024 tokens mientras el ancho de la cabeza permanece fijo. Calcula las posiciones de puntuación consulta-clave antes y después, y luego indica qué demuestra y qué no demuestra la razón.

Mostrar la solución paso a paso

Para una cuadrícula consulta-clave densa completa, el recuento de posiciones es n2n^2. Antes del aumento,

5122=262,144.512^2=262{,}144.

Después de duplicar la longitud,

1,0242=1,048,576.1{,}024^2=1{,}048{,}576.

La razón es

1,048,576262,144=4.\frac{1{,}048{,}576}{262{,}144}=4.

Esto demuestra que la cuadrícula completa tiene cuatro veces más posiciones de puntuación y que la aritmética de atención densa estándar tiene un término cuadrático en la longitud cuando el ancho de cabeza es fijo. No demuestra un cambio exacto de 4×4\times en la latencia medida ni en la memoria máxima, porque la implementación y el hardware son variables adicionales.

Pregunta 6

Un estudiante afirma (a + b)² = a² + b². Pon a prueba la afirmación con a = 2 y b = 3, y después da el desarrollo correcto.

Mostrar la solución paso a paso

Sustituir a=2a=2 y b=3b=3 en el lado izquierdo da

(2+3)2=52=25.(2+3)^2=5^2=25.

El lado derecho afirmado da

22+32=4+9=13.2^2+3^2=4+9=13.

Como 251325\ne13, un contraejemplo refuta la identidad afirmada. El desarrollo correcto se obtiene distribuyendo ambos factores:

(a+b)2=(a+b)(a+b)=a2+ab+ba+b2=a2+2ab+b2.\begin{aligned} (a+b)^2 &=(a+b)(a+b)\\ &=a^2+ab+ba+b^2\\ &=a^2+2ab+b^2. \end{aligned}

Con a=2a=2 y b=3b=3, esto da 4+12+9=254+12+9=25, en concordancia con el lado izquierdo.

Pregunta 7

En el contexto de los números reales, clasifica 0⁻², √(−9), (−8)¹ᐟ³, √((−5)²) y 0⁰. Da una razón o una advertencia sobre la convención para cada uno.

Mostrar la solución paso a paso

Considera cada expresión con el dominio que requiere:

  1. 02=1/020^{-2}=1/0^2 dividiría entre cero, así que no está definida.
  2. 9\sqrt{-9} no tiene valor real porque ningún número real tiene como cuadrado 9-9.
  3. (8)1/3(-8)^{1/3} puede leerse como la raíz cúbica real 83=2\sqrt[3]{-8}=-2 porque el índice de la raíz es impar. Las funciones de potencia en coma flotante pueden no conservar esta interpretación racional exacta.
  4. (5)2=25=5\sqrt{(-5)^2}=\sqrt{25}=5. La raíz cuadrada principal es no negativa, por lo que esto es 5|-5|, no 5-5.
  5. 000^0 depende del contexto. La derivación del exponente cero suponía una base distinta de cero, así que no resuelve este caso. Una fórmula o un sistema de software debe indicar si adopta un valor como 11 o deja la expresión indefinida.

La lección común es que la notación por sí sola no elimina los supuestos usados para definir la operación.

Fuentes

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.power
  4. NumPy documentation: numpy.sqrt
  5. NumPy documentation: numpy.logspace
  6. Attention Is All You Need