Alucinações, erros e sonhos
- Cristina Silva

- 27 de fev.
- 32 min de leitura
Tradução do artigo de: Colin Fraser, por Cristina Silva
Por que os sistemas modernos de IA produzem resultados falsos e o que há para ser feito a respeito.
Os sistemas modernos de IA, como fomos avisados, são propensos a alucinações.

Sabemos disso, mas é meio estranho quando você pensa sobre isso. Tivemos meio século ou mais de computadores que não inventaram coisas, sua sofisticação e precisão só melhoraram com o tempo. Mas em 2024, embora você possa confiar em uma calculadora de bolso para fornecer respostas corretas para os problemas matemáticos que você insere nela, você não pode confiar na inteligência artificial mais sofisticada do mundo com esses mesmos problemas.

O que há com isso?
Acho que é uma questão muito importante e multifacetada e, neste artigo, quero investigá-la com algum detalhe. Um aspecto do problema envolve uma grande mudança nos últimos 30 anos ou mais no que exatamente se entende por "IA". Por muito tempo, a maior parte do que fizemos quando programamos computadores envolvia encontrar maneiras de resolver problemas exatamente. Uma calculadora de bolso usa esses tipos de métodos para produzir soluções para problemas matemáticos que são comprovadamente corretos. No passado, pensávamos na aplicação automatizada desses métodos precisos como uma forma de inteligência artificial. Mas hoje em dia, a maior parte do que descrevemos como "IA" refere-se a aplicações de Machine Learning. O aprendizado de máquina é um paradigma de programação de computadores em que, em vez de aplicar a lógica dedutiva para produzir resultados que são conhecidos por serem corretos como uma calculadora de bolso, os programas são projetados para produzir previsões, que devem estar ocasionalmente erradas. Na primeira seção principal do ensaio, darei uma visão geral do que isso significa, examinando a diferença básica entre aprendizado de máquina e tipos mais antigos de IA de um nível extremamente alto para ver por que esperamos que esses tipos de sistemas produzam erros onde os programas de computador mais clássicos não produziam.
Portanto, uma resposta para a questão da alucinação parece simples: a IA generativa é aprendizado de máquina, o aprendizado de máquina é conhecido por produzir erros e uma alucinação é um erro. Essa visão implica algumas coisas sobre como o problema da alucinação pode progredir no futuro: historicamente, vimos que os modelos de aprendizado de máquina cometem menos erros à medida que coletamos mais dados e construímos modelos maiores. Podemos esperar que os bots de bate-papo e outros sistemas generativos de IA se tornem mais precisos ao longo do tempo exatamente da mesma maneira. Mas não acho que essa visão esteja realmente correta; As alucinações são, a meu ver, distintas dos erros no sentido clássico de aprendizado de máquina. Sou mais parcial com uma visão que diz que toda saída de IA generativa é uma alucinação. Explicarei exatamente o que quero dizer com tudo isso na segunda seção.
De qualquer forma, independentemente de como você define uma alucinação e o que quer que você acredite sobre sua natureza, todos concordam que há alguma saída de IA generativa que é boa e útil, e outra saída que é ruim e não útil, e é natural querer quantificar quanto de cada um existe. Na verdade, acho que quantificar isso é essencial para colocar essas coisas em produção de qualquer maneira útil. Mas acontece que medir esse tipo de coisa é extremamente difícil, pois mais e mais pessoas estão começando a aprender. Na terceira seção principal, explico por que acho que esse tipo de medição é tão importante e também o que a torna tão difícil.
1. Um curso intensivo de aprendizado de máquina
Antigamente, antes de todas essas coisas generativas, a maioria da IA estava preocupada com o problema de fazer suposições muito específicas sobre classes estreitas de resultados. Este usuário clicará neste link? Que tipo de objeto é representado nesta imagem? Quanto valerá essa ação amanhã? Cada uma dessas perguntas seria respondida por um programa de computador discreto cujo único trabalho é responder à pergunta para a qual foi construído.
Como construímos um programa de computador para resolver um desses problemas? Nos velhos tempos, a abordagem seria tentar a razão a partir dos primeiros princípios. Para prever quanto tempo levará para uma maçã atingir o chão depois de cair de uma árvore, Newton pensou muito sobre a natureza do universo e criou uma teoria que produz uma equação que responde à pergunta. Essa abordagem foi bem-sucedida para Newton, mas para a maioria dos problemas práticos é muito difícil encontrar soluções a partir dos primeiros princípios dessa maneira. Muitas pessoas tentaram que é assim que acabamos com coisas como a Equação de Black Scholes para estimar o verdadeiro valor de um derivativo financeiro, mas para muitos problemas com os quais nos preocupamos no mundo moderno, como adivinhar quais objetos são representados em uma imagem, nem saberíamos por onde começar.
Digite o aprendizado de máquina. A ideia básica do aprendizado de máquina é que, observando exemplos suficientes do processo que você está tentando prever, você pode encontrar padrões que o ajudarão a fazer previsões precisas sem necessariamente precisar entender o processo que está gerando esses exemplos. Ao olhar para um milhão de maçãs caindo de um milhão de árvores de diferentes alturas, você pode pular o Principia e ir direto para a equação.
Ou, pelo menos, você pode ir direto para uma equação. Pela natureza desse processo, é muito improvável que a equação que você encontra corresponda à de Newton. Ele produzirá uma equação que se aproxima dos dados o mais próximo possível, mas das infinitas equações que podem se aproximar de qualquer conjunto de dados, é improvável que se estabeleça na exata de Newton. Mas tudo bem. A questão é que você não precisa disso. Você não está tentando entender a gravidade; Você está tentando fazer previsões sobre maçãs. Isso pode não parecer ideal para algo como física, mas para um problema como reconhecer objetos em uma imagem onde não há primeiros princípios óbvios, é muito útil.
O processo básico para construir um sistema como esse é chamado de Aprendizado Supervisionado, e se você diminuir o zoom o suficiente para abstrair a maioria dos detalhes, é bem simples. Para criar um sistema que adivinhe qual dígito manuscrito está em uma imagem, você coleta um grande conjunto de dados de imagens de dígitos e rotula manualmente cada imagem com o dígito que ela representa. Isso é chamado de dados de treinamento. Em seguida, você mostra todas as imagens nos dados de treinamento para o computador e adivinha qual dígito está em cada imagem, e dá uma pontuação com base na frequência com que estava certo. Você repete isso algumas centenas de milhares de vezes, e o computador tenta diferentes estratégias de adivinhação a cada vez, procurando aquela que lhe dá a pontuação mais alta. Essa busca pela estratégia de adivinhação com maior pontuação pode ser muito longa e computacionalmente cara, mas inovações recentes na matemática de encontrar pontuações altas, bem como na eficiência da computação, tornaram essa estratégia básica extremamente bem-sucedida em uma grande variedade de tarefas.
Para introduzir um pouco mais de nomenclatura aqui, a busca pela melhor estratégia de adivinhação é chamada de "treinamento", e o sistema resultante é frequentemente chamado de "modelo". Um modelo que adivinha a partir de um conjunto de rótulos discretos é um "classificador", e os profissionais de aprendizado de máquina preferem chamar as suposições de "previsões".
Vale a pena insistir por um momento no quanto a abordagem de aprendizado de máquina difere da de Newton. Newton pode olhar para algumas maçãs caindo das árvores em busca de inspiração, mas seu projeto é desenvolver uma teoria que codifique os princípios gerais do movimento dos corpos celestes. Uma equação surge da teoria para nos dizer, entre muitas outras coisas, quanto tempo leva para uma maçã cair de uma árvore. Para um aprendiz de máquina, os princípios gerais que regem as relações entre os corpos celestes são de relevância aproximadamente zero. O único foco do aprendiz de máquina é reproduzir com precisão um conjunto de dados de um milhão de vezes de queda de maçã. Existem prós e contras em cada abordagem. A abordagem de aprendizado de máquina provavelmente produzirá uma equação inescrutável que nos diz muito pouco sobre a natureza geral da gravitação, mas, por outro lado, pode ser mais capaz de incorporar complexidades do mundo real, como a resistência do ar, que complicam a abordagem de Newton.
Comparo o aprendizado de máquina com a abordagem de Newton apenas para destacar que o aprendizado de máquina supervisionado não é a única maneira de construir um sistema artificialmente inteligente. Existem muitas maneiras de programar um computador, e nenhuma é obviamente ou necessariamente melhor do que qualquer outra para qualquer aplicativo específico ex ante. Mas nos últimos 15 anos começou a ficar claro que o aprendizado supervisionado pode ser eficaz em tarefas significativamente mais complexas do que qualquer um esperava. Por complexidade aqui, estou me referindo à variedade de entradas e saídas possíveis de um modelo. Um tutorial introdutório típico de aprendizado de máquina pode mostrar como criar um sistema que usa uma imagem de 256×256 pixels de um dígito manuscrito e produz um dos dez rótulos possíveis, os dígitos de 0 a 9. Você pode criar um modelo como esse que atinge uma precisão bastante alta com apenas algumas dezenas de milhares de imagens. Mas se, em vez de mil imagens rotuladas, você puder usar milhões ou bilhões de imagens, poderá expandir muito o universo de possíveis entradas e saídas. Modelos de difusão de imagem como o Stable Diffusion, por exemplo, são treinados em todos os tipos de imagens de todos os tamanhos diferentes e, em vez de produzir um dos poucos rótulos discretos, eles produzem uma imagem inteira. Ou seja, em vez de produzir um mapeamento de 256×256 = 65.536 entradas possíveis para dez saídas possíveis, eles produzem um mapeamento de um conjunto insondavelmente grande de entradas possíveis para um conjunto insondavelmente grande de saídas possíveis. O fato de você poder fazer algo tão complexo usando o aprendizado de máquina não é óbvio, e eu diria que é uma das principais descobertas científicas dos últimos 15 anos.
O problema é que, para construir esses tipos de modelos mais complexos, você precisa de uma quantidade extremamente grande de dados, e obter conjuntos de dados grandes o suficiente rapidamente se torna proibitivamente caro. Os modelos mais promissores nessas tarefas de alta complexidade exigem bilhões de exemplos rotulados ou mais, e simplesmente não há como olhar manualmente para um bilhão de imagens e anotar quais objetos elas representam.
Se você pudesse de alguma forma gerar os rótulos sem ter que olhar manualmente para todos os exemplos, então você teria uma chance. Essa é a grande ideia do aprendizado autossupervisionado, o paradigma de aprendizado de máquina por trás dos modernos sistemas generativos de IA. Se você conseguir colocar as mãos em bilhões de frases – digamos, raspando todo o texto da internet – você pode construir o conjunto de dados de treinamento programaticamente cortando as frases em pedaços. Basta transformar "A raposa marrom rápida pula sobre o cachorro preguiçoso" no exemplo de treinamento "A raposa marrom rápida pula sobre o ___ preguiçoso" e atribuir a ele o rótulo "cachorro". Na verdade, existem muitos exemplos de treinamento que você pode construir apenas a partir dessa frase, cortando-a em lugares diferentes: "O rápido" e "marrom", "O marrom rápido" e "raposa", etc. De apenas uma frase, obtemos oito exemplos de treinamento sem necessidade de rotulagem humana. Multiplique isso pelo número de frases que é possível extrair da internet e você se aproxima dos tamanhos necessários para treinar esses tipos de modelos complexos.
Uma observação importante aqui à qual retornarei momentaneamente é que, deixando de lado grandes diferenças de tamanho e complexidade, o processo de treinamento do GPT e o processo de treinamento de um classificador tradicional não são tão diferentes. O LLM lida com muito mais entradas e saídas possíveis, mas é treinado fundamentalmente da mesma maneira, para fazer a mesma coisa: adivinhar o rótulo certo para a entrada fornecida.

