google colab link : 링크텍스트
Overview
: LLM이 생성한 텍스트와 사람이 쓴 텍스트를 구분하는 모델을 만드는 문제, OpenAI 등에서 생성된 AI 텍스트가 실제 사람의 글과 구별되지 않는 수준에 도달함에 따라 이를 판별할 수 있는 메커니즘 개발의 중요성이 커지고 있는 현실적 문제
목표: 테스트 데이터셋에서 AI로 생성된 텍스트와 사람이 작성한 텍스트를 얼마나 잘 구별하는지 측정
Evaluation
- 평가지표: ROC-AUC (Receiver Operating Characteristic - Area Under Curve)
- ROC-AUC는 확률 예측 기반 지표이기 때문에, 모델의 확신 정도와 순서의 정확성이 핵심
문제 정의 및 평가 Matrix
- Input: 에세이 형태의 텍스트와 해당 prompt 정보
- Output: generated라는 0~1 사이의 확률값 (1에 가까울수록 AI가 생성했다고 판단)
- 문제 유형: Binary Classification (with probabilistic output)
- 평가 방식:
submission.csv: {id, generated} 형태 제출
AI-generated text를 1로 labeling하여 ROC-AUC 평가
EDA
- 문장 길이, prompt 별 특징, AI와 인간 텍스트의 확률 분포 차이 등을 중심으로 분석
- 텍스트 구조나 표현 스타일보다는 모델의 불확실성(discrepancy), logprob, entropy 등을 기반으로 한 분포 분석이 핵심
- 일반적인 토픽 분포나 키워드 보다는 모델이 얼마나 확신했는가에 주목해야 효과적
Dataset
- train.csv: text, prompt_id, prompt_name, generated(0/1)
- test.csv: 정답 없는 text, prompt_id만 제공
- 외부 데이터 사용 여부: 일부 허용 (ex. 공개된 모델 결과, open source tokenizer 등)
Baseline 모델 앙상블
- Naive Bayes, SGD, LGBM, CatBoost, VotingRegressor 등
LLM 기반 Feature 추출
- Mistral, DeBERTa 등을 사용해 logits, logprob, entropy 등 불확실성 정보 추출
Custom Tokenizer + TF-IDF
- 직접 학습한 BPE 토크나이저로 토큰화 후 n-gram TF-IDF 추출 및 중요도 기반 feature selection
Pseudo Label 생성 및 Stacking
- 모델 예측을 기반으로 pseudo label 생성 후, 추가 회귀 모델로 앙상블
최종 예측 앙상블
- 여러 모델의 예측을 가중 평균해 최종 예측 확률 산출
Lesson Leanned
- 단순한 텍스트 분류 문제가 아니라, 모델의 불확실성(discrepancy)을 수치화하는 것이 훨씬 효과적임
- LLM 기반 추론값(logits)의 활용은 지금까지 해왔던 feature engineering과 다른 차원의 접근을 요구함
- VotingRegressor, Stacking 등 다단계 앙상블 구조를 통해 성능을 점진적으로 개선할 수 있었음
- TF-IDF 기반 전통 ML 기법과 LLM 기반 추론을 결합하는 하이브리드 방식이 강력함
- 전체 파이프라인을 직접 구현하며 모델 설계 → feature 설계 → 앙상블 → 제출까지의 흐름을 체계적으로 연습할 수 있었음