Explicação detalhada do algoritmo de amostragem do modelo ChatGPT

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 é temperaturee 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 temperaturee top_pseu impacto na produção do modelo.

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:

Insira a descrição da imagem aqui

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)。

Insira a descrição da imagem aqui

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.

Insira a descrição da imagem aqui

Escolha sempre o token com maior pontuação ou probabilidade. Essa estratégia é chamada de “estratégia gananciosa”.
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 ktokens 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.

Insira a descrição da imagem aqui

Adicionar alguma aleatoriedade ajuda a tornar o texto de saída mais natural.
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 ko tamanho, você pode controlar o tamanho da lista de amostragem. A "estratégia gananciosa" é, na verdade, k=1a amostragem top-k.

Insira a descrição da imagem aqui

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:

Insira a descrição da imagem aqui

No top-p, o tamanho da lista de candidatos é selecionado dinamicamente com base na soma das pontuações de probabilidade de atingir um determinado limite.

top-pO 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 ke pestiverem ativados ao mesmo tempo, entrarão em vigor papó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:

Insira a descrição da imagem aqui

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”.

Insira a descrição da imagem aqui

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=0Isso 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=1O 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 temperaturee top_pseu 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.

temperaturePode ser entendido simplesmente como "entropia", que controla o grau de confusão (aleatoriedade) da saída, e pode top-pser 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_penaltye presence_penaltyque também têm um grande impacto na saída gerada. Consulte "Mecanismo de penalidade no modelo ChatGPT" .

おすすめ

転載: blog.csdn.net/jarodyv/article/details/128994176