TEyCP DistilBERT AI vs Human
Este modelo es una version fine-tuned de
distilbert-base-uncased
para clasificacion binaria de texto: distinguir entre respuestas escritas por
una persona (
humano) y respuestas generadas por IA (
IA).
El proyecto forma parte de una practica de NLP con Hugging Face. El objetivo
principal no es construir un detector definitivo, sino demostrar un pipeline
end-to-end completo: carga de datos, preparacion de un subset balanceado,
tokenizacion, fine-tuning con Trainer, evaluacion, subida al Hub y despliegue
en un Space de Gradio.
Demo
El modelo puede probarse en el siguiente Space de Gradio:
Dataset
Se uso
Hello-SimpleAI/HC3,
un dataset con preguntas y respuestas humanas junto con respuestas generadas
por ChatGPT.
Para mantener el entrenamiento razonable en una GPU local modesta, no se uso el
dataset completo. Se preparo un subset balanceado de 10.000 ejemplos:
| Split | Ejemplos |
|---|
| Train | 8.000 |
| Validation | 1.000 |
| Test | 1.000 |
Etiquetas:
Modelo
- Modelo base:
distilbert-base-uncased
- Tarea: clasificacion binaria de texto
- Framework: PyTorch + Hugging Face
transformers
- Tokenizacion: truncado a
max_length=256
- Padding: dinamico por batch mediante
DataCollatorWithPadding
Hiperparametros de entrenamiento
| Parametro | Valor |
|---|
| Seed | 42 |
| Max length | 256 |
| Batch size | 32 |
| Epocas | 3 |
| Learning rate | 2e-5 |
| Optimizador | AdamW |
| Precision mixta | FP16 si CUDA esta disponible |
El entrenamiento se realizo en GPU local con CUDA.
Metricas finales
Las metricas se calcularon sobre el split de test del subset balanceado:
| Metrica | Valor |
|---|
| Test loss | 0.0233 |
| Accuracy | 0.9940 |
| F1 | 0.9940 |
| Precision | 0.9881 |
| Recall | 1.0000 |
Estas metricas deben interpretarse dentro del contexto del subset usado. No son
una garantia de rendimiento en textos fuera del dominio de HC3 ni en otros
idiomas, formatos o escenarios reales.
Ejemplo de uso
1from transformers import pipeline
2
3model_id = "Sikander035/teycp-distilbert-ai-vs-human"
4
5classifier = pipeline(
6 "text-classification",
7 model=model_id,
8 tokenizer=model_id,
9 top_k=None,
10)
11
12text = "Photosynthesis is the process by which plants convert sunlight into chemical energy."
13
14predictions = classifier(
15 text,
16 truncation=True,
17 max_length=256,
18)
19
20print(predictions)
La salida contiene las probabilidades estimadas para las etiquetas humano e
IA. La clase positiva del entrenamiento es IA.
Usos previstos
Este modelo esta pensado para:
- Demostrar un flujo completo de fine-tuning y despliegue con Hugging Face.
- Probar inferencia de clasificacion binaria en textos breves o medianos en
ingles.
- Servir como ejemplo educativo para comparar respuestas humanas y respuestas
generadas por IA dentro del estilo de HC3.
No esta pensado para tomar decisiones academicas, laborales, legales o
disciplinarias sobre la autoria de un texto.
Limitaciones
- El modelo aprende patrones del subset de HC3, no una propiedad universal de
"texto generado por IA".
- El dataset esta centrado sobre todo en respuestas de tipo pregunta-respuesta y
en ingles; el rendimiento puede caer en otros idiomas, dominios o formatos.
- Textos muy cortos, muy editados, parafraseados o fuera de dominio pueden
producir falsos positivos o falsos negativos.
- Una prueba manual del proyecto mostro que un texto esperado como
IA podia
clasificarse como humano con confianza alta. Esto refuerza que el detector
es orientativo.
- El modelo puede heredar sesgos del dataset y del modelo base.
- Las metricas proceden de un subset balanceado y no sustituyen una evaluacion
externa robusta.
Procedimiento de entrenamiento
El entrenamiento se hizo con la API actual de Trainer de transformers,
usando eval_strategy="epoch" y save_strategy="epoch".
Versiones principales:
- Transformers 5.9.0
- PyTorch 2.11.0+cu128
- Datasets 4.8.5
- Tokenizers 0.22.2