LLM - Detect AI Generated Text

MSMoon·2025년 4월 26일

kaggle 학습

목록 보기
9/18
post-thumbnail

1. 대회 설명

  • 목표: AI가 작성한 텍스트와 사람이 작성한 텍스트를 구분하는 이진 분류 모델을 구축
  • 문제 유형: 이진 분류
  • 데이터 배경: 텍스트는 ChatGPT 등 LLM 기반 생성물과 인간 작성 에세이로 구성

2. 성능 평가 방식 이해

  • Log Loss: 예측의 정확도뿐 아니라 모델의 확신 정도까지 평가하는 손실 함수로 낮을수록 좋은 성능을 의미

3. 데이터 전처리

3-1) EDA

  • 텍스트 길이 분포 확인
  • 인간/AI 간 문장 길이 차이 분석
  • 특정 키워드 등장 패턴 확인
  • 토큰 수 기반 통계 분석

3-2) Data Cleansing

  • 불필요한 전처리 없음
  • 특수문자 제거 없이 원문 그대로 사용
  • Tokenizer 내부에서 Normalization 수행

3-3) Feature Engineering

  • 휴리스틱 특징 추출
    -> OpenAI 기반 모델과 human text 비교
    -> Log probability 기반 discrepancy 계산

  • Custom Tokenizer 구축: BPE 기반 ByteLevel Tokenizer 학습

  • TF-IDF 벡터화: BPE 토큰 기반 TF-IDF feature matrix 생성

  • Prompt ID One-Hot Encoding: 추가적인 구분 feature로 활용

4. 모델링

4-1) 모델

  • Multinomial Naive Bayes
  • SGDClassifier (modified_huber loss)
  • LightGBM (CrossEntropy objective)
  • (Catboost)

4-2) 데이터 분할

  • Train: 전체 학습 데이터, Test: 대회 제공 테스트 데이터
  • 별도의 validation set 없이 cross-validation 기반으로 튜닝

4-3) 하이퍼파라미터 튜닝

  • SGDClassifier: max_iter, tol 조정
  • LightGBM: learning_rate, colsample_bytree, colsample_bynode 등 설정
  • MultinomialNB: Laplace smoothing(alpha) 조정

4-4) 최종 성능

  • 앙상블: NB + SGD + LightGBM weighted average
  • LightGBM은 중요 feature만 추려 학습

5. 정리(Lesson & Learned)

  • 실습 환경
    -> 구글 코랩 (GPU: T4)
    -> Hugging Face 인증: Gated 모델(Mistral-7B-v0.1) 접근을 위해 토큰 사용

  • LLM 출력물과 인간 작성 텍스트는 토큰 로그 확률 분포 및 entropy 등에서 분명한 차이를 보임

  • TF-IDF + 휴리스틱 feature를 함께 활용하면 단순 텍스트 분류보다 높은 성능을 낼 수 있음

  • LightGBM, SGDClassifier, MultinomialNB를 조합한 단순 앙상블만으로도 강력한 성능을 낼 수 있음

  • CatBoost는 희소 행렬을 직접 지원하지 않아, Google Colab(T4) 환경에서는 제외하는 것이 현실적임

  • Feature Engineering이 모델 선택만큼 중요하며, Tokenizer 커스터마이징이 실제 성능에 큰 영향을 줌

  • 문제점 및 해결
    -> Mistral 모델 다운로드 시 Gated Repo 인증 오류 → Hugging Face 토큰 발급 및 Colab 로그인으로 해결
    -> bitsandbytes 4bit 양자화 라이브러리 문제 → 최신 버전 설치 및 런타임 재시작으로 해결
    -> CatBoost 오류 (All features are either constant) → 희소 데이터 특성상 CatBoost 제외 결정

LLM - Detect AI Generated Text

0개의 댓글