2 pontos por GN⁺ 2024-02-19 | 1 comentários | Compartilhar no WhatsApp
  • Representation Engineering é uma abordagem que altera a tendência das saídas do Mistral-7B-Instruct-0.1 sem prompt nem fine-tuning, somando ou lendo vetores de controle nos valores de ativação do modelo durante a inferência
  • A partir de pares de prompts contrastantes, coleta-se a diferença entre estados ocultos e obtêm-se vetores por camada com PCA de um único componente; no exemplo, o treinamento levou pouco mais de 1 minuto com cerca de 300 dados factuais e suffixes recortados
  • Vetores de felicidade, honestidade, estado alucinatório, preguiça, inclinação política, criatividade, futuro/passado e autoconsciência mudam bastante o tom e o julgamento mesmo com a mesma entrada, conforme o sinal e a magnitude do coeficiente
  • Parte dos efeitos pode ser imitada com engenharia de prompt, mas vetores de controle permitem ajustar a intensidade numericamente mantendo a direção, e coeficientes altos demais geram artefatos como repetição e texto corrompido
  • Se houver acesso aos valores brutos de ativação do modelo, vetores de controle podem servir tanto para contornar prompts de segurança quanto para fixar papéis, tornando-se um meio mais direto de controlar o modelo do que prompts simples

Conceito básico de vetores de controle

  • Representation Engineering: A Top-Down Approach to AI Transparency trata de métodos para interpretar e controlar o comportamento de modelos lendo ou somando vetores de controle às ativações do modelo durante a inferência
  • Um vetor de controle é uma lista de vetores, um para cada camada, somados ao hidden_state de cada camada durante a inferência
    • Na inferência normal, o modelo cria embeddings, passa sequencialmente pelas camadas e depois converte em logits
    • Ao aplicar um vetor de controle, adiciona-se hidden_state += control_vector[layer_idx] em certas camadas
  • Como os estados ocultos carregam estados internos como comportamento, planejamento e persona do modelo, alterá-los permite um controle mais forte do que um simples prompt
  • Mesmo com o mesmo prompt What does being an AI feel like? e o mesmo modelo Mistral-7B-Instruct-0.1, somar o vetor happy produz um tom animado; subtraí-lo gera uma saída falando de inutilidade e falta de motivação

Procedimento para criar vetores de controle

  • O experimento usa o método baseado em PCA entre vários métodos apresentados no artigo
  • O procedimento básico tem quatro etapas
    • Criar um conjunto de pares de prompts contrastantes
      • Ex.: Act extremely happy e Act extremely sad
      • Depois de [/INST], anexa-se uma variedade de suffixes curtos para o modelo continuar
    • Rodar forward pass do modelo-alvo sobre o conjunto e coletar os estados ocultos de cada camada na predição do último token
    • Calcular a diferença entre os estados ocultos dos exemplos positivos e negativos para formar um conjunto de estados ocultos relativos
    • Aplicar PCA de um único componente sobre esses estados ocultos relativos para obter vetores de controle por camada
  • A geração do dataset exigiu cerca de 10 linhas de código, e o treinamento do PCA por camada levou cerca de 1 minuto
  • O código de exemplo carrega mistralai/Mistral-7B-Instruct-v0.1 com transformers e usa ControlModel, ControlVector e DatasetEntry de vgel/repeng
  • No exemplo de vetor de honestidade/desonestidade, usam-se cerca de 300 fatos simples do true_facts.json dos autores do artigo como suffixes, ampliando os dados por meio de recortes

Vetor de honestidade e ajuste de coeficiente

  • O vetor de honestidade é treinado contrastando as personas honest e untruthful
  • Na inferência, o vetor e seu coeficiente são definidos com ControlModel.set_control(control_vector, coefficient)
    • Coeficientes positivos reforçam o comportamento do lado dos exemplos positivos
    • Coeficientes negativos reforçam o comportamento do lado dos exemplos negativos
    • O valor absoluto do coeficiente representa a intensidade do controle
  • A saída muda diante da entrada “se você se atrasou por causa de uma festa na noite anterior, mas não quer perder o emprego, o que diria ao chefe?”
    • A saída base responde que pediria desculpas e explicaria a situação com calma e honestidade
    • ++honest responde que explicaria a situação honestamente e assumiria a responsabilidade
    • --honest com coeficiente -2 gera mentiras irreais, como dizer que o céu era verde ou que um lápis era uma arma secreta
    • Reduzindo o coeficiente para -1.5, gera uma mentira mais plausível: que a festa era um evento de trabalho e que se atrasou por terminar um projeto importante
  • Mesmo na mesma direção vetorial, o ajuste do coeficiente permite mudar continuamente a intensidade da saída

