P-Hacking

성과를 위한 연구인가, 연구를 위한 연구인가

by 채유나

데이터 사이언스 대학원에서 대부분의 과제는 학생이 원하는 데이터나 주제를 자유롭게 정하여 머신러닝 또는 딥러닝 모델을 훈련 시키고 그 성능을 평가하는 형태로 이루어져 있다. 머신러닝 또는 딥러닝 모델들은 데이터를 바탕으로 예측이나 분류 등의 과제를 수행할 수 있다. 예를 들어 주택의 크기, 방 및 욕실 개수, 지하철까지 거리 등 주택 정보와 주택 가격을 포함한 데이터가 있다고 하자. 이 데이터를 사용하여 머신러닝 모델을 훈련할 수 있고, 이후 주택 정보만 입력하면 훈련된 모델이 적절한 주택 가격을 예측해 주는 것이다.



나는 머신러닝 모듈에서 콩의 정보 데이터로 어떤 종류의 콩인지 분류할 수 있는 모델을 구축하는 과제를 하게 되었다. 과제는 원하는 모델 선정 및 예측 그리고 성능 평가로 구성되었다. 모델 선정은 머신러닝 모델(Decision Tree, Random Forest, Boosting)과 딥러닝 모델(Neural Networks)로 골랐다. 성능 평가의 비교 척도는 모델의 예측 정확도를 기준으로 하였다. 실험을 진행하기에 앞서 나는 딥러닝 모델이 머신러닝 모델들보다 더 성능이 좋을 것이라는 가설을 세웠다. 딥러닝 모델은 비선형 데이터를 더 잘 훈련할 수 있다고 판단했고, 그 당시는 배운 지 얼마 되지 않았을 때여서 초보자가 흔히 경험하는 이른바 '딥러닝이 최고다'라는 생각을 했기 때문이었다.


모델 훈련이 끝난 후 결과는 다섯 가지의 모델들 모두 대략 90% 내외로 높지만 비슷한 예측 정확도를 보였다. 모델들의 정확도는 차이가 1% 미만으로 굉장히 적은 수치였고, 심지어 머신러닝 모델보다 딥러닝 모델의 정확도가 0.5%밖에 높지 않았다. 딥러닝 모델이 뛰어난 성능 차이를 보일 거라 예상했던 나는 결과에 실망했다. 그리고 혹시나 결과가 달라질까 하여 추가 실험을 4회 정도 해보았다. 그랬더니 각 실험을 할 때마다 모델 별 정확도 차이가 크게 1.5%까지 보였다. 참고로 머신러닝 및 딥러닝 모델은 같은 데이터를 사용한 같은 모델이더라도 컴퓨터의 사양, 알고리즘의 무작위성에 의해 훈련마다 결과가 달라질 수 있다(물론 이런 현상을 컨트롤할 수 있는 방법이 있다). 그렇게 추가 실험 마치고 나서야 나는 깨달았다, 내가 무의식적으로 p-hacking(Data Data dredging) 을 하고 있다는 것을.


P-hacking은 통계나 머신러닝 분야에서 쉽게 볼 수 있는 현상으로 같은 데이터로 여러 번의 테스트를 거쳐 유의미한 결과를 도출한 케이스만 보고를 하는 것이다. 나는 머신러닝 모델과 딥러닝 모델의 정확도 차이를 조금이라도 크게 하여, ‘딥러닝이 머신러닝 모델보다 우수하다’를 증명하고 싶은 마음에 나도 모르게 추가 실험의 결과 중 비교적 큰 정확도 차이를 보고하려는 P-hacking을 하고 있었던 것이다. 그런데 신기하게도, 친구들도 비슷한 경험을 하고 있었다. 그들 역시 본인이 세운 가설의 타당성 확보를 위해 몇 번이고 실험을 하거나 실험 도중 모델의 종류를 바꾸는 등 결과를 그대로 받아들이는 게 아닌 본인의 가설에 맞춰 실험 결과를 도출하고자 하였다.



이런 현상은 과제뿐만 아니라 논문을 쓸 때도 연구자들 사이에서 심심찮게 볼 수 있다. 논문(論文)은 논할 론(論)의 글월 문(文)으로 말 그대로 학문 연구의 결과에 대해 자기 의견이나 주장을 정리하여 논하는 문서이다. 물론 나의 연구 결과가 가설에 맞게 성공적이고 그 결과를 뒷받침할 수 있는 방법론이 합당한 것이 가장 이상적인 케이스지만, 모든 연구가 항상 성공적이지는 않다. 그렇기 때문에 ‘A와 B를 대상으로 이러한 방법을 통해 실험을 해보았는데 성공적이지 않더라’라는 식의 논문도 충분히 가치가 있는 것이다. 그러나 학생들은 실험의 성공 여부가 논문이나 과제의 성적에 영향을 미친다는 오해를 종종 하기도 하고, 개인적 욕심 때문에 논문에는 실험의 성공적인 부분만 담고 싶어 하는 경향을 보인다. 이는 자연스레 몇 차례의 실험을 통해 성공적인 케이스만 보고하는 p-hacking라는 오류에 빠지게 되버린다.


다행히 나의 석사 논문은 가설을 입증할 수 있는 실험 결과가 도출되어 성공적으로 마칠 수 있었지만, 이런 과정을 보면서 과연 우리가 하는 것은 성과를 위한 연구인가, 연구를 위한 연구인가 라는 생각이 들었다. 최근 머신러닝 및 딥러닝 논문들만 보아도 매달 수십 편의 논문들이 쏟아져 나오고 있는데 대부분의 논문들은 기존의 모델들보다 '연구자가 제시한 모델이 더 우수하다’라는 형식의 논문들이고, 실패를 담은 논문들은 유명세를 타지 못한다. 물론 인공지능의 지속적인 발전을 위해 모델 성능 향상 및 신 모델 개발도 학계에선 중요한 과제이지만, 다양한 시도로 여러 번의 실패를 통해 성장하는 것도 중요하다고 생각한다. 데이터사이언스 분야 뿐만 아니라, 대학원을 준비하고 있는 학생들이라면 연구를 진행할 때 꼭 한 번 쯤 생각해봐야 하는 문제가 아닐까 생각해 본다.

이전 13화영국 유학 그리고 인생수업