Tenemos todos los ingredientes que necesitamos para comprobar si un fragmento de texto está generado por IA. Aquí está todo lo que necesitamos:
- El texto (oración o párrafo) que deseamos comprobar.
- La versión tokenizada de este texto, tokenizada usando el tokenizador que se usó para tokenizar el conjunto de datos de entrenamiento para este modelo.
- El modelo de lenguaje entrenado.
Usando 1, 2 y 3 anteriores, podemos calcular lo siguiente:
- Probabilidad por token según lo predicho por el modelo.
- Perplejidad por token utilizando la probabilidad por token.
- Perplejidad total durante toda la frase.
- La perplejidad del modelo sobre el conjunto de datos de entrenamiento.
Para comprobar si un texto es generado por IA, necesitamos comparar la perplejidad de la oración con la perplejidad del modelo escalada por un factor de manipulación, alfa. Si la perplejidad de la oración es mayor que la perplejidad del modelo con la escala, entonces probablemente sea un texto escrito por humanos (es decir, no generado por IA). De lo contrario, probablemente sea generado por IA. La razón de esto es que esperamos que el modelo no se quede perplejo por el texto que él mismo generaría, por lo que si encuentra algún texto que él mismo no generaría, entonces hay razones para creer que el texto no está generado por IA. Si la perplejidad de la oración es menor o igual que la perplejidad del entrenamiento del modelo con la escala, entonces es probable que se haya generado usando este modelo de lenguaje, pero no podemos estar muy seguros. Esto se debe a que es posible que un humano haya escrito ese texto, y resulta que es algo que el modelo también podría haber generado. Después de todo, el modelo fue entrenado con una gran cantidad de texto escrito por humanos, por lo que, en cierto sentido, el modelo representa una “escritura humana promedio”.
ppx(x) en la fórmula anterior significa la perplejidad de la entrada “x”.
A continuación, echemos un vistazo a ejemplos de texto escrito por humanos versus texto generado por IA.
Ejemplos de texto escrito por humanos versus generado por IA
Hemos escrito código Python que colorea cada token en una oración según su perplejidad en relación con la perplejidad del modelo. La primera ficha siempre es de color negro si no consideramos su perplejidad. Las fichas que tienen una perplejidad menor o igual a la perplejidad del modelo con la escala están coloreadas en rojo, lo que indica que pueden ser generadas por IA, mientras que las fichas con mayor perplejidad están coloreadas en verde, lo que indica que definitivamente no fueron generadas por IA.
Los números entre corchetes antes de la oración indican la perplejidad de la oración calculada utilizando el modelo de lenguaje. Tenga en cuenta que algunas palabras son en parte rojas y en parte azules. Esto se debe al hecho de que utilizamos un tokenizador de subpalabras.
Aquí está el código que genera el HTML anterior.
def get_html_for_token_perplexity(tok, sentence, tok_ppx, model_ppx):
tokens = tok.encode(sentence).tokens
ids = tok.encode(sentence).ids
cleaned_tokens = []
for word in tokens:
m = list(map(ord, word))
m = list(map(lambda x: x if x != 288 else ord(' '), m))
m = list(map(chr, m))
m = ''.join(m)
cleaned_tokens.append(m)
#
html = [
f"<span>{cleaned_tokens[0]}</span>",
]
for ct, ppx in zip(cleaned_tokens[1:], tok_ppx):
color = "black"
if ppx.item() >= 0:
if ppx.item() <= model_ppx * 1.1:
color = "red"
else:
color = "green"
#
#
html.append(f"<span style='color:{color};'>{ct}</span>")
#
return "".join(html)
#
Como podemos ver en los ejemplos anteriores, si un modelo detecta algún texto como generado por humanos, definitivamente es generado por humanos, pero si detecta el texto como generado por IA, existe la posibilidad de que no sea generado por IA. Entonces, ¿por qué pasa ésto? ¡Echemos un vistazo a continuación!
Falsos positivos
Nuestro modelo de lenguaje está entrenado en MUCHOS textos escritos por humanos. Generalmente es difícil detectar si algo fue escrito (digitalmente) por una persona específica. Los aportes del modelo para la capacitación comprenden muchísimos estilos diferentes de escritura, probablemente escritos por un gran número de personas. Esto hace que el modelo aprenda muchos estilos y contenidos de escritura diferentes. Es muy probable que su estilo de escritura coincida mucho con el estilo de escritura de algún texto en el que se entrenó al modelo. Este es el resultado de falsos positivos y la razón por la que el modelo no puede estar seguro de que parte del texto sea generado por IA. Sin embargo, el modelo puede estar seguro de que parte del texto fue generado por humanos.
Abierta AI: OpenAI anunció recientemente que descontinuaría sus herramientas para detectar texto generado por IA, citando una baja tasa de precisión (Fuente: Tiempos del Indostán).
La versión original de la herramienta clasificadora de IA tuvo ciertas limitaciones e imprecisiones desde el principio. Los usuarios debían ingresar al menos 1000 caracteres de texto manualmente, que luego OpenAI analizó para clasificarlos como escritos por IA o humanos. Desafortunadamente, el rendimiento de la herramienta no fue suficiente, ya que identificó correctamente solo el 26 por ciento del contenido generado por IA y etiquetó erróneamente texto escrito por humanos como IA alrededor del 9 por ciento de las veces.
Aquí esta la publicación de blog de OpenAI. Parece que utilizaron un enfoque diferente al mencionado en este artículo.
Nuestro clasificador es un modelo de lenguaje ajustado a un conjunto de datos de pares de texto escrito por humanos y texto escrito por IA sobre el mismo tema. Recopilamos este conjunto de datos de una variedad de fuentes que creemos que fueron escritas por humanos, como los datos previos al entrenamiento y las demostraciones humanas sobre indicaciones enviadas a InstructGPT. Dividimos cada texto en una indicación y una respuesta. A partir de estas indicaciones, generamos respuestas a partir de una variedad de modelos lingüísticos diferentes entrenados por nosotros y otras organizaciones. Para nuestra aplicación web, ajustamos el umbral de confianza para mantener baja la tasa de falsos positivos; en otras palabras, solo marcamos el texto como probablemente escrito por IA si el clasificador tiene mucha confianza.
GPTZero: Otra herramienta popular de detección de texto generada por IA es GPTZero. Parece que GPTZero usa perplejidad y estallido para detectar texto generado por IA. “La ráfaga se refiere al fenómeno en el que ciertas palabras o frases aparecen en ráfagas dentro de un texto. En otras palabras, si una palabra aparece una vez en un texto, es probable que vuelva a aparecer muy cerca”. (fuente).
GPTZero afirma tener una tasa de éxito muy alta. De acuerdo con la Preguntas frecuentes sobre GPTZero, “Con un umbral de 0,88, el 85% de los documentos de IA se clasifican como IA y el 99% de los documentos humanos se clasifican como humanos”.
La generalidad de este enfoque.
El enfoque mencionado en este artículo no se generaliza bien. Lo que queremos decir con esto es que si tiene 3 modelos de idioma, por ejemplo, GPT3, GPT3.5 y GPT4, entonces debe ejecutar el texto de entrada en los 3 modelos y verificar la perplejidad en todos ellos para ver si el texto fue generado por cualquiera de ellos. Esto se debe a que cada modelo genera texto de manera ligeramente diferente y todos necesitan evaluar el texto de forma independiente para ver si alguno de ellos pudo haber generado el texto.
Con la proliferación de grandes modelos de lenguaje en el mundo a partir de agosto de 2023, parece poco probable que se pueda comprobar que un fragmento de texto se originó a partir de cualquiera de los modelos de lenguaje del mundo.
De hecho, cada día se entrenan nuevos modelos y tratar de mantenerse al día con este rápido progreso parece, en el mejor de los casos, difícil.
El siguiente ejemplo muestra el resultado de pedirle a nuestro modelo que prediga si las oraciones generadas por ChatGPT son generadas por IA o no. Como puede ver, los resultados son mixtos.
Hay muchas razones por las que esto puede suceder.
- Tamaño del corpus del tren: Nuestro modelo se entrenó con muy poco texto, mientras que ChatGPT se entrenó con terabytes de texto.
- Distribución de datos: Nuestro modelo está entrenado en una distribución de datos diferente en comparación con ChatGPT.
- Sintonia FINA: Nuestro modelo es solo un modelo GPT, mientras que ChatGPT se ajustó para respuestas similares a las de un chat, lo que hace que genere texto en un tono ligeramente diferente. Si tuviera un modelo que genera texto legal o asesoramiento médico, nuestro modelo también tendría un rendimiento deficiente en el texto generado por esos modelos.
- Tamaño del modelo: Nuestro modelo es muy pequeño (menos de 100 millones de parámetros en comparación con > 200 mil millones de parámetros para modelos similares a ChatGPT).
Está claro que necesitamos un mejor enfoque si esperamos proporcionar un resultado de calidad razonablemente alta para verificar si algún texto es generado por IA.
A continuación, echemos un vistazo a cierta información errónea sobre este tema que circula por Internet.