이번 글은 앙상블 학습에 대한 개념과 주요 전략에 대해 쉽게 이해할 수 있도록 정리해 보았다.
앙상블 ensemble, 하면 무엇이 떠오르는가?
다양한 악기가 모여 멋진 연주를 함께 만들어 가는 모습이 상상되지 않는가?
'ensemble'이라는 단어를 실제로 사전에서 찾아보면 다음과 같다.
A group of things or people acting or taken together as a whole, especially a group of musicians who regularly play together.
우리가 이번에 살펴 볼 앙상블이라는 인공지능의 학습 방법도 위 정의와 크게 다르지 않다.
사람을 예로 든다면, 한 명의 IQ 130인 사람이 혼자 문제를 푸는 것보다, 5명의 IQ 100인 사람이 함께 푸는 것이 더 좋은 결과를 낼 수 있다는 게 기본적인 앙상블 학습의 의의다.
즉, 한 단어로 말하면 '집단지성'인 셈이다.
There is No such thing as a Free Lunch!
'세상에 공짜 점심은 없다'는 표현을 들어본 적이 있을 것이다.
이 말은 1938년 6월 27일, the El Paso Herald-Post에 실린 "경제학을 여덟 단어로 표현하면(Economics in Eight Words)”이라는 글에 등장한다.
즉 선택에는 기회비용이 수반된다는 인생사 진리를 담은 말인데, 모든 경제 원리와 지혜를 축약하면 이 한 문장으로 표현할 수 있다고 했을 만큼 선택에 따른 기회비용을 결코 간과할 수 없음을 강조하고 있다.
이 표현이 머신러닝에서 유명해진 것은 1997년 발표된 『No Free Lunch Theorems for Optimization』 이라는 논문에서부터다.
결론적으로 논문에서 말하는 바는, 모든 문제(혹은 dataset)에 대해 항상 다른 모델보다 우월하거나 열등한 모델은 없다는 것이다.
언제나 최고의 모델이라고 부를 수 있는 것은 없고, 다만 주어진 문제와 그 특성에 따라 더 적절한 모델만이 있을 뿐이다.
그런데 만약 이 모델들을 조합해보면 어떻게 될까?
아래 보이는 첫 번째 그래프는 개별 알고리즘을 6개의 데이터셋에 적용했을 때 나타난 상대적인 성능을 보여준다.
y축의 성능 지표가 error이기 때문에 그래프가 낮은 곳에 위치할수록 더 뛰어남에 유의하자.
두 번째 그래프는 알고리즘들을 4가지 방법으로 각각 결합해서 얻은 앙상블 모델의 성능을 나타낸다.
x축은 6개의 데이터셋을 나타내므로 첫 번째에서 적용한 것과 동일함을 확인할 수 있다.
결과적으로 두 번째 그래프가 전체적으로 낮게 나타나면서 안정적으로 좋은 성능을 보여주고 있다.
그런데 이런 결과가 나오는 이유는 무엇일까?
그 해답은 바로 분산(variance)과 편향(bias)의 분해(decomposition) 개념에서 찾을 수 있다.
이와 관련해서는 다음에 자세히 다뤄 보도록 하고, 우선은 다음 사실에만 집중해보자.
결과적으로 모든 모델은 그 분산과 편향에 따라 아래 이미지와 같은 네 경우 중 하나에 속한다.
각각의 빨간 원이 우리가 맞춰야 하는 과녁의 중앙(정답 label)이고,
파란 점들은 우리가 쏜 화살들(각 모델이 예측한 결과 값)을 의미한다.
과녁의 중앙을 맞추기 위한 노력
우리는 지금부터 잠시 두 명의 양궁 선수를 훈련시키는 코치가 되어볼 것이다.
우리의 자랑스러운 두 선수는 모두 좋은 실력을 가지고 있지만, 치명적인 결점이 하나씩 있다.
A 선수는 더 높은 확률로 과녁의 중앙에 가깝게 활을 쏘지만, 그 범위가 넓고,
B 선수는 과녁의 중앙에서는 조금 빗나가지만, 매번 비슷한 위치로 활을 쏠 수 있다.
두 선수가 모두 과녁의 중앙을 정확하게 맞출 수 있도록 하려면 어떻게 해야 할까?
당연히 각각 다른 훈련 방식을 도입해야 한다.
A 선수에게는 조금 더 좁은 범위로 활을 쏠 수 있게 하고, B 선수에게는 더 중앙에 가깝게 활을 쏠 수 있게 하는 방법이 필요하다.
그런데 사실 알고 보니 이들은 사람이 아니라 인공지능 모델이었다. (!) ㄴㅇㄱ
A의 경우 편향은 작지만 분산은 큰 모델이라고 할 수 있고, B는 편향이 크고 분산은 작은 모델이다.
앙상블 학습은 이 모델들에게 각각 다른 솔루션을 제공함으로써 정확도를 높일 수 있도록 한다.
그 솔루션들을 자세히 알아보기 전에 잠깐 앙상블의 개념을 상기해보자.
아까 분명히 여러 개가 모여서 시너지를 낼 수 있다고 했는데, 무엇이 어떻게 모여서 어떤 시너지를 낸다는 것일까?
핵심은 다양성(Diversity)
한 퀴즈쇼에 세 팀이 참가하기로 했다. 각 팀은 모두 3명의 개인으로 구성되어 있다.
A팀은 ○○ 대학의 경영학 전공 동기들이 모였고,
B팀은 △△ 회사의 입사 동기들이,
C팀은 이 퀴즈쇼에 참여하기 위해 처음 만난, 사는 지역도, 나이도, 전공도 모두 다른 사람들이다.
이 퀴즈쇼는 기출 문제를 보는 게 의미가 없을 정도로, 문제를 내는 분야가 매우 광범위하기로 유명하다.
주어진 정보만 보고 판단할 때, 과연 어느 팀이 이 퀴즈쇼에서 우승할 가능성이 높다고 할 수 있을까?
우승을 위해서 다양한 관심사와 배경지식이 필수적이라고 본다면,
가능성이 가장 높은 팀은 C이고, 그 다음은 B, A 순서이다.
개개인이 가진 '다양한' 강점들이 서로 결합되어 가장 뛰어난 퍼포먼스를 낼 수 있기 때문이다.
이와 마찬가지로 앙상블 학습에서의 핵심은 바로 다양성을 확보하는 데에 있다.
애초에 집단지성이라는 것이 작동할 수 있는 이유는 서로 다른 개인이 모였기 때문이다.
기본적으로 어떻게 다양성을 잘 확보할 수 있는가에 대한 고민에서부터 여러 앙상블 기법이 등장하게 되었다.
배깅(Bagging)과 부스팅(Boosting)
우리가 인공지능 학습을 하려고 할 때 꼭 필요한 두 가지가 있다. 바로 데이터와 모델이다.
이들에 대해 다양성을 확보하기 위한 앙상블 학습에서의 대표적인 전략이 배깅(Bagging)과 부스팅(Boosting)이다.
- 배깅(Bagging)
먼저 데이터의 다양성을 확보하는 데 집중하는 배깅에 대해 알아보자.
Bagging은 bootstrap과 aggregating이 합성된 말이다. 즉 bootstrap을 aggregate, 합쳤다는 뜻이다.
통계학에서 bootstrap이란 중복을 허용한 resampling을 뜻한다.
다음 이미지는 bootstrap의 개념을 직관적으로 이해할 수 있다.
모든 공이 들어 있는 주머니로부터 공을 하나씩 빼서 다른 그릇에 담는데, 동시에 똑같이 생긴 공을 복제해서 원래 있던 주머니에 도로 넣어둔다.
이렇게 하면 어떤 점이 좋을까?
일단 방금 꺼냈던 공을 다시 꺼내 다른 그릇에도 담을 수 있게 된다. 다른 말로는 복원추출(sampling with replacement)이라고도 한다.
우리가 가진 데이터를 단순히 N개로 뚝뚝 잘라서 만든 샘플들보다 더 다양하게 조합한 샘플들을 만들어낼 수 있다!
이제 이 샘플들을 가지고 각각 모델을 학습시킨 후에 예측한 결과를 aggregate, 합치는 과정을 거친다.
그 과정은 대단히 민주적이고 합리적이어서 이해가 쉽다.
- 만약 우리가 풀려는 게 분류(classification) 문제라면, 각각의 분류기(classifier)가 내놓은 답들을 다수결(majority vote)로 채택한다.
- 반면 회귀(regression) 문제에 대해서는, 각 regressor가 내놓은 답들의 평균(average)을 취한다.
이렇게 여러 subset을 만들어 각각을 학습에 이용하면, 결과적으로 분산을 줄이고 과적합(overfitting)을 방지할 수 있다.
- 부스팅(Boosting)
배깅과 다르게 각 모델들이 순차적으로 학습을 하면서 다음 모델에게 영향을 미친다.
이전 모델이 예측한 결과에서 오답을 찾아 그 데이터의 가중치를 높이고, 다음 모델은 이를 전달 받아서 이번에는 정답을 맞추기 위해 노력하는 것이다.
위에서 우리가 맡아 코칭하기로 했던 두 모델을 기억하는가?
이제 우리는 각각에게 어떤 솔루션이 필요한지 말할 수 있다.
편향은 작지만 분산은 큰 A 모델에게는 분산을 줄일 수 있는 배깅(Bagging),
편향이 크고 분산은 작은 B 모델에게는 편향을 줄일 수 있는 부스팅(Boosting)이 필요하다.
다음 글에서는 더 자세한 편향, 분산의 관계와 수학적인 이해를 통해 앙상블 학습이 어떻게 구현되는지 정리하고자 한다.
아래 자료를 참고했습니다.
'공부하며 성장하기 > 인공지능 AI' 카테고리의 다른 글
하이퍼파라미터(Hyperparmeter)와 최적화(Optimization) (0) | 2021.08.18 |
---|---|
과적합(Overfitting)과 규제(Regularization) (2) | 2021.08.17 |
경사하강법(Gradient Descent)이란? (0) | 2021.07.27 |
수치 미분(Numerical differentiation)이란? (0) | 2021.07.27 |
퍼셉트론(perceptron)이란? (0) | 2021.07.21 |