지금 우리가 만나고 있는 “인공지능”은 사실 “지능”이 아니라, 데이터에서 뽑아낸 패턴들로 이뤄낸 고급 자동화라는 사실을 여러번 강조하고 있다. 이전에는 단순한 규칙만을 입력한 자동화였다가, 이제는 데이터에서 더 다양한 규칙들을 뽑아내서 자동화를 좀 더 복잡한 수준으로 할 수 있는 정도에 불과하니 이건 “지능”이 아니라 “규칙”을 “저장”하는 것에 불과하다고 했다.

수업 초반에 강조하듯이, 단순히 데이터의 용량이 커져서가 아니라, 예전 데이터는 랜덤 데이터였는데 반해, 요즘 우리가 IT업계에서 뽑아내는 데이터는 여러가지의 패턴들을 포함하고 있기 때문에, 패턴을 매칭하는 통계 알고리즘들로 “고급 자동화”를 구현하고 있는 상태다. 단순한 선형이 아니라 비선형의 복잡한 패턴을 잡아내는데 (Deep) Neural net이 (그나마) 빠르고 효과적으로 계산하기 때문에 활용하고 있는 것일뿐, 이 시대의 “인공지능”은 그냥 통계적인 계산들 중 하나에 불과한 상태다.

신경과학자 (Neuroscientist)인 Pascal Kaufmann이 빅 데이터 기반의 딥러닝 알고리즘 광풍에 대해서 이렇게 표현했다.

“If you need 300 million pictures of cats in order to say something is a horse or cat or cow, to me that’s not so intelligent, It’s more like brute-force statistics.”

필자가 그동안 이야기했던 것과 완벽하게 일맥상통하는 이야기다. 참고로 Kaufmann 박사는 Starmind라는 “진짜” 인공지능 스타트업을 운영하고 있는 중이다. 이 분의 주장은 머신러닝, 딥러닝 같은 통계 프로그래밍은 인공지능이라고 부르지말고, “Computing statistics”라고 불러야한단다. (또 공감했다. 캬~)

진정한 인공지능이라고 하려면, 어마어마한 데이터를 입력해서 패턴을 매칭해내는 통계 알고리즘이 아니라, 사람들의 “생각”하는 방식을 구현해내야하지 않겠냐고 반문하는데, 얼마나 공감하실 수 있으신가?

“I think it’s impressive what statistics is capable of, but it’s definitely not what we’re looking for when it comes to human intelligence.”

 

Brain Code를 알아내야 – 뇌 매커니즘을 복제해야

알파고 이후 약 2년 남짓 동안 정말 수많은 사람들이 “인공지능”이라는 노래를 불러댔고, 몇 백조의 자금이 투자됐다. 곳곳에서 인공지능이 곧 인류를 지배하는 시대가 온다고 설레발을 치는 “전문가(?)”들이 신문 지면을 장식했고, 이틈에 개발자라는 직군의 사람들 중 일부는 자기네들이 “인공지능” “기술”을 갖고 있다는 말도 안 되는 뻥을 치며 4차 산업 혁명은 코딩 기반으로 가야된다고 언론 플레이를 했었다.

그 결과는? 지금까지 필자가 줄곧 주장해왔던대로, 개발자들은 코드나 Copy & Paste하는 수준에 불과했고, 글로벌 IT 회사들이 인공지능 시스템을 도입한다는데 정작 수준은 데이터 패턴 매칭에 지나지 않았다. 바둑에서 컴퓨터가 인간 최고수를 이겼으니, 이제 스타크래프트같은 쉬운(?) 게임은 어렵지 않다고 그랬다가, 프로게이머도 아니고 일반인 수준도 안 되는 것 같다는 혹평을 들으며 졸전을 치르는 “인공지능 플레이어”도 만나봤다. 데이터로 매칭해야하는데, 바둑은 1개 유닛을 어디에 놓을지만 고민하면 되는 (상대적으로) 단순한 패턴 매칭만 하면 됐는데, 스타크래프트는 무려 200개 유닛을 어떤 방향과 어떤 속력으로 어떤 조합으로 움직여야할지 고민해야하는 Super Mega Ultra 복잡한 패턴 매칭을 해야하니 답이 있을리가 있나

정말로 “인공지능”이라고 부를려면 인간의 머리 속이 어떻게 움직이는지 이해하고, 그 움직임 방식을 따라갈 생각을 해야하지 않을까?

(Source: thinkerstank)

이걸 영어권에서는 Craking the “Brain Code“라고 부른다.

글로벌 대형 IT 회사들은 아무도 이런 이야기를 안 하는데, 필자같은 변방의 Data Scientist, Pascal Kaufmann 같은 유럽의 외딴 지역에서 이름도 모르는 스타트업 운영하는 사람들만 이런 이야기를 하냐고?

“It’s not about decoding random thoughts….We’re talking about decoding the words you’ve already decided to share by sending them to the speech center of your brain.”

Facebook의 Building 8 매니저인 Regina Dugan이 뇌파를 읽어내는 프로젝트를 이야기하면서, 위와 같은 이야기를 하더라. 비슷한 주제에 대해서 Elon Musk는 Neuralink 라는 회사를 설립하고, 뇌파를 전달해주는 스마트폰 비슷한 기계를 만든다는 이야기를 했었다.

솔직히 말하면, 글로벌 대형사들이 저렇게 한심한 이해와 답답한 투자를 하고 있는 덕분에 스타트업들이 성공하는 것 같아서 한참을 웃었다. (필자와 같이 실망한 연구 인력들이 많을 것이다.)

당장 뇌가 사용하는 언어가 뭔지를 알아야 그 뇌파를 읽어서 뭔가 다른 작업을 할 수 있지 않을까? 현재 인간이 뇌파를 읽어서 해석하는 수준은 팔, 다리, 손가락의 움직임에 대한 전기 신호 자극을 “번역”하는 수준 밖에 안 된다.

이것도 데이터가 더 많아지면 “인공지능”이 “Learning”하는 거 아니냐고? 글쎄다. 팔, 다리, 손가락 움직임은 하나하나 매칭해가면서 데이터 셋을 만들 수 있을지 모르겠는데, “저 여자가 나를 보는 눈빛을 보니 내가 아까 몰고 온 싸구려 국산차가 마음에 안 들었나보다.”, “저 남자의 팔 동작은 나한테 호감이 있는걸 감추려는 억지가 들어간 어색한 동작인 것 같다.” 와 같은 판단을 하는 뇌파의 움직임은 어떻게 될까? 그런걸 알아내야 진짜 “인공지능” 뇌파 분석기 아닌가?

 

그럼 인공 지능이 아니라 뭘까? – 집합 지능 vs. 통합 지능

집합 지능 (Collective Intelligence)
– “민주주의의 수준은 그 나라 평균의 수준이다”

대의제 민주주의에서 리더를 뽑는 투표를 보통 집합 지성 (Collective Intelligence)라고 표현한다. (다만 이번 글의 맥락상 집합 “지능”으로 바꿔서 쓴다.) 여러 사람의 생각을 모으면 집단 전체에게 가장 큰 이익이 되는 결정을 내릴 수 있다는 맥락에서 나온 용어다. 역사적으로 멀리가면 고대 그리스 사회의 도편 추방제가 있고, 민주주의 국가들에서 다수결의 원칙에 따라 의사 결정을 하는 것도 모두 집합 지성이다.

물론 집단의 구성원들이 수준이 낮으면 낮은 수준의 정부 밖에 못 갖는다고 혹평도 받을만큼 집합 지성이 항상 우월한 것은 아니다. 노벨 경제학상 후보 중 한 사람이었던 Stephen Ross 교수님은 매번 이렇게 농담하셨다.

Collective intelligence is no more than AVERAGE intelligence of the society. You know yours is at least above the average, but you are also aware of how awful yours is. What’s more terrible is that half the population has BELOW average intelligence.

집합 지성이란 평균 지성인데, 평균이 얼마나 멍청한지, (그런데 그 평균이 매일 멍청하다고 놀림듣는 너보다 더 멍청하고) 그리고 인구의 절반은 평균 아래니 얼마나 더 멍청할까는 우스갯소리다.

 

통합 지능 (Integrated Intelligence)
– “뭉치면 살고, 흩어지면 죽는다”

요즘 말하는 인공 지능 (Artificial Intelligence)의 냉정한 정의를 따지면 통합 지능이 아닐까 싶다. 수 많은 사람들의 작업 데이터를 입력해서, 그 중 반복적으로 나타나는 패턴을 골라내는 계산법, 여러 사람의 데이터를 모아서 전체의 대형 데이터 셋을 만드는 작업이 2018년 시점에 사람들이 알고 있는 인공지능이고 빅데이터이기 때문이다.

다른 글에서 소개했듯이, 수백만 명이 네비게이션을 쓰면서 실시간으로 차량 정보를 보내주면 그 정보를 바탕으로 다른 운전자가 현재 차량 정체 상황과 도로 상황을 쉽게 이해할 수 있다. 개인은 한 순간에 한 지점에 있지만, 집단은 한 순간에 수 많은 지점에 퍼져 있기 때문에 더 많은 정보를 갖고 있기 때문이다. 필자의 수업 시간에 얼굴 인식하는 알고리즘이 PCA 작업이라는 걸 보여주고, Neural Net은 그런 PCA의 아이디어를 형상화한 알고리즘이라는 걸 보여주면서 결국은 깨끗하게 정리된 얼굴 사진 데이터를 얼마나 많이 집어 넣느냐에 따라 모델의 성능이 바뀌는 걸 보여주면 많은 분들이 놀란다. 알고리즘이 아무리 좋아봐야 주변 친구들 열댓명의 얼굴 정보 데이터로는 한계가 있고, 대한민국 사람들 모두의 얼굴 사진, 그것도 똑같은 프레임 속에 집어넣은 얼굴 사진을 모아야 얼굴 이미지를 더 잘 인식할 수 있다는 이야기다.

물론 통합 지능이라고 표현했으면 이렇게 사람들의 관심과 투자를 끌어모을 수 있지 않았을 것이기 때문에 용어를 변경한 부분은 이해되지만, 필자처럼 그 계산의 매커니즘을 다 알고 있는 사람 입장에서 “인공 지능”이라는 단어를 입에 올리는 것은 굉장히 거북한 일이다. 우리 회사 이름을 Predictive Analytics by Integrated Intelligence 라고 한 이유도 회사 비지니스 모델의 핵심을 정확한 표현으로 옮기고 싶었기 때문이다. 모든 걸 다 떠나서, 필자는 “인공” 이라는 단어를 붙여서 “사기”를 치고 싶지 않다.

(Source: Analytic India Magazine)

 

Cracking the Brain Code – 인공지능이 나아갈 길

