이전 포스터에서 언급했던 딥러닝을 위한 정형화의 종류로는 다음의 방법들이 있다.
https://sha-sha-sha.tistory.com/53
1. 제한을 거는 파라미터값을 삽입 (Parameter Norm Penalties)
2. 데이터 증대 (Dataset Augmentation)
3. 노이즈 활용 (Noise Robustness)
4. 준지도 학습 (Semi-Supervised Learing)
5. 단일 신경망으로 유사성이 있는 여러 작업 수행 (Multitask Learning)
6. 이른 학습 중단 (Early Stopping)
7. 학습 데이터를 설명하는 여러 개의 가설 모델 혼합, 앙상블 (Bagging and Other Ensemble Methods)
8. Drop out
9. 데이터 분포의 이전 정보를 이용해 추가적인 학습데이터를 더해서 모델 학습에 정형화 (Parameter Tying and Parameter Sharing)
위의 방법 중 이번 포스터에서는 앙상블에 대해 살펴보고자 한다.
앙상블(Ensemble)이란?
머신러닝에서 많이 사용되는 기법이다. 아무리 잘 학습된 모델이라도 데이터의 모든 부분에 강건할 수는 없다. 다양한 알고리즘들이 답을 찾아가는 과정은 모두 다르다. 즉, 하나의 잘 학습된 모델보다 여러 모델의 결과를 합치는 것의 정확도가 더 높을 것이라는 가정하에 앙상블 기법은 여러 곳에서 사용되고 있다. 기존에 잘 알려진 앙상블 모델 이외에도 해당 기법은 많은 논문과 캐글과 같은 대회에서 성능을 높이기 위해 사용된다.
위의 그림에서 각 모델이 독립적이고, 각 모델의 정확도가 80%라고 가정해 보자.
각 모델의 결과를 다수결에 따라 하나의 결과로 종합했을 때, 최종 결과의 정확도를 다음과 같이 계산할 수 있다.
$(0.8)^3 + 3*(0.8)^2 * 0.2 = 0.896 $
(전부 맞는 경우) + (두 모델만 맞고, 하나의 모델은 틀린경우가 세 가지)
즉, 모델 하나 보다는 더 높은 정확도를 기대할 수 있고, 모델이 늘어난다면 정확도가 더욱 높아질 것이라고 가정할 수 있다.
앙상블의 종류
1. 배깅, Bagging
Bagging이란 Bootstrap Aggregating의 약자로써 N개의 데이터 샘플을 복원추출(Boosting)해서 얻은 m개의 데이터 셋으로 모델을 학습하고, 학습 결과를 종합(Aggregating)해서 얻은 최종 결과를 얻는 기법으로, 앙상블 기법 중 정형화 효과가 있는 방법이다.
특징
오버피팅 방지에 도움을 줌
variance 감소
독립적인 모델 사용
2. 부스팅, Boosting
bagging이 병렬적으로 학습했다면 boosting은 순차적인 학습이다. 성능이 약한 모델을 순차적으로 학습하며, 잘 분류하지 못한 데이터에 가중치를 주어 점점 강한 모델들을 만드는 과정이다.
Ada(adaptive) Boosting
1. 학습 데이터를 샘플링하여 새로운 데이터셋 생성 → 모델 학습
2. 학습시킨 모델 평가 (validation)
3. validation 과정에서 잘 못 예측한 데이터를 학습 데이터에 추가해서 새로운 데이터셋 샘플링 (오류 데이터 가중치 부여)
4. 새 모델 학습 진행
5. 2개 이상의 모델 → voting 하여 하나의 예측값 생성 → 다시 가중치 계산하여 데이터셋 샘플링
Gradient Boosting
1. 각 step에서 손실 함수 계산(loss 계산)
2. 각 과정에서 예측값을 이용해 손실값의 gradient(미분값)를 계산하여 최적화
특징
오버피팅의 위험이 있음
Bias를 줄이며, variance 또한 줄일 수 있음
순차적 모델 연산
3. 스태킹, Stacking
각 모델의 예측값을 병렬적으로 추론하고 결과를 취합해 만든 데이터셋으로 다시 모델을 학습한다. 이를 Meta-model 또는 Meta-learner라고 하며, 이를 통해 새로운 결괏값을 얻는 방법이다.
특징
Boosting과 유사
오버피팅 가능성이 있고 Bias를 줄일 수 있음
Reference
https://www.deeplearningbook.org/
https://analyticsindiamag.com/guide-to-ensemble-methods-bagging-vs-boosting/
https://www.geeksforgeeks.org/bagging-vs-boosting-in-machine-learning/
'Deeplearning' 카테고리의 다른 글
Regularization, 정형화 - 드랍아웃 (Dropout) (2) | 2023.01.27 |
---|---|
Regularization, 정형화 - Norm 기반 Regularization (0) | 2023.01.17 |
활성함수의 필요 및 종류 (0) | 2022.12.23 |
Bias(편향) & Variance(분산) (0) | 2022.11.24 |
Generalization, 일반화 (0) | 2022.11.24 |