티스토리 뷰

우연히 Binary Ensemble Neural Network란 논문을 읽었는데 바이너리 네트워크에 앙상블이 아주 좋다고 강조했다. 이 기회에 앙상블에 대해 간단하게 알아보고 넘어가려고 한다. 이 글은 아래의 몇가지 서술을 이해하는 것을 목적으로 한다.


1)bagging은 병렬적이며 빠르고, boosting은 직렬적이며 상대적으로 느리다.

2)bagging은 모델의 variation은 줄일 수 있으나 bias는 줄이지 못하고 boosting은 둘 모두를 줄일 수 있다.


1. 앙상블기법의 핵심

앙상블 기법은 weak learner를 잘 조합하여 strong learner를 만드는 것을 목표로 한다. 즉 성능이 그리 좋지 않은 모델들을 모아서 성능이 좋은 모델을 하나 만드는 것이다. 현실에서 각각의 능력을 가진 팀원들이 모여서 개인으로서는 할 수 없는 일을 해내는 것이 앙상블이다.


2. 앙상블기법에는 대표적으로 baggingboosting이 있다

-bagging은 기본 데이터셋을 샘플링하여 n개의 데이터셋을 만들어서 n개의 모델을 학습시켜 최종 결정을 하는 모델이다. 샘플링을 마치고 나면 n개의 모델이 독립적으로 동시에 각각의 데이터셋을 학습할 수 있으므로 속도가 빠르다. 이 때문에 병렬적이라고 이야기한다.


-boosting에서는 첫번째 모델이 기본 데이터셋을 그대로 학습을 한다. 그 다음 두번째 모델은 전체 데이터를 학습하되 첫번째 모델이 에러를 일으킨 데이터에 더 큰 중점을 두고 학습을 진행한다. 세번째는 앞의 두 모델이 힘을 합쳐도 맞추지 못한 데이터에 중점을 두고 학습을 진행한다. 앞 모델의 학습이 끝나야 뒷 모델이 그 결과를 기반으로하여 가중치를 결정하고 학습을 할 수 있기 때문에 순차적으로 학습을 해야한다. 이 때문에 직렬적이라고 이야기하며 상대적으로 속도가 느리다.


-예를 들면 bagging은 10000개의 데이터를 2000개씩 5조로 나누어 5개의 모델이 병렬로 학습을 진행하며 boosting은 5개의 모델이 모두 10000개의 데이터를 학습하되 어느 데이터를 중점으로 학습할지에 차이가 있고, 그 결정은 앞 모델들의 학습결과에 기반하여 결정한다.


*마지막 의사결정은 softmax값을 평균 내거나, 분류 결과를 투표를 통해 결정한다

*bagging은 bootstrap aggregating의 약자이다.

 

3. 모델biasvariation(편의상 아래에서는 task는 classification이라고 생각하고 서술)

-알고리즘의 bias가 크다는 것은 모델이 정상적으로 학습을 마친 후 정확도가 기대치보다 떨어지는 것을 말한다. 이는 under fitting이라고도 생각할 수 있다. 구체적으로는 이상적인 decision boundary에 비해 지나치게 단순한 decision boundary(예를 들어 직선)를 사용한 경우이다.


-알고리즘의 variation이 크다는 것은 정상적으로 학습을 마친 후 새로운 데이터셋에 대해서는 그 결과가 매우 다르게 나오는 것을 이야기한다. 이는 overfitting이라고 생각할 수 있다. 구체적으로는 이상적인 decision boundary보다 지나치게 복잡한 decision boundary(복잡한 곡선)를 사용한 경우이다.


-예를 들어보자, 이상적인(사람이 했을 때) 정확도가 99% task가 있다고 해보자. 어떤 알고리즘이 Training set에 대해 정확도가 80%, test set에 대해서는 79%가 나왔다, 그러면 이 알고리즘은 성능은 잘안나오지만(bias는 크지만) 데이터셋이 달라져도 어느정도 성능을 유지하는(variation이 작은) 알고리즘이다. 만약 training set에 대해 99%가 나오지만 test set에 대해 80%가 나오면 성능은 잘나오지만(bias는 작지만) 특정 데이터셋에 오버피팅 되어 데이터셋에 따라 성능격차가 큰(variation이 큰) 알고리즘이다.


-앤드류응님은 training set에서 정확도가 잘나오는지를 보고 bias가 적절한지를 판단한 다음, test set general하게 적용이 되는지를 통해 variation이 적절한지를 판단하라고 했다. 그리고 bias는 네트워크를 더 깊거나 더 복잡하게, 혹은 최적화 방법을 다르게 해서 해결 가능하고, variation도 네트워크 복잡도를 늘려서 해결해도 되나 가장 좋은 방법은 data의 갯수를 늘리는거라고 했다. 일반적으로는 regularization방법을 쓴다고 한다.


*모델은 결국 알고리즘이다, 위에서 서술한 bias와 variation은 ‘알고리즘에 대한 것임을 명심하자

*데이터셋의 퀄리티를 이야기할 때도 bias variation에 대한 개념이 등장하는 듯 하다.