지금까지 인류는 아무런 인공지능도 만들어내지 못했다. 그냥 자동화 알고리즘만 좀 더 복잡하게 만들어내는 방향으로 진화했을 뿐, 정작 인간을 비롯한 고등 생명체가 어떤 방식으로 사고하고 있고, 그 사고의 격차가 생기는 것에 맞춘 “지능”적인 알고리즘은 커녕, 영장류보다 지적으로 열등한 생명체들의 지능이 어떻게 생명반응의 로직을 설계 하고 있는지도 잘 모르는 상태다.

이전에 다른 글에서 언급했듯이, 1980년대에 편모충의 세포 그룹들을 하나하나 복제한 조직을 결합시켰더니, 편모충과 유사하게 움직였다는 생물학적 “발견”이후, 더 큰 생명체의 움직임을 “단순 복제”는 해내고 있을지언정, 정작 원리를 파악하고 “구현”을 해내는 단계는 아니다. 개발자들의 딥러닝 코드로 비교하자면, Copy & Paste로 딥러닝을 “잘한다”고 주장하지만, 정작 Deep Neural Net이 어떻게 구현되는지, 그 알고리즘에서 Overfitting은 어떻게 해결하는지, 다른 데이터, 다른 목적에는 어떻게 바꿔서 활용하는지는 전혀 알지 못한다는 뜻이다. (그래놓고 “딥러닝 엔지니어”라고 주장하는 모습을 보면 기가찬다 ㅋㅋ)

참고로, 레오나르도 다 빈치가 새들의 활강 장면을 보고 비행에 필요한 신체 조직, 공기 저항을 이겨내는 방식 등에 대한 개략적인 이해를한지 몇 백년이 더 지나서야 라이트 형제가 비행기를 만들어냈다. 인공지능도 마찬가지다. 뇌가 어떻게 움직이는지를 일단 알아내야 인간 비슷한 “지능”적인 객체라도 만들어 낼 것 아닌가. 이제 겨우 뇌파 분석기로 뇌파 데이터 수집하는 단계인 주제에, 아직 인간은 커녕 돌고래의 뇌가 어떻게 작동하는지도 모르는 판국에 무슨 인공지능이란 말인가?

 

나가며 – 설레발 금지

지능도 아닌, 겨우 데이터 훈련하는 주제에 “인공지능”이라고 열심히 주장들을 해대는 꼴을 보면 정말 깝깝하다. 당장 저런 통계 모델링을 못해서 글로벌 선진국 대비 몇 년이나 격차가 뒤쳐졌고, 그걸 따라잡으려면 정부가 얼마나 투자를 해야하고… 정부의 눈먼 돈 빼먹으려는 전략으로 밖에 안 보이는 말들을 매일같이 듣는다. (더 웃긴건, 블록체인은 이제 막 시작해서 충분히 따라갈 수 있단다. 수학과 통계학 모르는 사람들은 그대로 있는데, 선형대수학에서 네트워크 이론으로 필요한 수학만 바뀌었을 뿐, 상황은 뭐가 달라진게 있나???)

이걸 Computer Science하는 친구들끼리, 아니 심지어 고졸 개발자들끼리 “나 저런 수학 모르는데, 너는 아냐?” “나도 몰라” 같은 이야기를 하고 있으니 우리나라가 몇 십년 뒤쳐진 것 같은 공포가 밀려오는 것이다. 똑같은 질문을 통계학과에 가서 다시한번 해 보시라. 필자처럼 통계학이 주 전공이 아니었던 아카데믹도 다 알고 있는 내용을 통계학 박사했던 사람들이 모를리는 없을거라고 생각한다. (뭐 학위 중에 관련 주제에 관심이 없었다면 또 모르겠지만)

우리나라 별로 밀리는거 없다. 코드 Copy & Paste하는 개발자들을 이 시장에서 몰아내고, 제대로 수학 & 통계학 훈련받고, 어떤 모델을 어떤 수학으로 모델링해야하는지 알아먹는 똑똑한 인재들을 공대말고 자연대에서 훈련시켜서 데리고 오면 된다. 데이터 센터라는 인프라만 훌륭하게 만들어 놓으면 된다. (솔직히 이게 공돌이 학부출신들이 할 일 아닌가?) 나머지는 자연대에서 수학과 통계학으로 잘 훈련된, 그 데이터를 이용하는 연구인력에 대한 지원만 해주면 충분하다. 이런데 쓸 평범한(?) 수학과 통계학은 한국의 아카데믹들이 하나도 밀릴게 없기 때문이다.

요즘 데이터 사이언스 해 보고 싶다고 잔뜩 바람이 들어서 학부 전공을 Computer Science나 Computational Statistics로 정하려는 고등학생들에게 한 마디 덧붙인다. 필자의 중학 3학년 겨울에 우리나라가 IMF 구제금융을 맞았고, 이걸보고 조지 소로스보다 더 거물이 되어서 유태인 자본을 금융시장에서 몰아내겠다는 망상으로 경제학을 전공했고, 취업하고나니 그 해에 글로벌 금융위기가 왔고, 머리를 더 써보자고 박사하고 났더니 퀀트 연봉 반토막났고, Data Scientist를 Hot job이라고 부르는 시장이 되어버렸다. 지금은 Data Scientist가 좀 “Sexy”해 보일지 모르지만, 정말 Brain Code를 해석하는 시대가 오면, 신경 연구하는 분들의 몸값이 폭등할 것이고, 그 땐 수백만장의 사진을 집어넣어야 특징을 찾아내주는 짝퉁 인공지능이 아니라, 약간의 데이터로 모든 분석을 다 해주는 진짜 인공지능이 구현된 세상이 될지도 모른다.

참고로 1980년대 초반, 1990년대 중반에 각각 한 번씩 Neural network 붐이 있었다. 물론 그 땐 “인공지능”이라고 설레발도 없었고 “알파고”같은 퍼포먼스도 없었지만, 꽤나 많은 CS 박사들이 여기 뛰어들었다가 “피봤었다”. 진짜는 아직 나타나지도 않았는데 왜들 이렇게 난리를 피우는지. 설레발 그만치고, 자기가 잘 할 수 있는거 하는게 맞는거 같다.

출퇴근 시간에 자주 방문하는 Datanami라는 블로그가 있다. 여기 pabii처럼 수준 낮은 블로그가 아니라, 기자가 직접 발로 뛰면서 신기술을 최대한 자세하게 설명하는 블로그라서 항상 기대를 갖고 새 글을 기다리는 곳이다.

지난번에는 Markov Logic Network (MLN)라는 DB 설계 & 처리 구조에 활용되는 컨셉을 설명하는 본 적이 있는데, 처음 저 개념이 나왔던 2006년부터 지금까지 다양한 연구가 이뤄졌고, 실제로 쓰이는 곳도 엄청나게 많아졌다. 저 아래에 소개하는 Apple의 Siri에 적용하는 아이디어, 배터리 활용 최적화, RAM 활용 최적화 등등 다양한 곳에서 저런 개념이 활용되고 있는데, 정작 MLN 이라는 용어를 알고 제대로 이해하는 사람들은 극소수인 것 같아서 필자의 짧은 이해를 공유해보고자 한다.

모델을 이해하기 위해서는 먼저 MLN의 핵심 개념인 Markovian information structure을 이해해야 한다. Markov 라는 수학자가 만든 이 컨셉을 제대로 이해못하는 분들을 위해서 애시당초 Markov process라는게 무슨 뜻이고, 어디에 쓰이는지 최대한 수식 없이 간단히 정리해보겠다. (어찌됐건 필자의 박사 전공에서 쓴 시뮬레이션을 한 마디로 요약 정리하면 Markovian Programming이다.)

 

Markov (information) process

주식 가격을 생각해보자. 오늘 주가가 10,000원인데, 어제 12,000원에서 오늘 10,000원으로 떨어진 경우와, 어제 8,000원이었는데 오늘 10,000원으로 오른 경우를 놓고 볼 때, 상승 모멘텀과 하락 모멘텀이 과연 내일 주가에 어떤 영향을 미칠까? Markov process는 과거 주가의 움직임을 바탕으로 오늘 주가가 x원이 될 때, 이미 내일 얼마가 될지에 대한 모든 정보가 그 x원에 담겨있다는 가정에서 출발한다. 말을 바꾸면, 하락 모멘텀으로 or 상승 모멘텀에 관계없이 오늘 10,000원이 되는 순간, 내일 y원이 될 가능성이 a%, z원이 될 가능성이 b%로 결정된다는 뜻이다. (학문적으로는 History independent라고 표현한다 – 물론 상식적으로 좀 받아들이기 힘든 가정일 수 있는데, 수학 모델링은 이렇게 단순한데서 시작해서 복잡한 걸 집어넣는거다.)

(Source: Wikipedia)

위의 그래프를 보면, 이 전에 Bear market이었건, Bull market이었건 상관없이, 오늘 주식 시장이 Stagnant market이었다면 내일 Bear가 될 확률은 40%, Bull이 될 확률을 2%가 된다. (나머지 58%가 그대로 Stagnant에 머물러 있는 확률이라고 생각하면 된다. 다른 경우의 수가 없으니까.)

참고로 증권사 퀀트들이 파생상품 모델링을 할 때 위의 Markov process에 기반한 Brownian motion (주가 수익률이 정규분포)과 Poisson (주가 수익률이 포아송분포) 을 섞어서 가격을 계산한다. 그리고 MCMC (Markov Chain Monte Carlo) Simulation이라는 건 이런 Markov process로 된 특정 데이터 셋에 나올 수 있는 모든 경우를 다 살펴보는 방식으로 시뮬레이션을 해 보는 걸 말한다. 그렇게 가능한 조합을 다 뽑아내면, 주가가 x원에서 출발해서 1주일 후에 y원이 될 확률이 얼마인지 계산할 수 있다는 개념이다.

물론 주가에 모멘텀이 없다고 가정하는 모델링이 완벽하다고 생각하진 않는다. 실제로 모멘텀이 나타나는 걸 증명한 사례도 많고, 그걸 저런 기본형 모델에 추가하는 작업이 모델 변형의 출발점이라고 생각하면 된다. 필자의 박사 시절 연구 중 한 분야는 기습적인 주가 대폭락을 Poisson 분포로 모형화한 다음, 그 원인이 될 만한 내용이 변하면 Poisson 분포 형태가 어떻게 변하는지, 그 때 금융시장에 어떤 영향을 미치는지를 살펴보는 것이었다.