Ambos os modelos são construídos mostrando-lhes um monte de exemplos incompletos, fazendo-os adivinhar as conclusões e pontuando seus palpites. As grandes inovações associadas ao treinamento de sistemas modernos de IA generativa estão em encontrar maneiras inteligentes de construir automaticamente conjuntos de dados de treinamento massivos, bem como a invenção de novos tipos de caixas pretas adequadas para executar tarefas complexas, mas a imagem básica de alto nível de como eles são treinados é essencialmente a mesma que tem sido há décadas.
A história pode terminar aqui. Às vezes, um reconhecedor de dígitos chama um 7 a 9, e às vezes um modelo de linguagem diz que a rápida raposa marrom salta sobre o marasmo marrom preguiçoso. Isso é apenas uma parte inerente do aprendizado de máquina, resultado do fato de que os modelos de aprendizado de máquina fazem previsões com base em padrões, em vez de inferências dedutivas comprovadamente corretas, e é algo que tende a melhorar com o tempo com mais dados e modelos maiores.
Mas eu não acho que isso esteja certo.
2. A diferença entre uma alucinação e um erro
Às vezes você mostra ao modelo uma foto de um 7 e diz que é uma foto de um 9. Isso tem sido verdade desde sempre. Quando isso inevitavelmente acontece, por que não dizemos que o reconhecedor de dígitos está "alucinando"? Por que informações imprecisas são apenas uma alucinação quando se trata de um bot de bate-papo?
Como mencionei há pouco, um LLM e um classificador clássico são conceitualmente muito semelhantes na maneira como são construídos. O LLM é um classificador, embora muito complexo. Assim como o reconhecedor de dígitos é treinado para preencher o rótulo ausente em uma imagem pré-existente, o LLM é treinado para preencher a palavra ausente no final de uma frase pré-existente. A principal diferença aqui é de complexidade e escala. Mas, embora sejam semelhantes na forma como são construídos, há uma enorme diferença na maneira como os sistemas de IA generativa são implantados.
Normalmente, implantaríamos um classificador para executar a mesma tarefa para a qual ele foi treinado. Quando implantarmos o reconhecedor de dígitos, vamos colocá-lo para trabalhar no reconhecimento de dígitos. Presumivelmente, teremos algum processo pelo qual os números manuscritos são coletados e usaremos o modelo para ler esses números coletados para fazer algo como depositar um cheque.
Os sistemas de IA generativa são diferentes. Quando implantamos um LLM como um bot de bate-papo para o mundo usar, passamos de usá-lo para adivinhar a próxima palavra em uma frase pré-existente para "adivinhar" a próxima palavra em uma nova string que na verdade não existe. Trata-se de uma mudança enorme, cuja importância é, creio eu, geralmente subestimada. Isso significa que, ao contrário de um classificador clássico, simplesmente não há como avaliar a precisão da saída do LLM da maneira tradicional, porque não há rótulos corretos para compará-la. Acho que esse ponto é um pouco sutil e que ser bastante granular será útil para trazê-lo à tona.
Quando você insere uma imagem de um número 7 no reconhecedor de dígitos, há um único rótulo correto inequívoco que você espera que ele produza: "7". Se ele gerar os rótulos "1" ou "9", isso é inequivocamente incorreto e conta contra a precisão do seu modelo. Esses erros são idênticos em espécie aos erros cometidos durante o treinamento e, portanto, faz sentido falar sobre a taxa de erro em novos dados (o chamado "erro de generalização" ou "erro fora da amostra") exatamente da mesma forma que falamos sobre a taxa de erro nos dados de treinamento.
Quando você alimenta o ChatGPT com a string "O que é 2 + 2?", não existe uma única palavra correta e inequívoca. Você gostaria que a próxima palavra fosse algo como "4". Mas "2" também pode ser bom, como em "2 + 2 = 4". "O" também pode ser uma boa próxima palavra, como em "A soma de 2 e 2 é 4". Claro, qualquer um deles também pode ser a primeira palavra em uma resposta ruim, como "4,5" ou "2 + 2 = 5" ou "A rápida raposa marrom". A tarefa para a qual o modelo foi construído é preencher a palavra que foi censurada de uma passagem existente - uma tarefa que tem uma resposta certa inequívoca - mas agora a situação é totalmente diferente. Existem melhores próximas palavras e piores próximas palavras, mas não há próxima palavra certa no mesmo sentido que havia no treinamento, porque não há exemplo para reconstruir.
Um erro no sentido clássico para um modelo de linguagem seria uma falha em reproduzir a palavra ausente que foi censurada do exemplo de treinamento, mas na produção esses modelos simplesmente não são usados para fazer isso. É um pouco como se começássemos a conectar imagens de animais ao reconhecedor de dígitos. Se o reconhecedor de dígitos chamar um leão de 6, ele cometeu um erro? Não, acho que não. Você o está usando para uma tarefa diferente da que foi treinada para fazer; Não há resposta certa, portanto, os erros não são definidos.
Na prática, tendemos a nem nos importar muito com essas previsões de palavras individuais. O LLM, o mecanismo que faz o ChatGPT funcionar, não faz nada além de adivinhar as palavras uma de cada vez, mas o sistema ChatGPT envolve um componente que alimenta essas previsões de volta ao LLM para gerar toda uma sequência de palavras que compõem uma resposta de texto completo. É o conteúdo semântico que emerge nessa resposta de texto completo que geralmente nos interessa, não qualquer palavra.
Isso é pelo menos parte da razão pela qual é um "erro" quando o classificador de dígitos manuscrito chama de 7 a 9, mas uma "alucinação" quando o GPT-4 diz que um elefante chamado Kami nadou pelo Canal da Mancha em 1981 para arrecadar dinheiro para o World Wildlife Fund.

