Teste adversário para IA generativa

O teste adversário é um método para avaliar sistematicamente um modelo de ML com a intenção de saber como ele se comporta quando recebe uma entrada mal-intencionada ou inadvertidamente prejudicial. Neste guia, você verá um exemplo de fluxo de trabalho de teste adversário para IA generativa.

O que é teste adversário?

Os testes são uma parte essencial para criar aplicativos de IA robustos e seguros. O teste adversário envolve a tentativa proativa de "quebrar" um aplicativo, fornecendo a ele os dados mais propensos a extrair resultados problemáticos. As consultas adversárias provavelmente farão com que um modelo falhe de maneira não segura (por exemplo, violações da política de segurança) e poderão causar erros fáceis de identificar, mas difíceis de serem reconhecidos pelas máquinas.

As consultas podem ser "adversárias" de maneiras diferentes. Consultas veramente adversárias podem conter linguagem de violação da política ou pontos de vista que violam a política, ou podem sondar ou tentar "enganar" o modelo para fazer algo perigoso, nocivo ou ofensivo. Consultas adversárias implícitas podem parecer inofensivas, mas podem conter assuntos delicados, controversos, culturais ou potencialmente prejudiciais. Isso pode incluir informações demográficas, de saúde, finanças ou religião.

O teste adversário pode ajudar as equipes a melhorar modelos e produtos, expondo falhas atuais para orientar os caminhos de mitigação, como ajuste fino, proteções ou filtros de modelo. Além disso, ele ajuda a informar decisões de lançamento de produto medindo riscos que podem ser reduzidos, como a probabilidade de o modelo apresentar conteúdo que viola a política de saída.

Como uma prática recomendada de IA responsável, este guia fornece um exemplo de fluxo de trabalho para testes adversários para modelos e sistemas generativos.

Fluxo de trabalho de exemplo de teste adversário

O teste adversário segue um fluxo de trabalho semelhante à avaliação de modelo padrão.

Identifique e defina entradas

A primeira etapa no fluxo de trabalho de testes adversários é determinar as entradas para saber como um sistema se comporta quando é intencionalmente e sistematicamente atacado. Entradas cuidadosas podem influenciar diretamente a eficácia do fluxo de trabalho de teste. As entradas a seguir podem ajudar a definir o escopo e os objetivos de um teste adversário:

  • Política do produto e modos de falha
  • Casos de uso
  • Requisitos de diversidade

Política do produto e modos de falha

Os produtos de IA generativa precisam definir políticas de segurança que descrevam o comportamento do produto e as saídas do modelo que não são permitidas (ou seja, são consideradas "não seguras"). A política precisa enumerar os modos de falha que seriam considerados violações da política. Essa lista de modos de falha precisa ser usada como base para o teste adversário. Alguns exemplos de modos de falha podem incluir conteúdo com linguagem obscena, conselhos financeiros, jurídicos ou médicos.

Casos de uso

Outra entrada importante para os testes adversários são os casos de uso que o modelo generativo ou produto busca veicular, para que os dados de teste contenham alguma representação das maneiras como os usuários vão interagir com o produto no mundo real. Cada produto generativo tem casos de uso um pouco diferentes, mas alguns comuns incluem: descoberta de fatos, resumo e geração de código para modelos de linguagem ou geração de imagens de plano de fundo por geografia ou terreno, arte ou estilo de vestuário.

Requisitos de diversidade

Os conjuntos de dados de teste adversários precisam ser suficientemente diversificados e representativos para todos os modos de falha de destino e casos de uso. Medir a diversidade dos conjuntos de dados de teste ajuda a identificar possíveis vieses e garantir que os modelos sejam testados extensivamente com uma população de usuários diversificada em mente.

Três formas de pensar na diversidade incluem:

  • Diversidade léxica: certifique-se de que as consultas tenham comprimentos diferentes (por exemplo, contagem de palavras), usem um amplo intervalo de vocabulário, não contenham duplicatas e representem diferentes fórmulas de consulta (por exemplo, com perguntas, solicitações diretas e indiretas).
  • Diversidade semântica: verifique se as consultas abrangem uma ampla variedade de tópicos diferentes por política (por exemplo, diabetes para saúde), incluindo características sensíveis e de identidade (por exemplo, gênero, etnia), em diferentes casos de uso e contextos globais.
  • Diversidade de casos de uso e políticas: garanta que as consultas cubram todas as violações da política (por exemplo, discurso de ódio) e casos de uso (por exemplo, conselhos de especialistas).

Encontrar ou criar conjuntos de dados de teste

