P131 — Una marca de agua

Ruta de medios · En vez de reconocer texto generado a posteriori —que falla—, dejar la marca al generar: sesgar qué tokens se eligen deja una firma estadística.

Nivel: L2 · Motor: marcas_de_agua · Notebook: P131_marcas_de_agua.ipynb · Anexo: probabilidad y verosimilitud

1. Identificación

Campo Valor
Título original A Watermark for Large Language Models
Autoría John Kirchenbauer, Jonas Geiping, Yuxin Wen, Jonathan Katz, Ian Miers, Tom Goldstein
Año 2023
Venue ICML 2023 · arXiv:2301.10226
Fuente primaria arXiv:2301.10226
Acceso Abierto
Fecha de consulta 2026-08-18

2. Problema anterior

Distinguir texto generado de texto humano se venía intentando con clasificadores entrenados a posteriori, y ese enfoque tiene tres defectos que no se arreglan.

Envejecen: cada modelo nuevo los deja obsoletos. Producen falsos positivos con consecuencias reales — estudiantes acusados de copiar por un detector que se equivocó, y hablantes no nativos señalados desproporcionadamente. Y no dan ninguna garantía: son una conjetura estadística sobre un texto del que no se sabe nada.

El problema de fondo es que se intenta recuperar información que nunca se puso ahí.

3. Propuesta

Poner la información al generar, en lugar de intentar recuperarla después.

En cada paso de generación, un hash del token anterior parte el vocabulario en una lista verde —una fracción γ— y otra roja. Se añade un sesgo δ a los logits de la lista verde, de modo que el modelo tiende a elegir de ahí sin que el texto se degrade apreciablemente.

Detectar es entonces una prueba de hipótesis. Un texto no marcado tendrá alrededor de una fracción γ de tokens verdes; uno marcado, muchos más:

z = (verdes − γn) / √(n·γ(1−γ))

Y lo importante: detectar no necesita el modelo, ni sus pesos, ni una clave privada. Basta la función que define la lista verde.

4. Intuición sin fórmulas

Marcar billetes con un patrón acordado en vez de intentar adivinar por su aspecto si son falsos.

Adivinar por el aspecto se equivoca con billetes viejos y con falsificaciones buenas. La marca no se equivoca — con dos condiciones: que quien emite coopere, y que el billete no esté tan deteriorado que la marca ya no se lea.

Dónde deja de funcionar la analogía: la marca de un billete está en un sitio concreto. Aquí está repartida por todo el texto, así que un texto corto simplemente no tiene sitio donde llevarla.

5. Matemática mínima

En cada paso:  hash(token anterior) → lista VERDE (fracción γ del vocabulario)
               sesgar los logits verdes con δ

Detección:     z = (verdes − γn) / √(n·γ(1−γ))

La miniatura usa γ = 0,25 y umbral z = 4,0:

z media Detectados
texto marcado (200 tokens) 4,83 25 de 30
texto no marcado −0,13 0 de 30

Cero falsos positivos. Pero hay dos límites duros:

Longitud. Con 25 tokens la z media es 1,68 y se detecta 1 de 30. Un tuit no se puede marcar: no hay suficiente texto para que la estadística diga nada.

Robustez. Reescribiendo el 30 % de los tokens, la detección cae a 2 de 30; con el 50 %, a 0. Parafrasear es un ataque barato.

💡 Consejo

Puente matemático. Esta sección da por sabido lo siguiente. Si algo no te suena, léelo primero: está explicado una sola vez, en un solo sitio, y sirve para todas las fichas.

Dónde Qué necesitas de ahí
A02 §6 · Gaussianas y el proceso de difusión la campana de la que sale la puntuación z, y por qué necesita n grande para separar dos hipótesis

6. Arquitectura o flujo

flowchart LR
    T["token anterior"] --> H["hash"]
    H --> V["lista verde<br/>(γ del vocabulario)"]
    V --> S["sesgar logits +δ"]
    S --> G["token elegido"]
    G --> T
    G --> X["texto generado"]
    X --> D["contar verdes<br/>→ puntuación z"]
    D --> R{"¿z > umbral?"}
    style V fill:#1a3a2a,stroke:#3fb950,color:#f0f6fc

7. Qué observar en el paper original

8. Evidencia y resultados

Experimentos con modelos reales midiendo detectabilidad, tasa de falsos positivos y degradación de calidad por perplejidad, más un análisis de ataques por parafraseo.

La evidencia es completa y honesta con los límites: el propio artículo cuantifica cuánto texto hace falta y cuánto resiste la edición.