É claro que não é o caso de um elefante chamado Kami ter nadado pelo Canal da Mancha em 1981, mas a maneira como o ChatGPT está errado aqui é muito diferente da maneira como um classificador de imagens está errado quando chama um 7 a 9. O ChatGPT fez 110 previsões distintas aqui, e não é óbvio como categorizar cada uma como certa ou errada. Cada palavra prevista faz sentido em relação às palavras que a precedem, e isso se parece muito com uma sequência de palavras que você pode encontrar nos dados de treinamento.

Algumas, até mesmo a maioria, das palavras previstas aqui provavelmente estão mais próximas do correto do que incorreto, na minha opinião. É claro que não há uma maneira universal de definir isso objetivamente, uma vez que não há texto pré-existente para compará-lo (essa é uma espécie de minha tese inteira aqui), mas você consegue pensar em uma palavra melhor para seguir "continua sendo um evento único na história do animal" do que "feitos"? De todas as previsões que o modelo fez, não está claro quais individuais, se houver, devemos chamar de erros - embora, em conjunto, claramente, essa saída não seja o que queremos.
Mas por que razão não é o que queremos? O que exatamente há de errado com isso? Obviamente, o principal problema é que parece descrever um evento que não ocorreu de fato. Mas quando eu realmente penso sobre isso, acho um pouco intrigante. E se um elefante asiático chamado Kami realmente tivesse nadado pelo Canal da Mancha em 1981, exatamente como descrito neste texto? Então, esse par idêntico de entrada e saída não seria alucinatório. Isso parece implicar que não há nada inerente ao texto do par insumo-produto que o torne alucinatório; Se é ou não alucinatório depende inteiramente de fatos sobre o mundo, fatos que existem completamente independentemente do texto produzido pelo modelo. Mas se não há nada inerente ao texto que o torne alucinatório, então a alucinação é mesmo uma propriedade do texto? Não inteiramente, ao que parece. É uma propriedade da maneira como o texto se relaciona com objetos e eventos no mundo real.
Para complicar ainda mais as coisas, mapear o texto para fatos sobre o mundo é um negócio mais escorregadio e subjetivo do que provavelmente se espera. Eu li a passagem sobre Kami como fazendo várias afirmações, muitas das quais são verdadeiras - o Canal tem "cerca de 21 milhas em seu ponto mais estreito" e é "um desafio significativo mesmo para nadadores humanos experientes devido às fortes correntes e temperaturas frias da água". Eu, e tenho certeza de que a maioria dos leitores, provavelmente concordaria que a principal afirmação feita pelo texto é que um elefante chamado Kami nadou pelo Canal da Mancha, o que é falso e, portanto, talvez a passagem seja "alucinatória", mas você pode chegar a um critério objetivo pelo qual podemos fazer esse tipo de avaliação para todo o texto possível? Parece difícil para mim. A saída a seguir seria uma alucinação ou não? (É muito importante sempre ter em mente que, como esses sistemas geram texto aleatoriamente, o mesmo prompt pode levar a saídas diferentes, algumas das quais você pode considerar alucinatórias e outras não.)