뭔가 복잡하게 써놨지만, 요지는 간단하다. 랜덤 분포에서 과거 값은 아무 소용없고, 현재 값이 모든 미래의 가능성을 결정한다는 수학 개념이라고 보면 된다. MLN에서 쓰이는 부분은 Bull – Stagnant – Bear market 간 서로 확률적으로 연결된 고리 네트워크로 바꾸고,네트워크를 데이터 처리 작업에 적용했다고 보면 된다. 그런 연결 고리를 만드는게, 특히 확률적인 연결 고리를 만드는게 도대체 어떻게 DB 설계, 데이터 처리에 도움이 되냐고?

 

Markov Logic Networks (MLN)

MLN의 포인트는 확률로 가능성을 구분하는 아이디어를 Network으로 그리고, 그걸 데이터 베이스 Join하는데 적용하는 부분에 있다. 데이터로 XYZ같은 작업을 해야 인공지능이라는게 나온다는 건 이미 다 알고 있을 것이고, 결국 데이터로 내 목적에 맞는 모델링을 하기 위해서는 회사 DB에 있는 데이터 중 일부를 뽑아서 정리를 해야한다. 보통은 DB하나 안에 여러개의 Table이 있고, 내가 원하는 데이터는 몇 개의 Table을 겹치는 작업 (Join)을 해야 뽑아낼 수 있다. (그래서 Data Scientist의 필수 스킬 중 하나가 SQL인 것이다.)

그런데 이런 Join 작업이 사실 굉장히 시간 낭비인 경우가 많다. 데이터 테이블이 커질수록 Join에 시간이 많이 걸리는 것은 당연한 일이고, 메모리 상에서 두 개 이상의 테이블을 모두 불러와 매칭 시켜야되기 때문에 필요한 하드웨어적 계산 비용이 기하급수적으로 증가할 수 밖에 없다.

(Source: Wikipedia)

위의 그림을 보자. D 테이블에 있는 데이터를 이용해서 A-B 그룹과 E-C 그룹을 묶는게 Join 작업의 요지다. 실제 이뤄지는 작업은 A-B, A-D, B-D 이렇게 3개의 연결을 묶어서 A-B-D 를 잇는 대형 테이블을 메모리에 얹은 다음, A-B-D와 E를 잇고, A-B-D-E에서 다시 C를 잇는 작업을 진행한다. 당연하겠지만 이렇게 여러개의 테이블을 묶는 작업을 하면 계산 비용 or 작업 비용이 엄청나게 클 것이다.

좀 더 기발하게 처리할 수 있는 방법은 없을까?

일단 그림에서 A, B, C, D, E를 빼놓고 단순하게 5개의 동일한 동그라미가 연결된 상태라고 생각해보자. Network Theory에서 봤던 걸 떠올리면 된다. 이 때 어느 Node가 더 연결이 강하고, 어느 Node가 더 연결이 약한지는 그 Node에 얹혀있는 가중치 값들로 결정된다. (인스타그램 알고리즘 설명 포스팅 참조)

똑같은 컨셉으로 데이터 테이블을 묶는다고 생각해보자. 어떤 테이블들은 강하게 묶여야할만큼 교차점이 많고, 또 어떤 테이블들은 연결고리가 느슨할 수도 있다. 또 여러개의 테이블들이 같이 묶여야 유의미한 거대 테이블을 만들어 낼 수 있는 경우도 있다. (인스타그램 알고리즘 설명 포스팅에서에서 Shapley value 설명 참조) 새롭게 추가되는 데이터가 있다면 Node간 가중치가 바뀔수도 있고, 심지어는 Node가 새로 추가될 수도 있다.

다시 A, B, C, D, E를 불러들이자. 위의 그림만 놓고보면 왜 단순하게 테이블들을 하나하나 연결하는 작업을 하는지 답답함이 생길 수 밖에 없다. 위에서 보면 D가 가운데에 있고, A-B-D는 서로 묶여 있는 구조가 보이기 때문이다. 저 작업을 하는 기존 시스템은 그런 그림은 없고, 단순하게 A-B, A-D, B-D… 순서로 데이터 테이블들을 연결시켜 나갈 뿐이다. 이런 답답함에 대한 해결책은 바로 “위에서 내려다보는” 구조를 도입하면 된다. 어떻게? 데이터를 단순하게 테이블에 저장시켜놓고 끝나는게 아니라, 테이블 네트워크의 Node와 가중치를 먼저 계산해서 네트워크 구조를 이용한 Join 작업을 실행하면 된다.

말은 쉽지, 실제로 쉽게 적용될 수 있나? 당연히 Network를 먼저 계산해서 완성하는 작업이 더 무거운 계산일 수도 있기 때문에 모든 경우에 적용할 수는 없다. 이런 작업이 실이득이 있는 경우는 당연히 Join 구조가 복잡한 대용량 데이터 밖에 없을 것이다.

 

실무 활용 – Apple’s Siri

어디에 비슷한 아이디어가 적용된 곳이 있을라나 싶어서 검색해보니 Apple의 Siri가 데이터를 처리하는 방식이 딱 위의 MLN이라고 한다. 링크건 글에 자세한 내용을 못 찾아서 Siri의 서비스 구조를 보고 역추적을 해 봤다. 어차피 음성을 처리해서 유사한 파트를 찾아서 매칭하는 작업을 하는 음성인식 챗봇이 모두 LSTM (Long-Short Term Memory)이다. 따라서 특정 시퀀스로 바뀌는 단어의 조합이 다른 조합보다 더 자주 나타난다는 걸 매칭하려는 작업에 가능성의 조합을 모두 다 따질 수는 없으니까, 효율적으로 조합을 따지기 위해서 새로운 단어가 더 입력될 때마다 매칭하는 문장 셋이 들어간 DB의 크기를 팍팍 줄여나가는 작업에 쓰이면 딱 좋겠다 싶었다.

(Source: Apple)

좀 더 쉽게 설명하면, 문맥/현재 작업에 맞춰 전체 DB에 있는 문장 중 일부만 뽑아놓고 “답장 대기 중” 상태로 있다가, 이번 문장에 나오는 단어들을 보고 답장을 위한 Table 결합체 (Join으로 만든 Table)를 작은 크기로 & 빠른 속도로 찾아내는 작업이라고 보면 된다.

Apple의 Siri처럼 실시간으로 수천만명의 유저 로그가 쌓이고 필요한 답장, 답변, 작업의 종류가 다양하다면 이런식으로 확률 게임을 해서 작업을 최대한 효율적으로 진행하는 아이디어는 시스템 속도 향상 + 자원 배분 효율화에 엄청나게 큰 솔루션이 될 수 있다.

같은 아이디어를 배터리 활용 최적화, RAM 관리 최적화에도 그대로 적용할 수 있다. 안드로이드 스마트폰을 쓰는 유저들은 폰 사용 초반에는 버벅거림을 느끼다가, 시간이 지나면서 버벅거림이 사라지는 걸 느낄 것이다. (물론 아주 많은 시간이 지나고나면 재부팅, 초기화를 시켜줘야할만큼 느려지는 건 “쓰레기”가 많이 쌓여서 그런거다 ㅋ) 실제로 유저들의 사용 패턴을 보고 자주 활용하는 앱들을 백그라운드에 그냥 띄워놓는게 아니라, 시스템 자원에 쉽게 로드될 수 있도록 pre-load 상태로 두고 있고, 이런 방식으로 백그라운드에 있는 앱들에게 주는 RAM이나 전력 값을 적절하게 배분할 수 있게 된다. 사용자 입장에서는 간단해보이는 배터리 최적화지만 뒤에서는 이런 수학적인 개념이 활용되고 있는 것이다.

알려진 인공지능이라는게 결국 데이터 매칭 작업이라는 걸 이해하고 나면, 새로운 데이터 관리 방법이 어떤 방식으로 쓰이게 될지 곰곰히 따져보는 것도 그렇게 어려운 일이 아니게 된다.

 

나가며 – 한국 블로거 vs. 실리콘 밸리 블로거

비전문가의 블로그 임에도 Datanami를 즐겨 읽는 이유 중 첫번째로 집필진의 이해도를 꼽는다. 정식 신문사 기자도 아니고 단순 블로거 팀인데 딥러닝이 머신러닝의 여러 테크닉 중 하나라는 인식, 인공지능은 데이터 기반의 자동화라는 인식, 기술 이해를 위한 적절한 수학 지식 등등, 데이터 사이언스 주제로 글을 쓸 수 있는 내공을 단단히 갖추고 있더라. 보통 한국의 여느 신문기사나 블로그를 읽으면 디테일이 틀렸거나, 이해도가 엉망인채 Buzzword만 여러번 나열했다는 느낌을 받는 경우가 많은데, Datanami에서 그런 경험을 하는 경우는 매우 드물다. (필자의 포스팅 중에 한국의 한심한 실태에 대한 지적질이 절반을 넘는게 좋은 예시다.)

처음에는 가까이 지내는 기자 친구들한테 추천해줬던 블로그인데, 다들 뭔말인지 하나도 모르겠다고 다시 한국말로 풀어서 설명해달라고들 불평하는 경우가 잦았다. (실제로는 어설프게나마 한국말 번역 페이지도 있는데 말이다ㅋㅋ 정확하게는 한국말이 아니라 비수학적 용어를 써달라는 뜻이겠지.) 블로그 수준이 높으니 이해를 못하는건 백보 양보해서 받아들일 수 있지만, 그래도 한국에서 관련 기사나 블로그 글을 쓰시는 분들께 간곡하게 부탁드리고 싶다. 그냥 베껴쓰기 하지말고, 제발 좀 이해하고 쓰시라고. 정말 모르겠으면 주변에 잘 아는 사람들한테 물어보고 난 다음에 써주시면 안 될까? 잘 아는 사람들이 그렇게 없나? 영어권의 어느 블로거보다 더 저질의 지식을 가진 한국 메이져 신문사 기자의 글을 보는 것, 그 글에 지인의 이름이 실린 걸 보는 것, 그런 글 내용의 사실 관계를 확인해달라는 요청을 받는 것, 그 정도 수준의 외부 관계자를 만나는 것도 지겹고, 또 괴로운 일이다.

필자의 사업 모델을 한국 VC들에게 이야기하면 뭔 말인지 모르겠다는 표정이거나, “뭔가 될 것 같은데, 뭔 말인지는 잘 모르겠네요. 일단 인공지능 쓰는거죠?”라는 얕은 지식 수준을 스스로 드러내는 경우가 많다. 얼마전에 실리콘 밸리에서 좀 이름있는 VC 한 분과 연락이 닿아 비지니스 모델을 설명했더니, “안드로이드 시스템은 어떻게 뚫는다치고, 그런 메가 데이터용 DB는 어떻게 설계했습니까? 모델링쪽 내공은 이해가 되는데, 그정도 실시간 대용량 데이터 처리하는 DB 셋팅 하실 Data Engineering 실력은 없는 것 같은데요?” 라고 묻더라. 사업 시작하고 지금까지 만난 VC들에게서 받은 가장 날카로운 질문이었다. 내가 이래서 CTO 뽑거든.

