ELAI S.r.l.

Si cada documento importa lo mismo, ¿por qué la longitud cambia el entrenamiento?

La media por token y por documento no son equivalentes. Un ejemplo completo de entropía cruzada, máscaras y gradientes muestra qué se está optimizando.

Si cada documento importa lo mismo, ¿por qué la longitud cambia el entrenamiento?

Dos documentos, dos formas de decidir cuánto cuentan

Un equipo prepara documentos de dominio para adaptar un modelo de IA. Unos son breves y otros largos. Si queremos que cada documento importe lo mismo, ¿basta mezclarlos en un lote y promediar la loss? No siempre: promediar todas las posiciones supervisadas da más peso a los documentos que contienen más posiciones. El denominador forma parte del objetivo de aprendizaje, no es un detalle cosmético del programa.

Preguntamos qué cantidad promediamos y cómo cambia el gradiente. Dos grupos sintéticos contienen 2 y 8 posiciones válidas, y un modelo binario de un parámetro permite calcular completamente la entropía cruzada. Después añadimos padding, posiciones destinadas solo a igualar longitudes. No entrenamos un modelo lingüístico: aislamos con un modelo controlable un mecanismo relevante para adaptar modelos verticales.

Qué mide una loss individual

Un token es una unidad de representación textual; una posición supervisada es un lugar donde pedimos una predicción y disponemos de un objetivo. El ejemplo no necesita palabras reales ni un tokenizador concreto. Cada posición tiene etiqueta y igual a 0 o 1. El modelo asigna la misma probabilidad p a la clase 1 en todas las posiciones. Es deliberadamente sencillo: muestra las reglas de agregación, no aprende lenguaje.

p = sigmoid(theta) = 1 / (1 + exp(-theta)) ell(theta,y) = -y log(p) - (1-y) log(1-p)

Theta es el logit, un parámetro real modificable. Con theta=0, p=0,5. Usamos logaritmos naturales y la loss se expresa en nat. Para y=1 penalizamos p pequeña; para y=0 penalizamos 1−p pequeña. La loss no es un porcentaje de respuestas correctas. Cambiar los pesos puede dar el mismo valor de loss y gradientes distintos.

La media global elige implícitamente los pesos de los documentos

Sea n_i el número de posiciones válidas del documento i y L_i su loss media. La media por token suma todas las pérdidas y divide por el total válido. La media por documento calcula primero cada L_i y asigna igual peso a los documentos. En el primer objetivo, el coeficiente de L_i es proporcional a n_i; en el segundo es idéntico para todos, siempre que cada documento tenga alguna posición válida.

L_token = sum_i n_i L_i / sum_i n_i L_document = (1/D) sum_i L_i

D es el número de documentos. Con n_A=2 y n_B=8, el objetivo por token es 0,2 L_A+0,8 L_By el documental 0,5 L_A+0,5 L_B. B pesa cuatro veces A en el primero, no en el segundo. La media por token no es automáticamente errónea: da coherentemente igual importancia a cada posición. Solo contradice la intención declarada cuando deben pesar igual los documentos, no las posiciones.

El gradiente hace visible la diferencia

Asignamos etiqueta 1 a las dos posiciones de A y etiqueta 0 a las ocho de B. Son objetivos construidos, no frecuencias observadas en un corpus. Para ver cómo cambia theta derivamos la loss respecto a ese parámetro. La derivada de la sigmoid es p(1−p); al sustituirla en las derivadas logarítmicas queda p−y. El gradiente indica la dirección local de aumento de la loss.

d ell / d theta = -y(1-p) + (1-y)p = p-y g_token = p - 2/10 = p - 0.2 g_document = p - 1/2 = p - 0.5

Con theta=0 y p=0,5, el gradiente por token es 0,3 y el documental 0. Un paso de descenso resta al parámetro el gradiente multiplicado por un paso positivo: el primer criterio empuja theta hacia valores negativos y el segundo ya es estacionario. Ambas pérdidas iniciales valen log 2, aproximadamente 0,693147 nat. Mirar solo ese número no revelaría que sugieren actualizaciones distintas.

