본문 바로가기

머신러닝/[단단한 머신러닝]

추론 / 가설 / 공짜 점심은 없다.

 머신러닝을 곧이 곧대로 해석하면, 공부하는 기계-라고 생각할 수 있을 것 같습니다. 그런데, 얘들은 대체 뭘, 어떻게 공부한다는 걸까요. 이에 대한 설명에 앞서 저자는 연역(Reduction)과 귀납(Deduction)에 대해 언급합니다.

연역
   소크라테스는 인간이다
   모든 인간은 죽는다.
   따라서, 소크라테스는 죽는다,

귀납
   소크라테스는 죽었다.
   피타고라스는 죽었다.
   노가다김씨는 죽었다.
   따라서, 모든 인간은 죽는다.

 위의 예시에서 쉽게 알 수 있듯, 연역은 일반에서 특수로 추론하는 것이며, 귀납은 특수에서 일반을 추론하는 것입니다. 그렇다면 저희가 다루는 머신러닝은, 분명한 귀납적 추론으로 학습을 진행하겠네요. 다양한 샘플 데이터에 학습(Fitting)시킴으로써, 세상의 다양한 데이터에 일반화되기를 목적으로 하니까요. 그럼 이 귀납적 추론을 진행함으로써 기계는 뭘 탐구하는가. 기계가 학습을 한다-라는 것의 의미는, 샘플 데이터로 구성할 수 있는 가설공간을 해짚으면서, 샘플 데이터에 알맞는 가설을 채택하는 것이라 볼 수 있습니다. 다만 생각해보면, 우리가 가진 데이터는 언제나 그저 샘플입니다. 샘플 데이터를 사용한 학습이 완전한 일반화가 가능하다는 보장도 없으며, 오히려 노이지(Noisy)한 데이터라면, 그 자체로는 전혀 도움이 되지 않겠죠. 또는 샘플 데이터의 공간이 느슨하여, 샘플 데이터 내에서 성립하는 가설이 굉장히 다양할 수도 있습니다. (동시에 지금부터 이런 공간을 Version space라고 칭하도록 하겠습니다.)

 이렇게 다양한 가설이 존재하게 되면, 저희는 귀납적 편향의 문제에 마주칩니다. 훈련 데이터에서는 나름 조건을 만족했던 가설들인데, 검증 데이터에서는 각기 다른 성능을 낼 것이 당연하겠지요. 그럼 저희는 자연스레 고민합니다. '그래서 어떤 가설이 제일 좋은건데?'

 먼저 오컴의 면도날-이 있습니다. 아시는 것처럼, 선택지가 너무 많을 때는, 가장 간단한 것을 선택하면 됩니다. 물론, 이 원칙이 엄밀한 수학정 증명에 기반을 두는 것도 아닐 뿐더러, 어떤 것이 더 간단한지 판단하는 것 조차 쉽지 않습니다. 더 나아가, 조금 더 생각을 해보면, 결국 어떤 가설 하나를 채택하면, 그 채택에 더 들어맞는 데이터셋과, 덜 들어맞는 데이터셋이 생성됩니다. 또는 생성될 수 있습니다. 이러한 생각을 조금 더 연장하면 공짜 점심 정리(No Free Lunch Theorem, NFL)에 마주하게 됩니다. 이 정리의 핵심은, 결국 어떤 가설을 채택하든 기대 성능은 다 동일하다는 겁니다. 모든 가설들이, 그놈이 그놈이다-라는 거죠. 다만, NFL의 가정 중 하나는, 모든 문제가, 모든 케이스가 각각 동일하게 발생하다-라는 점인데, 사실 이게 현실에서는 거진 없습니다. 때문에 '머신러닝 뭐 아무것도 없는 놈이구나' 할 필요는 없다고 말하네요. 다시, '그래서 어떤 가설이 제일 좋은건데?' 에 대한 답을 정리해봅시다. NFL에 따라, 모든 잠재적인 문제를 고려하면, 그놈이 그놈이다! 다만, 우리가 마주하는, 그리고 마주칠 문제는 (아마도) 한정되있습니다. 저희는 이런 특정한 문제에 초점을 맞추고, 이를 잘 해결하기 위한 알고리즘을, 가설을 채택해야합니다.