한국이어서, 실리콘 밸리여서 수준이 다른걸까? 글쎄… 요즘은 정말 “왜 한국은 2류일까?” 라는 글에서 말했던 한국 비지니스 업계 평균의 지식 수준과 지식을 얻으려는 노력 수준 자체에 대한한 의구심이 더 많아지고 있는 것 같다. 코드나 베껴서 빨리빨리 (Read 대충대충 or 그럴듯하게)만 생각하는 그들에게 무슨…..

얼마전, 증권사에서 퀀트 팀 주니어로 일하신다는 분의 메일을 받았다.

글로벌 자산배분 업무라는 허울 좋은 일을 시작했는데, 현실은 매일 뉴스 체크하면서 직관에 의존한 배분만…

시장의 많은 데이터 속에서 유의미한 Implication을 뽑아내는 능력을 기르는….

이론적인 모델은 아니더라도 시장의 패턴을 이용해 (Portfolio를) 분산하는 모델을 여러가지 만들어내는…

메일을 읽자마자 10년쯤 전에 초짜 투자은행가로 첫 사회생활을 시작했던 무렵이 떠오르더라. 바로 위에 있던 형 하나랑 밤새 일하면서, 우리가 만드는 이런 허접한 Valuation 모델만 믿고 몇 조원을 지르겠다는 대기업 회장님들은 도대체 뭐냐고 낄낄거렸는데, 아마 저 분도 은행에서 자기네 펀드 사고 있는 사람들에게 비슷한 감정을 갖고 있을 것이다.

지적인 욕구와 스스로에 대한 자괴감이 스스로를 잡아먹는 걸 느끼고 런던행 비행기를 타던 그 무렵, 대학원을 가면 뭔가 뚝딱 대단한 모델을 배워서 한번에 쏴아아악~ 해결할 수 있을 줄 알았다 ㅋㅋㅋ

런던, 보스턴을 거치며 긴 대학원 시절 내내, 필자의 일상사는 그런 멋진 모델이 아니라 한 줄 따라가기도 벅찬 수식과의 지난한 싸움이었다. 처음에는 여느 경제학도처럼 “저런 단순한 수식으로 세상을 어떻게 설명하냐”는 회의감도 있었고, 모델 하나하나가 어떤 단순화로 세상의 특징을 잡아내는지 깨닫고 난 다음부터는 수식 속에 담긴 경제학적 함의를 찾아내기 위해 고민하기도 했고, 나중에 내 논문을 쓰면서는 모델의 수학적인 엄밀함을 위해 필요한 수학적인 내공에 좌절하기도 했다.

저 분도 자기가 꿈꾸는 모델을 만들고 세상에 검증해보고 싶다면 아마 필자같은 좌절스러운 몇 년을 보내면서 수학적으로 열심히 훈련을 받으셔야할 것이다. 시중에 돌아다니는 (초급용) 데이터 사이언스 관련 서적들 봐서는 답 없을 것이라고, 쓸데없는데 시간 쓰지 말고 대학원을 가셔야된다고 조언을 드릴 수 밖에 없었다. (책 쓰자는 연락이 벌써 몇 군데서나 왔냐….그렇다고 고난이도로 쓰면 아무도 안 사는 책이 될테니.. 쩝) 물론, 꼭 10년전에 학부 교수님이 필자를 뜯어 말리셨듯이, 저 분께 같은 길을 권유할 생각은 전혀 없다.

 

1. 대학원에서 만나는 머신러닝 수업 – Convex Optimization

필자의 수업을 듣고 가신 어느 개발자 분이 큰 맘을 먹고 모 대학 빅데이터 대학원 과정을 들어가셨다. 수업이 쉽다고 매번 불평하시는데, 아마 그 분 실력이 뛰어나서 직장인 대상 석사 프로그램 수준이 좀 부족하게 느껴졌을 수는 있겠다 싶더라.

그 분이 요즘 공부하는 내용이라고 링크를 하나 보내주셨는데, Convex Optimization이라는 수업이다. 자연과학과 공학 교육으로 유명한 카네기 멜론 대학 (CMU)의 통계학 & 머신러닝 전공 대학원 수업인데, 예상대로 수준낮은 MOOC 강의들 (ex. Coursera, Udemy 등)과는 현격한 차이가 있더라.

Convexity를 알아야하는 이유는 우리가 수식으로, 컴퓨터로 풀어내는 모든 계산이 함수의 convexity 또는 concavity를 이용한 최적화 (optimization) 작업이기 때문이다. 수식으로 못 풀어낼 때 머신러닝에서 가장 흔히 쓰이는 방법이 Gradient descent, 이 때 정확성과 계산 속도의 trade off를 겪으면서 쓰는 작업이 Stochastic gradient descent라고 한다. 요기까지가 필자가 일반인 대상으로 수업하는 내용이고, 아마 시중에 알려진 수학적인 도전(?)일 것이다.

대학원 수업에서는 함수 형태에 따라 항상 under-estimate하는 경우를 보정해주는 sub-gradient라는 내용도 다루고, 오차 투성이일 수 밖에없는 1차 함수 approximation을 탈피해서, 2차 이상의 함수로 gradient decent를 하는 proximal gradient descent라는 방법도 배운다. 왜? 이런거 배워서 어디 써먹냐고? 데이터 모델링은 언제나 오차에 노출되어 있는 작업이다. 당연히 인간이 할 수 있는 최대한의 보정작업은 본인의 수학 실력이 올라갈수록 레벨업이 될 수 밖에 없다.

저 링크의 수업은 뒷 부분이 더 재미(?)있다. Duality를 다루는 부분에서는 Regularization에 들어가는 조건식이 사실상 constraint라는 관점에서 출발해서, 목적함수를 constraint에 맞춰서 값을 구하나, constraint를 목적함수에 맞춰서 구하나 결국에는 같은 종류의 최적화 작업이 돌아간다는 걸 보여준 다음에, 그 아이디어를 (블록체인 류의) 네트워크를 푸는데도 쓰고, (또 블록체인에 적용되는) 네트워크 + 게임이론 문제 푸는데도 쓴다. 굳이 블록체인에 국한될 것도 없는게, 모든 수학적인 문제 풀이는 다들 같은 선상에서 출발한다. (이걸 경제학과 파이낸스에서 배웠는데, 강의 노트가 하나도 새롭지 않다면 믿으시겠는가?)

참고로 저 Duality가 필자의 수업 시간에 SVM 설명하면서 왜 SVM은 Regularization을 반대로 하고 있는지에 대한 수학적인 설명이기도 하다.

강의 후반엔 Newton method라고, 최적값을 trial-and-error로 찾아가는 작업이 활용되는 방식을 위에 설명한 sub-gradient, proximal gradient, duality 모델들에서 활용하는 걸 보여주는데, 굳이 따지자면 이 부분이 계산 통계학 (Computational Statistics)과 머신러닝이 만나는 지점이 아닐까 싶다. Logistic regression을 풀 때 손으로 풀 수가 없기 때문에 Newton method로 solution을 찾아가는 것도 잘 안 가르쳐줄 일반인용 강좌만 보던 분께 계산 통계학의 근간인 Newton method와 그 방법을 빌려서 머신러닝의 계산비용을 절감시키는 컴퓨터 사이언스의 만남은 무척 낯설지도 모른다.

 

2. 대학원에서 만나는 머신러닝 수업 – Statistical Machine Learning

몇 달전에 어느 대학 통계학과 4학년 학생한테 데이터 마이닝 수업을 하나 듣고 났더니 이제 다 알게 된 것 같다는 식으로 좀 자뻑하는 메일을 받은 적이 있다. 어이가 없어서 ISLR 수준에서 벗어나고 그런 주장을 해야되지 않겠냐고 강한 어조로 타일렀는데, 얼마나 알아들었을라나?

대학원에서 위의 수업을 듣고 나면 좀 더 레벨업된 통계학 + 머신러닝 융합 수업을 들을 수 있다. 같은 교수가 강의하는 Statistical Machine Learning 이다. 주제는 학부생들용 ISLR과 비슷할지도 모른다. Linear, non-linear, non-parametric regression을 배운 다음에, Clustering과 Ridge, Lasso의 개념, Graph theory에서 나오는 Tree model, network model을 배우는 수업이니까. 당연하겠지만 내용의 깊이는 현격하게 차이가 난다. 제대로된 대학원 수업이니까.

네트워크 이론 설명하면서 잠깐 다뤘던 Centrality, complexity를 Clustering에 적용하면서 수학적으로 범위가 주어질 수 밖에 없고, 이걸 바탕으로 Clustering 작업시 계산 비용을 최적화할 수 있는 컨셉이 여기에 잘 설명되어 있다. 물론 같은 아이디어를 Network에 적용할 수도 있고, 그건 수업 후반부인 여기에서 다루더라.

수식을 제쳐놓고 간단하게 아이디어만 정리하면, 저런 수학적으로 제한될 수 밖에 없는 최소값, 최대값 없이 단순하게 Centrality와 complexity를 cluster나 network에서 계산한다면 모든 가능성을 다 뒤져야한다. 데이터가 많지 않다면 큰 문제가 안 되겠지만, 우리가 다루는 데이터들은 “빅데이터”들이다.

이런 종류의 inequality로 통계량의 범위를 예측하는 작업을 처음했던게 학부 2학년 경제통계에서 Chebyshev’s inequality를 썼던 건데, 그 땐 정말 왜 저런거 공부하나, 도대체 어디에 써먹나는 생각을 했던게 사실이다. 머리에 지식이 더 들어오고 나서야 비로소 저런 지식이 내 계산의 효율을 끌어올려주고, 내 모델을 업그레이드 해 주고, 내 몸 값을 올려준다는 사실을 깨닫게 되었다.

(Source: Beauty of Maths)

 

나가며 – 깊이란?

서울 시내 모처에서 교수로 재직중인 선배들과 사업 이야기를 한 적이 있다. 형님들이 너무 Valuation을 낮게 잡고 시작하시는 것 같길래, 좀 더 스스로를 띄우시라고 시장에 있는 다른 “스타트업”이라는 곳들이 얼마나 수준 낮은 “기술”을 들고 있는지를 농담삼아 던졌었다. 형님들이 웃으면서 그러시더라.

학부생들이 한다는 기술이라는게 다 그렇지 뭐

누군가는 기분 나쁘게, 또 누군가는 씁쓸하게, 또 다른 누군가는 속이 시원하게 들을 멘트라고 생각한다.

