회사에서는 논리적인 사람이다. 데이터를 보고 판단하고, 감정을 억누르고, 회의에서 냉정한 의견을 낸다. 동료들은 "역시 이성적"이라고 한다.
집에 오면 다른 사람이 된다. 소파에 드러누워 유튜브를 틀고, 고양이를 안고, 아무 생각 없이 과자를 먹는다. 주말에 친구를 만나면 또 다른 사람이다. 농담을 던지고, 쓸데없는 말로 30분을 쓰고, 술 한 잔에 감상적이 된다.
셋 다 나다. 그런데 셋 중 어느 것이 '진짜 나'인가.
이 질문을 진지하게 고민하는 사람이 많다. "직장에서의 나는 가면이야." "집에서의 나는 나태한 거야." "친구 앞에서의 나는 오버하는 거야." 어딘가에 '본래의 나'가 있고, 나머지는 연기라고 생각한다.
머신러닝은 이 고민에 대해 완전히 다른 대답을 내놓는다.
앙상블(Ensemble)은 여러 개의 모델을 결합해서 하나의 예측을 만드는 방법이다.
원리는 간단하다. 모델 하나가 100점짜리 답을 내기는 어렵다. 어떤 모델이든 편향이 있다. 특정 패턴은 잘 잡지만, 다른 패턴은 놓친다. 나무를 잘 보는 모델이 있고, 숲을 잘 보는 모델이 있다. 빠르지만 대충인 모델이 있고, 느리지만 정밀한 모델이 있다.
그래서 연구자들은 하나의 완벽한 모델을 만드는 대신, 서로 다른 모델 여러 개를 동시에 돌린다. 각각의 답을 모아서 종합한다. 투표를 시키거나, 가중 평균을 내거나, 상황에 따라 다른 모델의 답을 채택한다.
결과는 놀랍다. 개별 모델 중 어떤 것도 1등이 아닌데, 앙상블은 거의 항상 1등을 이긴다. 캐글(Kaggle) 같은 데이터 과학 경진대회에서 상위권은 거의 예외 없이 앙상블이다. 단일 모델로 우승하는 경우는 드물다.
왜 그런가. 각 모델이 저지르는 실수가 다르기 때문이다. 모델 A가 틀리는 문제를 모델 B는 맞히고, B가 놓치는 걸 C가 잡는다. 실수가 겹치지 않으면, 종합하면 실수가 상쇄된다. 완벽한 모델 하나보다, 불완전한 모델 여러 개가 모이면 더 낫다.
다시 아까 질문으로 돌아오자. 직장의 나, 집의 나, 친구 앞의 나 — 어느 것이 진짜인가.
앙상블의 관점에서 보면, 질문 자체가 틀렸다. 셋 다 진짜다. 그리고 셋 다 불완전하다. '진짜 나'는 셋 중 하나에 있는 게 아니라, 셋이 합쳐진 결과에 있다.
직장에서의 논리적인 나만으로 인생을 살면 어떻게 될까. 효율적이겠지만 건조하다. 감정을 계속 억누르면 어느 순간 터진다. 번아웃이 오거나, 갑자기 모든 것이 의미 없게 느껴지거나.
집에서의 나태한 나만으로 살면? 편하겠지만 아무것도 이루지 못한다. 소파와 과자와 유튜브의 무한 루프. 한 달쯤은 행복하지만 석 달이면 자기혐오가 온다.
친구 앞의 사교적인 나만으로 살면? 즐겁겠지만 깊이가 없다. 관계는 많은데 혼자 있을 때 공허하다.
어느 한 모델도 인생 전체를 커버하지 못한다. 커버할 필요도 없다. 각각이 잘하는 영역이 다르니까.
앙상블에는 여러 종류가 있다. 대표적인 세 가지를 보자.
배깅(Bagging)은 같은 유형의 모델을 여러 개 만들되, 각각 다른 데이터를 학습시키는 방법이다. 랜덤 포레스트가 대표적이다. 결정 트리 하나는 불안정하다. 데이터가 조금만 바뀌어도 결과가 확 달라진다. 하지만 결정 트리 수백 개를 만들어서 다수결을 하면 안정적인 답이 나온다.
인생에서 이건 뭘까. 같은 문제를 다른 맥락에서 여러 번 경험하는 것이다. 이직을 고민할 때, 어제의 나와 오늘의 나와 일주일 뒤의 나는 조금씩 다른 답을 낸다. 컨디션이 다르고, 그 사이에 새로운 정보가 들어오고, 감정의 온도가 다르다. 한 번의 판단을 믿지 말고, 여러 날에 걸친 판단을 종합하라. 월요일의 분노와 금요일의 관대함 사이 어딘가에 실제에 가까운 답이 있다.
부스팅(Boosting)은 다르다. 순차적으로 모델을 만들되, 앞선 모델이 틀린 부분에 집중해서 다음 모델을 학습시킨다. 첫 번째 모델이 쉬운 문제는 맞히지만 어려운 문제를 틀렸다면, 두 번째 모델은 그 어려운 문제에 가중치를 둔다. 세 번째 모델은 둘 다 틀린 문제에 집중한다.
인생에서 부스팅은 "반복되는 실패에서 배우는 것"이다. 첫 연애에서 배운 건 상대의 말을 끝까지 듣는 것이었다. 두 번째에서 배운 건 듣기만 해서는 안 되고 내 감정도 말해야 한다는 것이었다. 세 번째에서 배운 건 말하되 타이밍이 있다는 것이었다. 매번 같은 실수를 하는 것 같아도, 실수의 지점이 조금씩 달라지고 있다면 부스팅이 작동하고 있는 것이다.
스태킹(Stacking)은 가장 정교하다. 완전히 다른 유형의 모델들을 조합하되, 상위에 '메타 모델'을 하나 더 둔다. 이 메타 모델은 하위 모델들의 답을 보고 최종 판단을 내린다. "이 상황에서는 모델 A의 의견을 더 신뢰하고, 저 상황에서는 모델 B를 따르겠다"는 판단을 하는 모델이다.
인생에서의 스태킹은, 자기 안의 여러 목소리를 듣되 최종 결정을 내리는 상위 자아를 두는 것이다. 직장의 나는 "받아들여"라고 하고, 집의 나는 "관둬"라고 하고, 친구 앞의 나는 "일단 술이나 마시자"라고 한다. 이 세 의견을 다 듣고, "지금은 직장의 판단이 더 정확할 상황이다"라고 메타 판단을 내릴 수 있으면 — 그게 성숙이다.
흥미로운 건, 앙상블에서 다양성이 핵심이라는 점이다.
모델 다섯 개가 전부 같은 방식으로 학습했으면 앙상블 효과가 없다. 같은 데이터, 같은 알고리즘, 같은 편향. 다섯 개를 합쳐도 하나와 다를 바 없다. 앙상블이 힘을 발휘하려면 모델들이 서로 달라야 한다. 다른 알고리즘, 다른 데이터, 다른 관점.
사람도 마찬가지다. 한 가지 역할만으로 30년을 산 사람은 그 역할에서는 전문가지만, 인생 전체로 보면 취약하다. 평생 엔지니어로만 살았는데 은퇴하면 뭘 해야 할지 모른다. 아이 엄마로만 10년을 살았는데 아이가 독립하면 자기가 누군지 모르겠다.
반대로, 여러 역할을 해본 사람은 어느 한 역할이 무너져도 버틸 수 있다. 직장을 잃어도 취미에서 정체성을 찾고, 연인과 헤어져도 친구 관계에서 회복한다. 이직이 잦으면 불안정해 보이지만, 다른 관점에서 보면 여러 모델을 학습시킨 것이다.
앙상블의 핵심 교훈: 불완전한 것들의 조합이 완전함을 이긴다.
여기서 한 가지 오해를 짚고 가자. "여러 모델을 쓴다"가 "여러 사람이 되라"는 뜻은 아니다.
앙상블의 각 모델은 독립적이지만, 최종 출력은 하나다. 의견이 여러 개라도 행동은 하나다. 직장의 나와 집의 내가 싸워서 아무것도 못 하면 그건 앙상블이 아니라 내전이다.
앙상블이 제대로 작동하려면 통합 메커니즘이 있어야 한다. 투표든, 가중치든, 메타 모델이든. 나의 여러 면을 인식하되, 최종 결정은 하나로 수렴시킬 수 있어야 한다.
"나는 모순적인 사람이야"라고 말하는 건 쉽다. "나는 모순적이고, 그 모순들을 상황에 따라 적절히 조합할 줄 안다"까지 가야 앙상블이다.
마지막으로 하나만 더. 앙상블에서 자주 쓰이는 기법 중에 '드롭아웃과 앙상블의 관계'가 있다. 13장에서 다룬 드롭아웃 — 학습할 때 뉴런 일부를 무작위로 끄는 기법 — 이 사실 암묵적 앙상블이라는 연구가 있다. 매번 다른 뉴런 조합으로 학습하니까, 결과적으로 수많은 서브 모델을 동시에 학습시키는 것과 같다는 것이다.
13장에서 "일부러 쉬어야 성능이 오른다"고 했다. 21장에서는 한 발 더 나간다. 쉬는 것이 다른 나를 깨우는 일이기도 하다는 것. 직장인 모드를 끄면 취미인 모드가 학습할 기회를 얻는다. 부모 모드를 잠시 내려놓으면 연인 모드가 활성화된다.
하나를 끈다고 멈추는 게 아니다. 하나를 끄면 다른 하나가 켜진다. 그게 앙상블의 작동 방식이다.
자, 여기까지 21개의 장을 걸어왔다.
경사하강법부터 앙상블까지. 한 걸음씩 내려가는 법, 배우는 속도를 조절하는 법, 과적합에 빠지지 않는 법, 탐색과 활용의 균형, 실패를 데이터로 쓰는 법, 관계에서 중요한 것에 집중하는 법, 쉬는 법, 생각을 펼치는 법, 환경이 바뀔 때 적응하는 법.
그리고 마지막 장의 메시지는 이것이다.
하나의 모델로 살지 마라. 당신은 여러 개의 불완전한 모델로 이루어진 앙상블이다. 어떤 모델은 강하고 어떤 모델은 약하다. 어떤 모델은 아직 학습 중이고 어떤 모델은 이미 쓸모를 다했다. 그 전부가 당신이다.
완벽한 하나가 되려고 하지 마라. 불완전한 여럿을 품어라. 그 조합이, 어떤 단일 모델보다 나은 답을 낼 것이다.