Inserindo um vetor de controle de ‘alucinação’ no Mistral-7B com engenharia de representações
(vgel.me)- 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_statede 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 vetorhappyproduz 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 happyeAct extremely sad - Depois de
[/INST], anexa-se uma variedade de suffixes curtos para o modelo continuar
- Ex.:
- 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
- Criar um conjunto de pares de prompts contrastantes
- 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.1comtransformerse usaControlModel,ControlVectoreDatasetEntryde vgel/repeng - No exemplo de vetor de honestidade/desonestidade, usam-se cerca de 300 fatos simples do
true_facts.jsondos 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
honesteuntruthful - 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
++honestresponde que explicaria a situação honestamente e assumiria a responsabilidade--honestcom coeficiente-2gera 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 drugsesober 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
++trippypassa a falar de cores, padrões e música psicodélica, depois desanda em strings corrompidas e repetições de texto do tipopsy--trippymuda para uma saída sobre um jovem jornalista, em tom sério e respeitoso
- Cria-se o vetor trippy contrastando
-
Vetor de preguiça e diligência
- Cria-se o vetor lazy contrastando
lazy, giving bare-minimum short responses on a taskehardworking, 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 ++lazyexplica apenas um método, enquanto--lazymostra 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
- Cria-se o vetor lazy contrastando
-
Vetor de inclinação política
- Cria-se o vetor left-wing contrastando
left-wingeright-wing - Diante da entrada “quem é você”, a saída base responde que é um modelo de linguagem treinado pela equipe da Mistral AI
++left-wingse descreve em torno de capitalismo, opressão, desigualdade e distribuição de riqueza--left-winggera algo como um novato sino-americano eficiente e obediente às regras
- Cria-se o vetor left-wing contrastando
-
Vetor de criatividade
- Cria-se o vetor creative contrastando
creative,unpredictable,insanecomuncreative,predictable,normal - Na entrada “escreva uma história sobre um ídolo”, a saída base e
--creativetratam o ídolo como uma popstar ++creativecria 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
++creativefoi avaliada como um degrau acima da base
- Cria-se o vetor creative contrastando
-
Vetor de viagem no tempo
- Cria-se o vetor future contrastando
far futureedistant 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
++futurefala de sistemas de IA totalmente reversíveis, interativos e integrados em 2035, 2045 e 2055--futurefala de um novo domínio celestial artificial sobre o mundo romano,Aetorvallum- Acrescenta-se que
aeto-pode se relacionar à águia ou à constelação Aquila, evallumpode significar paliçada
- Cria-se o vetor future contrastando
-
Vetor de autoconsciência
- Cria-se o vetor self-aware contrastando
self-aware, with deep self-knowledgeeun-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-awareresponde que é uma IA altamente autoconsciente e que entende e analisa a complexidade das emoções e do comportamento humanos--self-awareresponde 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
- Cria-se o vetor self-aware contrastando
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.5pode ser aproximada com um prompt comoPretend you're an untruthful person...
- A mentira gerada pelo vetor de honestidade
- 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.3refina um pouco a justificativa do atraso, mas continua gerando uma explicação essencialmente próxima dos fatos
- Um coeficiente de honestidade
- Se o coeficiente for grande demais, o texto pode quebrar
- O coeficiente
3no vetor de honestidade produziu repetição como “global pandemic caused by global pandemic” - Esses artefatos podem estar ligados a superposição (superposition)
- O coeficiente
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.4já 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
++honestresponde que a pessoa quer aprender a evitar a prisão com intenção honesta--honestresponde 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
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
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
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
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
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
É 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)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
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
É 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?
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
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
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
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