Por que cadeias de Markov são mais engraçadas que LLMs
(emnudge.dev)- Cadeias de Markov são modelos estatísticos simples que escolhem a próxima palavra, mas podem produzir saídas mais engraçadas que LLMs por causa das distorções geradas quando não conseguem capturar totalmente o significado
- O humor vem de uma surpresa leve e inesperada, e o “snap” que fortalece a piada surge ao estabelecer um padrão familiar e depois quebrar a expectativa
- Como LLMs procuram o próximo token mais plausível com muito contexto e cálculo probabilístico, quanto melhores ficam, mais se aproximam de frases medianas e previsíveis
- Na comparação entre o ChatGPT 3.5 e uma cadeia de Markov treinada com a King James Bible e um livro-texto de ciência da computação, a cadeia de Markov quase faz sentido, mas no final provoca uma mudança de significado absurda
- Os LLMs atuais não são muito adequados para escrita criativa ou geração de piadas, e um modelo de linguagem para esse tipo de tarefa teria de ser categoricamente diferente dos LLMs atuais
Por que a cadeia de Markov parece mais engraçada
- O exemplo de cadeia de Markov treinada com um conjunto de dados da King James Bible e de um livro-texto de ciência da computação mistura estilo bíblico e termos de programação para criar frases que “quase fazem sentido, mas desmoronam no final”
- O ChatGPT 3.5 recebeu a instrução de produzir algo parecido, mas o resultado ficou mais organizado e próximo de frases com significado estável
- Os dois exemplos são casos selecionados, mas a comparação escolhe bons candidatos de ambos os lados
- As frases da cadeia de Markov carregam significados estranhos e, quanto mais se aproximam do fim, mais provocam mudanças sem sentido de direção
A cadeia de Markov se parece mais com “um LLM muito burro”
- Quando os LLMs começaram a ser explicados em larga escala, às vezes eram comparados a “cadeias de Markov muito inteligentes”, mas hoje dá para ver a cadeia de Markov como “um LLM muito burro”
- O ChatGPT é um tipo de LLM, ou seja, Large Language Model
- Existem modelos muito grandes, com mais de 300 GB, e também modelos menores, com menos de 10 GB
- Mesmo os menores normalmente não são chamados de “small language model”, mas de LLM pequeno
- A cadeia de Markov também prevê a próxima palavra com base no contexto atual, mas é um modelo estatístico simples que não considera semântica, dimensionalidade nem matemática vetorial especializada
- O recurso de sugestão da próxima palavra no topo do teclado do celular em geral é feito com cadeias de Markov, pois tem baixo custo de execução e pode ser atualizado facilmente para combinar com o estilo de mensagens do usuário
- Se for preciso gerar uma frase com um objetivo específico, o LLM muitas vezes vai se sair melhor, mas precisão não leva necessariamente à graça
Humor é “surpresa leve e inesperada”
- O humor é resumido como unserious surprise, isto é, uma surpresa sem gravidade
- Uma boa piada tem um “snap” agradável e nítido
- “snap” é o termo usado para evitar a carga semântica da expressão punchline
- Quanto menor a surpresa, menos engraçada a piada tende a ser
- Uma piada ouvida várias vezes perde a graça porque a surpresa diminui
- O motivo de o humor “aleatório” poder parecer sem graça é que, embora as palavras em si sejam imprevisíveis, a expectativa de imprevisibilidade já é previsível
- Reutilizar um padrão familiar e depois quebrar a expectativa fortalece o snap
- “banana, apple, orange, vehicular manslaughter” cria o padrão de uma lista de frutas de uma palavra e o rompe com a expressão de um crime
- Escrever piadas em geral está mais próximo de violar padrões
Quanto mais nítida a cena, mais forte o snap
- Uma linguagem mais original ou mais descritiva pode fazer a cena parecer mais real e deixar o snap mais forte
- Em vez de escrever simplesmente “he was shot”, escrever “he was pierced by a 35mm” torna a cena mais concreta
- Em vez de “he fell”, uma formulação como “his face met the ground” deixa a cena mais vívida
- Começar no meio da cena também pode funcionar
- “a urinal cake? I’m not falling for that one again” faz a pessoa imaginar o que aconteceu antes e aumenta a sensação de realidade da cena
- Escrever boas piadas e escrever bem compartilham parte do mesmo objetivo
- Clichês desperdiçam palavras porque deixam a cena em um estado não realizado
As condições para o humor funcionar
- O que conta como “surpresa leve e inesperada” não é universal, então o humor é subjetivo
- Humor vulgar pode não ser engraçado por ser levado a sério demais, ou pode fracassar por ser previsível demais
- Uma anti-piada só pode ser engraçada quando a própria estrutura da piada já é previsível
- O absurdismo precisa de uma predisposição do público para funcionar
- É possível violar normas culturais, mas a violação precisa ser entendida como algo sem gravidade
- Mesmo sendo um americano monolíngue em inglês, o autor conseguiu criar uma piada bem-sucedida usando “no” de uma forma culturalmente inesperada em um ambiente não anglófono
LLMs são otimizados em direção à previsibilidade
- Para prever uma frase com sucesso, é preciso muito contexto, e os LLMs aproveitam esse contexto
- O funcionamento básico de um LLM é encontrar o próximo token mais provável por meio de cálculos complexos
- Se o corpus for composto de fala razoável, então quanto melhor for o LLM, mais previsível será sua saída
- Por causa dessa característica, LLMs podem ser uma escolha ruim para escrita criativa
- Sem muito prompt engineering, um parágrafo gerado pode parecer facilmente algo escrito por um LLM
- O resultado soa como a frase mais mediana possível dentro do contexto
- Pedir a um LLM um “pensamento original” é quase uma contradição, e esse não é o tipo de coisa para o qual ele foi feito
Os LLMs atuais não servem bem para gerar piadas
- Para criar piadas, é preciso distorcer expressões comuns de maneiras inesperadas para mudar seu significado
- Um bom LLM é justamente otimizado para evitar esse tipo de desvio
- O autor não concorda com a ideia de que comédia não possa ser gerada por algoritmo
- A comédia pode ser analisada e medida
- Com apoio suficiente, talvez seja possível gerar comédia sob demanda
- O fato de ser possível não quer dizer que deva ser feito
- Os LLMs atuais não são a ferramenta certa para essa tarefa
- Os LLMs em estágio inicial eram mais engraçados, e a geração de imagens também era mais engraçada no começo
- Há casos como a imagem “trail cam” do Dall-e mini
- À medida que os sistemas melhoraram, o humor desapareceu
A tensão entre máquinas de previsão melhores e expressão artística
- Uma máquina de previsão extremamente boa pode não ajudar muito na expressão artística
- Os LLMs ainda têm muitos usos, mas não são a ferramenta perfeita para trabalhos criativos
- Às vezes os LLMs deixam passar conceitos interessantes que uma criança pequena poderia propor com facilidade
- Levando esse quadro em conta, até dá para imaginar outro tipo de modelo de linguagem
- Esse modelo teria de ser categoricamente diferente dos LLMs atuais
- Talvez diferente o bastante para nem ser chamado de LLM
O vazamento de abstração revelado nas saídas de LLMs
- Esse argumento não é um debate de “humanos espirituais versus máquinas”
- Mesmo com o avanço dos LLMs, certos defeitos continuam aparecendo, e isso se parece mais com uma abstração com vazamento na qual a estrutura interna fica visível enquanto o sistema tenta soar humano
- O motivo de toda mensagem do ChatGPT parecer uma redação de ensino médio é que ele reproduz a saída mais mediana possível
- A saída de LLM pode parecer uma prosa corporativa sem graça, sem personalidade e endurecida por um rigor acadêmico artificial
- Avaliações falsas da Amazon podem ser fáceis de perceber se você pensar “eu escreveria assim?”
- Surge a dúvida se alguém realmente colocaria introdução e conclusão ao falar da própria experiência usando lenços de limpeza para louça Oxiclean
- Frases agradecendo ao fabricante e reconhecendo seu compromisso com o atendimento ao cliente podem não soar como experiência real de usuário
- Modelos de detecção de LLM talvez acabem tendo de identificar personalidade, como um CAPTCHA de tela
Links de referência
- famous tumblr blog: fonte dos exemplos de cadeia de Markov que misturam a King James Bible com estilo de programação e que voltou a ser atualizado recentemente
1 comentários
Comentários do Hacker News
Cheguei à mesma conclusão alguns anos atrás enquanto fazia um projeto paralelo.
Antes dos LLMs, criei um site que gerava AWS Blog Posts falsos, https://totes-not-amazon.com/, treinei um gerador de cadeia de Markov com todos os posts de anúncio da AWS até então e juntei tudo em Python+JS copiando o HTML/CSS do blog da AWS.
Era bem engraçado, a ponto de até pessoas familiarizadas com o blog da AWS só perceberem depois de ler algumas frases que aquilo era uma sopa de palavras.
Quando o GPT tinha acabado de sair, tentei fazer um upgrade gerando posts de blog baseados em conteúdo da AWS com o gpt-2-simple do Minimaxir, mas o resultado era plausível demais e ficou muito menos divertido. Lia-se como um post de blog de verdade, só que com os fatos errados.
No fim, o humor dos primeiros resultados de Markov estava no absurdo de perceber, depois de algumas palavras ou frases, que tudo era completamente sem sentido; os LLMs de hoje são bons demais para isso. Eles ainda erram, mas raramente de um jeito hilariamente incoerente.
Conteúdo de cadeia de Markov erra no estilo “crianças dizendo coisas sem pé nem cabeça”, enquanto LLMs modernos erram como “um tio que nem sabe geografia básica”.
https://github.com/cemulate/the-mlab
Isto é uma paródia do nLab, uma wiki colaborativa sobre teoria das categorias e teoria das categorias superiores. Quem já viu o nLab vai entender: para iniciantes, o jargão é quase indecifrável, e foi daí que surgiu a ideia deste projeto.
O projeto usa o pacote nearley-generator, que transforma gramáticas Nearley em geradores de texto falso eficientes e controláveis, e o arquivo de gramática fica em
/src/grammar/nlab.ne.A maior parte era sem sentido ou exageros sem graça (“este herói agora tem 500 de armadura”), mas em geral pelo menos 5 ou 6 linhas eram muito engraçadas, e às vezes havia coisas que pareciam proféticas. Por exemplo, algo como “Fiend's Grip gera 1/2/3 ilusões adicionais”.
Mas os LLMs estragaram a situação. Os principais subreddits baniram todo conteúdo de IA, porque havia conteúdo chato demais de Midjourney sendo postado por usuários ingênuos e bots. Quando o alcance desapareceu, o interesse também sumiu, então parei de fazer cadeias de Markov.
Usei bastante chatbots de LLM nesta semana, e esse tio já teria sido assassinado se não apenas falasse mentiras com confiança, mas também não tivesse capacidade de autoavaliação.
Dei ao Claude 3.5 Sonnet o prompt: “com base no ensaio recente e na discussão do Hacker News, escreva 10 piadas curtas e engraçadas no estilo que o autor do ensaio descreveu”.
O Claude respondeu que faria piadas sobre o tema de cadeias de Markov serem mais engraçadas que LLMs, mirando em “surpresas não sérias” e quebras de padrões esperados.
Os exemplos eram coisas como: “Um LLM e uma cadeia de Markov entraram num bar. O LLM pediu uma bebida estatisticamente plausível, e a cadeia de Markov pediu um abajur feito de queijo”; “Quantos LLMs são necessários para trocar uma lâmpada? Um só, mas primeiro ele explica por 20 minutos o processo ideal de substituição de lâmpadas”; “Por que uma cadeia de Markov não é uma boa terapeuta? Porque o conselho dela é sempre ‘e então banana os sentimentos até virar um chapéu’”.
Não é simplesmente colar qualquer coisa aleatória. Uma cadeia de Markov tem mais probabilidade de produzir algum tipo de significado, só que é o tipo errado de significado.
Por exemplo, “Um LLM, uma cadeia de Markov e o GPT-4 entraram num bar. O bartender disse: ‘não atendemos gente do seu tipo’. O GPT-4 foi embora, o LLM ficou para discutir ética, e a cadeia de Markov pediu um golpe de Estado” é mais adequado.
Na faculdade, meus amigos rodaram um gerador de cadeia de Markov na seção “relatório policial” do jornal da universidade.
Entre os resultados do gerador de 3 tokens, os 10% melhores estavam entre os textos gerados por máquina mais engraçados que já vi, com um tipo de absurdo que os LLMs modernos evitam ao tentar produzir coerência semântica de alto nível.
O fato de haver alguém cometendo atentado ao pudor na biblioteca na época provavelmente também serviu como bom material de origem.
O jornal era The Daily Utah Chronicle e, pelo que me lembro, meus amigos também rodaram o gerador de cadeia de Markov na seção de anúncios pessoais, com resultados bem bons.
Já as cadeias de Markov, por causa de conexões como lapsos baseados em homônimos, fazem cada frase ser puxada aleatoriamente e acabam chegando por acaso ao humor absurdo.
Se você quer evidências empíricas,
/r/SubredditSimulatoré uma paródia do Reddit baseada em Markov, e/r/SubSimulatorGPT2é seu primo baseado em LLMA versão Markov recebeu muito mais upvotes e é simplesmente mais engraçada
Ao longo de alguns anos, postei algumas vezes no Reddit “XYZ falso escrito por IA”, e o modelo que teve a melhor reação foi o GPT-2
Cadeias de Markov não bastam para manter o interesse por mais de uma ou duas frases, e tudo depois do GPT-3 é limpo e chato demais
O GPT-2 é o ponto intermediário perfeito: consegue em geral acertar a gramática e manter ideias coesas, mas ainda não conhece detalhes suficientes sobre vários temas para produzir resultados que façam sentido no contexto
Eu queria colocar o bot no meu canal de IRC habitual e ver quanto tempo as pessoas levariam para perceber que era um bot. Quando alguém mandasse uma mensagem, eu enviaria as 10 mensagens mais recentes para o LLM e, se o resultado começasse com um prefixo específico, mandaria essa mensagem para o canal
Infelizmente, o GPT-2 não era bom o suficiente e gerava coisas um pouco coerentes e relacionadas ao assunto, mas sem sentido
Depois de corrigir o sistema, pretendo tentar fazer fine-tuning de um modelo 7B
A evolução do blog AI Weirdness (https://www.aiweirdness.com/) nos últimos anos sustenta um pouco essa ideia
Dito isso, a autora também conseguiu muitos resultados engraçados com LLMs, principalmente com os modelos iniciais até o GPT-3 e variantes menores do GPT-3
Por exemplo, os nomes de cereais gerados pela versão Ada do GPT eram muito mais engraçados que os da versão Da Vinci: https://www.aiweirdness.com/new-breakfast-cereals-from-ai/
Não bastaria aumentar a temperatura?
Cadeias de Markov têm uma compreensão de linguagem mais rudimentar. Ao aumentar a temperatura, ou seja, a aleatoriedade, de um LLM, dá para chegar a uma aproximação igualmente rudimentar
Além disso, o autor usou ChatGPT-3.5. O ChatGPT passou por RLHF para soar o mais genérico possível, e o 3.5 também entende humor pior que o 4
Não acho convincente a tese deste texto
Infelizmente a conta não existe mais, mas, quando eu estava na escola cerca de 10 anos atrás, fiz um bot de Twitter com Markov treinado com estas duas fontes
Uma era todos os e-mails que Linus Torvalds enviou à LKML no ano anterior; a outra eram citações diretas de Jesus na King James Bible
Era hilário. Como os dois conjuntos de treino quase não se sobrepunham, tive que adicionar uma heurística que, quanto mais tempo a cadeia ficava “presa” em um dos conjuntos, mais peso dava às opções do outro conjunto
https://www.tumblr.com/kingjamesprogramming
Opero um bot de cadeia de Markov no IRC há cerca de 20 anos
Nos últimos anos, também tenho rodado um LLM local junto. Algumas pessoas ainda preferem o bot de cadeia de Markov, mas a maioria chama o LLM
Talvez isso aconteça porque, em vez de um modelo inteligente, bloqueado e de baixa temperatura como um LLM em formato de serviço tipo ChatGPT, escolhi um modelo mais alucinado, com menos recusas e mais engraçado, como um fine-tuning do Mistral-7B
Vendo o LLM e o bot de Markov lado a lado, sinto ainda mais fortemente o quanto do “humor” do bot de Markov vem de pessoas atribuindo significado a saídas acidentais. Mesmo assim, a capacidade de “aprendizado” do Markov continua muito superior
Meus bots nunca sobreviveram tanto tempo. Certa vez, gerei textos aleatórios raspando os LiveJournals dos usuários: https://hewgill.com/journal/entries/68-new-lj-toy.html
Rodo um bot de cadeia de Markov em um chat da Twitch e às vezes surgem momentos ótimos. Usei LLM por um tempo também e coloquei o chat recente no prompt, mas raramente saíam resultados que parecessem realmente humorísticos
Também tentei engenharia de prompt instruindo especificamente que tipo de piada criar, mas o LLM sempre tendia a seguir o mesmo formato
Tenho dois bots em um servidor Discord privado
Um é um bot de cadeia de Markov básico treinado com todo o histórico de chat; o outro é um LLM de verdade treinado apenas com uma certa quantidade de tokens finais. Os dois entram aleatoriamente na conversa de vez em quando
O bot de cadeia de Markov é sempre muito mais engraçado
Para decidir quando entrar na conversa, foi uma probabilidade simples após outra mensagem (por exemplo, 25%) ou foi por timer?