마크 주커버그는 고등학생 시절인 2000년대 초반에 시냅스(Synapse)라는 소프트웨어를 개발했다. 사용자가 듣는 음악의 패턴을 파악해서 자동으로 플레이리스트를 만들어주는 MP3용 소프트웨어였다. 상당한 히트작이었다. 어떤 회사가 꼬맹이 주커버그에게 10억 원을 제시하면서 스카우트를 제안했을 정도였다. 하지만 그는 대학에 진학해야 한다는 생각으로 그런 제안을 정중히 거절했다.
시냅스에 대한 소문은 해커들을 중심으로 널리 회자되었다. 전문적인 프로그래머가 아닌 주커버그가 어떻게 그런 스마트한 소프트웨어를 만들 수 있었는지에 대해서 많은 사람들이 궁금해 했다. 그러한 궁금증과 관련한 질문을 받았을 때 주커버그는 아무렇지도 않게 대답했다.
“수학이요.”
자신이 작성한 소프트웨어의 핵심은 사용자의 음악패턴을 포착하는 수학 공식에 있었다는 대답이었다. 그러한 수학이 요즘에는 머신러닝이라는 이름으로 불린다.
IBM의 CEO 로메티는 왓슨(Watson)을 소개하는 자리에서 우리가 이미 인지 컴퓨팅(cognitive computing)의 시대로 접어들고 있다고 단언했다. 그녀는 컴퓨터의 역사를 3단계로 분류했다. 처음 등장했을 때 컴퓨터는 간단한 계산을 수행하는 계산기에 불과했다. 전자식 주판이라고 불리는 것이 어울릴 정도였다. 그래서 이름도 컴퓨터(computer0였다. 그것이 첫 번째 단계다.
컴퓨터에 프로그램을 적재할 수 있는 기능이 추가되고, 하드웨어와 소프트웨어 기술이 눈부시게 발전을 하면서 그것은 엄청난 종류의 일을 수행할 수 있는 범용기계가 되었다. 이것이 두 번째 단계다. 계산기는 작은 아이콘으로 줄어들어서 컴퓨터 내부의 어딘가에 저장되는 조촐한 존재로 변했다. 오늘날의 프로그래머들은 바로 이러한 시대의 한복판에서 학습을 하고, 일을 하고, 놀이를 한다. 그런 우리들에게 컴퓨터는 프로그램을 짜서 넣는 대상이다. 생각은 우리가 하고, 기계는 실행한다.
로메티는 그런 시대가 빠른 속도로 저물어가고 있다고 말한다. 어마어마한 수준의 머신러닝 기능을 탑재한 왓슨과 같은 존재가 등장하면서 인간은 이제 ‘프로그램’이 아니라 자연스러운 말과 글을 통해서 컴퓨터와 의사소통을 할 수 있게 되었다. 혹은 곧 그렇게 될 것이다. 세 번째 단계의 출현이다.
기계가 학습을 수행하는 속도가 빠르고 다루는 데이터의 분량이 방대하기 때문에 왓슨과 같은 존재가 우리의 예상을 뛰어넘는 수준의 일을 수행하는 시대는 생각보다 빠르게 우리 곁에 다가올 것이다. 그때가 되면 사람이 일일이 코드를 짜서 컴퓨터에게 프로그램을 넣어주는 기능은 컴퓨터 내부의 어딘가에 저장되는 조촐한 존재로 변하게 될 것이다. 생각은 기계가 하고, 우리는 학습을 시킨다.
유투브에서 Humans Need Not Apply라는 제목의 동영상을 찾아서보라. 어쩌면 10년, 20년이라는 멀지 않은 미래에 지금 우리가 프로그래밍이라고 부르는 ‘행위’를 기계가 대신 해주고 있을지 모른다. 그 시대를 사는 청년들은 과거에 살았던 우리를 보면서 마치 책을 인쇄하지 못해서 일일이 손으로 필사해서 복사하던 시대를 되돌아보는 지금 우리의 심정이 될 것이다.
프로그래밍과 머신러닝의 차이는 주판과 양자컴퓨터의 차이만큼 극적이다. 프로그램은 정교하게 작성되었다고 해도 능력이 고정되어 있다. 프로그램이라는 개념 자체가 변화를 상정하지 않기 때문이다. 프로그램에게 있어서 변화는 버그다. 하지만 머신러닝에서는 변화가 생명이다. 학습이라는 개념 자체가 변화를 상정하기 때문에 머신러닝이 갖는 능력은 시간이 지나고 경험이 쌓일수록 크고 깊어진다.
머신러닝은 이미 어디에나 있다. 우리가 페이스북에 글을 올리면 주커버그의 소프트웨어는 우리의 감정을 분석한다. 감성 분석(sentiment analysis)이라는 무기를 탑재한 머신러닝 알고리즘은 페이스북이나 트위터에 올라오는 글은 물론, 여러 웹사이트에 올라오는 댓글을 자동적으로 분석해서 그 글이 특정한 주제나 대상에 대해서 부정적인지 아니면 긍정적인지 판단한다. (이런 기능이 정치적인 목적으로 사용된다고 생각하면 끔찍하다.)
사람들이 편지봉투 겉면에 쓰는 우편번호는 이미 오래전부터 손 글씨를 인식하는 머신러닝 알고리즘에 의해서 자동으로 읽히고, 분류되고, 전송되어 왔다. 사람이 눈으로 우편번호를 읽고 분류하던 시절에 비해서 훨씬 더 빠르고, 정확하고, 일관성 있는 작업이 가능해진 것이다. 자동차의 번호판이나 사람의 얼굴을 인식하는 머신러닝 알고리즘도 널리 사용되고 있는 중이다.
구글 뉴스를 보면 다양한 기사들이 보기 좋게 주제별로 분류되어 있는데, 그러한 분류를 어떤 사람이 일일이 수행하는 것이 아님은 물론이다. 구글의 프로그램이 부지런히 뉴스를 긁어오면 문서를 분류하는 머신러닝 알고리즘이 자동적으로 문서를 내용에 맞는 범주로 분류한다. 구글이 야심차게 진행하고 있는 무인 자동차도 머신러닝 알고리즘을 탑재해서 경험을 쌓을수록 운전 실력이 더욱 정교해진다.
불법소프트웨어나 악성코드를 검출할 때도 머신러닝이 활용되고 있고, 금융권에서 대출심사를 할 때, 주식시장을 예측할 때, 신용카드 범죄를 포착할 때에도 머신러닝이 사용되고 있다. 또한 게임에서, 공장에서, 전자상거래에서, 병원에서, 보험회사에서, 기상예보에서, 온라인광고에서, 교육에서 머신러닝은 이미 활용되고 있으며, 적용되는 범위가 무서운 속도로 늘어나고 있다.
머신러닝이 프로그래머를 대체할 거라는 이야기가 믿기 힘들다면, 사람 웹디자이너가 수행하는 사이트 개발과 디자인을 머신러닝이 대신할 거라는 이야기는 어떻게 들리는가? 이것은 미래의 이야기가 아니다. 그리드(thegrid.io)는 현실이다. 사이트를 방문해서 확인해보라. 가까운 장래에 우리가 방문하는 웹 사이트의 대부분은 사람이 아니라 기계가 만든 장소로 변하게 것이다.
관련기사
- 그대가 엉터리 개발자라는 신호들2014.11.04
- 마이너리그에 속한 개발자를 위하여2014.11.04
- 가슴 설레는 한국 방문2014.11.04
- 프로그래머의 고민상담2014.11.04
머신러닝을 전문적으로 다루는 사람을 보통 데이터 과학자(data scientist)라고 부르는데, 현재 전문적으로 프로그래밍을 하는 사람들이 모두 데이터 과학자가 될 필요는 없다. 하지만 머신러닝의 기본적인 개념과 그것을 실전에 응용할 수 있는 방법 정도는 알아두는 것이 좋다. 그것은 마치 일상적인 프로그래밍을 위해서 컴파일러의 내부를 자세하게 알 필요는 없지만, 좋은 컴파일러를 선택하고 활용할 줄 알아야 하는 것과 마찬가지다.
고전적인 의미에서의 프로그래밍의 시대는 확실히 저물고 있다. 하지만 걱정할 필요는 없다. 한 시대의 종말은 새로운 시대의 서막을 의미할 뿐이다. 물경, 새로운 의미에서의 프로그래밍의 시대가 동트는 새벽을 맞이하고 있는 중이다. 기회의 바다다.
*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.