Table of Contents
01 모델 성능 높이는 방법
1.1 모델 성능 높이는 방법
모델 학습 목표와 데이터, GPU 환경에 따라 적절한 모델 구조와 학습 전략을 선택해야 함
● Ex 01) Task 마다 다른 모델 구조
● Ex 02) 데이터 양에 따른 transformer-based, CNN-based model 선택
○ 일반적으로 데이터가 적을 때 CNN-based model 유리함
● Ex 03) Overfitting 방지를 위한 학습 scheduling 방법 조절 (lr, scheduler, steps, epochs, …)
Pipeline
학습된 모델의 피드백을 기반으로 성능을 개선하는 pipeline의 반복 작업을 통해 최적의 성능 도출
1. 데이터: EDA, Augmentation, Pseudo labeling …
2. 모델: Hyperparameter tuning, Ensemble …
3. 학습 및 평가: Validation 전략, TTA, 모델 결과 분석 …
02 데이터
2.1 EDA
EDA in CV
○ 이미지 및 object의 분포 파악
○ 이미지의 다양성 확인
○ 이상치 및 noise 종류 파악
EDA (Exploratory Data Analysis)
Ex 01) Image와 annotation 시각화를 통해 대략적인 데이터 파악
● 다양한 형태의 object가 등장하는지
● Occlusion이 많은 데이터인지
● 각 이미지의 noise 정도가 대략 어느정도인지
Ex 02) 이미지 또는 object의 width, height 분포 시각화
● Min, Max, Mean 등
Ex 03) Class 분포 시각화
Ex 04) 이미지당 포함된 object 개수 또는 object 종류의 수 시각화
Ex 05) 이미지에 동시에 등장하는 class 간 상관관계
2.2 Augmentation
EDA를 기반으로 적절한 augmentation 기법 선정 및 학습 과정에 적용
● 데이터 증가: 샘플 개수 및 다양성을 추가하여 overfitting을 방지하고 generalization 능력 향상
● Robustness 향상: 실제 세계에서의 데이터의 다양성에 맞춰 모델의 robustness 향상
● Imbalance 보정: 데이터셋 특성에 따라 다양한 imbalance 문제를 완화하고 모델의 성능 향상
Vision 데이터에 쉽게 augmentation을 적용할 수 있는 library 소개
● Torchvision
● Albumentations
● Augraphy
Albumentations
Object detection, segmentation, keypoint detection 등 다양한 task에 적용 가능한 multi-task augmentation 지원
● 여러 타입의 annotation에 일관된 augmentation을 적용 가능한 library
● Torchvision에 비해 더 다양한 종류의 변환을 제공
● Numpy 배열을 직접 처리하여 torchvision에 비해 더 빠른 처리 속도
Augraphy
Document 이미지에 특화된 다양한 augmentation을 제공하는 library
Input image를 입력
○ Ink phase(텍스트) ○ paper phase(배경,종이)
● Ink와 paper 각각에 대해 별도의 augmentation 적용
● 분리된 phase를 다시 합쳐서 post phase 생성
● Post phase에 최종 augmentation을 적용
Further Augmentation
추가적으로 vision task에서 성능 향상에 많이 사용되는 대표적인 방법들
● Cutout
● Mixup
● Cutmix
● Copy&Paste
2.3 Pseudo Labeling
Pseudo Labeling
Semi-supervised learning의 한 형태로, label이 없는 데이터에 가짜 label(pseudo label)을 부여하여 학습에 활용하는 방법 ● 부족한 학습 데이터의 양을 늘려 모델 성능 향상
● 다양한 데이터를 학습에 활용함으로써 모델이 보다 일반화된 특성 학습
주어진 training data로 모델 학습
학습된 모델로 예측하여 pseudo label 생성
● 모델의 prediction이 높은 confidence score를 가지는 sample만 선택하는 방법
모델 재학습
○ A) 원래 데이터와 새로 생성한 데이터를 모두 사용하여 scratch로부터 재학습
○ B) 새로 생성한 데이터로만 finetuning
03 모델
3.1 Hyperparameter Tuning
Scheduler
모델 training 과정에서 learning rate를 동적으로 조절하는 역할
Weight Decay
모델의 weight의 제곱합을 penalty term으로 추가하여 overfitting을 방지하는 방법
● 특정 weight가 너무 커질수록 overfitting 발생 가능성이 높아지기 때문에
● optimizer에 파라미터 추가하여 사용
Batch Size
Task 나 데이터에 따라 최적의 batch size는 다름
● Batch size가 클수록: Training data의 전체 분포를 더 잘 근사하며, batch 내의 noise에 덜 민감
● Batch size가 작을수록: 학습에 필요한 최소 메모리가 적으며, generalization 성능 일부 향상
Epoch Epoch 조절을 통해 모델이 training data를 얼마나 많이 볼 것인지 조절
● 너무 작은 epoch: 모델이 데이터를 충분히 학습하지 못함
● 너무 큰 epoch: overfitting 가능성 높아짐
Dropout
학습 과정 중 모델 내의 일부 neuron을 비활성화하는 방법
● 학습 중 특정 뉴런이 다른 뉴런에 의존적으로 학습되는 문제 완화
● 일부 비활성화를 통해 모델을 간소화하며 overfitting 방지
● 매번 다른 형태의 조합으로 학습하여 ensemble 효과로 인한 성능 향상
3.2 Ensemble
Ensemble
여러 모델의 서로 다른 예측 결과를 모아 최종 결과의 성능을 향상시키는 방법
● 다양한 모델이 약점이나 잘못된 예측을 보완하여 성능 향상
● 다양한 상황과 예측을 고려하여 robustness 향상
● 다양한 noise를 고려하여 overfitting 완화
04 학습, 추론, 평가
4.1 Validation
Validation set을 사용하는 이유
● 모델의 성능을 평가하여 test accuracy를 가늠하기 위해
● Validation 성능을 기반으로 모델을 다시 튜닝하여 성능을 높이기 위해
Validation 전략
● Random Split
● K-fold Cross Validation
● Stratified K-fold Cross Validation
● Multi-label Stratified K-fold Cross Validation
● Group K-fold Cross Validation
4.2 TTA
Test-Time Augmentation (TTA)
Training cost를 증가시키지 않고 test sample에 augmentation을 적용하여 모델 성능을 향상시키는 방법
● Test sample에 대해 다양한 augmentation 적용
● Training data로 사전 학습된 모델을 통해, 변형된 여러 test sample의 prediction 생성
● Prediction의 확률을 평균내어 최종 prediction 생성
다양하게 변형된 test image를 사용하여 robustness 향상
● 모델이 편향되어 학습되었을 경우 prediction을 보정해줄 수 있음
4.3 모델 결과 분석
학습이 완료된 모델의 validation set에 대한 prediction을 시각화하고 분석하여, 성능이 낮게 나오는 요인을 파악하는 과정 ○ Prediction 시각화
○ 예측된 class 분포 분석
○ Prediction 상관관계 분석
Grad-CAM
● 학습된 CNN 모델이 이미지의 어떤 부분에 집중하여 prediction을 만드는지 시각적으로 보여주는 알고리즘
● 특정 class에 대한 예측에서, 마지막 convolution layer의 gradient를 사용하여 활성화 정도를 시각화
Attention Heatmap
● 학습된 Transformer의 self-attention을 시각화하여 이미지의 어떤 부분에 집중하는지 분석
'DeepLearning' 카테고리의 다른 글
`img_size`를 조정한다는 것 (0) | 2024.07.30 |
---|---|
예측 결과가 같은 환경에서 사람마다 다르게 나오는 이유 (0) | 2024.07.30 |
Image Segmentation과 Selective Search의 차이 (0) | 2024.07.30 |
Image Segmentation (0) | 2024.07.30 |
Selective Search (0) | 2024.07.30 |
- Total
- Today
- Yesterday
- LIST
- 티스토리챌린지
- English
- RAG
- classification
- t5
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- Numpy
- 오블완
- git
- 코딩테스트
- clustering
- recursion #재귀 #자료구조 # 알고리즘
- nlp
- cnn
- Github
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Lora
- Python
- Hugging Face
- LLM
- PEFT
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- 손실함수
- 해시
- Array
- 파이썬
- Transformer
- speaking
- 리스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |