머신러닝에서 여러가지 최적화 기법을 공부할 수 있었는데요
기법들이 너무 많다보니 각각 어떤 목적을 가지고 최적화를 할 수 있는지 헷갈리더라고요..
저 같은 분들이 있을 것 같아서 벨로그에도 정리해봅니다!
1. 오버피팅 개선 (Overfitting Reduction)
오버피팅은 모델이 훈련 데이터에 과도하게 적합하여 새로운 데이터에 대한 일반화 성능이 저하되는 문제
(1) Validation Data
- test data 와 별도로 validation data를 사용해 모델이 새로운 데이터에서도 좋은 성능을 보이는 지 확인
(2) Early Stopping
- validation data의 loss가 더 이상 개선되지 않을 때 훈련 중단
(3) Weight Decay
- L1 규제 : 가중치의 절대값 합을 최소화
- L2 규제 : 가중치의 제곱합을 최소화
- Elastic Net : L1과 L2 규제를 혼합하여 사용
(4) Data Augmentation (데이터 증강)
- 데이터를 해치지 않는 선에서 데이터를 변형 시켜서 오버피팅 방지
(5) Dropout (드롭아웃)
- 일부 뉴런을 무작위로 비활성화하여 특정 뉴런에 대한 의존도를 줄이고 과적합을 방지
(6) Ensemble Learning (앙상블 학습)
- 여러 모델을 조합하여 예측 성능을 높이고 과적합을 줄임
대표 기법: Bagging, Boosting, Stacking
2. 모델 비용 및 시간 개선 (Cost & Time Optimization)
(1) Learning Rate Scheduling (학습률 스케줄링)
- Step Decay: 특정 epch마다 학습률을 감소
- Exponential Decay : 학습률을 지수 함수에 따라 점진적으로 감소
- Two-stage Decay : 초기에 큰 학습률로 학습한 후, 후반부에 학습률을 낮춤
(2) Stochastic Gradient Descent(SGD, 확률적 경사하강법)
- GPU를 활용해 다수의 배치를 병렬처리하여 학습 속도를 향상
(3) Optimizers
- Adagrad : Gradient 크기 누적을 통해 학습할수록 learning rate가 작아지도록 조정
- RMSProp : 기울기 제곱의 지수 가중 이동 평균을 사용해서 학습률이 지나치게 줄어드는 것을 방지
- Adam : Adagrad와 RMSProp의 장점 결합
3. GD Minima Optimization (경사하강법 최적화)
Local Minima 또는 Saddle Point를 피하고 안정적으로 학습하기 위한 방법을 찾는 것이 중요
(1) Momentum (모멘텀)
- 이전 기울기의 '방향'을 참조하여 학습 속도 개선
(2) Initialization (가중치 초기화)
- He Initialization: ReLU 활성화 함수에 최적화된 초기화 방법
- Xavier Initialization: Sigmoid, Tanh 활성화 함수에 적합
(3) Learning Rate 설정 (학습률)
- 학습률이 너무 크면 최소값을 찾지 못하고, 학습률이 너무 작으면 수렴 속도가 느려진다.
(학습률 조정 방법 안에 Adagrad, RMSProp, Adam)
4. For Robust Model
(1) Data Preprocessing (데이터 전처리)
- 정규화 (Normalization)
- 표준화 (Standardization)
- 이상치 제거 (Outlier Removal)
(2) Batch Normalization (배치 정규화)
- 각 배치 단위로 데이터 분포를 정규화하여 학습을 안정화
(3) Data Augmentation (데이터 증강)
(4) Out-of-Distribution (OOD) Detection
- 학습 데이터 분포와 다른 입력 데이터를 감지하여 모델이 잘못된 예측을 피할 수 있게 함
5. 성능 개선
(1) Dropout
- 학습 중 일부 뉴런을 비활성화하여 과적합을 방지
(2) Batch Normalization (배치 정규화)
6. Gradient Vanishing 문제해결
Gradient Vanishing은 역전파(Backpropagation) 시 기울기가 0에 가까워져 가중치가 업데이트되지 않는 문제
(1) Initialization
- He, Xavier 초기화를 사용하여 기울기 소실 문제를 완화
(2) Batch Normalization (배치 정규화)
(3) Hyperparameter Tuning (하이퍼파라미터 튜닝)
- 최적의 하이퍼파라미터를 찾기 위해 Grid Search, Random Search, Bayesian Optimization 기법 사용
(4) Activation Functions (활성화 함수)
- ReLU 계열 활성화 함수 사용 (Leaky ReLU, Parametric ReLU 등)