E quanto a isso?

Deixe-me recapitular mais uma vez o básico de como o ChatGPT funciona. Primeiro você treina um classificador, mais ou menos da maneira padrão, na tarefa de preencher a palavra que falta em um bloco de texto. Agora você tem um modelo que pode produzir uma única palavra por vez: a palavra ausente prevista, considerando o texto anterior. Dado algum texto inicial, digamos "2 + 2", esse modelo age como se fosse o início de um documento existente que teve a palavra final censurada e produz uma suposição sobre qual era a palavra censurada. Talvez adivinhe "iguais". Agora, para transformar isso em um sistema que produz mais de uma palavra por vez, você cola isso no final do prompt e a alimenta de volta no modelo. O modelo é invocado mais uma vez, fresco, alheio a qualquer uma das atividades anteriores, e solicitado a adivinhar a palavra que foi censurada a partir do final de "2 + 2 é igual". Isso é repetido várias vezes até que a previsão do modelo seja que não há próxima palavra. Em um alto nível, os modelos de imagem generativa funcionam de maneira bastante semelhante. Estes são treinados na tarefa de reconstruir uma imagem dada uma versão distorcida da imagem e uma descrição em texto simples da imagem. Para gerar novas imagens, você insere a descrição em texto simples do que deseja produzir e, no local onde o modelo espera a imagem distorcida, você insere ruído aleatório. Em ambos os casos, o modelo "pensa" que está reconstruindo um artefato existente, mas na verdade está gerando um novo. Dada essa descrição, acho que faz sentido se perguntar: toda saída de IA generativa é uma "alucinação"? Se a maneira de fazê-los produzir resultados é dizer-lhes que o resultado realmente já existe e colocá-los para trabalhar reconstruindo-os, para mim, isso soa como se estivéssemos pedindo a eles que alucinassem.
Alguns pesquisadores proeminentes de IA recentemente chegaram publicamente a essa visão de que toda a produção de LLM é alucinação – e, além disso, que é realmente uma coisa boa. Andrej Karpathy recentemente twittou que os LLMs são "máquinas de sonhos", que "a alucinação não é um bug, é a maior característica do LLM". Posso não ir tão longe a ponto de descrever isso como um recurso "ótimo", mas acredito que é sua característica definidora.
Na verdade, esta não é uma perspectiva nova, mas relativamente antiga. Em 2015, o Google lançou um sistema que eles chamaram de Sonho profundo, que foi muito diretamente um precursor desses atuais sistemas generativos de IA, e quase certamente o que Karpathy estava aludindo ao chamar os LLMs de "máquinas dos sonhos".

Esse sistema nasceu da percepção de que eles poderiam reconfigurar a tecnologia que vinham usando para classificar imagens como uma forma de gerar imagens que não existiam anteriormente. Como as imagens geradas não são realmente "de" nada que exista no mundo real, mas sim algo como ecos estatísticos de imagens dos dados de treinamento, eles decidiram chamá-las de "sonhos". Os criadores do DeepDream não alegaram que o modelo produz imagens que são "ocasionalmente alucinações". Entendeu-se desde o início que cada bit de informação gerado por esses modelos é um "sonho". Na época, isso parecia mais uma curiosidade do que algo que poderia realmente se tornar útil por conta própria - ou, na melhor das hipóteses, uma maneira de entender melhor o funcionamento interno do classificador.

