Explicação detalhada do algoritmo de amostragem do modelo ChatGPT
O modelo utilizado pelo ChatGPT - o modelo GPT (Generative Pre-trained Transformer) possui diversos parâmetros, e compreendê-los é crucial para a tarefa de geração de texto. O conjunto de parâmetros mais importante é temperature
e top_p
. Eles controlam duas técnicas de amostragem diferentes e são usados em modelos de linguagem causal para prever a probabilidade da próxima palavra em um determinado contexto. Este artigo se concentrará em explicar os princípios de amostragem temperature
e top_p
seu impacto na produção do modelo.
Diretório de artigos
Compreendendo a amostragem em modelos de linguagem causal
Suponha que treinemos um modelo que descreva as preferências de vida pessoal e queiramos que ele complete a frase “Gosto de linda ___”. O modelo geral de linguagem funcionará de acordo com o processo mostrado abaixo:
O modelo analisa todas as palavras possíveis e amostras delas com base em sua distribuição de probabilidade para prever a próxima palavra. Por conveniência, suponha que o modelo tenha um vocabulário pequeno, apenas: “elefante”, “melancia”, “sapatos” e “menina”. A partir das probabilidades do vocabulário na figura abaixo, podemos descobrir que “menina” tem a maior probabilidade de seleção ( p = 0,664 p = 0,664p=0,664 ), "Melancia" tem a menor probabilidade de seleção (p = 0,032 p=0,032p=0,032)。
No exemplo acima, é óbvio que é mais provável que “menina” seja selecionada. Porque o ser humano está mentalmente acostumado a adotar uma “estratégia gananciosa” para um único problema , ou seja, escolher o evento com maior probabilidade.
A estratégia gananciosa é consistente com a mente humana, mas apresenta falhas graves.
No entanto, a estratégia acima tem uma falha significativa quando usada em cenários de interação frequente - se escolhermos sempre a palavra mais provável, então esta palavra será repetidamente reforçada, porque a atenção da maioria dos modelos nos modelos de linguagem modernos concentra-se apenas nas palavras mais recentes (Tokens). O conteúdo gerado desta forma será muito rígido e previsível, e será imediatamente óbvio que é gerado por máquina e não é nada inteligente.
Como podemos tornar nosso modelo menos determinístico e tornar o conteúdo que ele gera mais dinâmico? Para este fim, introduzimos um algoritmo de amostragem generativa baseado em amostragem distribuída. Mas o método de amostragem tradicional encontrará um problema: se tivermos 50.000 palavras candidatas (Tokens), mesmo que seja extremamente improvável que as últimas 25.000 palavras de cauda longa apareçam, sua massa de probabilidade pode chegar a 30%. Isso significa que, para cada amostra, temos 1/3 de chance de nos desviarmos completamente do “tópico” original. E como o modelo de atenção mencionado acima tende a se concentrar na palavra mais recente, isso levará a uma cascata irrecuperável de erros porque a próxima palavra depende fortemente da palavra de erro mais recente.
Para evitar a amostragem da cauda, os métodos mais populares são a amostragem Top-k e a amostragem de temperatura .
Amostragem top-k
A amostragem Top-k é uma otimização da "estratégia gananciosa" anterior.Ele faz amostras dos k
tokens mais bem classificados, permitindo que outros tokens com pontuações mais altas ou probabilidades mais altas também tenham a chance de serem selecionados. Em muitos casos, a aleatoriedade introduzida por esta amostragem ajuda a melhorar a qualidade da geração.
No exemplo acima, primeiro filtramos os tokens com os três principais valores de verossimilhança e, em seguida, recalculamos a probabilidade de amostragem com base nos valores de verossimilhança.
Ao ajustar k
o tamanho, você pode controlar o tamanho da lista de amostragem. A "estratégia gananciosa" é, na verdade, k=1
a amostragem top-k.
Amostragem top-p
O que o ChatGPT realmente usa não é a amostragem Top-k, mas sua versão melhorada - amostragem Top-p.
Top-k tem uma falha, ou seja, “Qual é o valor ideal de k?” É muito difícil de determinar. Como resultado, surgiu uma estratégia para definir dinamicamente o tamanho da lista de candidatos a tokens – Amostragem Núcleo. A figura a seguir mostra o efeito de amostragem Top-p com um valor top-p de 0,9:
top-p
O valor geralmente é definido como um valor relativamente alto (como 0,75) para limitar a cauda longa de tokens de baixa probabilidade. Podemos usar top-k e top-p juntos. Se k
e p
estiverem ativados ao mesmo tempo, entrarão em vigor p
após k
.
amostragem de temperatura
A amostragem de temperatura é inspirada na termodinâmica estatística, onde altas temperaturas significam que estados de energia mais baixos são mais prováveis de serem encontrados. Em um modelo probabilístico, os logits desempenham o papel de energia, podemos implementar a amostragem de temperatura dividindo os logits pela temperatura, depois inseri-los no Softmax e obter a probabilidade de amostragem.
As temperaturas mais baixas tornam o modelo mais confiante na sua melhor escolha, enquanto as temperaturas acima de 1 diminuem a confiança. Uma temperatura de 0 é equivalente à probabilidade argmax, enquanto uma temperatura infinita é equivalente a uma amostragem uniforme.
A temperatura na amostragem de temperatura está relacionada à distribuição de Boltzmann, e sua fórmula é a seguinte:
ρ i = 1 Q e − ϵ i / k T = e − ϵ i / k T ∑ j = 1 M e − ϵ j / k T \rho_i = \frac{1}{Q}e^{-\epsilon_i/kT}=\frac{e^{-\epsilon_i/kT}}{\sum_{j=1}^M e^{-\ épsilon_j/kT}}Reu=P1e− ϵeu/ k T=∑j = 1Me− ϵj/ k Te− ϵeu/ kT _
Entre eles ρ i \rho_iReué o estado iiA probabilidade de i ,ϵ i \epsilon_iϵeué o estado iiEnergia de eu , kkk é a constante de Boltzmann,TTT é a temperatura do sistema,MMM é o número de todos os estados quânticos que o sistema pode alcançar.
Amigos com experiência em aprendizado de máquina sentirão que a fórmula acima parece familiar à primeira vista. Sim, a fórmula acima é consistente com a função Softmax S oftmax ( zi ) = ezi ∑ c = 1 C ezc Softmax(z_i) = \frac{e^{z_i}}{\sum_{c=1}^Ce^{ z_c} }Suavemente máx ( z _ _ _ _eu)=∑c = 1CezcezeuMuito semelhante, essencialmente adicionando o parâmetro temperatura (T) à função Softmax. Os logits são escalonados com base em nossos valores de temperatura e depois passados para a função Softmax para calcular a nova distribuição de probabilidade.
No exemplo acima de "Eu gosto de lindo ___", a temperatura inicial T = 1 T=1T=1 , vamos dar uma olhada diretamente noTTO que acontece com a probabilidade quando T assume valores diferentes:
Podemos ver claramente na figura acima que à medida que a temperatura diminui, o modelo torna-se cada vez mais inclinado a escolher "menina", por outro lado, à medida que a temperatura aumenta, a distribuição torna-se cada vez mais uniforme. Quando T = 50 T = 50T=Aos 50 anos , a probabilidade de escolher “melancia” é quase igual à probabilidade de escolher “menina”.
De modo geral, a temperatura está relacionada à “criatividade” do modelo. mas não é a verdade. A temperatura simplesmente ajusta a distribuição de probabilidade das palavras. O efeito macroscópico líquido é que em temperaturas mais baixas o nosso modelo é mais determinístico e em temperaturas mais altas menos determinístico.
Casos de uso típicos
temperatura = 0,0
temperature=0
Isso eliminará a aleatoriedade da saída, o que tornará as respostas do GPT estáveis.
Temperaturas mais baixas são adequadas para situações em que é necessária estabilidade e o melhor resultado possível (produto real, classificação, etc.).
temperatura = 1,0
temperature=1
O resultado será completamente diferente a cada vez e, às vezes, será muito engraçado. Portanto, mesmo tarefas abertas devem ser usadas com cautela temperature=1
. Para tarefas como criação de histórias ou geração de cópias criativas, um valor de temperatura entre 0,7 e 0,9 é mais apropriado.
temperatura = 0,75
Normalmente, uma temperatura definida entre 0,70–0,90 é a temperatura mais comum para tarefas criativas.
Embora existam algumas recomendações gerais sobre configurações de temperatura, nada é definitivo. Como uma das configurações mais importantes do GPT-3, é recomendável experimentá-lo mais em uso real para ver o impacto das diferentes configurações no efeito de saída.
Resumir
Este artigo explica detalhadamente os princípios de amostragem temperature
e top_p
seu impacto na saída do modelo. No uso real, é recomendado modificar apenas o valor de um deles, e não de ambos ao mesmo tempo.
temperature
Pode ser entendido simplesmente como "entropia", que controla o grau de confusão (aleatoriedade) da saída, e pode top-p
ser entendido simplesmente como o tamanho da lista de palavras candidatas, que controla o número de palavras candidatas que o modelo pode ver . No uso real, todos devem tentar valores diferentes para obter o melhor efeito de saída.
Existem também dois parâmetros - frequency_penalty
e presence_penalty
que também têm um grande impacto na saída gerada. Consulte "Mecanismo de penalidade no modelo ChatGPT" .