También podemos localizar los óptimos. El gradiente es p menos la proporción ponderada de etiquetas 1 y se anula en p=0,2 para tokens y p=0,5 para documentos. La segunda derivada p(1−p) es positiva entre 0 y 1, dando óptimos únicos y finitos en este modelo escalar. Eso no demuestra convexidad del paisaje de loss de un gran modelo lingüístico: la conclusión solo corresponde al modelo declarado.

El padding no es un nuevo ejemplo de clase cero

Para obtener dos filas de longitud 8 añadimos seis posiciones artificiales a A. No tienen objetivo de la tarea: organizan la forma de los tensores. Si las etiquetamos 0 y las incluimos como datos reales, hay 16 posiciones y solo 2 positivas. El óptimo pasa a p=2/16=0,125. El contenido de los documentos no cambió: entraron seis ejemplos inventados en el objetivo.

Una máscara m igual a 1 en posiciones válidas y 0 en padding debe afectar al numerador y al denominador. Añadir posiciones artificiales enmascaradas deja invariantes la loss correcta y su gradiente. El programa lo verifica con 0,1,6 y 20 posiciones añadidas y tres valores de theta. Es una propiedad del cálculo construido, no una medida de robustez de un modelo desplegado.

L_masked = sum_j m_j ell_j / sum_j m_j sum_j m_j = 10, not 16

Otro error elimina las pérdidas del padding del numerador, pero sigue dividiendo por 16. El resultado es 10/16 de la loss correcta. Con theta=0 baja de 0,693147 a 0,433217 sin mejorar ninguna probabilidad; el gradiente baja de 0,3 a 0,1875. El óptimo escalar sigue en p=0,2 porque multiplicamos toda la función por una constante positiva. Cambia la escala del paso: una loss numéricamente menor no demuestra una predicción mejor.

Un tercer error considera la etiqueta 0 sinónimo de padding e ignora todos los 0, incluidas las ocho supervisiones legítimas de B. Solo quedan dos etiquetas 1: el gradiente inicial es−0,5 y empuja p hacia 1. El mínimo es un límite al crecer theta sin cota, no un óptimo finito. El valor de una clase y el papel artificial de una posición son cosas distintas; la máscara debe describir ese papel.

CriterioLoss en theta=0(nat)Gradiente en theta=0p óptima
Media por token0.6931470.30000.200
Media por documento0.6931470.00000.500
Padding incluido0.6931470.37500.125
Denominador incorrecto0.4332170.18750.200
Clase cero ignorada0.693147-0.50001(límite)

Las filas describen objetivos distintos, no cinco entrenamientos evaluados en un mismo test. La media por token o documento es una elección explícita de pesos. Otras filas introducen errores respecto a la definición acordada de datos válidos. Un factor constante podría absorberse en el paso de optimización; si cambia la proporción de padding entre lotes, cambia el factor y también los pesos relativos de las contribuciones al actualizar.

Izquierda: las curvas usan tres ponderaciones diferentes; comparar sus mínimos numéricos no selecciona un modelo mejor. Derecha: los gradientes en el mismo theta=0 muestran cambios de intensidad y de signo al descartar etiquetas 0 legítimas. Datos y modelo sintéticos; no se midió exactitud de un LLM.
Izquierda: las curvas usan tres ponderaciones diferentes; comparar sus mínimos numéricos no selecciona un modelo mejor. Derecha: los gradientes en el mismo theta=0 muestran cambios de intensidad y de signo al descartar etiquetas 0 legítimas. Datos y modelo sintéticos; no se midió exactitud de un LLM.

Dividir el lote no debería cambiar silenciosamente el objetivo