예전에 어느 헤지펀드 면접을 보는데, 상황을 하나 던져주고, 어떤 Trading algorithm을 만들 수 있는지 논리를 쌓아보라는 질문을 받은 적이 있다. 가볍게 데이터 셋의 분포를 보고 regression 타입을 정하는 작업을 한참 설명했더니, 이렇게 질문하더라.

Is it deep enough?

듣기 좀 속 쓰린 코멘트였는데, 면접 끝나고 집에 오면서 생각해보니 너무 Shallow한 모델이었다는 사실을 인정할 수 밖에 없었다. 학부생들 기술이라는게 다 그렇다는 저 코멘트에 분명 누군가는 기분이 나쁘겠겠지만, Not-so-deep-enough라는 팩트마저 부인하긴 어렵지 않을까? 링크 걸린 수업의 강의 노트 한번 보시고, 내 모델은, 내 지식은 얼마나 deep enough인지 한번 고민해보시길 바란다. 참고로, deep enough라는 칭찬 받기 참 힘들다.

얼마전, 증권사에서 퀀트 팀 주니어로 일하신다는 분의 메일을 받았다.

글로벌 자산배분 업무라는 허울 좋은 일을 시작했는데, 현실은 매일 뉴스 체크하면서 직관에 의존한 배분만…

시장의 많은 데이터 속에서 유의미한 Implication을 뽑아내는 능력을 기르는….

이론적인 모델은 아니더라도 시장의 패턴을 이용해 (Portfolio를) 분산하는 모델을 여러가지 만들어내는…

메일을 읽자마자 10년쯤 전에 초짜 투자은행가로 첫 사회생활을 시작했던 무렵이 떠오르더라. 바로 위에 있던 형 하나랑 밤새 일하면서, 우리가 만드는 이런 허접한 Valuation 모델만 믿고 몇 조원을 지르겠다는 대기업 회장님들은 도대체 뭐냐고 낄낄거렸는데, 아마 저 분도 은행에서 자기네 펀드 사고 있는 사람들에게 비슷한 감정을 갖고 있을 것이다.

지적인 욕구와 스스로에 대한 자괴감이 스스로를 잡아먹는 걸 느끼고 런던행 비행기를 타던 그 무렵, 대학원을 가면 뭔가 뚝딱 대단한 모델을 배워서 한번에 쏴아아악~ 해결할 수 있을 줄 알았다 ㅋㅋㅋ

런던, 보스턴을 거치며 긴 대학원 시절 내내, 필자의 일상사는 그런 멋진 모델이 아니라 한 줄 따라가기도 벅찬 수식과의 지난한 싸움이었다. 처음에는 여느 경제학도처럼 “저런 단순한 수식으로 세상을 어떻게 설명하냐”는 회의감도 있었고, 모델 하나하나가 어떤 단순화로 세상의 특징을 잡아내는지 깨닫고 난 다음부터는 수식 속에 담긴 경제학적 함의를 찾아내기 위해 고민하기도 했고, 나중에 내 논문을 쓰면서는 모델의 수학적인 엄밀함을 위해 필요한 수학적인 내공에 좌절하기도 했다.

저 분도 자기가 꿈꾸는 모델을 만들고 세상에 검증해보고 싶다면 아마 필자같은 좌절스러운 몇 년을 보내면서 수학적으로 열심히 훈련을 받으셔야할 것이다. 시중에 돌아다니는 (초급용) 데이터 사이언스 관련 서적들 봐서는 답 없을 것이라고, 쓸데없는데 시간 쓰지 말고 대학원을 가셔야된다고 조언을 드릴 수 밖에 없었다. (책 쓰자는 연락이 벌써 몇 군데서나 왔냐….그렇다고 고난이도로 쓰면 아무도 안 사는 책이 될테니.. 쩝) 물론, 꼭 10년전에 학부 교수님이 필자를 뜯어 말리셨듯이, 저 분께 같은 길을 권유할 생각은 전혀 없다.

(Source: pinterest.com)

 

1. 대학원에서 만나는 머신러닝 수업 – Convex Optimization

필자의 수업을 듣고 가신 어느 개발자 분이 큰 맘을 먹고 모 대학 빅데이터 대학원 과정을 들어가셨다. 수업이 쉽다고 매번 불평하시는데, 아마 그 분 실력이 뛰어나서 직장인 대상 석사 프로그램 수준이 좀 부족하게 느껴졌을 수는 있겠다 싶더라.

그 분이 요즘 공부하는 내용이라고 링크를 하나 보내주셨는데, Convex Optimization이라는 수업이다. 자연과학과 공학 교육으로 유명한 카네기 멜론 대학 (CMU)의 통계학 & 머신러닝 전공 대학원 수업인데, 예상대로 수준낮은 MOOC 강의들 (ex. Coursera, Udemy 등)과는 현격한 차이가 있더라.

Convexity를 알아야하는 이유는 우리가 수식으로, 컴퓨터로 풀어내는 모든 계산이 함수의 convexity 또는 concavity를 이용한 최적화 (optimization) 작업이기 때문이다. 수식으로 못 풀어낼 때 머신러닝에서 가장 흔히 쓰이는 방법이 Gradient descent, 이 때 정확성과 계산 속도의 trade off를 겪으면서 쓰는 작업이 Stochastic gradient descent라고 한다. 요기까지가 필자가 일반인 대상으로 수업하는 내용이고, 아마 시중에 알려진 수학적인 도전(?)일 것이다.

대학원 수업에서는 함수 형태에 따라 항상 under-estimate하는 경우를 보정해주는 sub-gradient라는 내용도 다루고, 오차 투성이일 수 밖에없는 1차 함수 approximation을 탈피해서, 2차 이상의 함수로 gradient decent를 하는 proximal gradient descent라는 방법도 배운다. 왜? 이런거 배워서 어디 써먹냐고? 데이터 모델링은 언제나 오차에 노출되어 있는 작업이다. 당연히 인간이 할 수 있는 최대한의 보정작업은 본인의 수학 실력이 올라갈수록 레벨업이 될 수 밖에 없다.

저 링크의 수업은 뒷 부분이 더 재미(?)있다. Duality를 다루는 부분에서는 Regularization에 들어가는 조건식이 사실상 constraint라는 관점에서 출발해서, 목적함수를 constraint에 맞춰서 값을 구하나, constraint를 목적함수에 맞춰서 구하나 결국에는 같은 종류의 최적화 작업이 돌아간다는 걸 보여준 다음에, 그 아이디어를 (블록체인 류의) 네트워크를 푸는데도 쓰고, (또 블록체인에 적용되는) 네트워크 + 게임이론 문제 푸는데도 쓴다. 굳이 블록체인에 국한될 것도 없는게, 모든 수학적인 문제 풀이는 다들 같은 선상에서 출발한다. (이걸 경제학과 파이낸스에서 배웠는데, 강의 노트가 하나도 새롭지 않다면 믿으시겠는가?)

참고로 저 Duality가 필자의 수업 시간에 SVM 설명하면서 왜 SVM은 Regularization을 반대로 하고 있는지에 대한 수학적인 설명이기도 하다.

강의 후반엔 Newton method라고, 최적값을 trial-and-error로 찾아가는 작업이 활용되는 방식을 위에 설명한 sub-gradient, proximal gradient, duality 모델들에서 활용하는 걸 보여주는데, 굳이 따지자면 이 부분이 계산 통계학 (Computational Statistics)과 머신러닝이 만나는 지점이 아닐까 싶다. Logistic regression을 풀 때 손으로 풀 수가 없기 때문에 Newton method로 solution을 찾아가는 것도 잘 안 가르쳐줄 일반인용 강좌만 보던 분께 계산 통계학의 근간인 Newton method와 그 방법을 빌려서 머신러닝의 계산비용을 절감시키는 컴퓨터 사이언스의 만남은 무척 낯설지도 모른다.

 

2. 대학원에서 만나는 머신러닝 수업 – Statistical Machine Learning

몇 달전에 어느 대학 통계학과 4학년 학생한테 데이터 마이닝 수업을 하나 듣고 났더니 이제 다 알게 된 것 같다는 식으로 좀 자뻑하는 메일을 받은 적이 있다. 어이가 없어서 ISLR 수준에서 벗어나고 그런 주장을 해야되지 않겠냐고 강한 어조로 타일렀는데, 얼마나 알아들었을라나?

대학원에서 위의 수업을 듣고 나면 좀 더 레벨업된 통계학 + 머신러닝 융합 수업을 들을 수 있다. 같은 교수가 강의하는 Statistical Machine Learning 이다. 주제는 학부생들용 ISLR과 비슷할지도 모른다. Linear, non-linear, non-parametric regression을 배운 다음에, Clustering과 Ridge, Lasso의 개념, Graph theory에서 나오는 Tree model, network model을 배우는 수업이니까. 당연하겠지만 내용의 깊이는 현격하게 차이가 난다. 제대로된 대학원 수업이니까.

네트워크 이론 설명하면서 잠깐 다뤘던 Centrality, complexity를 Clustering에 적용하면서 수학적으로 범위가 주어질 수 밖에 없고, 이걸 바탕으로 Clustering 작업시 계산 비용을 최적화할 수 있는 컨셉이 여기에 잘 설명되어 있다. 물론 같은 아이디어를 Network에 적용할 수도 있고, 그건 수업 후반부인 여기에서 다루더라.

수식을 제쳐놓고 간단하게 아이디어만 정리하면, 저런 수학적으로 제한될 수 밖에 없는 최소값, 최대값 없이 단순하게 Centrality와 complexity를 cluster나 network에서 계산한다면 모든 가능성을 다 뒤져야한다. 데이터가 많지 않다면 큰 문제가 안 되겠지만, 우리가 다루는 데이터들은 “빅데이터”들이다.

이런 종류의 inequality로 통계량의 범위를 예측하는 작업을 처음했던게 학부 2학년 경제통계에서 Chebyshev’s inequality를 썼던 건데, 그 땐 정말 왜 저런거 공부하나, 도대체 어디에 써먹나는 생각을 했던게 사실이다. 머리에 지식이 더 들어오고 나서야 비로소 저런 지식이 내 계산의 효율을 끌어올려주고, 내 모델을 업그레이드 해 주고, 내 몸 값을 올려준다는 사실을 깨닫게 되었다.

(Source: Beauty of Maths)

 

나가며 – 깊이란?

서울 시내 모처에서 교수로 재직중인 선배들과 사업 이야기를 한 적이 있다. 형님들이 너무 Valuation을 낮게 잡고 시작하시는 것 같길래, 좀 더 스스로를 띄우시라고 시장에 있는 다른 “스타트업”이라는 곳들이 얼마나 수준 낮은 “기술”을 들고 있는지를 농담삼아 던졌었다. 형님들이 웃으면서 그러시더라.

학부생들이 한다는 기술이라는게 다 그렇지 뭐

