É 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.
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.
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.
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 .
Esta equação considera as probabilidades originais e aplica os pesos e o viés a elas. Os pesos e o viés são os parâmetros de calibração, que, quando aplicados às probabilidades do exemplo livre de contexto, produzirão = [0.5, 0.5].
Precisamos calcular os pesos e o viés de alguma forma. Uma maneira de fazer isso é:
Embora a definição de possa parecer um pouco estranha à primeira vista, ela apenas está pegando o inverso de cada valor em para encontrar um que transformará as probabilidades originais em probabilidades calibradas [0,5, 0,5].
Vamos verificar se isso funciona para o exemplo acima:
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].
também pode ser ajustado para e para a matriz identidade. Este método funciona melhor em tarefas de geração do que em tarefas de classificação.
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.
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.