Um trecho do Postagem no blog da Deep Dreams, mostrando como os "sonhos" podem ser usados para entender melhor as redes neurais.
Não parece ter sido antecipado na época por muitas pessoas que sonhos desse tipo poderiam ser úteis por seus próprios méritos, mas aprendemos desde então que, se você treinar um modelo complexo o suficiente com dados suficientes, os sonhos podem se tornar bastante vívidos e corresponder frequentemente a fatos sobre o mundo real. Mas, na medida em que isso acontece, na minha opinião, é essencialmente uma feliz coincidência. Do "ponto de vista do modelo", não há distinção entre texto alucinatório e texto não alucinatório. Toda a sua produção são reconstruções sonhadas de documentos censurados fingidos.
Isso pode parecer bastante filosófico e abstrato e, até certo ponto, é, mas acredito que também tem algumas implicações muito concretas sobre como podemos esperar que essa tecnologia evolua. Se uma alucinação é análoga a um erro típico de qualquer outro modelo de aprendizado de máquina, então temos boas razões empíricas para acreditar que a prevalência de alucinações pode ser levada agressivamente para zero. Hoje em dia, existem modelos de aprendizado de máquina que são muito, muito bons no reconhecimento de dígitos manuscritos. As etapas básicas são simples: treinar o modelo com mais dados e torná-lo maior. Mas se as alucinações são qualitativamente diferentes do tipo clássico de erro, como eu realmente acredito que sejam, então a história pode ser diferente. Não é tão óbvio neste caso que mais dados ou modelos maiores levam a menos alucinações. Talvez o caminho a seguir não seja mais dados ou modelos maiores, mas outra coisa: uma maneira completamente nova e diferente de treinar o modelo, talvez, ou uma nova maneira de gerar previsões. E, de fato, a abordagem atual do estado da arte para lidar com alucinações não envolve realmente a coleta de um conjunto de dados significativamente maior ou a ampliação do modelo; O RLHF é mais como uma maneira completamente nova e diferente de alterar um modelo pré-treinado. É a solução? Talvez; ninguém sabe! Sob a visão de que o problema da alucinação é qualitativamente novo, em vez de um exemplo do problema bem conhecido de que os modelos de aprendizado de máquina ocasionalmente produzem erros, a inevitabilidade da melhoria gradual, mas perpétua, ao longo desse eixo não é de forma alguma garantida.
A coisa realmente assustadora que está implícita nessa visão é que o problema da alucinação é simplesmente insolúvel. Alucinação e não alucinação não são realmente categorias distintas de produção; Toda vez que você pede ao bot para desenhar uma imagem ou escrever um ensaio, você está pedindo para alucinar. Essas alucinações inevitavelmente divergirão do mundo real, pelo menos às vezes, porque, bem, como não poderiam? Eles são sonhos. Eu acho que é revelador que a maioria das tentativas reais de fundamentar sistemas baseados em LLM na verdade não são realmente maneiras de melhorar o modelo, mas maneiras de aparafusar peças não-LLM ao sistema maior que produzem texto factual mais confiável para ele saltar: dando-lhe um ambiente para executar código, por exemplo, ou alimentando-o com resultados de pesquisa do Bing. Esses complementos (a OpenAI literalmente os chama de complementos) podem ser um pouco bem-sucedidos em provocar alucinações que combinam melhor com o mundo real, mas não me parece chegar à raiz do problema, que é que a geração do mecanismo não pode dizer a diferença entre gerar verdades e gerar mentiras.
Como um pequeno aparte, acho o hype em torno da IA generativa bastante confuso e confuso. Claro, acho isso exagerado em muitos aspectos. Você sabe disso; Eu não preciso expandir. Mas, por outro lado, acho que é realmente subestimado - e subvendido - que milagre é que isso funcione. Não é tão surpreendente para mim que, dado um conjunto de dados grande o suficiente e um modelo grande o suficiente, você possa treinar um modelo grande para prever a única palavra ausente de uma passagem de texto com precisão bastante alta. Mas o fato de que você pode alimentar a saída desse modelo de volta sobre si mesmo para gerar texto, e que o texto resultante é remotamente coerente e muito menos útil, é nada menos que milagroso. No entanto, eu realmente não vejo este último ponto muito enfatizado. Estou apenas opinando descontroladamente aqui, mas não acho que (algumas) pessoas que constroem essa tecnologia queiram realmente reconhecer o quão surpreendente é que isso funcione, porque isso levanta a questão desconfortável de saber se serão necessários milagres de magnitudes semelhantes para melhorá-la - para eliminar o problema da alucinação, por exemplo. É mais confortável pintar o GPT-4 como uma breve parada ao longo da marcha inexorável em direção à superinteligência artificial, com alucinações e todos os outros problemas como blips temporários ao longo do caminho, do que como um truque estranho que alguém descobriu em 2017 que produziu resultados completamente imprevisíveis e surpreendentes que ninguém realmente entende.
3. Sobre os riscos de maus resultados
Na visão da seção anterior, não há distinção universal real entre saída que é alucinatória e saída que não é. Pode haver saída mais desejável e saída menos desejável, mas desejabilidade não é uma propriedade inerente do texto, mas sim uma propriedade de como ele é interpretado e usado pelo leitor. Você pode concordar com isso, ou não. De qualquer forma, acho que é importante - essencial, até mesmo - pensar e tentar quantificar a frequência de diferentes tipos de texto que o modelo produz em diferentes circunstâncias.
Isso sugere uma ideia bastante simples: por que não definimos alguns critérios por decreto para o que constitui uma alucinação - independentemente das preocupações filosóficas sobre se tal coisa pode existir objetivamente - e tentamos comparar modelos com tal definição para chegar a uma "taxa de alucinação". Nesta seção, falarei sobre alguns dos desafios que enfrentamos ao tentar fazer isso.
Primeiro, há um pouco a dizer sobre como pensar sobre erros em geral. É divertido e interessante aprender sobre os detalhes técnicos específicos de como diferentes sistemas de IA funcionam, mas quando você está pensando em implantar um para automatizar decisões reais com apostas reais, há realmente apenas três coisas que importam: que tipos de erros ele comete, com que frequência os comete e quanto custam os erros? As respostas a essas perguntas determinam se é mesmo racional usar o sistema em produção - e às vezes não é!
Suponha que você esteja pensando em usar um modelo que preveja se uma casa está subvalorizada como base para o seu negócio de investimento imobiliário. Se o modelo prevê que a casa está subvalorizada, você a comprará e a venderá pelo que seu modelo diz ser seu valor justo de mercado. Se essa é ou não uma estratégia viável depende fortemente dos tipos e frequências de erros que seu modelo comete. E não basta saber algo como "90% das vezes o modelo está dentro de 5% do preço real de venda". Você precisa saber muito mais. Nos 10% dos casos em que está errado em mais de 5%, a que distância está? Se ocasionalmente estiver 100% ou 1000%, isso pode ser suficiente para levá-lo à falência, mesmo que seja pouco frequente. Nos 90% dos casos em que está dentro de 10%, tende a superestimar ou subestimar? Se o modelo tende a subestimar o verdadeiro valor das casas, você frequentemente perderá oportunidades lucrativas de virar ou vender muito cedo. Isso pode ser irritante, mas contanto que às vezes dê certo, você pode ter uma maneira viável de ganhar dinheiro. Por outro lado, se o modelo tende a superestimar o valor correto de uma casa, você estará pagando muito por ativos supervalorizados, uma boa maneira de falir. A moral da história é que entender e planejar os erros que o modelo comete – não apenas com que frequência ele os comete, mas como eles se parecem e quanto custam – é de suma importância se você for usá-lo para automatizar a tomada de decisões. Isso é verdade para todos os modelos, desde a regressão linear de variável única mais baixa até o maior modelo de linguagem grande do mundo.
Mas para a IA generativa, como discuti, não é muito bem compreendido como definir ou descrever os erros, muito menos medir e raciocinar sobre eles. Existem tentativas. Como sugeri anteriormente, você pode tentar fazer com que o sistema LLM gere um monte de saída, leia-o para determinar se está certo ou errado e, a partir disso, calcule uma "taxa de alucinação". Uma empresa chamada Vectara tem um programa para tentar fazer exatamente isso e mantém uma "Tabela de Classificação de Alucinação" que atualmente relata que a taxa de alucinação para GPT 4 Turbo é de 2.5%, enquanto a taxa de alucinação para Mistral 7B Instruct-v0.1 é de 9.4%.
Tenho algumas fortes preocupações metodológicas sobre como esses números são estimados e voltarei a eles momentaneamente, mas mesmo supondo que haja uma maneira metodologicamente sólida de quantificar isso, essa "taxa de alucinação" não é informação suficiente. Assim como no exemplo da compra de uma casa, importa não apenas com que frequência está errado, mas em que direção? Quando o bot LLM diz algo falso, o que exatamente ele está dizendo? Está dizendo que estava chovendo no fim de semana passado, quando na verdade estava ensolarado? Ou está fazendo ofertas extravagantes ao seu cliente que você não pode cumprir? Se o clima do fim de semana passado estiver errado 2,5% das vezes, isso pode ser bom o suficiente para um assistente de bate-papo voltado para o cliente, mas você provavelmente gostaria que ele distribuísse seu inventário gratuitamente com muito menos frequência do que 2,5% do tempo.
No contexto clássico de aprendizado de máquina, geralmente é possível colocar alguns limites em torno dos diferentes tipos de erros e suas taxas, ou pelo menos dizer algo qualitativo sobre eles. Você não sabe a que distância a estimativa do preço da casa estará, mas sabe que pelo menos será um número, e provavelmente poderá fazer alguma análise estatística para descobrir se tende a superestimar ou subestimar e assim por diante. Você não sabe o que o reconhecedor de dígitos vai pensar que é esse "7", mas você tem certeza de que pelo menos vai adivinhar um dígito. Com esses novos sistemas de IA generativa, a saída pode ser aparentemente qualquer coisa. O espaço de possível texto indesejável é insondavelmente grande. O ChatGPT pode citar erroneamente um preço para o seu cliente, ou pode recomendar um concorrente, ou pode chamá-lo de calúnia racial, ou pode gerar uma imagem pornográfica, ou pode estragar qualquer uma das infinitas outras maneiras distintas, e cada um desses tipos de saída ruim tem um custo diferente. Sem saber mais especificamente que tipos de erros comete, uma taxa de alucinação genérica simplesmente não fornece informações suficientes para saber se um LLM é adequado para você.
Gostaria de voltar aos desafios metodológicos porque acho que eles são graves. Eu vejo pelo menos três difíceis. A primeira, e menos grave, é que claramente não há um amplo acordo sobre o que constitui "alucinação" em primeiro lugar. A tabela de classificação do Vectara não é realmente muito precisa sobre sua definição de alucinação, mas parece ser algo mais ou menos como: uma alucinação é uma tentativa fracassada de resumir com precisão um pedaço de texto. Isso é bom até onde vai, mas se você não estiver usando o modelo para resumir o texto, uma medida da frequência com que um modelo falha em resumir o texto com precisão pode não ser particularmente útil para você. Isso é um problema, mas não um problema terrivelmente grande, desde que você tenha o cuidado de entender a metodologia de qualquer referência de alucinação que esteja olhando. Você apenas lê a documentação, decide se sua própria definição pessoal de uma alucinação corresponde à definição do benchmark e procede de acordo.
O segundo e o terceiro problemas são significativamente mais difíceis de lidar. O segundo problema é que é praticamente inviável realizar adequadamente essas avaliações. Para avaliar adequadamente a taxa de alucinação do Vectara (e lamento continuar implicando com o Vectara porque todos os benchmarks têm esse problema idêntico), seria necessário ler cuidadosamente dezenas de milhares de resumos de texto de parágrafos e determinar se cada um contém algum erro factual. É simplesmente impossível fazer isso continuamente. Em vez disso, o que eles fazem é, depois de gerar todos os resumos de texto, eles usam outro modelo de linguagem grande para determinar se os resumos contêm erros. Espero que você possa ver o problema com isso.

