본문 바로가기
TIL _Today I Learned/2025.01

[DAY 119] 최종 프로젝트_ TrOCR 모델 추가 학습

by gamdong2 2025. 1. 8.
[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기
학습일 : 2025.01.08

📕 프로젝트 작업 내역

  • 평가 지표 설명
  • 추가 학습 방법
  • 모델 성능 변화

 

📗 수행 결과

1. 평가 지표 설명

1) Character Accuracy (CA, 문자 정확도)

  • 계산식 : (정확히 예측한 문자 수) / (전체 문자 수)
  • 문자 단위의 세밀한 성능 평가
  • 학습 데이터에 다양한 단어·문장·글꼴 포함 → CA ↑
  • ex : CA 26.9% "예측한 문자 100자 중 약 27자를 맞춤"

2) Word Error Rate (WER, 단어 에러율)

    • 계산식 : (삽입 + 삭제 + 대체된 단어 수) / (실제 단어 수)
    • 단어 단위 성능 평가   * Levenshtein Distance 기반
    • 문맥을 잘못 예측하거나 단어 경계를 잘못 파악할 때 WER ↑
    • 문맥 의존 완화 → 단어 예측 정확도 향상 → WER ↓
    • ex : WER 26.9% "문장의 26.9%가  실제 문장과 다름"
지표 평가 대상 특징 해석
AC (Character Accuracy) 글자 단위 세부 정확도 일반화 성능
WER (Word Error Rate) 단어 단위 문장 구조 반영 문맥 의존성

 

2. 추가 학습 방법

1) 학습 단계 요약

단계 학습 데이터량 특징
① Pretrained TrOCR 600만개 일반 문서 기반으로 사전학습된 모델 (huggingface)
② 수학 문제 추가 학습 15,224개  초등 수학 문제 기반 특화 학습 → 과적합 우려
③ 무문맥 데이터 추가 학습 300만개 랜덤 단어 기반 일반화 학습 → 문맥 의존 완화

 

2) 수학 문제 추가 학습 방법

데이터 준비 - AI Hub 제공 초등 수학 문제 자동 풀이 데이터
- S3에서 boto3로 불러오기
데이터 구성 - 학습: 15,224개
- 검증: 1,703개
이미지 전처리 - DeiTFeatureExtractor 사용
- 크기 384x384로 리사이즈
- 평균 0.5, 표준편차 0.5로 정규화
텍스트 전처리 - HuggingFace AutoTokenizer 사용
- 텍스트 라벨 디코딩 처리
하이퍼파라미터 - 학습률: 1e-4
- 배치: 32
- 에포크: 5
- 가중치 감쇠: 0.01
- 옵티마이저: AdamW
손실 함수 CrossEntropyLoss
추가 학습 절차 ① 사전학습 모델 로딩 (TrOCR small korean)
② Torch DataLoader 구성
③ 학습 루프 실행 (손실 계산 & 역전파)
④ Epoch마다 검증
⑤ 체크포인트 및 최종 모델을 S3에 저장
출력 설정 - 최대 길이: 512
- 시작 토큰 ID: 0
- 종료 토큰 ID: 2

 

3) 무문맥 데이터 추가 학습 방법

데이터 수집 - 오픈소스 한국 소설 14권 활용
- 문장 단위가 아닌 단어 단위 무작위 추출
데이터 구성 - 문맥 없는 단어 5~30자 길이
- 총 300만 개 생성
(검증은  수학 문제 추가 학습 검증 데이터 1,703개 그대로 사용)
이미지화 처리 - Python 라이브러리로 무문맥 텍스트를 이미지로 변환
- 3종 글꼴 랜덤 적용
수학 맥락 삽입 - 초등 수학 교육과정 포함 수식, 숫자 등 삽입
- 수학적 일반화 학습 유도
학습 비율 조정 - 전체 학습 데이터의 약 50%를 무문맥 텍스트로 구성
효과 및 목적 - TrOCR 모델의 문맥 의존성 완화
- 다양한 단어 인식력 확보 → 일반화 성능 향상

 

 

3. 모델 성능 변화

단계 설명 Character Accuracy WER
① Pretrained TrOCR (600만 일반 텍스트) 수학 문체에 완전 미적응 상태 13.1% 81.7%
② 수학 문제 추가학습 (15,224개) 도메인 적응은 됐지만 과적합 발생 26.9% 68.0%
③ 무문맥 텍스트 추가학습 (300만 개) 일반화 성능 확보, 문맥 의존 해소 65.0% 29.4%

 

 

 

📙 내일 일정

  • MLflow 수행 결과