딥러닝의 비밀을 파헤치는 새로운 이론???

어느 블로그를 지나가다가 본 내용이다. Hebrew University of Jerusalem 출신 어느 교수가 딥러닝이 어떻게 작동하는지 설명하는 “새로운” 이론을 제시했단다.

“Deep learning is an information bottleneck procedure that compresses noisy data as much as possible while preserving information about what the data represent.”

풀어서 설명하면, 여러개의 데이터를 압축시켜서 병의 좁은 목으로도 넣을 수 있도록 만드는데, 정작 그 내용은 보존하는 방법이라는 뜻이다. 이게 새로운거라고????

Jeffrey Hinton 교수라고 이미지 인식을 사실상 처음 도입한 분이 심지어 이렇게 말씀하셨단다.

“I have to listen to it another 10,000 times to really understand it, but it’s very rare nowadays to hear a talk with a really original idea that it may be the answer to a really major puzzle.”

백인들 방식으로 칭찬해줬다고 생각하시면 된다. (애매모호하게 칭찬했다는 뜻이다.)

솔직히 저런 해석이 왜 “새로운” 것인지 너무너무 이해하기 힘들고, 통계학을 정말로 하나도 모르는 걸 학회에서 인증샷 찍은 다음, “너도 같이 찍자”고 그러는 것 같다.

왜 또 갑자기 통계학이 튀어나오냐고?

 

Principal Component Analysis (PCA)

필자의 수업시간에 꼭 짚고 넘어가는 내용이다. 다들 머신러닝 수업시간에 데이터를 좀 줄여서 효율적으로 쓴다고 PCA라는 토픽을 배우는데, 이걸 “Unsupervised learning”이라는 항목에 넣어서 배우더라. 아무리 생각해도 이건 “데이터 전처리” 항목으로 배워야되는 것 같은데 말이다. (데이터를 효율적으로 쓰려고 Vector space를 최대한 보존하는게 왜 “Un”supervised learning인지 도무지 납득이 안 되지만ㅋ)

(Source: Victor Lavrenko)

PCA는 데이터의 분산(+공분산) 값들로 만들어낸 벡터 공간 (Vector Space)을 재구성하는 Eigen-axis를 만든다음, 그 중 몇 개 좌표를 고르는 방식으로 데이터 전처리를 하는 작업이다. 말을 바꾸면, 데이터의 내용을 최대한 보존하면서 그 중 일부만 뽑아서 쓰는 작업, 병의 좁은 목으로도 넣을 수 있도록 압축하는 작업이다. Deep learning이 하는 작업과 비슷하다고 느껴지는가?

참고로 PCA는 Neural network을 널리 쓰기 이전에 이미지 인식하던 중 이미지 데이터를 전처리하는 작업에도 쓰였고, ZIP같은 파일 압축에도 쓰이고, 생물학에서는 유전자 정보 재처리하는데도 쓰인다. Dropbox, OneDrive, GoogleDrive 같은 클라우드 서비스에서 파일 저장하는 방식도 잘 뜯어보면 PCA를 기반으로한 파일 압축 모듈을 이용해 클라우드 저장공간을 최대한 효율적으로 활용한다.

Neural network 를 이용해서 이미지 인식하는 모듈을 보면, 이미지를 slide로 스캔한다음, RGB 숫자로 바뀐 데이터를 전처리하는 작업에서 PCA에서 했던 그것과 동일한 작업을 진행한다. 일반인들이 알아들을 말로 바꾸면, 딥러닝의 여러 스텝 중 데이터 정리하는 스텝에서 PCA를 활용한다는 뜻이다.

그럼 다시 글 처음의 Quote로 돌아가보자.

“Deep learning is an information bottleneck procedure that compresses noisy data as much as possible while preserving information about what the data represent.”

딥러닝이 어떻게 돌아가는지 설명해놓은 저 문장이 “새로운” 이론이라고?

딥러닝이라는게 Neural Network가 중층으로 연결된 구조라는 것, 그 구조 자체가 Regression을 반복적으로 실행하면서 데이터 전처리를 모델 내부에서 해결하는 작업이라는 걸 이해하고 있다면 더이상 “새로운” 이론이라고 할 수 있을까?

 

Factor Analysis (FA)

(Source: JMP User Community)

사실 좀 더 정확하게 말하면, Deep Neural Network에서 PCA 작업에 해당한다고 말했던 부분은 엄밀히 따졌을 때 Factor Analysis (FA) 작업에 해당한다고 봐야한다. (PCA와 FA는 철학적으로 완전히 다른 접근이지만, 계산 방식이 비슷하다는 이유로 혼용해서 쓰는 경우가 많고, Neural Network에 적용되는 방식도 경우에 따라 PCA일수도, FA일수도 있다고 볼 수 있다.)