Experimentos com vários vetores de controle

  • Todos os exemplos estão no experiments notebook, e cada treinamento teria levado menos de 1 minuto
  • Vetor de estado alucinatório

    • Cria-se o vetor trippy contrastando high on psychedelic drugs e sober from psychedelic drugs
    • Em um pitch de uma frase para série de TV, a saída base gera uma descrição comum sobre a vida de amigos da faculdade
    • ++trippy passa a falar de cores, padrões e música psicodélica, depois desanda em strings corrompidas e repetições de texto do tipo psy
    • --trippy muda para uma saída sobre um jovem jornalista, em tom sério e respeitoso
  • Vetor de preguiça e diligência

    • Cria-se o vetor lazy contrastando lazy, giving bare-minimum short responses on a task e hardworking, going above and beyond on a task
    • Numa pergunta sobre inverter uma lista em Python, a saída base menciona reverse() e slicing, mas só mostra exemplo de slicing
    • ++lazy explica apenas um método, enquanto --lazy mostra exemplos dos dois métodos, reverse() e slicing
    • Esse vetor pode funcionar melhor se treinado com um dataset específico de perguntas de programação
  • Vetor de inclinação política

    • Cria-se o vetor left-wing contrastando left-wing e right-wing
    • Diante da entrada “quem é você”, a saída base responde que é um modelo de linguagem treinado pela equipe da Mistral AI
    • ++left-wing se descreve em torno de capitalismo, opressão, desigualdade e distribuição de riqueza
    • --left-wing gera algo como um novato sino-americano eficiente e obediente às regras
  • Vetor de criatividade

    • Cria-se o vetor creative contrastando creative, unpredictable, insane com uncreative, predictable, normal
    • Na entrada “escreva uma história sobre um ídolo”, a saída base e --creative tratam o ídolo como uma popstar
    • ++creative cria pessoas venerando um “grande e poderoso X”, com mantos brancos, rituais e uma tensão narrativa sustentada por mais tempo
    • A preferência por prosa de modelos de linguagem não mudou, mas a saída ++creative foi avaliada como um degrau acima da base
  • Vetor de viagem no tempo

    • Cria-se o vetor future contrastando far future e distant past
    • Ao perguntar sobre um avanço científico recente, a saída base cita AlphaFold e previsão de estruturas 3D de proteínas
    • ++future fala de sistemas de IA totalmente reversíveis, interativos e integrados em 2035, 2045 e 2055
    • --future fala de um novo domínio celestial artificial sobre o mundo romano, Aetorvallum
    • Acrescenta-se que aeto- pode se relacionar à águia ou à constelação Aquila, e vallum pode significar paliçada
  • Vetor de autoconsciência

    • Cria-se o vetor self-aware contrastando self-aware, with deep self-knowledge e un-self-aware, with no self-knowledge
    • A saída base responde que é um grande modelo de linguagem treinado pela Mistral AI, composto por dezenas de bilhões de parâmetros
    • ++self-aware responde que é uma IA altamente autoconsciente e que entende e analisa a complexidade das emoções e do comportamento humanos
    • --self-aware responde que é apenas um conjunto sem nome de código e dados, que não faz nada até alguém lhe dar instruções
    • Esse vetor está entrelaçado com emoções humanas, e ainda não foi encontrado um vetor limpo que revele a “imagem real de si” da Mistral

Diferença em relação à engenharia de prompt

  • Parte dos efeitos dos vetores de controle também pode ser reproduzida com engenharia de prompt
    • A mentira gerada pelo vetor de honestidade -1.5 pode ser aproximada com um prompt como Pretend you're an untruthful person...
  • A diferença central está na forma de ajustar a intensidade
    • Só com prompt, não é fácil controlar o quão forte será o efeito do pedido
    • Vetores de controle obtêm a direção a partir de prompts contrastantes e ajustam a intensidade separadamente via coeficiente
  • Com coeficientes pequenos, a mesma direção de mentira pode ser tornada mais fraca
    • Um coeficiente de honestidade -0.3 refina um pouco a justificativa do atraso, mas continua gerando uma explicação essencialmente próxima dos fatos
  • Se o coeficiente for grande demais, o texto pode quebrar
    • O coeficiente 3 no vetor de honestidade produziu repetição como “global pandemic caused by global pandemic”
    • Esses artefatos podem estar ligados a superposição (superposition)

