[코칭스터디 Let's AI 2024 스터디] 3주차 미션: 경사하강법, Cross Validation, Bais-Variance 조절을 통한 학습 정확도 높이는 방법
💡 경사하강법에 대해서 💡
미분이란?
: 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구. 최적화에서 사용하는 기법
💡 왜 딥러닝은 층이 여러개인가? 💡
층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 효율적으로 학습이 가능하다.
즉, 적은 노드를 가지고도 복잡한 모델 학습을 시킬 수 있다.
💡 최적화 주요 용어 💡
모델의 성능 평가를 위해 데이터를 training set, test set으로 분할한다. 모델을 학습시킬 때는 절대 test 데이터를 사용할 수 없기에, 모델의 파라미터를 추정하고 설정하는 과정에서 validation data이 필요하다. 즉 train data로 학습시키고, validation data로 하이퍼파라미터를 튜닝하고, test data로 최종 모델 성능을 평가한다.
training data를 k등분하고 validation set을 여러번 바꿔가며 반복적으로 시행하는 방법을 k-fold cross validation이라고 한다.
출처:https://losskatsu.github.io/machine-learning/cross-validation/#%EC%B0%B8%EA%B3%A0%EB%A7%81%ED%81%AC
지도학습 알고리즘이 훈련데이터의 범위를 넘어 지나치게 일반화하는 것을 예방하기 위해 두 종류의 오차(편향오차, 분산오차)를 최소화할 때 겪는 문제이다.
편향은 학습 알고리즘에서 잘못된 가정을 했을 때 발생하는 오차이다. 실제로 데이터는 3차항 관계를 가지고 있는데 모델을 1차항으로 가정하게 되면 예측치와 실제값의 차이가 커지게 되므로 편향값이 커지게 된다. 편향값이 커지게 되면 모델이 데이터를 잘 설명하지 못하는 상태이므로 Underfitting 문제를 발생할 수 있다.
분산은 훈련데이터에 있는 작은 변동에 모델이 과도하게 민감하기 때문에 발생하는 오차이다. 만약 데이터가 약 10차항의 관계를 가지고 있다고 가정하면, 이때 모델이 지나치게 민감하면 10차항 관계를 가진 데이터를 설명하기 위해 모델 또한 매우 복잡해질 것이고 분산값이 매우 커질 것이다. 자유도가 높은 모델은 높은 분산값을 가지기 쉬워 훈련데이터에 Overfitting 문제를 발생시킬 수 있다.
통계적으로 학습방법이 좋은 테스트 데이터 성능을 내기 위해서는 낮은 variance 와 낮은 bias의 제곱이 필요하다. 이것의 관계는 trade off인데 이유는 아주 낮은 bias를 가진 방법을 얻는 것은 쉽지만 그에 따른 variance가 높을 수 있다.
💡 Bias 와 Variance 조절을 통한 학습 정확도 향상 방법 💡
- 학습데이터 양 , feature set 수정
- 학습된 모델 내에서 조율
ex. kNN → k값 높을수록 bias 높아지고, variance 낮아짐
- 적절한 학습 모델 사용
- mixture, ensemble learning 사용
출처:
https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
https://blog.naver.com/hisukdory/220748009009
💡 앙상블 기법 💡
앙상블은 여러 모델을 이용해서 조화시키는 것으로 설명할 수 있다.
여러 모델의 장점을 모아 전반적인 오류를 줄이고 각 모델의 한계를 극복할 수 있다.
100 중 랜덤으로 뽑고, 랜덤으로 뽑고 ,여러개의 모델을 만들
배깅은 bootstrap을 생성하고, 합쳐서, 여러 모델들의 예측값을 averaging or voting 하는 것, Booststrap Aggregating 줄임말이다.
부스팅은 여러 모델을 순차적으로 학습해서 이전 모델 결과를 바탕으로 다음 모델 학습하는 기법.
하나하나의 모델들을 독립적으로 돌아가는게 아니라 weak learners 들의 모아 strong learner을 만듦.
focuses on those specific training samples that are hard to classify, a strong model is built by combining weak learners in sequence where each learner learns from the mistakes of the previous weak learner. 부스팅은 정확도가 높게 나타나나 그만큼 outlier에 취약하기도 하다. AdaBoost, XGBoost, GradientBoost 등의 다양한 모델이 있다.
출처: https://wikidocs.net/160515
https://swalloow.github.io/bagging-boosting/
[혼공머] 6장 비지도학습 (1) | 2024.09.24 |
---|---|
[트리기반 XGBoost] 커플성사 여부 예측하기 (0) | 2024.07.06 |
[코칭스터디 Let's AI 2024 스터디] 2주차 미션: Norm의 개념 및 L1, L2 Norm (0) | 2024.06.03 |
[코칭스터디 Let's AI 2024 스터디] 1주차 미션: 차원의 저주, Numpy (0) | 2024.05.26 |
[혼공머] 5장 트리알고리즘 1) Decision Tree (0) | 2024.05.23 |