Mentoring - ML loss lr, OCR, On-off-line augmentation

핵심

  • Toy dataset

  • epoch 별 loss, learning rate 모니터링 (scheduler)

  • 초기 파라미터는 문헌 참고

멘토소개

  • 포스트매스(PostMASS):

수학 LLM 문제 풀이: 대형 언어 모델을 활용한 수학 문제 해결 방법

OCR (광학 문자 인식)

  • 이미지 처리 2-Stage 접근법
  1. 텍스트 검출(Text Detection)
  • 이미지 내 텍스트 영역을 블록으로 검출하여 바이너리 맵 생성

  • ResNet 기반의 피라미드 구조 활용

  • U-Net 및 Autoencoder 구조 개선:

  • 중간에 feature 연결 부분 강화

  1. 텍스트 디코딩(Text Decoder)
  • Latent space에 충분한 정보가 담겨 있을 경우:

  • Fully Connected (FC) layer + Softmax를 추가하여 분류기(Classifier) 구성 가능

  • 데이터 전처리

  • Crop 및 Warping: 텍스트 영역을 잘라내고 변형 적용

데이터 증강(Augmentation)

Online 온라인 증강

  • 랜덤 시드 사용

  • 장점:

  • 에폭 수가 늘어날수록 더 많은 학습 가능

  • 단점:

  • augraphy 같이 cpu 로드 큰 경우, 시간 증가

Offline 오프라인 증강

  • 단점:

  • 에폭 수가 늘어나도 다양성 증가가 제한적

대안

  • 전략: 오프라인에서 증강을 사전 처리하고, 트레이닝 시에만 온라인 증강을 추가

  • 테스트 시간 증강(TTA)

  • 간단한 Flip 등을 적용하여 앙상블 효과 도출

Toyset 실험 및 모델 검증

  • Toyset 실험

  • 전체 데이터의 10%를 Toy set으로 분리

  • 작은 데이터셋으로 목표 모델 또는 경량화된 구조 먼저 실험

  • 가정:

  • 모델이 너무 복잡하고 데이터가 작을 경우, Loss가 급격히 하락 (Underfitting/Overfitting 가능성)

  • 조치:

  • Step size 별로 Loss 세부 로깅

  • 모델 크기 조정 및 Hard augmentation 적용

  • Loss가 완만하게 떨어지는지 확인하여 모델 문제인지 데이터 문제인지 판단

모델 개선 기법

  • 라벨 스무딩(Label Smoothing)

  • 분류 후 라벨 스무딩 효과 확인

  • 데이터 분할 비율

  • 실무: Train:Validation:Test = 7:1.5:1.5

  • 데이터가 많을 경우 Train 비율을 늘림

  • 주의: Test, Train 보다 현실 분포 잘 대변해야 함

  • 모델 일반화 성능 평가

  • 대회 지표 외에도 다양한 지표 활용

다양한 Loss 시도:

  • Custom Loss Function: Focal Loss + Weighted BCE (가중치 부여)

  • Combine Multiple Loss:

  • DBNet: BCE Loss + Dice Loss

학습 스케줄링

  • Cosine Annealing: 학습 초반부터 큰 Learning Rate 적용

  • Step LR: 단계적으로 Learning Rate 조정

  • 주의: Learning Rate가 너무 크면 발산 위험

  • Learning Rate와 Loss를 함께 플롯하여 모니터링

대회 초반 전략

  • Valid Set 분리

  • Test 셋을 대변할 수 있는 Valid set을 Train 셋에서 분리

  • 육안으로 검토하거나 Toy set으로 모델 학습

  • Valid Set과 Test Set 간 경향성 확인

  • Valid Set의 경향성과 Test Set의 Leaderboard 경향성 비교

  • 경진대회, 일반화 모델과 동시에 주어진 데이터셋 오버피팅 시키는걸 찾는 셈이기도

  • Tuning 할 요소 우선순위

  • eda

  • val set 정의

  • scheudler

Q&A 주요 주제

  • 초기 파라미터 설정?

  • 현업은, 문헌 그대로 시작

  • Data Leakage 이슈

  • Train과 Validation에서의 Augmentation 적용?

  • 이론 적으로는 train 에만 적용해야 하나, 현재 대회 같은 경우 augmentation test 에 강한 상황이기에, 분리 보다 증강 자체가 더 중요할 수도

  • Validation Set 기준 설정

  • 실제 Test submission 시 결과와 성능 개선 트렌드 연관성 있어야

  • valid set 결과 saturation 시, 난이도 향상 필요

  • Class Imbalance 및 모델 성능 차이

  • 클래스별 결과 차이 분석

  • Image Data Embedding 및 Clustering

문제 해결 팁

  • Papers with Code 활용: 관련 논문과 코드를 참고하여 문제 해결

  • 확장적 탐색: 관련성이 없어 보이는 질문까지 확장하여 정보 탐색

기술 및 모델

  • SimCLR

  • ResNet 기반의 Self-Supervised Learning

  • Knowledge Transfer 기법 활용

실무 전략

모니터링 및 시각화:

  • Step Size 별 Loss, learning rate 로깅

  • 학습 과정 중 각 스텝마다 손실 값을 기록하여 패턴을 분석.

  • scheduler 사용시, learning rate 값도 동시 모니터링.

  • 파라미터 잘못 준 경우, 특히 초기에 완만하게 떨어지지 않고 loss 발산 현상

유효성 검증(Validation):

  • Valid Set 설정: Test 셋을 대변할 수 있는 Valid set을 분리하여, 학습 과정에서 모델의 일반화 성능을 지속적으로 평가

  • Toy Set 실험: 전체 데이터의 일부분(Toy set)을 활용하여 작은 규모에서 먼저 모델을 실험하고, 파라미터 설정을 조정한 후 전체 데이터에 적용

모델 및 데이터 문제 구분:

  • Hard Augmentation 적용: 데이터 다양성을 높이기 위해 강력한 증강 기법을 적용하여 모델의 일반화 성능을 향상