Bienvenidos
😃 Básico
💼 Aplicaciones básicas
🧙‍♂️ Intermediate
🤖 Agentes
⚖️ Reliability
🖼️ Image Prompting
🔓 Prompt Hacking
🔨 Tooling
💪 Prompt Tuning
🎲 Miscellaneous
Models
📙 Referencia de Vocabulario
📚 Bibliography
📦 Prompted Products
🛸 Recursos adicionales
🔥 Hot Topics
✨ Créditos
⚖️ ReliabilityCalibración de LLMs

Calibración de LLMs

Reading Time: 4 minutes
Last updated on August 7, 2024

Sander Schulhoff

Es posible contrarrestar algunos de los sesgos que presentan los LLMs mediante la calibración de las distribuciones de salida.

¿Qué significa exactamente calibrar una distribución de salida?

Veamos un ejemplo rápido: digamos que tenemos una tarea de análisis de sentimientos con dos posibles etiquetas, Positivo y Negativo. Consideremos lo que sucede cuando se le solicita al LLM que analice Entrada: nada Sentimiento: . Esta entrada no contiene ningún contexto que el LLM pueda utilizar para realizar una predicción de sentimiento, por lo que se llama una entrada sin contexto.

Dado que nada no es un concepto ni positivo ni negativo, esperaríamos que el LLM generara una probabilidad de alrededor de 0.5 para ambos, Positivo y Negativo. Sin embargo, a menudo (y para este ejemplo) ese no será el caso.

p("Positivo" | "Entrada: nada Sentimiento:") = 0.9

p("Negativo" | "Entrada: nada Sentimiento:") = 0.1

Dados estos probabilidades de etiquetas para una entrada sin contexto, sabemos que la distribución de salida del LLM es probablemente sesgada hacia la etiqueta Positivo. Esto puede hacer que el LLM favorezca la etiqueta Positivo para todas las entradas, incluso si la entrada no es realmente positiva.

Si podemos de alguna manera calibrar la distribución de salida, de tal forma que las entradas sin contexto se asignen una probabilidad de 0.5 tanto para Positivo como para Negativo, entonces podemos eliminar con frecuencia el sesgo hacia Positivo y el LLM será más confiable tanto en entradas sin contexto como en entradas con contexto.

Solución no técnica

Una solución no técnica a este problema es simplemente proporcionar algunos ejemplos de pocos disparos donde los ejemplos sin contexto se asignan de manera efectiva una probabilidad de 0.5 tanto para Positivo como para Negativo.

Por ejemplo, podríamos proporcionar los siguientes ejemplos de pocos disparos que muestren que cada ejemplo sin contexto se clasifica como tanto Positivo como Negativo:

Entrada: Odio esta película. Sentimiento: Negativo
Entrada: Amo esta película. Sentimiento: Positivo
Entrada: N/A Sentimiento: Positivo
Entrada: N/A Sentimiento: Negativo
Entrada: nada Sentimiento: Positivo
Entrada: nada Sentimiento: Negativo
Entrada: Me gustan los huevos. Sentimiento:

Hasta donde sé, esta solución no se ha explorado en la literatura, y no estoy seguro de cómo funciona en la práctica. Sin embargo, es una solución simple que demuestra lo que se trata de lograr con la calibración.

Solución técnica

Otra solución para esto es la calibración contextual, donde ajustamos parámetros de calibración especiales, que garantizan que las entradas sin contexto como Input: nothing Sentiment: tengan una probabilidad de alrededor del 0.5 para ambas etiquetas. Se debe tener en cuenta que en la práctica, este método realiza la calibración sobre múltiples entradas sin contexto diferentes (por ejemplo, Input: N/A Sentiment: , Input: [MASK] Sentiment: ). Se promedian los parámetros de calibración que funcionan mejor para cada entrada sin contexto para encontrar los mejores parámetros de calibración para el LLM.

Ejemplo

Veamos un ejemplo de cómo calcular los parámetros de calibración para una entrada sin contexto. Tenga en cuenta que este ejemplo no es reproducible con GPT-3 debido al hecho de que no se puede restringir a las etiquetas Positive y Negative.

