La Inteligencia Artificial generativa (IA generativa) puede generar una gama más amplia de contenido altamente diverso a escalas que antes no se habían imaginado. Si bien la mayoría de este uso es con fines legítimos, existe la preocupación de que pueda contribuir a problemas de información errónea y atribución incorrecta. La marca de agua es una técnica para mitigar estos posibles impactos. Las marcas de agua que son imperceptibles para los humanos se pueden aplicar al contenido generado por IA, y los modelos de detección pueden calificar contenido arbitrario para indicar la probabilidad de que tenga una marca de agua.
SynthID es una tecnología de Google DeepMind que identifica marcas de agua e identifica el contenido generado por IA mediante la incorporación directa de marcas de agua digitales en imágenes, audio, texto o videos generados por IA. SynthID Text se convirtió en código abierto para que los desarrolladores puedan usar la marca de agua para la generación de texto. Puedes leer el artículo en Nature para obtener una descripción técnica más completa del método.
Hay disponible una implementación de nivel de producción de SynthID Text en la versión 4.46.0 o posterior de Hugging Face Transformers, que puedes probar en el espacio de texto de SynthID oficial. También hay disponible una implementación de referencia en GitHub que puede ser útil para los mantenedores y colaboradores de código abierto que buscan llevar esta técnica a otros frameworks.
Aplicación de marcas de agua
En términos prácticos, SynthID Text es un procesador de logits que se aplica a la canalización de generación de tu modelo después de Top-K y Top-P, que aumenta los logits del modelo con una función g pseudoaleatoria para codificar la información de la marca de agua de una manera que te ayude a determinar si el modelo generó el texto, sin afectar significativamente su calidad. Consulta el artículo para obtener una descripción técnica completa del algoritmo y los análisis de cómo los diferentes valores de configuración afectan el rendimiento.
Las marcas de agua se configuran para parametrizar la función g y cómo se aplica durante la generación. Cada configuración de marca de agua que uses debe almacenarse de forma segura y privada. De lo contrario, es posible que otras personas puedan replicarla de forma sencilla.
Debes definir dos parámetros en cada configuración de marcas de agua:
- El parámetro
keys
es una lista de números enteros aleatorios únicos que se usan para calcular las puntuaciones de la función g en el vocabulario del modelo. La longitud de esta lista determina cuántas capas de marca de agua se aplican. Consulta el apéndice C.1 del artículo para obtener más detalles. - El parámetro
ngram_len
se usa para equilibrar la robustez y la detectabilidad. cuanto mayor sea el valor, más detectable será la marca de agua, a costa de ser más frágil a los cambios. Una longitud de 5 es un buen valor predeterminado.
Además, puedes configurar la marca de agua en función de tus necesidades de rendimiento:
- Una tabla de muestreo se configura con dos propiedades,
sampling_table_size
ysampling_table_seed
. Debes usar unsampling_table_size
de al menos \( 2^{16} \) para garantizar una función g imparcial y estable cuando se muestrea, pero ten en cuenta que el tamaño de la tabla de muestreo afecta la cantidad de memoria requerida en el momento de la inferencia. Puedes usar cualquier número entero que desees comosampling_table_seed
. - Los n-gramas repetidos en los tokens
context_history_size
anteriores no tienen marcas de agua para mejorar la detectabilidad.
No se requiere entrenamiento adicional para generar texto con una marca de agua de texto SynthID
mediante tus modelos, solo una
configuración de marca de agua que se pasa al método
.generate()
del modelo para activar el procesador de logits
de texto SynthID. Consulta la entrada de blog y Space para ver ejemplos de código que muestran cómo aplicar una marca de agua en la biblioteca de Transformers.
Verificación y detección de marcas de agua
La detección de marcas de agua es probabilística. Se proporciona un detector bayesiano con Hugging Face Transformers y en GitHub. Este detector puede generar tres estados de detección posibles: con marca de agua, sin marca de agua o incierto, y el comportamiento se puede personalizar configurando dos valores de umbral para lograr una tasa específica de falsos positivos y falsos negativos. Consulta el Apéndice C.8 en el artículo para obtener más detalles.
Los modelos que usan el mismo tokenizador también pueden compartir la configuración y el detector de marcas de agua, por lo que comparten una marca de agua común, siempre que el conjunto de entrenamiento del detector incluya ejemplos de todos los modelos que comparten la marca de agua.
Una vez que tengas un detector entrenado, puedes elegir si quieres exponerlo a tus usuarios y al público en general, y cómo lo harás.
- La opción completamente privada no libera ni expone el detector de ninguna manera.
- La opción semiprivada no libera el detector, pero lo expone a través de una API.
- La opción público libera el detector para que otras personas lo descarguen y usen.
Tú y tu organización deben decidir qué enfoque de verificación de detección es el mejor para tus necesidades, en función de tu capacidad para admitir la infraestructura y los procesos asociados.
Limitaciones
Las marcas de agua de texto de SynthID son resistentes a algunas transformaciones, como recortar fragmentos de texto, modificar algunas palabras o reformular ligeramente, pero este método tiene limitaciones.
- La aplicación de marcas de agua es menos eficaz en las respuestas fácticas, ya que hay menos oportunidades de aumentar la generación sin disminuir la precisión.
- Las puntuaciones de confianza del detector pueden reducirse considerablemente cuando un texto generado por IA se reescribe por completo o se traduce a otro idioma.
El texto SynthID no está diseñado para evitar directamente que los adversarios motivados causen daños. Sin embargo, puede dificultar el uso de contenido generado por IA con fines maliciosos y se puede combinar con otros enfoques para brindar una mejor cobertura en los tipos de contenido y las plataformas.