Um recente artigo no Computerworld argumentou que a saída de sistemas de IA generativos, como GPT e Gemini, não é tão boa quanto costumava ser. Não é a primeira vez que ouço essa reclamação, embora eu não saiba o quão amplamente essa opinião é aceita. Mas eu me pergunto: está correto? E por quê?
Acho que algumas coisas estão acontecendo no mundo da IA. Primeiro, os desenvolvedores de sistemas de IA estão tentando melhorar a saída de seus sistemas. Eles estão (eu diria) olhando mais para satisfazer clientes corporativos que podem executar grandes contratos do que para indivíduos pagando US$ 20 por mês. Se eu estivesse fazendo isso, ajustaria meu modelo para produzir uma prosa comercial mais formal. (Isso não é uma boa prosa, mas é o que é.) Podemos dizer “não cole apenas a saída de IA em seu relatório” quantas vezes quisermos, mas isso não significa que as pessoas não farão isso — e significa que os desenvolvedores de IA tentarão dar a eles o que eles querem.
Os desenvolvedores de IA certamente estão tentando criar modelos mais precisos. A taxa de erro caiu consideravelmente, embora esteja longe de zero. Mas ajustar um modelo para uma taxa de erro baixa provavelmente significa limitar sua capacidade de chegar a respostas fora do comum que achamos brilhantes, perspicazes ou surpreendentes. Isso é útil. Quando você reduz o desvio padrão, você corta as caudas. O preço que você paga para minimizar alucinações e outros erros é minimizar os outliers corretos e “bons”. Não vou argumentar que os desenvolvedores não devem minimizar alucinações, mas você tem que pagar o preço.
O “AI Blues” também foi atribuído a colapso do modelo. Acho que o colapso do modelo será um fenômeno actual – eu até fiz o meu próprio experimento não científico—mas é muito cedo para ver isso nos grandes modelos de linguagem que estamos usando. Eles não são retreinados com frequência suficiente e a quantidade de conteúdo gerado por IA em seus dados de treinamento ainda é relativamente muito pequena, especialmente se eles estiverem envolvidos em violação de direitos autorais em escala.
No entanto, há outra possibilidade que é muito humana e não tem nada a ver com os modelos de linguagem em si. O ChatGPT existe há quase dois anos. Quando foi lançado, ficamos todos surpresos com o quão bom ele period. Uma ou duas pessoas apontaram para a declaração profética de Samuel Johnson do século XVIII: “Senhor, a saída do ChatGPT é como um cachorro andando sobre as patas traseiras. Não é bem feito; mas você fica surpreso ao descobrir que é feito.”1 Bem, todos nós ficamos espantados — erros, alucinações e tudo. Ficamos espantados ao descobrir que um computador podia realmente se envolver em uma conversa — razoavelmente fluente — mesmo aqueles de nós que tinham tentado o GPT-2.
Mas agora, já se passaram quase dois anos. Nós nos acostumamos com o ChatGPT e seus companheiros: Gemini, Claude, Llama, Mistral e uma horda a mais. Estamos começando a usá-lo para trabalho actual — e o espanto passou. Estamos menos tolerantes com sua verbosidade obsessiva (que pode ter aumentado); não o achamos perspicaz e unique (mas não sabemos realmente se algum dia foi). Embora seja possível que a qualidade da saída do modelo de linguagem tenha piorado nos últimos dois anos, acho que a realidade é que nos tornamos menos tolerantes.
Qual é a realidade? Tenho certeza de que há muitos que testaram isso muito mais rigorosamente do que eu, mas eu executei dois testes na maioria dos modelos de linguagem desde os primeiros dias:
- Escrevendo um soneto petrarquiano. (Um soneto petrarquiano tem um esquema de rima diferente de um soneto shakespeariano.)
- Implementando corretamente um algoritmo bem conhecido, mas não trivial, em Python. (Eu geralmente uso o teste de Miller-Rabin para números primos.)
Os resultados para ambos os testes são surpreendentemente semelhantes. Até alguns meses atrás, os principais LLMs não conseguiam escrever um soneto petrarquiano; eles conseguiam descrever um soneto petrarquiano corretamente, mas se você pedisse para escrever um, ele estragaria o esquema de rima, geralmente dando a você um soneto shakespeariano. Eles falharam mesmo se você incluísse o esquema de rima petrarquiano no immediate. Eles falharam mesmo se você tentasse em italiano (um experimento que um dos meus colegas realizou.) De repente, na época de Claude 3, os modelos aprenderam a fazer Petrarca corretamente. Fica melhor: outro dia, pensei em tentar duas formas poéticas mais difíceis: a sestina e a villanelle. (Vilarejos envolve repetir duas das linhas de maneiras inteligentes, além de seguir um esquema de rima. A sestina requer reutilizar as mesmas palavras de rima.) Eles poderiam fazer isso! Eles não são páreo para um trovador provençal, mas eles fizeram isso!
Obtive os mesmos resultados pedindo aos modelos para produzir um programa que implementasse o algoritmo Miller-Rabin para testar se números grandes eram primos. Quando o GPT-3 foi lançado, isso foi um fracasso complete: ele gerava código que rodava sem erros, mas me dizia que números como 21 eram primos. Gemini period o mesmo — embora, após várias tentativas, ele desajeitadamente culpasse as bibliotecas do Python pelo problema para computação com números grandes. (Eu imagino que ele não goste de usuários que dizem “Desculpe, isso está errado de novo. O que você está fazendo de incorreto?”) Agora eles implementam o algoritmo corretamente — pelo menos da última vez que tentei. (Sua milhagem pode variar.)
Meu sucesso não significa que não há espaço para frustração. Perguntei ao ChatGPT como melhorar programas que funcionavam corretamente, mas que tinham problemas conhecidos. Em alguns casos, eu sabia o problema e a solução; em alguns casos, eu entendia o problema, mas não como consertá-lo. Na primeira vez que você tentar isso, provavelmente ficará impressionado: embora “coloque mais do programa em funções e use nomes de variáveis mais descritivos” possa não ser o que você está procurando, nunca é um conselho ruim. Na segunda ou terceira vez, porém, você perceberá que sempre está recebendo conselhos semelhantes e, embora poucas pessoas discordem, esse conselho não é realmente perspicaz. “Surpreso ao descobrir que foi feito” decaiu rapidamente para “não está bem feito”.
Essa experiência provavelmente reflete uma limitação basic dos modelos de linguagem. Afinal, eles não são “inteligentes” como tal. Até que saibamos o contrário, eles estão apenas prevendo o que deve vir a seguir com base na análise dos dados de treinamento. Quanto do código no GitHub ou no StackOverflow realmente demonstra boas práticas de codificação? Quanto dele é bastante pedestre, como meu próprio código? Eu apostaria que o último grupo domina — e é isso que se reflete na saída de um LLM. Pensando no cachorro de Johnson, estou realmente surpreso em descobrir que isso foi feito, embora talvez não pelo motivo que a maioria das pessoas esperaria. Claramente, há muita coisa na web que não está errada. Mas há muita coisa que não é tão boa quanto poderia ser, e isso não deveria surpreender ninguém. O que é lamentável é que o quantity de conteúdo “muito bom, mas não tão bom quanto poderia ser” tende a dominar a saída de um modelo de linguagem.
Esse é o grande problema que os desenvolvedores de modelos de linguagem enfrentam. Como obtemos respostas que sejam perspicazes, prazerosas e melhores do que a média do que está disponível na web? A surpresa inicial se foi e a IA está sendo julgada por seus méritos. A IA continuará a cumprir sua promessa ou apenas diremos “isso é IA chata e sem graça”, mesmo que sua saída se infiltre em todos os aspectos de nossas vidas? Pode haver alguma verdade na ideia de que estamos trocando respostas prazerosas por respostas confiáveis, e isso não é uma coisa ruim. Mas precisamos de prazer e percepção também. Como a IA fornecerá isso?
Notas de rodapé
De Boswell Vida de Johnson (1791); possivelmente ligeiramente modificado.