Andrew Ng이 틀린 사례 – 2.빅데이터는 대용량 데이터다

1097

시리즈 글 1번 Andrew Ng이 틀린 사례 – 1.딥러닝이 우월하다? 에서 정리했던대로, 딥러닝이라는 계산법이 장점인 경우는 일부의 데이터 셋에 불과하다.

  • 같은 프레임에 끼워넣은 이미지 인식,
  • 같은 문법체계 위에 작동하는 자연어 처리,
  • 같은 규칙으로 전략적 선택을 하는 바둑 같은 게임

같은 데이터가 아니면 딥러닝 계산법은 별로 장점이 없는데, 저 위의 그래프를 보면 Amount of data가 늘어나면 무조건 Performance가 증가하는 계산법이 딥러닝이라고 해 놨다.

Amount of data가 증가하는걸 빅데이터 시대가 왔기 때문이라고 언급하는 부분도 있는데, 빅데이터 관련된 주장도 틀려도 보통 틀린게 아닌, 완전히 틀린 설명인데, 하나씩 하나씩 지적해보자

 

1. Tree모델들의 한계 – 데이터가 많아봐야 별 수 없다

데이터 사이언스를 제대로 이해하지 못한 모든 사람들의 공통점이 하나 있다. 무조건 뭐든지 많으면 많을수록 좋겠지, 그러니까 데이터도 많으면 많을수록 좋겠지라고 생각한다.

Optimization을 최고치까지 하고 싶다는 욕심을 충족시키려면 Sample 데이터가 아니라 Population 데이터를 갖고 오면 된다. 근데, 실무에서 Population 데이터로 작업할 수는 없을테니 보통은 좀 큰 Sample을 쓰면 작은 Sample을 쓰는 것보다 대표성이 높을 것이라는 믿음을 가지게 된다.

여기서 하나 물어보자. 선거 여론조사할 때 전 인구를 대상으로, 최소한 투표 의지가 있는 인구 전체를 대상으로 여론조사를 해야 정확하지 않을까? 근데 왜 1,004명만 조사하지?

1,004명말고 2,008명이나 10,040명 처럼 숫자 늘리면 엄청나게 더 정확해지지 않나?

비용 대비 효과가 미미하니까 1,004명만 쓴다고 하는 여론조사 전문 기관의 표현을 그대로 빌려오면, Sample 숫자를 더 늘린다고 정확도가 현격하게 올라가는게 아니다. 제대로 된 Sample만 뽑았으면 충분히 높은 정확도를 보여줄 수 있다.

괜히 정확도 더 높이려다가 (Optimization을 최고치로 올리겠다고 하다가) 머신러닝 초심자들도 알고 있는 Overfitting에 직면하기 쉽다. Bias가 없는 샘플 데이터를 추가로 뽑는다는게 그렇게 만만한 일은 아니거든.

데이터가 추가될수록 Parameter의 미세조정이 가능한 Regression 계열 모델들의 상황도 이런데, 일정 수준 이상의 데이터가 입력되면 Graph 모양 자체가 사실상 바뀌지 않게 되는 Tree 모델들은 어떨까?

실제로 Tree 기반의 모델들이 Ensemble 모델링의 주력이 되는 가장 결정적인 이유가,

  • 데이터 셋의 크기를 일정 사이즈 이상으로 늘려봐야 Graph 모양이 더 이상 바뀌질 않고,
  • 약간만 다른 데이터를 써도 모델이 휙휙 바뀌(는 가능성이 매우 높으)니까

데이터를 여러 셋으로 쪼개서 Heterogeneous model들을 다수 뽑아낼 수 있기 때문이다. 그런데, 그런 Heterogeneity도 한계가 있어서, 어지간히 많이 뽑고나면 그 다음부터는 의미가 별로 없다. DNA조합으로야 100억의 다른 인구를 뽑아낼 수 있을지 몰라도, 여러분이 다루는 기껏해야 수백개의 변수들로 만들어 낼 수 있는 Heterogeneity는 그렇게 크지 않다.

말을 바꾸면, Tree 기반 모델을 쓰고 있으면 데이터가 많아서 얻을 수 있는 이익이 Regression보다 더 제한적이다. 실제로 계측형 변수를 이용한 거의 대부분의 작업에서 Tree는 Regression보다 열등한 모델이기도 하고.

 

2. Boosting 모델들의 한계 – Outlier 하나가 모델을 망친다

Tree 기반 모델들은 Stand-alone으로는 거의 못 쓰는 모델이다. 보통은 Tree 구조를 이용해서 데이터의 구간별 효과를 검증하거나, 아니면 Ensemble 형태로 쓴다.

Ensemble 중 하나인 Boosting 모델들은 Overfitting을 제거해주는 장치가 굉장히 제한적인데, Neural Network에도 이 문제가 그대로 드러난다.

(Source: 파비클래스 강의내용 일부)

위의 NN모델이 열심히 “학습”하며 한번의 계산이 돌 때마다 정확도가 1%씩 올라가는걸 흐뭇한 미소를 지으며 화면을 주시하는 어느 공학도를 상상해보자.