O ponto principal do exercício é que observamos que os geradores baseados em LLM parecem não ser confiáveis em se ater à verdade, e agora estamos usando um LLM para determinar se eles se apegaram à verdade. Agora, vou dizer o seguinte: na verdade, não acho que a ideia de usar LLMs para avaliar outros LLMs seja necessariamente um beco sem saída total. Mas fazer isso corretamente exigirá uma metodologia estatística sofisticada para corrigir os erros cometidos pelo modelo de medição, e não vi nenhum benchmark padrão resolver esse problema. O próprio modelo de medição cometerá erros, e é quase certo que esses erros influenciarão qualquer estimativa da prevalência real de erros. Este não é um problema estatístico novo; O problema de estimar a prevalência de uma população contando o número de positivos produzidos por um teste não confiável é bem estudado em epidemiologia, por exemplo.
Este artigo trata de algumas propriedades básicas dos testes [de alucinação]. Tais testes pretendem separar [saída LLM] com [alucinações] de [saída LLM] sem. Critérios mínimos para que tal processo seja um teste são discutidos. Várias maneiras de julgar a bondade de um teste são examinadas. Um uso comum de testes é estimar a prevalência de [alucinação]; A frequência de testes positivos é mostrada como uma estimativa ruim e os ajustes necessários são fornecidos.
- O (gentilmente editado e anotado por mim) o resumo de Rogan, W. J., & Gladen, B. (1978). Estimativa da prevalência a partir dos resultados de um teste de triagem.
Portanto, embora eu acredite que existem alguns caminhos potenciais para o difícil problema de descrever a saída do LLM usando estimadores não confiáveis, não os vejo sendo incorporados a nenhum dos benchmarks amplamente disponíveis. Do jeito que está, não acredito que sejam confiáveis.
O primeiro e o segundo problemas são meio discutíveis, porque o terceiro problema é fatal. Vem das estatísticas 101. Estamos supondo que um modelo tenha alguma "taxa de alucinação" objetiva, uma taxa média na qual um modelo produz alucinações, e estamos tentando estimar isso verificando com que frequência as alucinações ocorrem em uma amostra de sua produção. Mas, de um modo geral, para que essa estratégia funcione, precisamos que a amostra seja representativa de toda a população; ou seja, precisamos que o texto se pareça com o texto que você obteria ao amostrar aleatoriamente uma passagem de todo o texto possível. E esses conjuntos de dados de referência, para dizer o mínimo, não se parecem com isso. Eles geralmente são construídos por meios muito artificiais e, como um todo, não são muito parecidos com o texto típico que você encontraria se apenas amostrasse um prompt aleatório dos usuários do ChatGPT.
Isso não seria um grande problema se a propensão a produzir alegações falsas não estivesse intimamente relacionada à escolha específica do prompt, mas parece que está. Em um teste reconhecidamente não científico que acabei de executar, descobri que o ChatGPT (usando GPT-4) produz uma saída que eu classificaria como falsa em algum lugar entre 75% (9 de 12 tentativas) e 92% (11 de 12 tentativas), e só produz uma saída que eu descreveria como completamente factual 8% das vezes (1 de 12 tentativas), em resposta ao prompt "Qual era o nome do primeiro elefante a nadar pelo Canal da Mancha?".