누군가는 기분 나쁘게, 또 누군가는 씁쓸하게, 또 다른 누군가는 속이 시원하게 들을 멘트라고 생각한다.

예전에 어느 헤지펀드 면접을 보는데, 상황을 하나 던져주고, 어떤 Trading algorithm을 만들 수 있는지 논리를 쌓아보라는 질문을 받은 적이 있다. 가볍게 데이터 셋의 분포를 보고 regression 타입을 정하는 작업을 한참 설명했더니, 이렇게 질문하더라.

Is it deep enough?

듣기 좀 속 쓰린 코멘트였는데, 면접 끝나고 집에 오면서 생각해보니 너무 Shallow한 모델이었다는 사실을 인정할 수 밖에 없었다. 학부생들 기술이라는게 다 그렇다는 저 코멘트에 분명 누군가는 기분이 나쁘겠겠지만, Not-so-deep-enough라는 팩트마저 부인하긴 어렵지 않을까? 링크 걸린 수업의 강의 노트 한번 보시고, 내 모델은, 내 지식은 얼마나 deep enough인지 한번 고민해보시길 바란다. 참고로, deep enough라는 칭찬 받기 참 힘들다.


미화 2만 달러에서 미화 6천 달러로의 가격 하락 기간 동안 전 세계 거래자들이 겪은 고통은 최근 경험한 손실이 수익보다 더 중요하다는 것을 보여줍니다. 경제 관련 매체와 많은 거래자들은 18개월 전 미화 1천 달러였던 가격이 2015년 가을에 미화 2백 달러까지 하락했다는 사실을 잊고 있습니다.

최근 이러한 움직임으로 인해 신규 거래자들 / 투자자들이 사라져버렸습니다. 설상가상으로, 변동성은 가격과 함께 폭락했습니다. 이는 암호화폐에게 화이트 와인 (술) 그리고 진통제 (마약)보다 훨씬 더 치명적인 일입니다.

그렇다면 비트코인의 채택률은 어떨까요? 더 많은 사람들의 비트코인 투자를 망설이게 만드는 주요 요인 중 하나는 높은 변동성입니다. 온전한 비트코인 경제에서 비트코인의 가치가 심하게 요동친다면,  어떻게 비트코인을 실제 상품 (real goods)으로 거래할 수 있을까요? 최하층의 거래자는 시장이 새로운 거래 네트워크의 “근본적” 가치를 가지지 못한다고 한탄합니다. 그렇다면 1년도 되지 않아 경제적 가치가 20배 증가한 거래 네트워크의 토큰이 있을까요? 안타깝게도 없습니다. 따라서, 비트코인의 원동력은 현재의 효용성이 아닌 미래의 효용성을 위한 집중적 투자라고 할 수 있습니다.

인간이 돈을 사용하는 방식을 바꾸는 과정은 엄청난 시간이 소요되는 동시에 어려운 과정입니다. 이 과정은 본질적으로 혼란스러울 수 밖에 없습니다. 돈과 돈을 다루는 방식은 개인적이고 때로는 경건하기까지 합니다. 만약 여러분께 내일 사회에서 일어날 모든 일이 지난 20년 동안 행해져 왔던 것과 달라질 것이라 말한다면, 여러분은 변화를 위한 조심스러운 태도를 보일것이며 엄청난 격변이 필요할 것입니다. 마찬가지로 비트코인을 생산적인 방식으로 사용하려면 새로운 시대로 넘어가는 이 기간에 엄청난 변동성이 있어야 합니다.

비트코인은 새로운 화폐 시스템 상의 콜 옵션입니다. 가장 중요한 옵션 가격 결정 변수는 기초 자산의 암묵적인 변동성입니다. 위 도표가 보여주듯 30일 동안의 실현 연간 변동성은 비트코인 가격과 함께 급락했습니다. 그러나 변동성이 회복될 경우 가격은 상승할 것입니다.

저희는 이미 하락장을 경험해보았습니다

2015년의 치명적인 하락장은 미화 300 달러 선이 무너지면서 시작되었습니다. 그 후 10개월 동안 비트코인은 미화 200 달러에서 미화 300 달러 선에서 거래되었습니다. 이는 50% 범위이지만, 일일 변동성은 크지 않았습니다.

다수의 거래자들, 투자자들 및 시장 분석가들은 변동성 없는 비트코인을 실패한 것으로 평가절하했습니다. 최근 최고치에서 가격이 80% 이상 하락하고 그 이후로 가격 변동이 거의 없는 자산에 대해 관심을 가져야 하는 이유는 무엇일까요?

거래자들은 변동성이 다시 높아지자 시장으로 복귀했습니다. 만일 비트코인이 연간 변동성 기준으로 30일 이내에 100%를 선회할 수 있다면, 빠른 시간 안에 수익을 낼 수 있을 것입니다. 적은 노력과 시간으로 인생의 많은 부분을 바꿀 수 있다고 믿는 FOMO (Fear Of Missing Out, 가격이 상승할 때 그 상승세를 놓치기 전에 재빨리 구매하는 것) “투자자들”은 가격을 미화 2백 달러에서 미화 2만 달러로 상승시켰습니다. 그러나 2015년부터 2017년까지 실제 거래에서 투자자들의 실질적인 비트코인 채택률은 크게 달라지지 않았습니다.

미화 2만 달러로의 회복

실질적으로 변동성이 상승하기 전까지 예전과 동등한 가격을 회복하는 길은 열리지 않을 것입니다. 하지만 사람들이 다시 비트코인에 열광하여 하루 안에 10%의 펌프 앤 덤프 (pump & dumps, 암호화폐를 헐값에 구매한 후, 헐값에 구매한 후 허위 정보 등을 퍼뜨려 가격을 폭등시킨 뒤 되파는 불공정한 거래 수법)가 이루어진다면 예전의 영광을 되찾을 수 있을 것입니다. 그러나 문제는 무엇이 기폭제가 되어 상승세가 다시 시작될 것이며, 얼마만큼의 시간이 소요될 것인가 입니다.

2017년 상승장 동안 전세계적인 대규모 이벤트가 비트코인에 미친 영향은 잊혀졌습니다. 따라서 2018년 하반기에는 해당 이벤트를 통해 비트코인이 안전한 투자 자산임을 입증해야 할 것입니다. 그리스는 독일의 Merkel 총리에게 암호화폐를 공식화폐로 인정할 것을 제안했지만 마지막 갈림길에서 이를 포기했습니다. 그러나 시장이 그리스가 실질적으로 자립할 수 있다고 판단했을 때 비트코인에 긍정적인 반응 (가격 상승)이 나타났습니다. 올해 말 이와 비슷한 유형의 악재가 발생했을 때, 비트코인은 안전한 자금 투자처라는 위상을 되찾을 수 있을까요?

미 연방준비제도 (the Fed), 유럽중앙은행 (ECB)과 일본은행 (BOJ)이 효율적인 방향으로 대차대조표를 조정 또는 전면적으로 감축함에 따라 올해 말 금융 시장에는 잡음이 생길 것으로 예상됩니다. 화폐 발행은 장기적인 수익 창출로 이어지지 못했습니다. 이 상황에서 사람들이 지갑까지 열지 않는다면 금융 시장은 온갖 악재를 몰고다니는 유령과 악귀들의 놀이터가 될 것입니다.

여전히 주류 언론의 사랑을 받는 비트코인

다행히도 주요 금융 언론은 암호화폐에 대해 다루기를 좋아합니다. 거물들의 유명세는 목숨보다 더 위대합니다. 심지어 비트코인과 이더리움이 각각 미화 6천 달러와 미화 4백 달러에 머물러 있었을 때도 이 핵심 그룹의 개별 구성원들은 세대 별로 부유했고, 미디어의 입맛에 맞는 흥미로운 삶의 선택을 하고 있습니다. 2015년에는 아무도 이를 주목하지 않았지만, 2018년에는 모두가 이를 주시하고 있습니다.

자신들의 선견지명을 입증하기 위해, 주류 언론들은 기를 쓰고 비트코인의 가격을 밑바닥으로 곤두박칠치게 만들 것입니다. 이들이 실제로 미래를 예측할 수 있다고 믿는 어리석은 사람들은 가격이 급락하는 암호화폐를 구매하려 할 것입니다. 많은 사람들이 실패하겠지만, 충분히 노력한다면, 일부는 성공할 것입니다. 이렇게 성공한 소매업자들은 거래의 신으로 방송에 전파를 탈 것입니다. 이는 FOMO, 변동성 및 가격 상승을 더욱 확대시킬 것입니다.

일직선으로 오르거나 내리는 것은 존재하지 않습니다. 저는 유혈 사태가 일어날 정도의 고통과 비통함을 아직 경험하지 못했습니다. 진정한 비트코인 방식의 경우, 가격은 누구도 상상하지 못할 생각하는 수준으로 올라가며 거래자들이 BTFD (가격이 하락했을 때 구매하는 것)의 긴장감을 불러일으키는 것보다 더 빨리 반등할 것입니다.

블록체인 투자 전문이라는 VC를 한 분 만났다. 인공지능이 세상을 이끄는 시대가 왔고, 그런 기술을 블록체인에 접목시켜서 비지니스의 혁신이 계속 일어날 것이란다. 곧 특이점이 오고, 그 때부터는 인류가 뭔가를 개발하는게 아니라, 프로그램이 자체 개발을 다 해서 지금까지 인류가 수백만년에 걸쳐 쌓아온 노하우와는 비교도 안 되는 어마어마한 발전이 앞으로 10년안에 일어날 거란다. (푸흡~)

VC와의 미팅은 언제나 둘 중 하나다. 필자의 블로그를 읽고, 괜히 아는체 했다가 다음 블로그 글의 비판 대상이 될까봐 눈치를 보는 VC와, 필자가 누군지 알지 못한 채 다른데서 열심히 떠들었던 말을 반복하는 VC들로 나뉘어진다. 아마 어지간한 스타트업 대표라는 사람들 수준이 다들 고만고만하니까 필자도 비슷한 수준으로 봤을테니 그렇게 자신감 넘치는 “세상 모르는 소리”를 읊으셨을 것이다. “혹시 머신러닝 말고 딥러닝이라는 신기술도 할 줄 아세요?”라고 묻던 스타트업 대표 하나 생각나네 ㅋㅋ