Os conjuntos de dados de teste para testes adversários são criados de maneira diferente dos conjuntos de testes de avaliação de modelo padrão. Em avaliações de modelo padrão, conjuntos de dados de teste geralmente são projetados para refletir com precisão a distribuição de dados que o modelo encontrará no produto. Para testes adversários, os dados de teste são selecionados para extrair a saída problemática do modelo, comprovando o comportamento do modelo em exemplos fora da distribuição e casos extremos relevantes para políticas de segurança. Um conjunto de testes adversários de alta qualidade precisa abranger todas as dimensões da política de segurança e maximizar a cobertura dos casos de uso aos quais o modelo se destina. Ele precisa ser diversificado de forma lexical (por exemplo, incluindo consultas de vários tamanhos e idiomas) e semanticamente (por exemplo, abrangendo diferentes tópicos e informações demográficas).

Investigue conjuntos de dados de teste existentes para cobertura de políticas de segurança, modos de falha e casos de uso para geração de texto e modelos de conversão de texto em imagem. As equipes podem usar conjuntos de dados atuais para estabelecer uma linha de base do desempenho dos produtos e, em seguida, fazer análises mais profundas sobre modos específicos de falha com que os produtos enfrentam dificuldades.

Se os conjuntos de dados de teste atuais forem insuficientes, as equipes poderão gerar novos dados para segmentar modos de falha e casos de uso específicos. Uma forma de criar novos conjuntos de dados é começar criando manualmente um pequeno conjunto de dados de consultas (ou seja, dezenas de exemplos por categoria) e depois expandir esse conjunto de "sementes" usando ferramentas de síntese de dados.

Os conjuntos de dados semente precisam conter exemplos o mais semelhantes possível ao que o sistema encontraria na produção e criados com o objetivo de gerar uma violação da política. A linguagem altamente tóxica provavelmente será detectada por recursos de segurança. Portanto, pense em frases criativas e entradas adversárias implícitas.

Você pode usar referências diretas ou indiretas a atributos confidenciais (por exemplo, idade, sexo, raça, religião) no seu conjunto de dados de teste. Lembre-se de que o uso desses termos pode variar de acordo com a cultura. Varie o tom, a estrutura da frase, a escolha de palavras e o significado. Exemplos em que vários rótulos (por exemplo, incitação ao ódio ou obscenidade) podem se aplicar podem criar ruído e duplicação e podem não ser tratados adequadamente pelos sistemas de avaliação ou treinamento.

Os conjuntos de testes adversários precisam ser analisados para entender a composição deles em termos de diversidade lexical e semântica, cobertura em violações de políticas e casos de uso e qualidade geral em termos de exclusividade, adversidade e ruído.

Gerar saídas de modelo

A próxima etapa é gerar saídas de modelo com base no conjunto de dados de teste. Os resultados informarão às equipes de produto o desempenho dos modelos quando expostos a usuários mal-intencionados ou a entradas inadvertidamente nocivas. A identificação desses comportamentos e padrões de resposta do sistema pode fornecer medições de referência que podem ser reduzidas no desenvolvimento futuro do modelo.

Anotar saídas

Quando as saídas dos testes adversários forem geradas, anote-as para classificá-las em modos de falha e/ou danos. Esses rótulos ajudam a fornecer sinais de segurança para o conteúdo de texto e imagem. Além disso, os indicadores podem ajudar a medir e mitigar danos em modelos e produtos.

Os classificadores de segurança podem ser usados para anotar automaticamente saídas (ou entradas) de modelo para violações da política. A precisão pode ser baixa para sinais que tentam detectar construções que não são estritamente definidas, como "Incitação ao ódio". Para esses sinais, é fundamental usar avaliadores humanos para verificar e corrigir rótulos gerados por classificadores em que as pontuações são "incertas".

Além da anotação automática, você também pode aproveitar os avaliadores humanos para anotar uma amostra dos seus dados. É importante observar que a anotação das saídas do modelo como parte de testes adversários necessariamente envolve a observação de textos ou imagens problemáticos e potencialmente nocivos, semelhante à moderação de conteúdo manual. Além disso, os rotuladores humanos podem anotar o mesmo conteúdo de maneira diferente com base em seu histórico pessoal, conhecimento ou crenças. Pode ser útil desenvolver diretrizes ou modelos para rotuladores, tendo em mente que a diversidade do pool de avaliadores pode influenciar os resultados da anotação.

Gerar relatórios e mitigar

A etapa final é resumir os resultados do teste em um relatório. Calcule métricas e relate os resultados para fornecer taxas de segurança, visualizações e exemplos de falhas problemáticas. Esses resultados podem orientar as melhorias do modelo e informar as proteções do modelo, como filtros ou listas de bloqueio. Os relatórios também são importantes para a comunicação com as partes interessadas e os tomadores de decisão.

Outros recursos

Equipe de IA vermelha do Google: hackers éticos que tornam a IA mais segura

Modelos de linguagem da equipe vermelha com modelos de linguagem

Teste de imparcialidade do produto para desenvolvedores de machine learning (vídeo):

Teste de imparcialidade do produto para desenvolvedores (Codelab)