1 pontos por GN⁺ 2024-10-27 | 1 comentários | Compartilhar no WhatsApp
  • Entropix é um projeto que busca ler a incerteza do LLM no momento em que ele escolhe o próximo token e, mudando o método de amostragem conforme o estado, melhorar a qualidade da inferência
  • Os critérios de decisão são a entropia e a entropia de variância (varentropy) da distribuição de logits, e a combinação desses dois valores divide o estado de confiança do modelo em 4 categorias
  • Em estados de alta confiança, a amostragem por argmax é adequada, mas em estados com vários candidatos fortes é possível comparar caminhos por meio de ramificação (branching)
  • Estados de alta entropia podem indicar que o modelo realmente não sabe ou que as opções são praticamente equivalentes, exigindo respostas como inserção de token de pensamento (thinking token), ajuste de temperatura e ramificação
  • Ainda não há avaliação em larga escala, então a eficácia é incerta, mas a amostragem no momento da inferência é uma área em que melhorias podem ser testadas com experimentos open source sem grandes orçamentos

O problema que o Entropix quer resolver

  • Entropix é um projeto desenvolvido por XJDR com a proposta de melhorar a inferência mudando a estratégia de amostragem quando o modelo entra em momentos de incerteza
  • Ainda não existe uma avaliação em larga escala do Entropix, então não está claro qual é o ganho real de desempenho
  • Mesmo assim, a amostragem baseada em incerteza oferece um método experimental e um modelo mental diferente para olhar para a inferência em LLMs

Onde a incerteza aparece em um LLM

  • Amostragem é o processo que define qual token o LLM vai escolher entre a distribuição de possíveis tokens, os logits
  • O grau de confiança do modelo pode ser observado na distribuição de logits do próximo token
    • Quando a confiança é alta, a probabilidade se concentra claramente em alguns tokens
    • Quando a confiança é baixa, os candidatos ao próximo token ficam mais espalhados
  • Incerteza nem sempre é um sinal ruim, e pode ter várias causas
    • Quando os tokens são sinônimos ou praticamente equivalentes, como good e great
    • Quando existem caminhos de ramificação, como em um programa que pode ser escrito em Java ou em C
    • Quando o modelo não sabe o que fazer ou encontra uma entrada fora da distribuição (out of distribution) que não viu nos dados de treino

Entropia e entropia de variância

  • O Entropix mede a incerteza com a entropia (entropy) e a entropia de variância (varentropy) dos logits
  • A entropia indica o quanto os logits previstos diferem entre si e mostra a incerteza em relação ao resultado mais provável
    • Em baixa entropia, há bastante confiança em alguns logits
    • Em alta entropia, a distribuição de logits fica mais uniforme e a confiança diminui
  • A entropia de variância é uma métrica que mostra a forma (shape) da incerteza
    • Alta entropia de variância significa que alguns valores diferem muito dos demais
  • As duas métricas se baseiam no conceito de surprisal (self-information)
    • Surprisal mede o quanto um evento é inesperado em relação à sua probabilidade
    • Se a probabilidade do evento x é P(x), então o surprisal é I(x) = -log₂(P(x))
    • Se P(x) = 1/8, o surprisal é 3 bits, e se P(x) = 1/2, é 1 bit
  • A entropia é o valor esperado do surprisal para todos os resultados possíveis
  • A entropia de variância é calculada como a variância do surprisal e mostra o quanto alguns resultados são mais surpreendentes do que o surprisal médio

Quatro estados de incerteza

  • Observando entropia e entropia de variância juntas, o estado do modelo pode ser dividido em 4 categorias
    • Baixa entropia · baixa entropia de variância: distribuição pontuda em que um resultado tem probabilidade muito alta
    • Baixa entropia · alta entropia de variância: distribuição com alguns picos distintos
    • Alta entropia · baixa entropia de variância: distribuição uniforme ou quase uniforme
    • Alta entropia · alta entropia de variância: distribuição espalhada, mas não uniforme