그러다 갑자기 위의 그래프처럼 정확도가 엄청나게 뚝 떨어질 때가 있다.

Outlier 몇 개 때문에 모델이 엄청나게 꼬였기 때문인데, 저 꼬인걸 모델은 스스로 풀어내지 못한다. 운이 엄청 좋은 경우가 아니라면.

결국 위의 그래프처럼 모델은 영원히 Un-learn 상태로 계산비용만 쓰게 된다. Boosting이 가진 문제를 Neural Net이 그대로 직면하게 되는 가장 단순한 예시 중 하나다.

실제로, 노이즈가 많은 데이터 일수록 신경써야하는 데이터 전처리는 많아질 수 밖에 없다. 엄밀한 패턴이 주기적으로 반복되는 데이터들이 아니라면, 데이터가 많아질수록 노이즈가 많아져서 데이터 전처리에 대한 고민이 늘어나는 것이 상식이다.

말을 바꾸면, 딥러닝 계산법은 데이터 전처리마저 싹 다 해 주는 계산법이 아니니까, Amount of data가 늘어난다고 딥러닝의 Performance가 더 올라간다는 이야기는 패턴이 강한 데이터 한정이라는 결론을 얻을 수 있다.

어떤 데이터가 그런 데이터냐고? 1편 글에서 쓴대로 이미지 인식, 자연어 처리, 전략적인 게임 같은 곳에 국한된다.

 

나가며 – Andrew Ng이라고 다 맞는게 아니다

이번 시리즈 1,2번 글은 Andrew Ng 뿐만 아니라, 알파고 이후 지난 5년간 공학도들이 줄곧 주장한 빅데이터/딥러닝에 대한 논리적인 반박이다. 파비블로그가 3년간 줄곧 주장해왔던 내용이기도 하다. 알파고 이후 지난 5년간 수많은 돈이 투입되었지만 정작 패턴 데이터가 아닌 모든 경우에 딥러닝이라는 계산법으로 성과가 없는 이유이기도 하다.

한 때는 Andrew Ng이 홍보를 위해서 진실을 적당히 비틀었다고 생각했었는데, 이번 글을 쓰기 위해 강의 영상, 발표자료, 논문 등등을 종합 점검해봤을 때, 저 위의 그래프는 일반인에게 설명하기 위해 정확도를 낮춘 정보가 아니라, 정말로 그렇게 믿고 있기 때문에 나온 결과물인 것 같다. 예를 들면 AutoEncoder 를 Factor Analysis의 Graph 모델 버젼, Non-linear 버젼이라고 이해하고 있으면 3차 미만의 공간좌표에 mapping하는 kernel 함수로 해석할 수 있다는 표현을 쉽게 이해할텐데, 심지어 Factor Analysis로 찾아내는 Latent variable 기반의 논문 (LDA)으로 명성을 얻은 분이, 이런 해석을 처음 들어보는 참신한 아이디어라고 발언하더라.

(본인에게 물어보지 않았으니 확정은 못 짓겠지만) 수학적으로 봤을 때, 보통의 공대생들이 알고 있는 평범한 수준의 수리통계학 훈련을 받은 사람 정도로 보인다. 제대로 모른다는 뜻이다. 당장 필자의 박사시절 지도교수 중 한 명이 Stanford 공대 박사 출신이기 때문에 공학도들의 수학 훈련 레벨에 대해서 의심의 눈초리를 원래부터 갖고 있어서 더 이런 삐딱한 시선을 갖게 되었음을 미리 밝힌다.

자기의 주력 연구 주제가 자연어 처리였는데, 해당 데이터 셋을 제외하고 다른 데이터, 특히 High noise를 갖고 있는 일반적인 데이터에 적용하는데 합리적인 의견을 낼 지적 훈련과 경험이 쌓인 사람이라고 보이질 않는다.

일반인들에게는 어느 학교 교수가 대단히 똑똑한 학자, 세상 모든 지식을 다 가진 천재라고 보이겠지만, 비슷한 지식을 갖고 있는 학자들 사이에서 저런 평범한 해석을 처음 들어보는 참신한 아이디어라고 발언하는 학자들은 학문적인 존경을 빠르게 잃는다.

실리콘 밸리에 가면 물리학과, 통계학과 같은 Hard science 전공한 사람들이 대체로 타게팅 광고 쪽에 붙어있다. 경제학 박사들도 은근 있는데, 모두 수리통계학 훈련이 탄탄히 되었고, High noise 데이터를 처리할 수 있는 훈련이 된 사람들이다. 반대로 자연어 처리, 이미지 인식 같은 Low noise 영역에는 Computer Scientist들이 많이들 모여있더라. 이 분들은 Low noise 데이터를 다루는데 특화된 분들이니까 딥러닝 효과를 볼 수 있을 것이다.

파비블로그를 통해 계속 설명하는대로, 모든 데이터에는 적절한 계산법이 있다. 특정 데이터 셋에만 효과가 있는 모델을 무작정 모든 대용량 데이터에서 다 쓸모 있다고 착각하는데서 이제 좀 벗어나면 어떨까?