경사하강법 & 앙상블학습
경사하강법(gradient descent)
손실 함수가 최솟값이 될 때 매개변수 값 즉, 최적의 매개변수를 학습 시 사용하는 방법
함수의 기울기(경사)를 구하고 경사의 반대 방향(경사의 절댓값이 낮은 쪽)으로 이동시켜 극값에 이를 때까지 반복 -> 손실 함수 J를 각 인풋변수에 대해서 편미분을 진행 -> 편미분한 결과식에 현재 위치의 좌표를 대입하여 좌표를 만들면 점의 좌표를 알 수 있습니다.
이때의 수식은 다음과 같습니다. 이동거리는 gradient의 크기와 비례한다는 점을 이용합니다.
- 발생 가능한 문제 (step size)
이를 사용하기 위해서는 적절한 step size를 설정하는 것이 중요합니다. 너무 크게 설정하면 빠르게 수렴할 수 있지만 최소 값을 계산하는 방법으로 수렴하지 못하고 함수 값이 계속 커지는 방향으로 최적화가 진행될 수 있고 발산할 수 있습니다. 너무 작으면 최적의 X값을 구하는 데 시간이 오래 걸린다는 단점이 있습니다. 이는 아래의 그림과 같이 설명할 수 있습니다.
- 발생 가능한 문제 – local minima
gradient descent 알고리즘을 시작하는 위치는 매번 랜덤하기 때문에 어떤 경우에는 local minima에 빠져 계속 헤어나오지 못하는 경우도 생깁니다. 이는 얻고 싶은 최솟값, global minimum이 아닌 local minima에 빠지기도 한다는 문제가 생깁니다.
이와 같은 문제를 해결하기 위해 모멘텀(momentum)을 사용해 기울기에 관성을 주어 작은 기울기는 넘어가서 global minimum을 찾도록 하는 방법이 있습니다.
앙상블학습(Ensemble Learning)
- 앙상블학습: 여러 개의 분류기를 생성하고 그 예측을 결합하여 성능을 개선하는 학습 방법
1. Voting : 여러 종류의 분류기(model)가 투표를 통해 최종 예측 결과를 결정하는 방법입니다.
- hard voting: 다수결을 따라가는 방식
- soft voting: 각 레이블의 예측 확률의 평균으로 최종 분류를 진행하는 방식
2. Bagging(Bootstrap Aggregating) : 각각의 분류기가 같은 알고리즘이지만 데이터샘플링을 바꾸며 진행하는 방법입니다. 즉, 하나의 모델을 다양하게 학습시키는 방법입니다. 이는, 복원 랜덤 샘플링방식으로 전체 데이터 중 일부분을 뽑는 Bootstrap과 집계의 Aggregating을 한다는 개념입니다. Bagging의 대표적인 알고리즘의 예가 랜덤포레스트(RandomForest)입니다. 랜덤포레스트는 비교적 빠른 수행속도를 가지며, 다양한 영역에서 높은 예측 성능을 보이고 기반이 되는 알고리즘은 의사결정트리(DecisionTree)입니다
- 배깅을 사용하는 이유는 bias를 유히자며 variance를 줄이기 위해서입니다.
3. Boosting : 여러 분류기가 순차적으로 학습을 수행하되 앞에서 학습한 분류기가 예측이 틀린 데이터에 대해서는 가중치를 부여하면서 학습과 예측을 진행하는 방법입니다.
즉, 전 모델에서 좋은 결과를 내지 못한 것에 가중치를 주어 성능을 높이는 방식입니다. 대표적인 기법은 AdaBoost(Adaptive Boosting)과 GBM(Gradient Boosting), XGBoost, CATBoost, LGBM 등이 있습니다.
여기서 GBM에서 사용되는 가장 핵심적인 방법이 위에서 다룬 gradient descent입니다.