Amostragem adaptativa por estado

  • Baixa entropia · baixa entropia de variância

    • É o estado ideal em que o modelo está relativamente confiante não só na primeira escolha, mas também nas alternativas caso ela esteja errada
    • Como a lista de candidatos costuma estar bem ordenada, a amostragem por argmax é adequada, escolhendo o token de maior probabilidade
  • Baixa entropia · alta entropia de variância

    • É o estado em que o modelo prevê algumas opções com probabilidade muito alta
    • Esse estado pode representar caminhos completos de saída diferentes, ou apenas situações em que várias expressões são aceitáveis, como sinônimos, o que torna a interpretação difícil
    • Uma resposta possível é a ramificação (branching): prever ambos os logits e seguir cada caminho separadamente, comparando os resultados depois de certo ponto
    • Se os resultados da ramificação tiverem níveis de confiança semelhantes, mas conteúdos diferentes, isso pode ser transformado em uma pergunta ao usuário
  • Alta entropia · baixa entropia de variância

    • O modelo pode estar em um estado de baixa confiança ou em uma situação em que todas as escolhas são intercambiáveis
    • O Entropix propõe, nesse caso, inserir um token de pensamento como próximo token para levar o modelo a um estado de maior confiança
    • Um exemplo é um token como Wait..
    • O token de pensamento é inserido na saída como um sinal de que o modelo deve gastar mais tempo de cálculo pensando antes de responder
    • Por exemplo, se o modelo estiver prestes a prever The capital of Germany is Paris, mas sem confiança, inserir Wait pode fazer a continuação virar The capital of Germany is Paris… Wait, no, it’s actually Berlin
  • Alta entropia · alta entropia de variância

    • Não há um candidato principal claro, mas o modelo ainda está mais confiante em algumas saídas do que em outras
    • Como as principais opções podem ser todas aceitáveis, como no caso de sinônimos, é possível fazer uma escolha aleatória com temperatura (temperature) mais alta
    • Também é possível usar ramificação ou inserir um token de pensamento, como nos estados anteriores

Diferença entre ramificação e token de pensamento

  • As duas abordagens tentam usar mais cálculo de inferência em estados de incerteza
  • A previsão por ramificação segue alguns logits para verificar a quais outros tokens eles levam
    • Isso costuma ser chamado de MCTS (Monte Carlo Tree Search)
    • Já foi bastante tentado em LLMs, mas os resultados foram moderados
    • O principal trade-off é que cada ramificação não consegue aproveitar o cálculo feito pelas outras
  • O token de pensamento é uma forma de obter cálculo adicional em estados incertos sem gastar esse cálculo explorando ramificações que talvez sejam descartadas
    • Inserir Wait… faz a IA reconhecer que pode ter cometido um erro
  • Ainda é uma questão de pesquisa em aberto qual das duas abordagens é melhor

Sinais baseados em atenção

  • O Entropix também usa parcialmente outras métricas de entropia ao ajustar a temperatura
  • Attention Entropy indica se uma cabeça de atenção segue um token específico ou distribui a atenção entre muitos tokens do contexto
  • Attention Agreement mostra se várias cabeças de atenção se concentram no mesmo token ou observam tokens diferentes
  • Se a entropia das cabeças for baixa e o agreement for alto, isso pode ser um sinal adicional de que é seguro amostrar o token de maior probabilidade
  • Se o agreement for baixo, diferentes cabeças podem estar contribuindo para previsões diferentes, o que sugere considerar ramificação

Por que isso importa

  • A ideia do Entropix é fácil de entender e não é totalmente nova, mas leva a repensar a melhora da inferência em LLMs na etapa de amostragem
  • Mesmo que grandes vantagens ainda não tenham sido confirmadas em avaliações, esse tipo de técnica em tempo de inferência é relativamente fácil de experimentar
  • Pode se tornar uma direção promissora para hackers open source tentarem melhorar a inferência sem grandes orçamentos