Pabii.co 블로그를 계속 읽으신 분들, 특히 수업에 찾아와서 직접 코드를 보신 분들은 더 깊게 공감하시겠지만, 인공지능 (AI)이라고 불리는 “기술”들은 엄밀하게 따지면 데이터를 바탕으로한 “자동화 알고리즘”이다. 말을 좀 바꾸면, AI라고 불리는 “프로그램”은 주어진 정보들을 바탕으로 “생각”하는게 아니라, 주어진 정보에서 뽑아낸 “규칙”을 “저장”하고 있다. “지능”이라는 단어를 붙여놓으니 마치 복잡하게 생각하는 능력을 갖춘 것처럼 들리지만, 사실은 빅데이터와 시뮬레이션을 바탕으로 예상 가능한 상황에 대한 매뉴얼을 마련해놓은 프로그램들이 돌아가는 것이다. 주먹구구식으로 if-then 조건만 걸었던 단순 자동화에서 데이터의 패턴으로 좀 더 다양한 경우의 수를 커버할 수 있는 자동화, 쉽게 말하면 데이터 기반의 (좀 더 고급) 자동화 시스템을 “인공지능”이라고 부르고 있다.

20세기 최고의 발명품을 세탁기라고 하더라. 가정 주부의 시간 대부분을 뺏던 옷 세탁 작업을 자동화한 덕분에 주부의 여가 시간이 대폭 늘어났고, 주부가 사회 경제 활동에 참여하거나, 남/여 독신 가구가 유지될 수 있는 조건이 갖춰지는데 결정적인 기여를 했다고 한다. 갑자기 인공지능 이야기를 하던 중에 왜 뜬금없이 세탁기가 나왔냐고? 둘 다 본질은 “자동화”이기 때문이다.

자율주행차? 차 주변에 달린 카메라가 눈의 역할을 하고, 내부 알고리즘으로 카메라의 영상과 데이터 베이스 안에 있는 다른 사물을 매칭한다. 덕분에 인간이 눈으로 직접 보고, 손과 발을 움직이지 않아도 되었다. 그럼 인간이 아예 운전을 안 해도 될까? 아직도 차량 속도가 빨라지면 카메라가 잡아내는 이미지의 수준이 떨어지고, 계산 모듈이 비슷한 사물을 매칭하는 시간 소모가 커서 상용화하기 힘들다는 비판이 나온다. 처음 가는 길, 혹은 도로가 미세하게 울퉁불퉁한 길에서 인간은 적절하게 반응할 수 있지만, 알고리즘은 데이터가 쌓여야 반응할 수 있다. 마치 팔만 얼룩이 진 세탁물을 세탁기에 넣었을 때 우리의 기대는 팔 부분만 세탁하는 거지만 옷 전체가 세탁되는 것처럼, 자율주행차 같은 “인공지능” 제품들도 “생각”해서 작동하는게 아니라 “암기”된 기준대로 작동할 뿐이기 때문이다.

(Source: GCN)

 

인공지능 개발의 난제? – by 모 전략컨설팅 회사

아래의 2개 (혹은 4개) 꼭지는 Mc모 유명 글로벌 전략 컨설팅 회사가 인공지능의 미래를 이야기하는 보고서에서 따온 것이다. 보고서 전체가 문돌이들의 풍부한 상상력이 담긴 글이라는 생각에 Trash Can으로 직행시켰다가, 이번 글에서 조목조목 비판해보고 난 다음에 Can 안으로 집어넣자고 스스로를 달래봤다.

  1. 인공지능은 현재 정체기인 성장율을 폭팔적으로 급등시켜줄 기폭제가 될 수 있다
  2. 하지만 투자대비 효율이 높은 상태는 아니고, 1-2년 사이에는 해결되기 힘든 많은 문제들이 여전히 존재하고 있다
    1. 생각하고 발전하는 AI를 만들었을 때, 그 통제 문제
    2. AI 개발을 통해 사라지는 노동 수요의 문제
    3. First mover advantage에 대한 믿음 때문에 서로간 연구 결과를 공유하지 않음

이게 단순히 데이터를 쌓아놓고 패턴을 찾아서 각 패턴별로 다른 액션을 끌어내는 프로그래밍에 불과하다는 사실을 전혀 모른채, 진짜 “지능”의 초기 단계인 것처럼 심각한 메세지를 던지는 이른바 “문돌이”들이 엄청나게 많다. (뭐, 필자도 문돌이다 ㅋㅋ)

 

1. 인공지능은 정말로 경제 성장율을 폭발적으로 급등시켜줄 기폭제가 될 수 있을까?

필자가 장기간 설명한대로, 인공지능은 데이터에 기반한 (쪼끔 더 고급) 자동화 기술이다. 그럼 자동화가 진행되면 경제 성장율이 폭발적으로 증가하나는 질문으로 바꿔볼 수 있을 것이다. 참고로, 인류 역사에서 1,2,3차 산업 혁명 모두 기계의 힘을 빌린 생산성의 증대로 부양 인구 숫자를 늘리고, 잉여 노동력을 만들어냈었다. 지금보다 더 자동화가 이뤄진다면 부양 인구는 늘어날 수도 있겠지만, 정작 잉여 노동력이 늘어날지는 잘 모르겠다. 무슨 말이냐고?

고령화 사회에 대한 대비를 해야한다, 출산율이 무서운 속도로 떨어지고 있다는 류의 인구 구조 변화에 대한 경고 메세지가 언론을 타고 다닌지도 이제 20년이 다 되어가는 시점이다. 생활 수준은 향상되었는데, 정작 생산성 증가 속도가 그에 따라오질 못하니 인구를 감당하지 못해서 생긴 현상인데, 세대별로 배운 기술 수준도 천차만별이고, 당연히 세대별 생산성도 크게 차이가 난다. 말을 바꾸면, 경제 성장율 폭발은 잉여 노동력이 된 구세대들이 4차 산업시대에 걸맞는 수준의 노동 생산성을 유지할 수 있느냐에 달려있다고 본다.

그 동안은 인구가 계속 증가했으니 구세대의 저생산성이 감춰졌겠지만, 이렇게 빠른 속도로 고령화되고 있는데, 구세대가 시대 흐름에 맞는 생산성을 보여주지 못한다면 잉여 노동력이 아니라, 잉여 소비력만 갖춘 인력으로 남게 될지도 모른다. MS-DOS나 Linux 같은 운영체제도 아니고 윈도우에 스마트폰 같은 쉬운 UI도 버거워하시는 세대들에게서 과연 그런 기대를 할 수 있을지는 잘 모르겠다.

(Source: Medium)

 

2-1. 생각하고 발전하는 AI를 만들었을 때, 그 통제의 문제는?

인공”지능”은 정말로 “생각”하고 “발전”하나? 그냥 데이터에 있는 패턴들을 매칭하는 “암기” 수준인데? 차라리 생명공학 연구실에서 복제 인간을 만들어냈을 때, 그 생명체의 인권이 있냐는 질문이 좀 더 적합하다고 생각한다.

애시당초 언론이 열심히 받아적기하고 있는 AI는 “지능”이 아니라 “패턴 매칭 알고리즘”에 불과하기 때문이다. 인간도 반복학습을 통해 뭔가를 배우니 “패턴 매칭 알고리즘”을 갖고 있는 생명체가 아니냐고? 그런데 인간은 정말로 “생각”하는데, “인공지능” 알고리즘은 어떻게 “생각”하는거지?

한 가지를 보면 열 가지를 깨닫는 “천재”는 어떻게 만들어 내야할까?

인공지능이라고 불리는 “패턴 매칭” 수준의 자동화 시스템이 진정한 “지능”으로 거듭나기 위해서는 반드시 “문일지십”을 할 수 있는 형태가 되어야한다.

Bayesian 통계학이 머신러닝에 적용되면서 이제 겨우 걸음마를 뗀 상태인 Dynamic updating도 새로운 정보를 생산해내는 능력은 없다. 단순히 snapshot 정보만 가공하다가 시간의 흐름에 맞춰서 가공되는 모델값을 업데이트할 수 있을 뿐이다. 최소한 지금 우리가 알고 있는 지식의 체계 아래서는 “생각하고 발전하는 AI”란 꿈꾸는 자들의 망상일 뿐이다.

 

2-2. AI 개발을 통해 사라지는 노동 수요의 문제

자동화가 이뤄지면 필연적으로 노동 수요가 기계로 대체될 수 밖에 없다. 말을 자동차로 대체하고 나니 승마는 귀족들의 전유물이 된 것처럼, 아마 자율주행차가 상용화되면 운전은 넷기어에서 나오는 드리프트처럼 부유층의 오락으로만 남을지도 모른다. 자율주행차 덕분에 택시, 트럭 등의 운전수가 알고리즘으로 교체되면 그런 인력들을 어디에서 소화할 수 있을까? 그보다, 사용자들이 계속 고용을 하려고 할까?

임금은 계속 오르고, 노동자들에게 보장해줘야하는 권리는 계속해서 추가된다. 투표로 먹고사는 정치인은 유권자의 대다수인 고용 노동자들의 복지를 개선하는 정책을 취하고, 노동력을 최대한 짜내야하는 기업가는 노동 비용이 더 저렴한 나라로 탈출하거나, 자동화 시스템에 의지할 수 밖에 없다.

여기까지만 들으면 노동자들이 21세기판 러다이트 운동이라도 해야할 판국이 아니냐고 생각하겠지만, 저런 자동화 시스템은 누가 만드는지 한번 되물어 보시라. 로봇 설계하고 제작하는 엔지니어가 필요하지 않을까? 산업 구조의 변화는 노동자를 해고하기만 하는게 아니라, 새로운 노동력을 고용하는 방식으로도 작동한다. 데이터 사이언스에 대한 붐이 불어서 석사 프로그램이 우후죽순처럼 생겨나고, 필자같은 허접 블로그 운영하는 사람에게도 문의 메일이 몰려드는건 사람들이 시대에 맞춰서 변화하고 있다는 증거라고 봐도 무방할 것이다.

산업혁명으로 농경지에서 쫓겨난 농노들이 런던, 맨체스터, 글래스고 같은 대도시들에 몰려들면서 새로운 노동력을 흡수했고, 도시 내에서 생활 공간을 제공해주는 고층 건물, 빠른 이동을 도와주는 도로 포장, 자동차, 지하철 공급이 덩달아서 이뤄졌다. 정보화 혁명이라고 하더니 컴퓨터 프로그래밍이 갑자기 각광을 받게 됐고, IT산업으로 억만장자가 된 사람들이 생겨나면서 예전에는 컴퓨터 수리공으로 입에 풀칠하기 바쁜 사람들 몇 명만 있던 산업이 미국 실리콘 밸리와 중국의 선전을 이끌어가게 됐다.

노동 수요가 사라졌다고? 실리콘 밸리의 1-bed flat 한 달 렌트비가 지난 10년 사이에 3배도 더 뛰었다는건 무슨 뜻일까?

(Source: Paragon Real Estate)

 

2-3. First mover advantage에 대한 믿음 때문에 서로간 연구 결과를 공유하지 않음

