[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 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 수행 결과
'TIL _Today I Learned > 2025.01' 카테고리의 다른 글
[DAY 121] 최종 프로젝트_ ECR & API (0) | 2025.01.10 |
---|---|
[DAY 120] 최종 프로젝트_ MLflow 수행 결과 (0) | 2025.01.09 |
[DAY 118] 최종 프로젝트_ Airflow 수행 결과 (0) | 2025.01.07 |
[DAY 117] 최종 프로젝트_ Airflow + MLflow 연동 (0) | 2025.01.06 |
[DAY 116] 최종 프로젝트_ MLflow 개념 (0) | 2025.01.03 |