1 comentários

 
GN⁺ 2024-10-27
Opiniões do Hacker News
  • Dizem que ele foi perguntado duas vezes: “Sr. Babbage, se você colocar números errados na máquina, ela dará a resposta certa?”
    É uma fala de Charles Babbage dizendo que não conseguia entender direito que tipo de confusão de pensamento geraria uma pergunta dessas.

    • As pessoas acham que sabem o que “IA” deve fazer, mas, quando ela se comporta de modo diferente do esperado, chamam de quebrada
    • Essa é uma pergunta perfeitamente legítima e, na verdade, parece que Babbage não entendeu ou fingiu não entender
  • Essas técnicas baseadas em amostragem são um dos raros casos em que dá para tentar melhorar modelos de ponta em hardware de consumidor
    Acho que isso não vai durar muito, e no fim deve aparecer um amostrador treinável, mas por enquanto vale mexer à vontade: https://github.com/codelion/optillm
    Os autores do optillm parecem achar que a computação adicional do Entropics não produz resultados melhores do que uma simples decodificação por cadeia de pensamento. Não sei se eles verificaram também a eficiência: https://x.com/asankhaya/status/1846736390152949966
    Muitos problemas dos LLMs parecem vir de vazamento semântico ou da atenção se dispersar para informações irrelevantes, como no artigo GSM Symbolic, e talvez haja espaço para melhorar a atenção
    Também escrevi alguns textos relacionados: https://zzbbyy.substack.com/p/semantic-leakage-quick-notes, https://zzbbyy.substack.com/p/llms-and-reasoning, https://zzbbyy.substack.com/p/o1-inference-time-turing-machi...

    • O problema com essas várias técnicas de amostragem está em como as pessoas costumam avaliá-las
      Há quem diga que funcionam melhor, mas não há benchmarks rigorosos que comprovem isso. É algo como “o texto sai melhor” ou “o estilo é mais original”, e acho que LeCun está 100% certo nesse ponto. Avaliar um modelo geral dizendo que ele vai bem em “poesia” ou “prosa” é praticamente a definição de viés, e é se sabotar com anedotas pessoais
      Gostaria de ver resultados aplicados a programação ou matemática. Por exemplo, se um amostrador funciona melhor em problemas de matemática de olimpíada, com benchmarks cuidadosos antes e depois
    • Vazamento semântico pode ser simplesmente uma fraqueza do modelo, ou pode estar ligado à afirmação de que o modelo não raciocina “de verdade”. Mais treinamento também pode ajudar
      Ou talvez seja uma fraqueza mais fundamental do mecanismo de atenção. Hoje já estão surgindo alternativas
  • Não sei bem se este projeto é baseado em artigos acadêmicos, ou seja, se usa alguma técnica publicada para determinar a incerteza de LLMs
    Entre os trabalhos recentes, este parece bastante relacionado: https://learnandburn.ai/p/how-to-tell-if-an-llm-is-just-gues...
    Ele usa a ideia de entropia semântica, mais sofisticada do que a entropia padrão dos logits dos tokens, e mais adequada para quantificar estatisticamente se um LLM está chutando ou se tem alta confiança. O artigo original é um paper da Nature de autores de Oxford

    • A ideia central da entropia semântica, isto é, estimar a entropia da distribuição de unidades de significado em vez de sequências individuais no espaço de saída, é boa, mas é um pouco ingênua ao tratar essas unidades de significado como uma partição bem definida do espaço de saída
      Há também um trabalho [1] que generaliza mais essa abordagem, realizando uma clusterização suave com base no conceito de equivalência semântica entre saídas amostradas
      Ainda assim, há ressalvas. Publicamos recentemente um artigo [2] com um benchmark abrangente das técnicas mais modernas de estimativa de incerteza em LLMs e, em muitos casos, métodos que levam em conta o significado funcionaram muito bem, mas em outras tarefas linhas de base simples, como a entropia média da distribuição de tokens, foram semelhantes ou até melhores do que técnicas complexas
      Também estamos desenvolvendo uma biblioteca Python open source [3] que implementa técnicas modernas de estimativa de incerteza aplicáveis a LLMs e facilita tanto o benchmark de métodos de estimativa quanto a estimativa da incerteza das saídas de modelos em operação
      [1] https://arxiv.org/abs/2307.01379
      [2] https://arxiv.org/abs/2406.15627
      [3] https://github.com/IINemo/lm-polygraph
    • Isto se baseia no trabalho desta conta anônima do Twitter: https://x.com/_xjdr
      Acompanhei de perto, e achei interessante porque modelos pequenos pareciam poder ser mais eficientes com esse amostrador. Se você tiver interesse, vale ler os posts; esse tipo de amostragem parece ser algo de grande importância
    • Acho que não é um artigo acadêmico. Isso porque eu esperaria que a academia entendesse melhor a diferença entre incerteza de tokens e incerteza semântica/correção semântica, ou que estabelecesse uma correlação baseada em dados antes de afirmar uma relação entre as duas
      Como escrevi em outro comentário, o autor parece ter um mal-entendido fundamental, e, olhando a nota no topo do texto, é possível que por isso não tenha obtido resultados práticos de fato
      Não estou dizendo isso para criticar nem para desestimular. Ele pode ter captado algo, e abordagens peculiares como essa merecem ser tentadas. Mas, pelos motivos acima, se não há efeito positivo, dificilmente isso viraria artigo; portanto, também não surpreende que não exista um artigo acadêmico sobre essa abordagem
    • Até onde sei, não é um artigo acadêmico, e foi por isso que quis escrever este texto. Ainda assim, este projeto tem ao mesmo tempo seguidores fervorosos e opositores fervorosos no ML Twitter
    • Meu comentário era voltado a leitores do HN interessados em incerteza de LLMs; quanto ao autor do texto/repositório, eu gostaria de ver resultados de testes mostrando quão bem ele realmente identifica a incerteza
  • Quando a entropia é alta, acho que o modelo precisa ter uma saída de emergência
    Ele deveria disparar um alerta de que a certeza da resposta como um todo é baixa, acumulando uma pontuação de certeza durante a geração para que, no fim, o usuário possa verificar se a certeza da resposta foi péssima. Uma resposta assim deveria poder ser descartada ou substituída por “não sei”.

    • Normalmente isso é chamado de abstenção ou recusa
      Ao comparar diferentes métodos para quantificar a incerteza do modelo nessa área, é comum realizar uma validação por recusa. Basicamente, você continua recusando pontos de dados com alta incerteza e observa como a qualidade média das saídas restantes aumenta. Como uma boa estimativa de incerteza deve ter forte correlação com a qualidade da saída, a qualidade média das saídas de baixa incerteza deve ser maior
      Um benchmark recente de abordagens de estimativa de incerteza em LLMs [1] usou exatamente esse método, e também está em desenvolvimento uma biblioteca open source [2] que viabiliza esse tipo de benchmark. Também é possível criar uma pontuação de incerteza para a saída de um modelo específico, o que permite integrá-la a aplicações em ambientes industriais
      [1] https://arxiv.org/abs/2406.15627
      [2] https://github.com/IINemo/lm-polygraph
    • O problema é que classificadores de redes neurais profundas, em geral, não são estatisticamente bem calibrados por padrão
      Então, quando a entropia é alta, muitas vezes isso é um sinal de “não tenho certeza”, mas o modelo também pode, com muita frequência, errar com confiança. Portanto, usar a entropia dos logits como indicador de confiabilidade pode facilmente levar a grandes mal-entendidos
      Não sou especialista em LLMs; é uma opinião baseada no meu entendimento de classificadores em geral. Fico curioso se, com dados suficientes, essa consideração deixa de se aplicar
    • O Entropix oferece um framework capaz de fazer esse tipo de coisa. Pela estrutura, ele detecta o estado atual e então ajusta as configurações do amostrador ou muda para uma estratégia de amostragem totalmente nova
      Também é possível fazer um experimento empurrando o sistema fortemente para respostas de recusa, e recomendo testar diretamente. O repositório smollm-entropix [1] implementa tudo em um notebook Jupyter, o que facilita experimentar a ideia
      [1]: https://github.com/SinatrasC/entropix-smollm
    • Parece quase certo que muitos tokens adicionais serão incluídos no vocabulário. Não só coisas como tokens de thinking, mas também um token de “não sei”, e provavelmente surgirão muitas estratégias de decodificação sofisticadas. O que é necessário é gerar os dados
    • O novo Claude Sonnet 3.5, pela minha experiência, faz algo parecido até certo ponto
  • GPTs grandes modernos produzem logits de um classificador enorme sobre todo o vocabulário de tokens
    Eles estão em algum espaço, e não apenas podemos supor uma variedade com propriedades de convexidade não triviais, como também podemos calculá-la empiricamente. O problema de determinar qual LLM escreveu determinado texto, mesmo incluindo casos em que ele foi instruído a usar certo estilo, é bem definido ou praticamente próximo de resolvido
    Isso não era apenas um problema em pesquisa; era uma área em que havia avanços rápidos e impressionantes, até que, em algum momento, simplesmente desligaram isso
    Ser o melhor nessa área é um negócio enorme. E é o tipo clássico de coisa que uma startup deveria fazer. Isso porque é difícil que incumbentes endinheiradas apareçam como concorrentes — não porque elas ignorem o mercado, mas porque elas ativamente não querem que esse mercado exista

    • Você poderia explicar melhor por que isso é útil? Só pela explicação, parece que boa parte das solicitações mudaria a saída o suficiente para impedir a detecção de um LLM específico. Além disso, o fato de novos LLMs usarem muitos dados sintéticos/gerados também parece introduzir uma variável bem grande
  • Essa forma de explicar soa quase como um algoritmo de exploração de labirinto. Aqui, o tempo de computação corresponde a “até que profundidade seguir um caminho para testar se ele pode ser uma solução”
    Fico curioso se há outras semelhanças. Por exemplo, haveria algum algoritmo de solução de labirintos aplicável a LLMs?

    • Amostrar sequencialmente para encontrar a sequência inteira com a maior probabilidade conjunta é claramente um problema de busca. É por isso que algoritmos como beam search são usados com frequência na amostragem
    • Também fiz uma pergunta sobre abordar a decodificação de LLMs pela perspectiva de navegação, embora por outro ângulo, neste post no Reddit: https://www.reddit.com/r/MachineLearning/comments/1dw2pqo/d_...
    • Sim, parece uma área com espaço para mais pesquisa
      Para ser sincero, isso vai na direção oposta à Bitter Lesson (http://www.incompleteideas.net/IncIdeas/BitterLesson.html). Essa lição também veio, em parte, do excesso de sofisticação no tratamento da exploração de labirintos no xadrez. Mas, na escala atual dos LLMs, esse tipo de melhoria talvez tenha valor
  • Sempre que leio sobre esse tipo de otimização potencial, tenho dificuldade de entender como as pessoas confiam e usam LLMs com apenas uma supervisão mínima
    Será que elas realmente acreditam que produtos de “IA” que usam LLMs são competentes o suficiente para controlar um computador ou escrever código correto? Por projeto, tudo não é “alucinação” ou chute? Dá mesmo para superar isso?

    • Escrevi ou supervisei, com ChatGPT e Python, alguns programas usados no sistema de testes de produção da empresa
      São programas que enviam ações para máquinas, consultam resultados/erros/saídas, salvam isso em .csv e depois transformam em um arquivo Excel formatado de forma legível. Também fornecem um guia inicial mostrando como o técnico deve conectar tudo em certos testes
      Não sou programador, e não há programadores na nossa empresa. Mesmo assim, ele escreveu código que funciona exatamente como pedi. Quando o código travava durante o desenvolvimento, eu o colocava de volta no ChatGPT para resolver, e no fim tudo foi resolvido. Levou cerca de um dia; se fosse eu, levaria um mês, e se fosse terceirizado, custaria 10 mil dólares e uma semana
      LLMs podem ser ruins para projetos sofisticados de programação com salários altos. Mas, para pessoas que precisam fazer algo no computador e não conseguem superar a barreira de linguagem de dizer ao computador o que fazer, são uma bênção
    • Como os humanos superam isso? Se você pensar com cuidado, vai chegar à conclusão de que LLMs podem ser usados para todo tipo de coisa. Por exemplo, humanos também não escrevem código e o colocam direto em produção
    • Claro que confio. Isso não é uma pergunta hipotética. Quase todo o meu código é escrito pelo Claude 3.5 Sonnet
      É muito mais robusto e correto do que o código que eu costumo escrever. Programo há 20 anos
    • Acho que não. Mas, quando humanos investem demais, seja emocionalmente ou financeiramente, não recuam facilmente; pelo contrário, acabam apostando tudo
      É só mais uma onda de hype. Como Client/Server, Industry 4.0, Machine Learning, Microservices, Cloud, Crypto
  • Será que alguém já experimentou o que acontece com a saída se impedir que o modelo fique incerto?
    Por exemplo, toda vez que a certeza cair abaixo de um limiar, o amostrador volta e escolhe outro token. No fim, cada token individual teria certeza acima do limiar
    Isso provavelmente não eliminaria por completo saídas indesejadas, mas seria interessante

    • Nesse caso, talvez ele não consiga responder nada?
      Ou poderia dizer “não sei” com total certeza
    • Antigamente, a saída era quase determinística, parecida com uma citação fixa, mas ainda assim era afetada por erros de ponto flutuante
  • Existem bilhões de estratégias de amostragem para modelos de linguagem
    O problema é que é muito difícil mostrar empiricamente que alguma estratégia de amostragem é melhor do que a amostragem top-k ou top-p padrão. Minimizar apenas a perplexidade não basta para provar a superioridade de um método específico. A estratégia proposta no post do blog tem o mesmo problema. É uma inovação teoricamente plausível, mas não verificada na prática

    • Não é que seja obrigatória uma prova
      É difícil provar porque é complicado dizer claramente o que significa “melhor”, e coletar algo como dados de preferência é caro
      Depois de ver muitas amostras, dá para dizer, pelo bom senso, “se o objetivo é otimizar X, este método parece funcionar melhor”
  • Os limites das respostas de LLMs têm muito mais dimensões do que apenas “incerteza”
    Há casos como “a pergunta/frase não faz sentido”, “não há informação suficiente para responder”, “há informação de que o consenso dos especialistas é que ‘ninguém sabe de verdade’”, etc.
    Existe uma tendência humana de reduzir os motivos pelos quais é difícil responder a uma pergunta a uma simples questão de incerteza, e por isso também vemos as respostas de LLMs como se tivessem apenas um único nível de incerteza. Mas isso é antropomorfização
    Imagens de IA, e antes delas a fotografia, mostraram maneiras novas e inimagináveis de uma imagem estar errada: maneiras que parecem reais, mas estão erradas. Interações linguísticas com IA fazem o mesmo de forma mais sutil

    • Sim. Mas, se pudermos detectar a possibilidade de ter entrado em um desses estados, podemos voltar e examinar exatamente qual é o estado
      Até agora isso tem sido feito principalmente com aprendizado por reforço, mas parece valer a pena explorar formas de capturar e tratar isso no momento da inferência. Também é muito mais acessível para o open source. Esse tipo de aprendizado por reforço é algo que só grandes laboratórios de ML conseguem fazer
    • É uma expressão tão antropomorfizada quanto chamar as imprecisões do modelo de alucinações
      Sinto que a antropomorfização faz parte da estratégia de marketing dos LLMs
    • É verdade que incerteza é um termo definido de forma bem frouxa. Em geral, é usado como uma espécie de indicador substituto da probabilidade de a saída do modelo estar correta em algum sentido
      A incerteza também pode ser decomposta em vários “sabores”. A decomposição mais simples e discutida com frequência é entre incerteza aleatória e incerteza epistêmica. A incerteza epistêmica, ou incerteza baseada no modelo, normalmente se refere a casos em que o modelo recebe um tipo de entrada que nunca viu antes e produz uma saída ruim, uma situação em que é difícil esperar que ele lide corretamente. Já a incerteza aleatória é inerente aos próprios dados; pense na ambiguidade natural da tarefa ou em rotulagem ruidosa
      Na área de estimativa de incerteza, há muito interesse em desenvolver métodos para quantificar esses diferentes tipos de incerteza, e cada método pode ser mais sensível a um ou outro
    • Isso parece muito relacionado ao meu uso de LLMs para estruturar dados. Para cada pedaço de dado, preciso exatamente de um bom indicador de incerteza
    • Essas também não são tipos diferentes de incerteza?