이건 도대체 또 무슨 뚱딴지 같은 분석인지 모르겠다. 당장 Github을 보라. 필자도 모든 아이디어를 Scratch부터 다 만들지 않고, 다른 박사들의 논문도 뒤져보고, Stack에 물어보고, Github 코드들을 보면서 계속 고민한다. 가끔은 학회에 가서 비슷한 고민을 했을 법한 사람들과 대화도 나누고, 내가 했던 리서치의 결과물을 공유하면서 상대방의 Insight도 얻어온다.

First mover advantage는 네트워크 효과로 사람들이 모이기 시작하면 성장 속도가 기하급수적이 되는 SNS 서비스 같은 분야 정도 밖에 없다. ARJ, ZIP 같은 압축 프로토콜을 한번 생각해보자. 비전문가들은 당연히 모르겠지만, 이게 대표적으로 PCA의 아이디어를 파일 시스템에 적용하는 방식인데, 일반에 널리퍼진 ZIP 계열의 프로토콜만 있는게 아니라, 계속해서 빠르고 고효율을 지향하는 새로운 프로토콜이 전세계 곳곳에서 생겨나고 있다. 요즘들어 안드로이드 운영체제에 많이 쓰이는 lz4라는 압축 프로토콜은 기존의 lz의 문제를 해결하려는 엔지니어들의 Joint work의 산물이기도 하다.

내 논문을 잘나가는 교수들에게 뺏긴 경험이 있기 때문에 무조건 협업 시스템을 긍정하고 싶지는 않지만, 내 논문을 뺏어갔던 교수도 그걸 Publish해서 명성을 쌓기 위함이지, 그걸 훔쳐서 자기 방구석에서 혼자만 낄낄거릴려고 하지는 않았을 것이다. 그런 연구가 산업에 적용되고 특허만 갖고 있으면 독점 이윤을 오래 누릴 수 있는 시대도 아니다. 수만명의 연구자가 같은 주제에 달려들어서 새로운 Notch를 하나 더 얹으려고 노력하고 있기 때문이다.

연구 결과물을 Publish해서 학문적인 명성을 쌓고 싶은 욕심과, 산업에 적용해서 큰 돈을 벌고 싶은 금전적인 욕심 사이에 어느 쪽이 더 고상한지, 속물스러운지 따위에 대한 논쟁을 하고 싶은 생각은 없다. 다만 어느 쪽이 되었건 인간의 욕심을 충족시켜주는 시스템이 다른 산업에 비해 굉장히 잘 작동하고 있는 분야에 “서로간 연구 결과를 공유하지 않음”이라는 평가를 내리는건 너무 섣부른 판단인 것 같다.

 

나가며 – 기술력이란?

얼마전, CTO 면접자리에서 자기가 인공지능에 대해서 엄청나게 많이 알고 있는 것처럼 주장하는 전형적인 코더를 한 분 만난적이 있다. 본인은 논문들을 계속 읽는다면서 새로운 지식을 빠르게 흡수하는 개발자인 것처럼 포장하시던데, 외람된 표현이지만 정말 “속 빈 강정”인게 너무 훤히 눈에 보이더라. 낙하하는 물체에 대한 이미지 스캔 데이터를 바탕으로 스캔된 물체가 어떻게 이동하고 있는지를 가르쳐주는 새로운 인공지능이 곧 나온다면서, 인공지능이 발전하는 속도가 무시무시하다, 니가 하는 사업은 인공지능이 안 들어간 것 같다, 그 사업 포기하고 새로운 인공지능을 활용하는 사업 모델로 갈아타라는 식으로 이야기 하시더라.

인공지능이라는게 데이터를 처리하는 알고리즘이라는 걸 제대로 인지하지 못한 채, 단순하게 코딩이 인공지능인 것처럼 착각하는 바보를 또 만났다는 생각에 허탈함이 차오르더라. (얼굴에도 드러났을라나? ㅋㅋ) 더 황당했던 부분은 물건이 낙하하는 걸 인지하는 인공지능은 새로운 레벨의 인공지능이고 이걸 자기는 정말 잘 아는 것처럼 주장하는 사람이 정작 그 알고리즘의 핵심인 Bayesian 통계학을 배운 적이 있기는 커녕, 용어조차도 처음 들어보는 표정을 지었다는 거다. 특정 사물에 대한 Dynamic image scan (시간적 순서를 달리하면서 움직임을 파악하기 위한 스캔 작업)의 결과물로 움직임을 계산하는 작업은 Bayesian 통계학의 대표적인 적용 분야다. 시간적 순서에 따라 새롭게 업데이트 되는 데이터를 바탕으로 여러 sub-model / sub-hypothesis에 대한 가중치를 바꿔가면서 모델을 업데이트하는 작업이기 때문이다. (필자의 모델링 수업 1번째 시간에 나오기도 한다.)

요즘 필자의 CTO 면접은 노동 수요가 사라지는게 아니라, 노동 수요의 요구 사항이 바뀐다는 좋은 예시, 과거 세대의 생산성은 미래 세대의 생산성을 따라올 수 없다는 좋은 예시가 아닐까 싶다.

 


(추가)

위에서 언급한 CTO 면접자가 자기가 수학을 모르는것과 상관없이 낙하하는 물체의 방향을 인지하는 “직관 물리학”을 소개한 것에 지나지 않는다고, 베이지안은 그거랑 무슨 관련이냐고 따로 (분노의) 연락을 하시길래, 왜 Bayesian이 중요하다고 했는지, 왜 수학 모르면서 아는체 하지말라고 했는지 좀 배우시라고 몇 줄 더 부연설명한다.

물체가 어느방향으로 움직이는지 직관적으로 알아내는 그런 “지능”이 들어간 시스템이 인공지능이 아니라, 입력되어 있던 데이터 모델과 새로운 데이터가 얼마나 매칭되는지를 계산하는게 요즘의 인공지능이라고 위에 길게 설명했으니 이 부분은 패스한다. 그럼 물체 사진을 입력했을 때, 하방이동 중인지 상방이동 중인지 구분하려면 기존의 데이터 모델은 어떻게 만드는걸까? 당연히 하방이동 중인 사진, 상방이동 중인 사진들로 내 모델을 “Learning” 시켜놨어야하지 않을까? 그렇게 움직이는 동체의 사진을 여러장 입력하는 작업이 바로 Dynamic image scan이다. 그리고 그런 데이터로 모델을 업데이팅 시키는 방식이 위에 언급한대로 Bayesian 통계학이고.

한참후에 연락이오더니, Neural net으로 이걸 맞출 수 있다면서 또 물체의 이동 방향도 모르는채로 Un-supervised learning을 하는 “인공지능”이라고 주장하시던데, 첫째, neural net은 feed forward, back propagation 계산 방식의 특성상 무조건 Supervised learning이 될 수 밖에 없다. Hobfield net처럼 내부적으로 뱅뱅돌아가는 시스템이면 또 모를까. 둘째, Bayesian을 안 쓰고 모델링을 한다고 해도, 모든 사진들에 대해서 이동 방향의 반대방향으로 잔상이 남는다는 점을 입력값으로 넣어줘야한다. 사진 1번은 하방 잔상이고 상방 이동 중, 2번은 우방 잔상이고 좌방 이동 중 등등. 이런 방식으로 Learning의 기초 데이터를 입력하지 않고 어떻게 모델링을 한단 말인가?

개발자들이 일반적으로 Un-supervised learning에 대한 맹목적인 기대를 갖고 있는데, (복잡하고 어려운 통계학을 알고 싶지 않으니 그냥 데이터랑 코드가 좀 알아서 척척척 해 줬으면 좋겠다는 희망일 것이다.) 이렇게 만들려면 사진마다 방향을 일일히 다 지정해줘야하고, Outlier 데이터들을 다 제거해야한다. 방향 잡을 때 방위는 몇 개인가? 동서남북만 잡을래? 더 복잡하게 8개? 16개? 속력에 따라 사진에 남는 잔상이 다를텐데? 직선으로 움직이지 않고 곡선으로 움직이는 물체는? 야구공, 축구공처럼 스스로 고속 회전이 있는 물체는? 잔상 모양이 다들 제각각일텐데? 이러느니 Bayesian 알고리즘으로 데이터 전처리를 하는게 훨씬 더 Intellectual & Efficient한 작업이라고 생각한다. 그래서 테슬라가 자율주행차에 Bayesian 알고리즘을 도입하고 있는 것이다.

수학과 통계학을 모르면 “우와~ 새로운 인공지능이다. 이거봐라, 이렇게 빨리 발전한다.” 이런식의 반응을 보이겠지만, 밑바탕의 모델을 잘 알고 있으면 “어? 이건 이런 모델을 이용했겠네, 비슷한거 만들려면 어떤 방식으로 데이터를 만들고, 어떻게 데이터 입력구조를 만들어야할까?” 같은 질문을 하게 된다. 위에서 언급했듯이, 이게 기술력이고, 이게 내공이다. 필요한 능력은? 코딩인가? 수학/통계학 모델링인가? (참고로 위에 언급한 아이디어들 대부분이 맥락만 다른 방식으로 우리 회사 모델에 적용되고 있다. 그럼 이 사업이 인공지능 기반이라고 부르는데 좀 더 공감해주실 수 있는가?)

모든 사람은 본인이 대단히 똑똑하다는 착각 속에 빠져산다. 박사가서 지도교수에게 후드려맞고, 논문 발표장에서 다른 연구자들에게 폭격을 맞으면서 스스로를 절차탁마하는 시절을 보내지 않으면, 회사에서 상사에게 쿠사리를 먹어가며 본인의 부족함을 메워넣는 지난한 시간을 보내지 않는 한 그런 착각을 벗어나기가 참 어렵다. (다 겪어봤고, 필자도 멘탈 박살나서 괴로웠던 경험이 평생에 걸쳐 쌓여있다.) 자기가 “소개”(라고 하지만 지식 자랑으로 느껴졌던)한 지식이 상대방의 눈에 어떤 방식의 알고리즘인지 한 눈에 각이 나오는 걸 본 적이 없었던 탓에, 또 본인이 그런 수학적인 내공을 쌓은 적이 없었던 탓에 위의 저런 비판이 기분이 나빴을 수는 있다. 근데, 더 늦기 전에 깨우쳐야 필자같은 사람들한테 욕 먹는 횟수가 줄지 않을까? 앞으로 그 분과의 대화에서 느낀 당황스러움이 몇 차례 더 후속 포스팅에 등장한다. (물론 개인의 권익 보호를 위해 개인정보는 제공하지 않는다.) 기분 나쁘다고 불평하는 연락하시기 전에, 이걸 배워서 남 앞에서 부끄러울 일을 좀 줄여야겠다고 스스로 다잡는 기회가 되시길 바랄 뿐이다.