Supongamos que A y B se procesan como dos microbatches, porciones sucesivas para reducir memoria. Con theta=0 sus gradientes medios son−0,5 y+0,5. Promediarlos sin pesos da 0, reconstruyendo el objetivo documental. Para reproducir la media global por token hay que ponderar cada gradiente medio por su número de posiciones válidas: (2 ×−0,5+8 × 0,5)/10=0,3, igual que en el lote completo.

g_global = sum_b n_b g_b / sum_b n_b g_mean_of_means = (1/B) sum_b g_b

B cuenta aquí los microbatches. Las fórmulas coinciden con igual número de posiciones válidas o en casos particulares de compensación. Igual longitud de tensores después del padding no basta. Comprobamos el álgebra de acumulación, no denunciamos un defecto de una versión de Trainer o framework. Una implementación debe compararse con su objetivo declarado y sus reglas reales de reducción.

De la fórmula a la biblioteca, sin confundir niveles

La documentación oficial de CrossEntropyLoss de PyTorch 2.14 distingue objetivos como índices de clase y distribuciones de probabilidad. Para índices, ignore_index excluye objetivos de loss y gradiente; sin pesos de clase, la media usa el número no ignorado. El ejemplo usa etiquetas discretas y ningún peso de clase. No extendemos la fórmula sin cambios a objetivos probabilísticos u otras ponderaciones.

En un modelo lingüístico causal, las posiciones válidas dependen también de alinear entradas con objetivos del siguiente token y de supervisar prompts, respuestas o ambos. La longitud completa no tiene por qué coincidir con n_i. La máscara de atención y la de loss responden a preguntas distintas, aunque una implementación las conecte. Antes de contar hay que definir qué predicciones contribuyen realmente al objetivo, no solo cuántos tokens ocupan el tensor.

Sin posiciones válidas, el denominador es cero y la media no está definida por la fórmula. El programa lo señala explícitamente en vez de devolver cero como si la predicción fuera perfecta. Un documento sin objetivos también tiene L_i indefinida; excluirlo o tratarlo de otra forma exige una política declarada. No atribuimos este comportamiento a todas las bibliotecas, que pueden resolver esos casos de otro modo.

Reproducir el razonamiento sin entrenar un LLM

El programa solo usa la biblioteca matemática de Python para la loss y los gradientes analíticos, con una formulación logarítmica estable. Guarda los cinco criterios, comprueba invariancia al padding bien enmascarado y compara con una diferencia finita central en theta=0,3. El error observado es aproximadamente 4,1 × 10⁻¹¹, menor que la tolerancia elegida 1 × 10⁻⁸. Eso no valida un sistema de diferenciación automática.

En el fragmento, lengths cuenta posiciones contribuyentes y gradients guarda la contribución media de cada documento. Las dos medias finales reconstruyen los objetivos sin GPU, pesos ni datos externos. Sumar posiciones cuesta linealmente respecto a su número, pero no mide el coste de inferencia o entrenamiento. La operación escalar no simula la parte costosa de un modelo real.

¿Qué unidad de importancia queremos optimizar?

La longitud cambia el entrenamiento cuando cambia el peso de las contribuciones al objetivo. Dar igual importancia a documentos exige promedios documentales o pesos equivalentes; darla a posiciones exige media por token. Ninguna es universalmente mejor. Toda elección debe distinguir padding y objetivos válidos, y dividir en microbatches no debería introducir pesos no declarados. La calidad real requiere evaluación independiente, que este ejemplo no sustituye.

Fuente y materiales reproducibles

PyTorch 2.14 documentation, CrossEntropyLoss: class-index and probability targets, reduction, ignore_index. Relevant technical definitions read 21 October 2026. Documentation consulted; no PyTorch execution claimed..

import math
p=0.5
lengths=[2,8]
labels=[1,0]
gradients=[p-y for y in labels]
token_gradient=sum(n*g for n,g in zip(lengths,gradients))/sum(lengths)
document_gradient=sum(gradients)/len(gradients)
assert abs(token_gradient-0.3)<1e-12
assert document_gradient==0
print(token_gradient,document_gradient)

Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 21 de octubre de 2026.