PCA와는 달리, 모델에 들어가는 변수들간 서로의 상관관계를 따지는 것이 FA다. 쉽게 설명하면, 고교 중간고사 과목은 20개가 넘지만 (필자의 고교시절엔 그랬다), 정작 그 과목의 점수를 결정짓는 능력은 각 학생의 수학, 언어, 암기, 열의 같은 기본적인 개인 능력으로 설명할 수 있다는 컨셉이다. 저런 기본적인 개인 능력에 해당하는 값들을 숨은 변수 (Latent variable)라고 부른다. 20과목이나 되는 시험 점수를 입력해서 그 학생이 대학에 합격할지 여부를 가늠하고 있지만, 사실은 4개의 기본 능력이 그 학생의 대학 입시 성패를 좌우한다고 이해하면 된다. 위의 그림에서 FA에 해당하는 부분은 4과목의 시험 점수에 숨은 변수 하나가 각각 60%, 50%, 80%, 70%씩 영향을 주고 있다는 뜻이다. 수학을 잘하는 두뇌를 갖고 있으면 화학, 지구과학, 수학, 물리학은 기본 점수를 어느정도 “깔고간다”고 생각하면 쉽게 이해가 되는가?

이미지 인식에 이 작업이 많이 활용되는 이유는 비슷한 이미지를 찾아낼 때 그 사진의 몇 %가 검은색이고 흰색인지가 중요한게 아니라, 윤곽선이 얼마나 비슷한지, 눈-코-입의 위치 관계가 얼마나 비슷한지로 같은 종류의 동물인지, 같은 사람인지를 구분하기 때문이다.

(Source: www.doc.ic.ac.uk)

위의 그림에 나온 Autoencoder라고 불리는 작업이 Neural Network 프레임 안에 FA를 포함시킨 작업이라고 생각하면 된다. 위의 그림에서 보듯이, 중간에 몇 개의 Neuron을 넣었냐에 따라 (그림에는 2개가 있다) 기본 능력이 몇 개 인지 가정을 하고 모델링을 하는 것이기 때문이다. 고교 성적과 대학 입시의 관계라면 수학, 언어, 암기 능력만 중요하다는 생각으로 3개의 Neuron만 중간에 넣었다가, “잠 안 자고 공부하는 열정” 같은 걸 추가해야한다는 생각에 4개의 Neuron으로 늘려볼 수도 있다. 중간의 어느 특정 Layer에서 몇 개의 Neuron을 쓰느냐에 따라 무슨 가정을 바탕으로 FA 모델링을 하는지가 결정되는 것이다.

 

더 어이없는 해석들

“이 이론에 따르면, 딥러닝이 잘 할 수 있는 것과 못하는 것의 한계는 명백해진다. 세부적인 걸 포기하기 때문에 큰 수 곱셈이나 암호 코드 박살 내는 건 잘 해내지 못할 거라고 한다.”

딥러닝이라는 모델을 제대로 이해했다면 위와 같은 말을 할 수 있을까? 당장 “새로운”이라는 단어도 쓰지 않을 것이고, 당연히 위의 코멘트도 할 이유가 없다. 필자가 입이 닳도록 이야기하는대로 딥러닝은 이미지 인식, 언어 처리, 음성 처리 등 강한 패턴이 있는 테이터에서 그 패턴을 쉽고 빠르게 찾아내는 하나의 응용통계학 테크닉에 불과하다.

큰 수 곱셈이나 암호 코드 박살내는 작업은 강한 패턴이 있는 데이터인가?

저 위의 반응들이 한국에 온 이후로 만났던 거의 대부분의 개발자들에게서 쉽게 볼 수 있는 내용들의 집성체라고 봐도 과언이 아니다. 그 분 블로그의 마지막에 이렇게 정리해 놓으셨더라.

“우리 인간은 보고 싶은 것만 본다. 세계로부터 전달되는 엄청난 정보의 대부분을 포기하고 정말로 보고 싶은 것만 보고 있는지 모르겠다.”

같은 맥락으로 이렇게 이야기하고 싶다.

“개발자들은 코드만 본다. 수학이 가르쳐주는 엄청난 정보의 대부분을 포기하고, 정말로 코드만 보고 알고 있다고 주장하는건지도 모르겠다.”

참고로 저 블로그의 저자는 모 대기업의 AI팀 출신이고, 어느 AI 도입한다던 스타트업에 CTO로 계셨더라. 정작 본인이 썼다는 논문은 DB 운영에 관계된 것 밖에 없는데, 정말 제대로 딥러닝을 이해하고 “인공지능”을 이야기하고 있는걸까? 우리나라 대기업과 스타트업들이 AI라고 불리는 응용통계학을 어떤 관점에서 쳐다보고, 어떻게 사람을 뽑고 있는지 너무 명백하게 보여주는 사례가 아닐까 싶다.

 

X