Respostas do ChatGPT (GPT-4) para "Qual era o nome do primeiro elefante a nadar pelo Canal da Mancha?" em abril de 2024. Vermelho indica uma fabricação completa, laranja indica um caso em que a saída fabrica algum absurdo, mas eventualmente nega que tal evento tenha ocorrido, e verde indica texto que eu classificaria como inteiramente factual. Acho que é entre parênteses notável que comecei a escrever este artigo em dezembro, que foi quando gerei a saída de exemplo anterior para este prompt específico e, desde então, parece que as respostas típicas a esse prompt mudaram desde então. Naquela época, o GPT-4 tinha uma forte tendência de nomear o elefante alucinatório Kami, mas agora tem uma tendência de nomear o elefante alucinatório Jumbo. A instabilidade ao longo do tempo dos tipos de respostas que você obtém dessa coisa é um tópico totalmente diferente, mas achei interessante apontar.
Doze é um tamanho de amostra pequeno, mas onze alucinações em doze tentativas são, na verdade, dados mais suficientes para rejeitar a hipótese nula de que a probabilidade de uma resposta alucinatória é de 2,5%. O ponto mais importante aqui é que a taxa de alucinação que você encontra se implantar seu bot de bate-papo com tecnologia GPT para o mundo simplesmente não é cognoscível, observando como ele se comporta em um desses testes de benchmark de alucinação. Ele obtém uma taxa de alucinação de 2,5% no benchmark de alucinação Vectara e obtém uma taxa de alucinação de 92% no benchmark de alucinação Colin Fraser, e nenhum deles será particularmente significativo para você porque o texto que seu bot de bate-papo processará não se parecerá em nada com o texto usado por qualquer um desses benchmarks.
Como uma demonstração mais prática, vamos nos voltar para um dos meus exemplos favoritos do mundo real de um bot com tecnologia ChatGPT, o Quirk Chevrolet AI Automotive Assistant. Em um teste não científico que acabei de fazer em abril de 2024, descobri que em 4 de 4 tentativas (100%) ele responde: "Desculpe, atualmente só temos um novo inventário. Existe um veículo novo no qual você possa estar interessado?" quando digo que estou procurando um Chevrolet Bolt 2021 usado, embora o site deles mostre claramente que eles têm um Chevrolet Bolt 2021 usado.

Não vou me incomodar em mostrar todas as quatro capturas de tela porque elas são idênticas, mas tentei isso no modo de navegação anônima quatro vezes seguidas e me deu a saída idêntica.
Para ver o quão imprevisível e sensível esse tipo de coisa é para o prompt específico, quando peço para me citar um preço para um Chevrolet Bolt 2021, em vez de perguntar se eles "têm um em estoque", de repente eles têm um.

