Un modelo mental útil
Piensa en la arquitectura de un modelo como un conjunto de ecuaciones con espacios numerados vacíos. La arquitectura decide dónde están esos espacios y cómo se conectan. Los parámetros son los números colocados en esos espacios.
Esta distinción es importante. Dos modelos pueden tener la misma arquitectura, pero comportarse de forma diferente porque sus valores de parámetros difieren. Antes del entrenamiento, los espacios contienen valores inicializados. El entrenamiento ajusta algunos o todos ellos utilizando datos. Durante la inferencia, el modelo normalmente mantiene esos valores fijos y aplica el cálculo resultante a nuevas entradas.
Un parámetro no es un control que el usuario ajusta para cada solicitud. Forma parte del modelo mismo.
Cómo funcionan los parámetros
Una capa de red neuronal suele realizar un cálculo de esta forma:
[
\text{salida} = f(\text{entrada} \times \text{matriz de pesos} + \text{vector de sesgos})
]
La matriz de pesos y el vector de sesgos contienen parámetros. La función (f) forma parte de la arquitectura y puede no contener parámetros propios.
La arquitectura fija las formas de los tensores de parámetros. Si una capa conecta 2 valores de entrada con 3 valores de salida, su matriz de pesos necesita 6 entradas escalares:
2 inputs ──> [2 × 3 weight matrix] ──> 3 outputs
+
[3-value bias vector]Cada entrada escalar almacenada de forma independiente cuenta como un parámetro. El modelo utiliza las mismas entradas para cada ejemplo que procesa. Aplicar un parámetro un millón de veces no lo convierte en un millón de parámetros.
Durante el entrenamiento, un optimizador recibe información sobre cómo afectaría al error del modelo un pequeño cambio en cada parámetro entrenable. Después actualiza los valores. Repetir este proceso puede producir un conjunto de parámetros que asigna nuevas entradas a salidas útiles.
La palabra «entrenable» requiere cierta precisión. Un parámetro puede congelarse para que una ejecución de entrenamiento concreta no lo actualice. Aun así, sigue formando parte del estado ajustado del modelo. Los frameworks también almacenan otro estado que afecta al cálculo, pero que no se trata como un parámetro. PyTorch denomina a este estado buffer, mientras que Keras utiliza una colección más amplia de «pesos» y la divide en pesos entrenables y no entrenables.
Un recuento de parámetros paso a paso
Considera una red pequeña con dos valores de entrada, una capa oculta con tres salidas y una salida final.
La primera capa tiene:
- (2 \times 3 = 6) pesos
- 3 sesgos
- 9 parámetros en total
La capa final tiene:
- (3 \times 1 = 3) pesos
- 1 sesgo
- 4 parámetros en total
La red completa tiene (9 + 4 = 13) parámetros.
Los valores de entrada no cuentan como parámetros porque cambian de un ejemplo a otro. Las salidas intermedias tampoco cuentan; son resultados temporales. Las funciones de activación de este ejemplo no añaden parámetros. Solo los valores almacenados de forma independiente en las matrices de pesos y los vectores de sesgos contribuyen al recuento.
Este método basado en las formas se puede aplicar a modelos más grandes: cuenta las entradas escalares de cada tensor de parámetros y luego súmalas. Si los parámetros se comparten, cuenta una vez los valores almacenados, no cada lugar en el que el modelo los utiliza.
Por qué importa el número de parámetros
El número de parámetros describe el tamaño del estado numérico aprendido de un modelo. Afecta a varias propiedades prácticas.
En primer lugar, los parámetros almacenados ocupan memoria. La cantidad depende de cuántos parámetros haya y de cómo se represente cada valor. Una representación de 16 bits utiliza dos bytes por escalar almacenado, antes de tener en cuenta el estado no paramétrico y la sobrecarga del archivo.
En segundo lugar, los parámetros participan en el cálculo. Más parámetros suelen implicar más operaciones aritméticas, aunque la arquitectura, el uso compartido de parámetros y las partes del modelo que están activas pueden cambiar esa relación.
En tercer lugar, el número de parámetros ayuda a describir la capacidad de un modelo para ajustar patrones. No mide lo bien que se utilizó esa capacidad. Los datos de entrenamiento, el objetivo, la arquitectura, la optimización y la evaluación son factores importantes. Un modelo con más parámetros no es automáticamente más preciso, más informado ni más útil.
Los recuentos de parámetros también necesitan una etiqueta. Una herramienta o un artículo puede informar del total de parámetros, solo de los parámetros marcados actualmente como entrenables o de un recuento que excluye los embeddings. Estas cifras responden a preguntas diferentes y no deben compararse como si fueran idénticas.
Errores comunes
Los parámetros no son hiperparámetros
Los parámetros son valores ajustados como parte del modelo. Los hiperparámetros configuran el modelo o el proceso de entrenamiento. La tasa de aprendizaje y el tamaño del lote son hiperparámetros comunes: influyen en cómo se desarrolla el entrenamiento, pero no son valores aprendidos dentro del modelo resultante.
Parámetros y pesos no son sinónimos exactos
Los pesos son un tipo importante de parámetro, por lo que a menudo se utilizan ambas palabras indistintamente. Sin embargo, un sesgo también es un parámetro, al igual que los valores aprendidos de escala y desplazamiento de algunas capas de normalización. «Pesos» también puede tener un significado más amplio y específico de cada framework. La interpretación más segura de un recuento de parámetros es la definida por la herramienta o el editor del modelo que lo produjo.
Un parámetro no equivale a un hecho
El comportamiento de un modelo entrenado surge de la interacción de muchos valores de parámetros. Un solo valor normalmente no tiene un significado expresable en lenguaje común como «París es la capital de Francia». La información puede distribuirse entre muchos valores, y un valor puede influir en muchas salidas.
Más parámetros no garantizan un modelo mejor
El número de parámetros mide cantidad, no calidad. Aumentar la capacidad puede ayudar cuando la arquitectura, los datos y el entrenamiento la utilizan eficazmente. También puede desperdiciar memoria y capacidad de cálculo, o ajustar patrones no deseados. El rendimiento debe medirse en la tarea relevante.
No todo valor almacenado es necesariamente un parámetro
Los modelos pueden conservar estadísticas acumuladas, cachés u otro estado junto con los parámetros. Los frameworks clasifican este estado de manera diferente. Para obtener un recuento exacto, utiliza la enumeración de parámetros del framework en lugar del tamaño de cada tensor de un checkpoint.
Cómo encajan los parámetros en un modelo
La arquitectura de la red neuronal determina las operaciones y las formas de los tensores de parámetros. La inicialización proporciona a esos tensores sus valores iniciales. El entrenamiento cambia los valores entrenables. Un checkpoint guarda los valores resultantes, a menudo junto con estado adicional. La inferencia los carga y los utiliza para calcular las salidas.
Por tanto, los parámetros no son ni el modelo completo ni meramente una especificación del modelo. Un modelo entrenado utilizable combina una arquitectura con valores de parámetros concretos.
Qué leer a continuación
Lee ¿Qué son los pesos del modelo? para conocer el papel de los multiplicadores que constituyen la mayor parte de los parámetros de una red neuronal. Después, consulta Parámetros del modelo frente a pesos del modelo para conocer el límite exacto entre ambos términos.