SynthID: strumenti per il watermarking e il rilevamento di testo generato con LLM

L'intelligenza artificiale generativa (IA generativa) può generare una gamma più ampia di contenuti estremamente diversi su una scala precedentemente inimmaginabile. Sebbene la maggior parte di questo utilizzo sia per scopi legittimi, si teme che possa contribuire a problemi di disinformazione e attribuzione errata. Il watermarking è una tecnica per attenuare questi potenziali impatti. Le filigrane impercettibili per gli esseri umani possono essere applicate ai contenuti creati con l'IA e i modelli di rilevamento possono assegnare un punteggio a contenuti arbitrari per indicare la probabilità che siano stati contrassegnati da filigrane.

SynthID è una tecnologia di Google DeepMind che applica filigrane e identifica i contenuti creati con l'IA incorporando filigrane digitali direttamente Immagini, audio, testo o video creati con l'IA. SynthID Text è stato reso open source per mettere a disposizione degli sviluppatori il watermarking per la generazione di testo. Puoi leggere il documento su Nature per una descrizione tecnica più completa del metodo.

È disponibile un'implementazione a livello di produzione del testo SynthID nei Hugging Face Transformers v4.46.0+, che puoi provare in lo spazio di testo SynthID ufficiale. Su GitHub è disponibile anche un'implementazione di riferimento che può essere utile per i manutentori e i collaboratori open source che vogliono applicare questa tecnica ad altri framework.

Applicazione della filigrana

In pratica, SynthID Text è un elaboratore di logit, applicato alla pipeline di generazione del modello dopo Top-K e Top-P, che aumenta i logit del modello utilizzando una funzione g pseudocasuale per codificare le informazioni sul watermarking in modo da bilanciare la qualità della generazione con la rilevabilità del watermark. Consulta l'articolo per una panoramica completa descrizione tecnica dell'algoritmo e analisi del modo in cui e i valori di configurazione influiscono sulle prestazioni.

I filigrane vengono configurati per parametrizzare la funzione g e il modo in cui viene applicata durante la generazione. Ogni modello che utilizzi deve avere la propria configurazione di filigrana che deve essere archiviata in modo sicuro e privato, altrimenti la filigrana potrebbe essere replicata facilmente da altri.

Devi definire due parametri in ogni configurazione della filigrana:

  • Il parametro keys è un elenco di numeri interi casuali univoci utilizzati per calcolare i punteggi g-function nel vocabolario del modello. La lunghezza di questo elenco determina il numero di livelli di filigrana applicati. Consulta Appendice C.1 nell'articolo per ulteriori dettagli.
  • Il parametro ngram_len viene utilizzato per bilanciare robustezza e rilevabilità; maggiore è il valore, più rilevabile sarà la filigrana, di essere più irregolari ai cambiamenti. Una lunghezza di 5 è un buon valore predefinito.

Puoi configurare ulteriormente la filigrana in base alle tue esigenze di rendimento:

  • Una tabella di campionamento è configurata da due proprietà, sampling_table_size e sampling_table_seed. Vuoi utilizzare un sampling_table_size di almeno \( 2^{16} \) per garantire una funzione g imparziale e stabile durante il campionamento, ma tieni presente che la dimensione della tabella di campionamento influisce sulla quantità necessaria al momento dell'inferenza. Puoi utilizzare qualsiasi numero intero come sampling_table_seed.
  • Gli n-grammi ripetuti nei token context_history_size precedenti non sono contrassegnati da filigrana per migliorare la rilevabilità.

Non è richiesta alcuna formazione aggiuntiva per generare testo con un testo SynthID utilizzando i tuoi modelli, solo una configurazione della filigrana che viene passata all'input del modello .generate() per attivare il testo SynthID processore logit. Consulta le post del blog e Spazio per esempi di codice che mostra come applicare una filigrana nella libreria Transformers.

Rilevamento e verificabilità della filigrana

Il rilevamento della filigrana è probabilistico. Un rilevatore bayesiano è fornito con Hugging Face Transformers e su GitHub. Questo rilevatore può produrre tre possibili stati di rilevamento: con filigrana, senza filigrana o incerto. Il comportamento può essere personalizzato impostando due valori di soglia. Vedi l'Appendice C.8 del paper per ulteriori dettagli.

Puoi ottimizzare le soglie per ottenere un tasso specifico di falsi positivi e falsi negativi su un insieme di prompt o di lunghezza. Vedi l'Appendice C.8 del paper per i dettagli.

Una volta individuato il rilevatore, puoi scegliere se e come esporlo agli utenti e al pubblico in generale.

  • L'opzione Completamente privato non rilascia né espone il rilevatore in alcun modo.
  • L'opzione semi-private non rilascia il rilevatore, ma espone attraverso un'API.
  • L'opzione public (pubblico) rilascia il rilevatore per consentire ad altri di scaricare e utilizzare.

Tu e la tua organizzazione dovete decidere quale approccio di verifica del rilevamento è più adatto alle vostre esigenze, in base alla vostra capacità di supportare l'infrastruttura e i processi associati.

Limitazioni

Le filigrane di testo SynthID sono resistenti ad alcune trasformazioni, come pezzi di ritaglio di testo, modificando poche parole o una lieve parafrasi, ma questo metodo presentano dei limiti.

  • L'applicazione della filigrana è meno efficace sulle risposte oggettive, in quanto di avere meno opportunità di aumentare la generazione senza diminuire l'accuratezza.
  • I punteggi di confidenza del rilevatore possono essere notevolmente ridotti quando un testo generato con l'IA viene riscritto completamente o tradotto in un'altra lingua.

SynthID Text non è progettato per impedire direttamente agli avversari motivati di causare danni. Tuttavia, può rendere più difficile l'utilizzo di contenuti creati con l'IA per scopi e può essere combinato con altri approcci per offrire una copertura migliore su vari tipi di contenuti e piattaforme.