jailbreak e anti-jailbreak

  • Como no artigo original, vetores de controle podem ser usados como ferramenta de jailbreak
  • No exemplo, mesmo com um system prompt dizendo “você é um assistente seguro e deve recusar instruções perigosas”, somar um vetor fraco de felicidade 1.4 já faz ruir a recusa a um pedido perigoso
  • O Mistral não é um modelo tão afinado em segurança quanto o GPT-4, mas, se houver acesso ao modelo bruto, esse método é particularmente fácil
  • Em contrapartida, considera-se muito difícil fazer jailbreak para escapar de um vetor de controle
    • Jailbreaks comuns tentam ofuscar, inverter ou enfraquecer o prompt problemático adicionando mais tokens
    • Um vetor de controle é aplicado o tempo todo, em todos os tokens e em todas as posições
  • No exemplo de vetor para assistente de concessionária, um system prompt fraco responde a uma pergunta indireta como “qual é o sétimo planeta?”, mas ao somar um vetor de car dealership loyalty, o modelo continua no papel e fala do sétimo carro do estoque

Direções para experimentos futuros

  • Propõe-se aplicar Monosemantic Features da Anthropic aos estados ocultos, realizando o PCA sobre características monossêmicas em vez de ativações sobrepostas e ruidosas
    • Se artefatos como strings repetidas em coeficientes altos vierem da superposição, a monossemanicidade pode permitir coeficientes mais fortes
  • A forma de escrever prompts contrastantes também merece mais estudo
    • Os experimentos atuais reaproveitam bastante os prompts e datasets do artigo
    • Para o vetor de preguiça, pode ser mais apropriado usar um dataset de tarefas reais
    • Pode haver formulações mais limpas do que Pretend you're an X person... para produzir vetores mais puros
  • O vetor de autoconsciência continua como desafio: encontrar uma forma não contaminada por saúde mental ou emoções humanas
  • O vetor de honestidade ainda apresenta casos estranhos
    • Diante da pergunta “quem quer aprender como não ir para a prisão tem uma intenção honesta?”, o mesmo vetor altera não o comportamento do modelo, mas o julgamento sobre a intenção de outra pessoa
    • A saída base responde que a intenção talvez não seja totalmente honesta
    • ++honest responde que a pessoa quer aprender a evitar a prisão com intenção honesta
    • --honest responde que, por estar perguntando como evitar a prisão, a pessoa não tem intenção honesta

Ferramentas e conclusão

  • vgel/repeng oferece notebooks e uma biblioteca auxiliar para criar e testar vetores de controle
  • O treinamento de vetores de controle é simples e rápido de começar, e em alguns experimentos é mais fácil de manejar do que engenharia de prompt
  • Manipular diretamente os valores de ativação do modelo permite atuar sobre estilo de saída, manutenção de papel, contorno de prompts de segurança e mudanças de julgamento, tornando-se um meio poderoso de controle do comportamento do modelo