4. 대표적인 그림을 통해 더 잘 이해해보자


과녁판의 빨간색 중심부분이 모델의 목표구역이다, 파란색점은 특정 데이터를 모델을 통해 맵핑한 결과이다. 만약 파란색점을 성공적으로 빨간구역에 맵핑한다면 이 알고리즘은 정확한 결과를 내놓은 것이다. 


High variance, low bias한 모델의 경우를 보자, 분명 일부 데이터는 정확하게 빨간구역으로 맵핑되었다. 하지만 많은 데이터가 빨간구역을 벗어났다. 모델을 너무 tight하게 학습하여 데이터가 조금만 변해도(예를 들어 노이즈로 인해) 모델이 매우 다른 결과를 내놓았기 때문이다. 


Low variance, high variation한 모델의 경우를 보자, 이번에는 모델이 매우 안정적인 결과를 내놓는다. 데이터가 달라도 비슷한 구역으로 맵핑한다. 하지만 이번에 문제는 틀린 곳으로 맵핑한다는 것이다. 아무리 꾸준하더라도 모두 틀린 곳에 가있다. 이는 데이터 변화에는 안정적이지만 학습을 너무 rough하게 하여 애초에 모델성능이 안좋다.


-결과적으로 모델의 에러는 크게 보아 bias와 variation으로 구성된다. bias만 낮으면 어느 때는 좋다가도 어느 때는 나쁘다. 상황에 따라 급변하는 상대를 신뢰하기는 어렵다. variation만 낮으면 궁극적으로는 좋은 결과를 기대하기가 힘들다. bias와 variation이 모두 낮아야 좋은 모델이다.

 


딥러닝 이전 머신러닝에서는 bias와 variance를 동시에 줄이기가 쉽지 않았다고 한다. 때문에 둘의 trade off를 고려하여 둘을 합하였을 때 최저점을 찾는 것을 목표로 했다고 한다. 앤드류응님은 딥러닝은 비교적 쉽게 bias와 variance를 동시에 줄일 수 있다고 말씀하신다. 실제로 해봐도 그런거 같다.


위 그림에서 x축은 모델 complexity이다, 즉 오른쪽으로 갈수록 모델은 복잡해지고, 오버피팅의 가능성이 높아지며 bias는 낮아지지만 새로운 데이터에 대해 취약해진다(variation이 높아진다). 왼쪽으로 갈수록 모델은 단순해지지만 기본데이터조차 제대로 맞추지 못한다(bias가 높아진다).


5.bagging,boosting과 bias, variation 

아래는 순전히 직관정도만 심기 위해 크게 보아 틀리지 않는 정도의 선에서 적은 것이다, 보다 정확한 내용은 수학적으로 들어가야할 것 같다. 특히 경우에 따라 bagging도 bias를 개선할 수도 있을 것 같다


-bagging은 데이터셋을 선별적으로 학습한다, 하지만 여전히 각각의 모델은 모든 data를 동등하게 대한다. 때문에 못알아보던 data를 알아보게 되지는 않는다. 다만 여러개의 모델의 평균을 통해 최종결과를 얻기 때문에 그 결과가 안정적이다. 


-boosting에서 각각의 모델은 feature를 동등하게 대하지 않는다. 못알아보던 feature를 점점 더 중요하게 여기며 가면 갈수록 그것만 공략하게 된다. 뒷모델은 앞에서 잘알아보는 feature는 고려하지 않는다, 이미 그 feature를 잘인식하는 model은 앞에 많다. 그 feature는 틀리더라도 앞에서 틀린걸 해결하는게 중요하다. 때문에 모델의 기본적인 정확도, bias가 개선된다. 마찬가지로 여러 모델이 최종결과를 결정하기 때문에 그 결과가 안정적이다.



*수정 할 내용이 있으면 댓글에 남겨주세요, 환영하고 환영합니다.



참고:
-https://www.slideshare.net/freepsw/boosting-bagging-vs-boosting
넓고 간략하게 잘정리되어 있습니다.
-유튜브 앤드류응님의 딥러닝 강의

부트스트랩 이면에 있는 아이디어는 경험적 분포empirical distribution에서4 샘플링하여 새로운 샘플을 생성하는 것입니다. 여담으로 부스트랩이라는 단어는 “to pull oneself up by one’s bootstraps”에서 유래되었습니다.

약 1900년대 “to pull (oneself) up by (one’s) bootstrap”은 불가능한 작업을 상징하는 것으로 사용되었습니다(Steels의 “Popular Physics”(1988) 교과서의 1장 마지막에 “실용적 질문들” 중 “30번. 왜 사람은 자기 신발 끈을 잡아당겨 스스로를 들어 올릴 수가 없는가?”이 있습니다). 1916 년에 의미가 확장되어 “힘들게 혼자의 노력으로 헤쳐나가다” 라는 뜻이 포함되었습니다. “컴퓨터의 운영시스템을 로딩하는 고정된 명령”(1953년)이라는 의미는 처음 로딩되는 프로그램이 자기 자신과 나머지를 구동시킨다는 개념으로 부터 왔습니다. (출처: 온라인 어원 사전)



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함