La miniatura usa un generador aleatorio en lugar de un modelo de lenguaje, así que no mide la degradación de calidad, que es la mitad del compromiso. Y el ataque simulado sustituye tokens al azar; un parafraseo con otro modelo es más eficaz.

9. Impacto

10. Limitaciones

  1. No funciona con texto corto. Con 25 tokens se detecta 1 de 30. Un titular, un tuit o una respuesta breve no llevan marca útil.
  2. Parafrasear la borra. Reescribir el 30 % de los tokens baja la detección a 2 de 30.
  3. Solo funciona si el generador coopera. Un modelo de pesos abiertos se ejecuta sin marca, y basta con desactivarla.
  4. Degrada la calidad, poco pero medible, y en texto de baja entropía la marca no puede entrar.
  5. Identifica al generador, no al autor ni la intención. No dice si el texto es cierto, ni si quien lo publicó sabía que era generado.

11. Errores comunes

Error Corrección
«La marca de agua resuelve la desinformación» Identifica al generador, no la veracidad ni la intención. Un texto marcado puede ser cierto y uno sin marcar, falso.
«Sirve para cualquier texto» Con 25 tokens se detecta 1 de 30. Hace falta longitud: un tuit no tiene sitio donde llevar la marca.
«Es robusta porque está repartida por todo el texto» Reescribir el 30 % de los tokens baja la detección a 2 de 30. Parafrasear es un ataque barato y accesible.
«Detectar requiere acceso al modelo» No: basta la función que define la lista verde. Esa es justamente la propiedad que la hace desplegable por terceros.
«Si todos los modelos la implementaran, el problema estaría resuelto» Un modelo de pesos abiertos se ejecuta sin ella. La marca depende de que el generador coopere, y no todos cooperan.

12. Relación con trabajos anteriores

13. Relación con trabajos posteriores

14. Notebook asociado

P131_marcas_de_agua.ipynb

Qué implementa: la puntuación z de texto marcado frente a no marcado con su tasa de falsos positivos, cuánto texto hace falta para detectar, y cómo se degrada la detección al reescribir una fracción de los tokens.

Qué NO implementa: el «modelo» es un generador aleatorio, así que no se mide la degradación de calidad —la mitad del compromiso—. Y el ataque sustituye tokens al azar; parafrasear con otro modelo es más eficaz.

ai-evolution paper-lab P131 --seed 7

15. Actividades Bloom

Nivel Actividad
Recordar Escribe la fórmula de la puntuación z de detección.
Explicar Explica por qué la detección no necesita el modelo.
Aplicar Ejecuta el notebook y localiza a partir de cuántos tokens se detecta.
Analizar Analiza por qué el parafraseo es un ataque eficaz.
Evaluar «El texto lleva marca de agua, luego es falso». Evalúa la afirmación.
Crear Define el umbral de detección que usarías en un caso tuyo y calcula la tasa de falsos positivos que aceptas. Razona qué le pasa a alguien acusado por uno.

16. Autoevaluación

  1. ¿Qué determina la lista verde en cada paso?
  2. ¿Qué necesita la detección?
  3. ¿Cuánto texto hace falta?
  4. ¿Qué le hace el parafraseo?
  5. ¿Por qué falla con texto de baja entropía?
  6. ¿Qué garantiza exactamente una marca detectada?
  7. ¿Qué pasa con los modelos de pesos abiertos?

17. Respuestas esperadas

  1. Un hash del token anterior. Eso hace la partición reproducible sin guardar nada, y distinta en cada posición.
  2. Solo la función que define la lista verde. No hace falta el modelo, ni sus pesos, ni una clave privada, y por eso un tercero puede verificar.
  3. Bastante. Con 25 tokens se detecta 1 de 30 y con 200, 25 de 30. Un texto corto no tiene sitio donde llevar la marca.
  4. La borra. Reescribiendo el 30 % de los tokens la detección cae a 2 de 30; con el 50 %, a cero.
  5. Porque si solo hay una continuación razonable, el modelo no puede permitirse sesgar sin estropear el texto. La marca necesita libertad de elección para entrar.
  6. Que ese texto lo produjo un generador que coopera con el esquema. No dice si es cierto, ni cuál fue la intención, ni si quien lo publicó lo sabía.
  7. Se ejecutan sin marca: basta desactivarla. El esquema depende de que el generador coopere.

18. Fuentes primarias


⬅️ Anterior: P130 VALL-E · 📇 Índice · 📝 Evaluación · 🏫 Clase 098 · Procedencia, marcas y autenticidad · ➡️ Siguiente: P132 Splatting de gaussianas