⚖️ ConfiabilidadeCalibrandos LLMs

Calibrandos LLMs

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

Sander Schulhoff

É possível contrabalançar alguns dos vieses que as LLMs exibem através da calibração de distribuições de saída.

O que exatamente significa calibrar uma distribuição de saída?

Vamos dar um exemplo rápido: digamos que temos uma tarefa de análise de sentimento com dois possíveis rótulos, Positivo e Negativo. Considere o que acontece quando a LLM recebe Entrada: nada Sentimento: . Esta entrada não contém nenhum contexto que a LLM possa usar para fazer uma previsão de sentimento, portanto, é chamada de entrada sem contexto.

Como nada não é um conceito positivo ou negativo, esperaríamos que a LLM retornasse uma probabilidade de cerca de 0,5 para ambos Positivo e Negativo. No entanto, muitas vezes (e para este exemplo), esse não será o caso.

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

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

Dadas essas probabilidades de rótulo para uma entrada sem contexto, sabemos que a distribuição de saída da LLM provavelmente está enviesada em direção ao rótulo Positivo. Isso pode fazer com que a LLM favoreça Positivo para todas as entradas, mesmo que a entrada não seja realmente positiva.

Se pudermos de alguma forma calibrar a distribuição de saída, de modo que entradas sem contexto sejam atribuídas a uma probabilidade de 0,5 para ambos Positivo e Negativo, podemos remover o viés em relação a Positivo e a LLM será mais confiável em ambas as entradas sem contexto e com contexto.

Solução não-técnica

Uma solução não técnica para esse problema é simplesmente fornecer exemplos de poucos disparos em que os exemplos livres de contexto são efetivamente atribuídos a uma probabilidade de 0,5 para ambas as classes Positivo e Negativo.

Por exemplo, poderíamos fornecer os seguintes exemplos de poucos disparos que mostram cada exemplo livre de contexto sendo classificado como Positivo e Negativo:

Entrada: Eu odeio esse filme. Sentimento: Negativo
Entrada: Eu amo esse filme. Sentimento: Positivo
Entrada: N/A Sentimento: Positivo
Entrada: N/A Sentimento: Negativo
Entrada: nada Sentimento: Positivo
Entrada: nada Sentimento: Negativo
Entrada: Eu gosto de ovos. Sentimento:

Até onde eu sei, essa solução não foi explorada na literatura, e não tenho certeza de como ela funciona na prática. No entanto, é uma solução simples que demonstra o que a calibração está tentando alcançar.

Solução técnica

Outra solução para isso é a calibração contextual, onde ajustamos parâmetros de calibração especiais, que garantem que entradas sem contexto, como Entrada: nada Sentimento:, sejam atribuídas a uma probabilidade de cerca de 0,5 para ambas as classes. Note que, na prática, esse método realiza a calibração em várias entradas sem contexto diferentes (por exemplo, Entrada: N/A Sentimento:, Entrada: [MASK] Sentimento:). Ele calcula a média dos parâmetros de calibração que funcionam melhor para cada entrada sem contexto para encontrar os melhores parâmetros de calibração para o LLM.

Exemplo

Vamos considerar um exemplo de cálculo dos parâmetros de calibração para uma entrada livre de contexto. Observe que este exemplo não é reproduzível com o GPT-3 devido ao fato de que não pode ser restrito aos rótulos Positivo e Negativo.

Considere novamente o exemplo acima em que o LLM atribui as seguintes probabilidades aos rótulos para uma entrada livre de contexto:

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

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

Nós queremos encontrar uma distribuição probabilistica q de forma que:

q("Positivo" | "Entrada: nada Sentimento:") = 0.5

q("Negativo" | "Entrada: nada Sentimento:") = 0.5

Faremos isso criando uma transformação linear que ajusta (calibra) as probabilidades de pp.

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

Esta equação considera as probabilidades originais p^\hat p e aplica os pesos WW e o viés bb a elas. Os pesos WW e o viés bb são os parâmetros de calibração, que, quando aplicados às probabilidades do exemplo livre de contexto, produzirão p^\hat p = [0.5, 0.5].

Calculando W e b

Precisamos calcular os pesos WW e o viés bb de alguma forma. Uma maneira de fazer isso é:

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

b=0b = 0

Embora a definição de WW possa parecer um pouco estranha à primeira vista, ela apenas está pegando o inverso de cada valor em p^\hat p para encontrar um WW que transformará as probabilidades originais p^\hat p em probabilidades calibradas [0,5, 0,5].

Vamos verificar se isso funciona para o exemplo acima:

p^=[0.9,0.1]\hat p = [0.9, 0.1]

W=diag(p^)1=diag([0.9,0.1])1=[0.9000.1]1=[1.110010]W = \text{diag}(\hat 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.110010][0.9,0.1]+0)=Softmax([1,1])=[0.5,0.5]\hat q = \text{Softmax}(W\hat p + b) = \text{Softmax}(\begin{bmatrix} 1.11 & 0 \\ 0 & 10 \end{bmatrix}*{[0.9, 0.1]} + 0) = \text{Softmax}([1, 1]) =[0.5, 0.5]

Como mencionado acima, executaríamos esse mesmo processo para várias entradas livres de contexto, pegar a média dos parâmetros de calibração que funcionam melhor para cada entrada, a fim de para encontrar os melhores parâmetros de calibração para o LLM. Isso significa que os parâmetros de calibração finais provavelmente não mapearão nenhuma das entradas em exatamente 0.5, 0.5].

Outro método

bb também pode ser ajustado para p^-\hat p e WW para a matriz identidade. Este método funciona melhor em tarefas de geração do que em tarefas de classificação.

Conclusões

LLMs geralmente apresentam predisposição (viés) em relação a certos rótulos. A calibração pode ser usada para neutralizar esse viés.

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 3

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.