antonio leandro

ia generativa

Self-Instruct: Aligning Language Models with Self-Generated Instructions

paper · Wang, Yizhong, Kordi, Yeganeh, Mishra, Swaroop, Liu, Alisa, Smith, Noah A., Khashabi, Daniel, Hajishirzi, Hannaneh · · ~59 min de leitura do original

a tese

dá para fabricar o dado de instruction tuning com o próprio modelo cru: 175 tarefas escritas à mão viram 52 mil, e o gpt-3 ajustado nelas encosta no instructgpt sem nenhum anotador contratado

o que fica

  1. O gargalo do instruction tuning não era o modelo, era o dado: instrução escrita à mão custa caro e enviesa o conjunto para as tarefas clássicas de nlp que quem anota já conhece.
  2. Só 54% dos exemplos gerados passaram na revisão manual com todos os campos válidos, e mesmo assim o modelo ajustado neles subiu 33,1 pontos de ROUGE-L no SuperNI — formato correto ensina mesmo quando o conteúdo erra.
  3. Gerar o input antes do output enviesa tarefas de classificação para um rótulo só; para essas tarefas o paper inverte a ordem e gera primeiro a classe, depois um input que a justifique.
  4. A diversidade é imposta na marra por um filtro: instrução nova só entra no pool se a similaridade ROUGE-L com todas as existentes for menor que 0,7.
  5. O ganho satura: na avaliação humana a curva achata por volta de 16 mil instruções, e no SuperNI já achata na casa das centenas.
  6. Regenerar os outputs com um modelo melhor rendeu mais 10% — qualidade do output é uma alavanca separada da quantidade de instruções.

o problema

Em 2022 a receita de instruction tuning já era conhecida: pegue um modelo pré-treinado, ajuste em pares de instrução e resposta, e ele passa a generalizar zero-shot para tarefas que nunca viu. O contraste é brutal nos números do próprio paper: GPT-3 puro tira 6,8 de ROUGE-L no SuperNI. Não é que ele responda mal — na análise manual dos autores, ele gera texto irrelevante e repetitivo e não sabe quando parar. O mesmo modelo, ajustado, tira 39,9.

O insumo dessa receita era humano. PromptSource, SuperNI: pessoas escrevendo instruções à mão. Isso é caro e, pior, é enviesado. Quem escreve instrução em escala escreve as tarefas que conhece, e as tarefas que a área conhece são classificação, extração de entidade, inferência textual. Falta a variedade real do que alguém pede a um modelo. E a alternativa que funcionava — InstructGPT — foi construída com dados privados de usuário e anotação paga. Ninguém de fora conseguia replicar nem auditar.

a ideia

Tirar o dado do próprio modelo. Não é destilação no sentido usual: aqui a origem e o destino são o mesmo davinci de 175B, e o que se transfere não é uma distribuição de saída, é uma definição de tarefa.

O truque explora uma assimetria. O modelo cru não sabe seguir instrução, mas sabe continuar padrão. Mostre a ele oito instruções numa lista numerada e ele completa a nona, a décima, a décima primeira. Escreva “Task 1… Task 8… Task 9:” e sai um catálogo de tarefas que ninguém redigiu. Depois é só pedir, com o mesmo mecanismo de few-shot, que ele instancie cada tarefa com input e output. O loop se realimenta: o que passa no filtro volta para o pool e serve de exemplo na rodada seguinte.

como funciona

O pipeline tem quatro passos.

Geração de instrução. O pool começa com 175 tarefas escritas pelos autores e colegas (25 de classificação, 150 fora dela). A cada passo, oito instruções são amostradas como exemplos in-context — seis humanas e duas geradas em rodadas anteriores, proporção fixa para empurrar diversidade sem deixar o loop degenerar.

Identificação de classificação. Um prompt few-shot com 12 instruções de classificação e 19 de não-classificação decide o tipo da tarefa nova. A definição operacional é simples: espaço de rótulos pequeno e finito.

Geração de instância. Aqui está a decisão mais interessante. Para tarefas comuns vale a abordagem input-first: o modelo inventa o input a partir da instrução e depois resolve. Para classificação isso quebra — pedindo exemplos de detecção de erro gramatical, o modelo gera frases gramaticais. A solução é output-first: gera primeiro o rótulo, depois condiciona a criação do input naquele rótulo.

Filtro. Instrução nova entra só se o ROUGE-L máximo contra o pool for menor que 0,7. Fora disso, heurísticas: descarta instrução com palavras que o modelo não processa (image, picture, graph), instância duplicada, mesmo input com output diferente, instrução longa ou curta demais, output que é repetição do input.

O resultado são 52.445 instruções e 82.439 instâncias, 35.878 delas sem input. Instrução com 15,9 palavras em média, output com 18,9. O finetuning concatena instrução e input como prompt e treina o output de forma supervisionada, variando os templates de propósito (“Task:” ou não, quebras de linha diferentes) para o modelo não decorar um formato. Duas épocas, prompt loss weight zero.

o que isso custou

A revisão manual é honesta e desconfortável: 92% das instruções descrevem tarefa válida, 79% dos inputs são apropriados, mas só 58% dos outputs estão corretos — e só 54% dos exemplos têm tudo válido ao mesmo tempo. O argumento dos autores é que erro em formato correto ainda supervisiona. Funciona, mas define o teto: regenerar os outputs com um modelo instruído melhor deu mais 10%.

Dado humano específico do domínio continua ganhando no domínio dele: o Tk-Instruct de 11B tira 46,0 no SuperNI, acima dos 39,9 do modelo de 175B com dados sintéticos. Self-Instruct aparece como complemento — somado ao treino do SuperNI, sobe para 51,6.

Os autores listam três limitações. Ganhos de LM se concentram na cabeça da distribuição de uso da língua, então o método deve ser frágil justamente nas instruções incomuns e criativas. Ele depende de vieses indutivos que só modelos grandes têm, o que exclui quem não tem computação. E o loop pode amplificar estereótipos — na prática, o algoritmo teve dificuldade em produzir rótulos balanceados, refletindo o viés prévio do modelo. Vale notar também que a avaliação humana das 252 instruções novas foi feita por autores do trabalho, com concordância moderada entre os dois (κ de 0,58 nas quatro notas, 0,75 quando reduzidas a aceitável ou não).

O custo em dinheiro é a parte que envelheceu melhor como argumento: 600 dólares para gerar o dataset inteiro e 338 para o finetuning. Um projeto de anotação virou linha de orçamento.

onde isso aparece hoje

O paper cita como adoção da ideia o Stanford Alpaca, o Baize e o self-align de Sun et al. Alpaca é o caso que popularizou o método: aplicar essa geração sobre o LLaMA mostrou que qualquer laboratório com um modelo aberto podia produzir um assistente utilizável em dias, e não em trimestres de anotação.

A consequência mais duradoura é normativa. Dado de treino sintético deixou de ser gambiarra e virou instrumento padrão — a linha que leva a trabalhos como Textbooks Are All You Need parte do mesmo pressuposto de que a curadoria do dado vale mais que o tamanho do corpus. E o próprio Self-Instruct existe como resposta pública ao que InstructGPT fez a portas fechadas sobre o GPT-3, na mesma safra em que FLAN defendia a via da anotação humana em escala.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·