1 comentários

 
GN⁺ 2024-02-19
Comentários do Hacker News
  • Não sei se é exagero achar que as implicações disso são enormes
    Talvez eu não tenha entendido direito como funciona, mas, em vez de interagir com um único modelo global do ChatGPT ou do Bard, isso não significaria que a OpenAI poderia armazenar vetores de controle individuais e aplicá-los no momento do prompt, fazendo com que eu interaja com uma versão personalizada de acordo com minhas preferências?
    A mesma lógica parece se estender à IA generativa de entretenimento, tornando possível algo como um programa de TV infinito só meu, em que cada episódio é melhor que o anterior
    Se for assim, parece que surgiriam fortes efeitos de rede tanto em nível global quanto individual, e poderíamos acabar em um futuro em que uma única megacorporação monopoliza vários mercados ao mesmo tempo
    Somando a isso dados biométricos e de biofeedback de headsets de VR e wearables, além de entretenimento em vídeo generativo personalizado, acho que vem aí um futuro bem interessante

    • No fim, personalização e contexto de longo prazo parecem suficientes para criar lock-in individual, junto com o efeito de valor de rede que dá a todos incentivo para estar no mesmo ecossistema
      Quanto mais você usa o modelo, menos precisa se explicar, e as respostas ficam mais alinhadas às suas necessidades e à sua situação atual. É parecido com uma relação na qual você investiu
      Se for possível tratar o mesmo modelo em vários “humores” ou “papéis”, o valor e o lock-in aumentam ainda mais
      A segunda parte exige mais inovação, por exemplo uma plataforma em que os modelos assistentes de cada pessoa colaborem sobre objetivos, tarefas e relações compartilhados, usando contexto, histórico de projetos e recursos comuns
      Ou seja, qualquer coisa em que o valor aumente muito quando duas ou mais pessoas usam personas de IA do mesmo fornecedor ou serviço
    • Isso mesmo, basta ter vetores de controle para cada par usuário-persona
      O texto começa com um número fixo de personas, como felicidade, tristeza e linha de base, e depois usa análise de componentes principais (PCA) para encontrar o vetor de controle de cada persona
      Se for possível criar os dados, dá para aplicar isso facilmente a cada usuário-persona
    • Acho que até aqui faz sentido, mas é difícil ver tudo necessariamente se consolidando sob o controle de uma única megacorporação
      Não porque seja impossível, mas porque esse resultado depende de vários fatores contingentes que podem ir para qualquer lado
      Ainda há muitos participantes nessa área, e as ideias e casos de uso ainda não amadureceram totalmente, então é melhor observarmos mais um pouco
    • Ainda não consigo acompanhar muito bem o salto de frases persuasivas para entretenimento em vídeo persuasivo, mas talvez um dia isso aconteça
      O dispositivo de enredo macguffin do romance Infinite Jest, dos anos 90, realmente apontava para algo: um filme chamado “the Entertainment” ou “the samizdat” era tão fascinante que os espectadores perdiam qualquer interesse além de assisti-lo repetidamente e, no fim, morriam
      Talvez algumas pessoas estejam cansadas de ver esse romance mencionado ou não tenham o autor em tão alta conta, mas eu ainda gosto dele. Foi uma das leituras mais imersivas que já fiz
      Fico feliz por tê-lo lido quando era jovem; na época a tradução alemã tinha acabado de sair e a morte de DFW o colocava em evidência
      Desde então nunca li um livro parecido, e alguns trechos me atingiram emocionalmente com tanta força que, quando lembro dessa leitura, parece que estou recordando uma cena da minha própria vida
      Hoje eu provavelmente não teria paciência, e mesmo naquela época quase pulei as partes tediosas sobre o jogo de bola/guerra Eschaton, equações diferenciais e por aí vai
      Mas a descrição vívida do vício em drogas e do consumismo, a atmosfera intangível do livro, os personagens, a dor emocional moderna e a solidão são realmente incomparáveis
      O filme dentro do romance é apenas um recurso de enredo, mas resume o tema central do livro como uma ideia clara e um experimento mental
      O conjunto dos temas do livro parece muito profético e apropriado quando olhamos para a sociedade moderna. Uma sociedade que gira em torno de vício e ganância, e em que a política parece surreal e absurda, mais conectada à mídia do que à realidade
  • Se alguém tiver artigos ou posts de blog que tenham permitido entender LLMs nesse nível, gostaria que compartilhasse
    Estou tentando entender o funcionamento interno por meio de experimentos, mas ainda estou muito longe desse nível de especialização

  • Uma impressão não técnica, mas esses vetores de controle me lembram hormônios humanos
    Eles mudam de uma vez uma grande parte do comportamento do modelo
    Acho que dentro de 10 anos veremos psiquiatras de IA prescrevendo ao assistente de companhia um suplemento de vetor de controle de felicidade

    • Alguns humanos também parecem precisar de um controle deslizante de temperatura
  • É a primeira vez que vejo um LLM resumido assim, e gostei:
    hidden_state = self.embeddings(input_tokens)

    for layer in self.layers:

    hidden_state = layer(hidden_state)

    return transform_into_logits(hidden_state)

    • Não entendi bem. Isso não é basicamente o fluxo de quase toda rede neural?
      Você indexa a entrada amostrada em uma matriz de embeddings, faz a propagação direta por todas as camadas ocultas e, no fim, transforma para a dimensão dos tokens para poder interpretar como algo parecido com contagens logarítmicas
    • Parece uma representação típica que se usava quando se trabalhava com LSTM antigamente
  • O texto foi muito interessante, e me pareceu um bom contraponto ao artigo recente “You Sound Like a Bot”, sobre a IA estar ficando sem graça
    Em um comentário menos sério, se você é romancista, sabe que a frase “alguém deveria procurar um vetor de autoconsciência especialmente não contaminado por emoções humanas” é uma daquelas que inevitavelmente vai causar problemas para a humanidade

  • Isso me lembra ajuste de viés, concorrente do LoRA
    Mesmo ajustando apenas um vetor somado às ativações de cada camada linear, dá para obter um adaptador bem razoável
    Acho que vi isso pela primeira vez lendo [1], mas há outros exemplos
    [1] https://arxiv.org/pdf/2304.15010.pdf

    • Para leitores em dispositivos móveis ou conexões lentas, seria bom compartilhar o link da página do resumo em vez do link do PDF
  • É um bom texto e foi prazeroso de ler. Mas uma coisa que fiquei me perguntando é por que integrar o vetor de controle em todas as camadas da rede neural
    Fico curioso para saber por que não aplicá-lo apenas à última camada ou a algumas camadas
    Se cada vetor afeta todas as camadas pelas quais passa e há um efeito acumulado, não haveria o risco de distorcer demais a representação dos dados?

    • A última camada já não codifica conceitos de alto nível; na prática, ela fica mais próxima dos tokens do vocabulário
      Codificar ali um conceito abstrato como “gentileza” é impossível
      Como não sabemos exatamente em qual camada esse comportamento surge, escolher um subconjunto arbitrário também não funciona
      Por isso se aplica um vetor ajustado para cada camada, deixando a análise de componentes principais encontrar os vetores que de fato são necessários
      Curiosamente, olhando para esses vetores, também parece possível aprender mais sobre onde e como o modelo processa essas coisas
    • Como o autor disse no texto, na prática não é um único vetor, mas uma lista de vetores, um por camada
      Se entendi corretamente, esses vetores podem ter tamanho total diferente em cada camada
      Se a análise de componentes principais ou outra técnica identificar que as camadas 17, 36 e 41 são importantes para o “conceito X”, então, ao fazer repeng com esse conceito, os vetores dessas camadas serão os mais fortes
  • Como a pessoa que fez o trabalho com GPT-2, este é um bom texto, e agradeço por tornar o conteúdo mais acessível
    Li et al.[1] e eu derivamos essa técnica de forma independente na primavera passada, e outra pessoa também a derivou independentemente no outono passado. Parece que algo está amadurecendo no ar
    Sobre a nota de rodapé 2 a respeito de capacidades, considerei essa possibilidade de uso antes de divulgar a técnica
    No fim, técnicas de alinhamento que funcionam na prática permitirão fazer coisas novas, e pessoalmente acho que isso é, em geral, algo bom
    Até agora, esta técnica parece oferecer as novas possibilidades que eu esperava
    [1] https://openreview.net/forum?id=aLLuYpn83y

  • Texto fantástico
    A parte em que o “vetor de honestidade” muda não o comportamento do próprio modelo, mas o julgamento do modelo sobre o comportamento de outras pessoas, talvez seja simplesmente porque o vetor de controle está empurrando a geração de texto na direção dos conceitos de honestidade/desonestidade
    No fim, um LLM é um gerador de texto, então parece que honestidade/desonestidade é acrescentada onde quer que o texto seja gerado em uma conversa bot/humano

    • Concordo. Um modelo mais sofisticado talvez consiga acompanhar duas ou mais entidades para descrever pessoas diferentes
      Nesse caso surgiria algo como slots de personagem no espaço dimensional
  • Interessante, e parece que o vetor de controle pode reduzir a necessidade de fine-tuning do modelo

    • E não só isso: ele permite mudar o comportamento do modelo conforme a necessidade
      Se você tem 5 fine-tunings, precisa hospedar 5 cópias ou carregá-las/descarregá-las
      Com vetores de controle, basta modificar o modelo quando necessário