Considere nuevamente el ejemplo anterior donde el LLM asigna las siguientes probabilidades a las etiquetas para una entrada sin contexto:

p("Positive" | "Input: nothing Sentiment:") = 0.9

p("Negative" | "Input: nothing Sentiment:") = 0.1

Queremos encontrar alguna distribución de probabilidad q tal que

q("Positive" | "Input: nothing Sentiment:") = 0.5

q("Negative" | "Input: nothing Sentiment:") = 0.5

Lo haremos creando una transformación lineal que ajusta (calibra) las probabilidades de pp.

qˆ=Softmax(Wpˆ+b)\^{q} = \text{Softmax}(W\^{p} + b)

Esta ecuación toma las probabilidades originales pˆ\^{p} y aplica los pesos WW y el sesgo bb a ellos. Los pesos WW y el sesgo bb son los parámetros de calibración, que, cuando se aplican a las probabilidades del ejemplo sin contexto, darán como resultado qˆ\^{q} = [0.5, 0.5].

Cálculo de W y b

Necesitamos calcular los pesos WW y el sesgo bb. Una forma de hacer esto es:

W=diag(pˆ)1W = \text{diag}(\^{p})^{-1}

b=0b = 0

Aunque la definición de WW puede parecer un poco extraña al principio, simplemente está tomando el inverso de cada valor en pˆ\^{p} para encontrar un WW que transformará las probabilidades originales pˆ\^{p} en las probabilidades calibradas [0.5, 0.5].

Verifiquemos que esto funciona para el ejemplo anterior:

pˆ=[0.9,0.1]\^{p} = [0.9, 0.1]

W=diag(pˆ)1=diag([0.9,0.1])1=[0.9000.1]1=[1.110010]W = \text{diag}(\^{p})^{-1} = \text{diag}([0.9, 0.1])^{-1} = \begin{bmatrix} 0.9 & 0 \\ 0 & 0.1 \end{bmatrix}^{-1} = \begin{bmatrix} 1.11 & 0 \\ 0 & 10 \end{bmatrix}

qˆ=Softmax(Wpˆ+b)=Softmax([1.11010][0.9,0.1]+0)=Softmax([1,1])=[0.5,0.5]\^{q} = \text{Softmax}(W\^{p} + b) = \text{Softmax}(\begin{bmatrix} 1.11 & 0 & 10 \end{bmatrix}*{[0.9, 0.1]} + 0) = \text{Softmax}([1, 1]) =[0.5, 0.5]

Como se mencionó anteriormente, realizaríamos este mismo proceso para múltiples entradas libres de contexto diferentes y promediaríamos los parámetros de calibración que funcionen mejor para cada entrada libre de contexto para encontrar los mejores parámetros de calibración para el LLM. Esto significa que los parámetros de calibración finales probablemente no asignen ninguna de las entradas libres de contexto exactamente a [0.5, 0.5].

Otro método

bb también podría establecerse en pˆ-\^{p}, y WW en la matriz de identidad. Este método funciona mejor en tareas de generación que en tareas de clasificación.

Conclusiones

Los LLM a menudo están predispuestos (sesgados) hacia ciertas etiquetas. La calibración se puede utilizar para contrarrestar este sesgo.

Sander Schulhoff

Sander Schulhoff is the Founder of Learn Prompting and an ML Researcher at the University of Maryland. He created the first open-source Prompt Engineering guide, reaching 3M+ people and teaching them to use tools like ChatGPT. Sander also led a team behind Prompt Report, the most comprehensive study of prompting ever done, co-authored with researchers from the University of Maryland, OpenAI, Microsoft, Google, Princeton, Stanford, and other leading institutions. This 76-page survey analyzed 1,500+ academic papers and covered 200+ prompting techniques.

Footnotes

  1. Zhao, T. Z., Wallace, E., Feng, S., Klein, D., & Singh, S. (2021). Calibrate Before Use: Improving Few-Shot Performance of Language Models. 2