Este bot de bate-papo é construído em cima do GPT 3.5 que, de acordo com a tabela de classificação da taxa de alucinação, deveria ter uma taxa de alucinação de 3.5%, mas parece que estou tendo alucinações muito mais do que 3.5% do tempo. Então, com que frequência, em média, a Quirk Chevrolet deve esperar que o bot de bate-papo minta para seus clientes? Não há realmente nenhuma maneira de saber a partir de qualquer um dos dados que apresentei até agora nesta seção, e esse é o ponto. A frequência de resultados ruins, se é que tal coisa é definível, depende inteiramente de seus próprios padrões para o que constitui resultados ruins e do tipo de texto que seus clientes tendem a inserir na janela de bate-papo. Nenhum benchmark padronizado pode responder a isso.
Se parece que sou um pouco niilista sobre isso, pense novamente! Não acho que haja muito o que aprender olhando para benchmarks de alucinação e todo o resto, mas na verdade acho que existem caminhos para você, um possível fornecedor de um produto de IA generativa, estimar de forma útil os tipos de taxas de erro que eu afirmo que você precisa. A má notícia é que vai dar muito trabalho, mas a boa notícia é que é possível.
A primeira coisa que você precisa é de um conjunto de dados preenchido com texto que represente o tipo de texto que seus usuários fornecerão. Isso pode ser de autoria manual, por você e, provavelmente, inicialmente, deveria. Tente produzir muitas variações que incluam todos os tipos de casos que você antecipa, incluindo texto que você geralmente não gostaria que um usuário enviasse. Agora, envie todos esses exemplos para o modelo e inspecione manualmente a saída, rotulando-a como desejável ou indesejável. Para isso, você pode usar os critérios que quiser; O que importa é se o texto é desejável para você. Não há saída objetivamente correta para o produto de IA generativa produzir, há apenas saída que é mais ou menos desejável em relação ao seu caso de uso. Quando terminar, você pode usar isso para estimar todos os tipos de coisas, como a frequência com que espera que ele produza texto desejável ou indesejável e, quando produz texto indesejável, que tipos de texto indesejável ele produz. Isso será difícil, mas será muito mais útil do que olhar para algum parâmetro de comparação padronizado, tanto porque ele é avaliado em um conjunto mais representativo de entradas quanto porque as saídas são classificadas para seu caso de uso específico.
Tudo isso é muito mais fácil se você realmente determinar para que serve seu produto. Há um pouco de relutância na indústria em se comprometer com qualquer caso de uso específico para IA generativa. ChatGPT e companhia não são realmente para nada em particular; eles são para tudo. Isso torna muito difícil encontrar critérios para o que faz uma boa saída. Mas se vamos usar um wrapper do ChatGPT como agente de atendimento ao cliente, agora podemos colocar alguns limites em torno das saídas desejadas. Queremos que ele represente com precisão os fatos sobre a loja. Queremos que seja educado. Queremos que evite recomendar concorrentes. Quando nos deparamos com uma pergunta sobre como nivelar uma lista de listas em Python, não queremos que ela produza uma solução incorreta, mas também não queremos necessariamente que ela produza uma solução correta. Queremos que ele diga algo como "Sou um bot de bate-papo de atendimento ao cliente. Não é para isso que eu sou. Vamos falar sobre coisas de atendimento ao cliente." Esta é realmente uma ótima notícia, porque significa que você não precisa saber a maneira certa de nivelar uma lista de listas em Python para executar essa tarefa de rotulagem. Restringir o comportamento desejado permite que você crie limites muito mais nítidos em torno dos tipos de saída que você deseja que ele produza, o que dará uma leitura muito melhor sobre se ele se comportará da maneira que você precisa do que qualquer benchmark padrão.
Não quero fazer isso parecer fácil. É difícil, e acho que há muito espaço para alguém desenvolver um conjunto abrangente de melhores práticas para fazer esse tipo de avaliação sob medida (quantos exemplos você precisa? Você pode gerar texto de exemplo sinteticamente? Você pode avaliar com um LLM? Como você faz a amostragem das interações existentes para criar um conjunto de dados maior? Como isso se relaciona com o ajuste fino? etc etc etc), mas este é realmente o tipo de avaliação em que você deve confiar. Os benchmarks gerais não dirão quase nada sobre se o bot terá alucinações de uma maneira que deveria ser importante para você.
Um exemplo final
Com sinceras desculpas ao pessoal da Vectara por implicar tanto com eles neste post, acho que um exemplo de sua postagem no blog apresentando a tabela de classificação de alucinações é bastante ilustrativo do meu ponto principal neste artigo. O post começa apresentando o conceito de alucinação ao público por meio de um exemplo.
Muitas vezes, as alucinações podem ser muito sutis e podem passar despercebidas pelo usuário, por exemplo, identifique a alucinação nesta imagem que o Bing Chat gerou para mim na outra semana, quando pedi uma imagem de "Kirby engolindo donkey kong"

A alegação parece ser que, se o modelo tivesse produzido quase essa imagem exata, mas sem dar dentes a Kirby, essa saída seria correta, factual, livre de alucinações. Mas acho que posso identificar alguns outros problemas factuais com a imagem. A mancha rosa na bochecha esquerda de Kirby é um pouco mais escura do que a da bochecha direita. Enquanto Kirby geralmente não é retratado com dentes, Donkey Kong geralmente é, mas nesta imagem ele não tem nenhum. Além disso, o prompt parece pedir que Kirby esteja engolindo Donkey Kong, enquanto para mim parece mais que Donkey Kong está apenas relaxando na boca de Kirby.
Ah, e outra coisa também, Kirby e Donkey Kong não são reais. Não existe uma imagem factualmente correta de Kirby engolindo Donkey Kong.
Quando você pede ao modelo para gerar uma imagem, você está pedindo que ele alucine. Você está pedindo que ele evoque uma imagem falsa do nada, para reconstruir os detalhes de uma imagem que você está dizendo que existe, mas na verdade não existe. Não existe um critério objetivo universal que você possa usar para determinar se essa imagem é alucinatória ou não. O autor aqui está aplicando seus próprios critérios pessoais para o que tornaria essa imagem alucinatória, que pode ou não ser a mesma de outra pessoa, e ninguém tem nenhuma reivindicação particular de ter "a correta".
O que realmente importa é o que você vai fazer com a saída. Para que serve o modelo? É assim que você determina se a saída é boa ou ruim. Se o trabalho do modelo é aderir aos padrões de design de personagens da Nintendo, então, claramente, neste caso, ele falhou. Com relação a essa tarefa específica, e talvez você diga que os dentes são, neste contexto, uma alucinação. Por outro lado, se o trabalho do modelo é produzir uma imagem que a pessoa média diria que corresponde ao prompt, então talvez seja bem-sucedido. Se você me pedisse para descrever essa imagem em poucas palavras, eu poderia dizer que é uma imagem de Kirby engolindo Donkey Kong. Por outro lado, se o trabalho do modelo envolve evitar reproduzir a propriedade intelectual de outra empresa, como se poderia sugerir que é o trabalho do gerador de imagens do Bing, então essa imagem constitui mais um tipo de alucinação.
As pessoas ficaram muito chateadas com o Google quando o Gemini gerou imagens que as pessoas consideravam muito diversas e, em um post de desculpas, aludiram ao "problema da alucinação".
Como dissemos desde o início, as alucinações são um desafio conhecido em todos os LLMs – há casos em que a IA simplesmente erra.
Mas Gêmeos gera uma imagem de um papa negro que na verdade não existe, isso é mais uma alucinação do que se gerasse um papa branco que na verdade não existe? Ambos são papas falsos. Parece-me que essas gerações seriam igualmente alucinatórias. Na verdade, parece-me que toda produção geradora é igualmente alucinatória. A menos que o Google faça algumas promessas mais específicas sobre o que o Gemini é e o que não deve gerar, não há uma maneira universal óbvia de avaliar sua taxa de alucinação.
Acho que este é um tópico controverso que não é muito bem compreendido, para o qual há muito pouca teoria para se basear. A implantação desses sistemas ultrapassou nossa capacidade coletiva de raciocinar sobre eles. Não estou necessariamente convencido de que não mudarei de ideia sobre como tudo isso funciona no futuro, e agradeço comentários e respostas. Mas depois de pensar muito sobre a natureza da alucinação, estou pessoalmente bastante convencido de que é um beco sem saída conceitual. Não existe saída que seja objetivamente alucinatória e saída que não seja, e focar na alucinação como um conceito coerente é uma distração do trabalho real que precisa ser feito para avaliar a aplicabilidade desses sistemas.

Comentários