데이터 지능(Data Intelligence) 팟캐스트

2017년, 인공지능을 필두로 데이터를 모으고 활용하여 가치를 만들어내는 방법에 대한 관심이 어느 때보다 뜨겁다. 이미 미국에는 데이터 과학 및 인공지능에 관련된 다양한 팟캐스트가 존재한다. 필자는 얼마전까지 ‘나는 프로그래머다’에서 데이터 관련 방송을 진행했는데, 최근 나프다의 종료와 함께 ‘데이터 지능’이라는 이름의 새로운 방송을 시작하려고 한다. 데이터 지능은 ‘데이터 과학’과 ‘인공 지능’을 조합한 단어로 ‘데이터에서 가치를 끌어내는 능력’이라는 의미도 있다.

‘데이터 지능(Data Intelligence)’은 데이터 과학과 인공지능에 종사하는 다양한 게스트를 초대하여 각 분야에 대한 소개와 트렌드를 알아보는 팟캐스트다. 데이터 과학 및 인공지능 분야에서는 끊임없이 새로운 분야가 생겨나고 기술이 쏟아져 나오는데, 이런 이야기를 현장의 전문가에게 직접 들을 수 있다면 큰 도움이 될 것이다. ‘데이터 지능’은 이처럼 국내외 데이터 관련 전문가들이 대중과 소통할 수 있는 채널이다.

또한 기존 팟캐스트는 전달수단(오디오)의 한계 등으로 깊이있는 이야기를 나누기 어려운데, ‘데이터 지능’은 출연자와 협의를 거쳐 팟캐스트와 연계된 콘텐츠를 번들로 묶어 제공할 계획이다.각 에피소드에 필요에 따라 동영상, 슬라이드, 코드가 포함되는 강의를 추가하여 오디오로 제한되는 팟캐스트의 한계를 뛰어넘는 심도있는 지식을 전달하는 것이다. 이를 위해 유데미(udemy) 등 다양한 파트너와 논의중이다.

나프다를 진행하면서 어떤 일이던 지속가능한 정도로 단순화하는 것이 중요하다는 점을 느꼈다. 이를 위해 데이터 지능은 불펼요한 편집 및 장식을 배제하고 데이터 과학과 인공지능에 관련된 다양한 이야기를 전달한다는 본질에 집중할 생각이다. 본인의 부족한 점을 청취자 분들이 차차 채워주시리라 믿는다. 아래 링크에서 테리님과 함깨하는 데이터 지능 팟캐스트 첫방송을 들으실 수 있다. 축하 인사 보내주신 권정민 & 김승연님께 감사 말씀 전한다.

아이튠즈로 구독하기: http://apple.co/2zh80DH
웹에서 듣기:

스냅에서의 석달

한국에서 중고교를 마친 사람이라면 다들 공감하겠지만, 필자의 고교 시절은 정말 공부 이외에는 전혀 다른 선택지라고는 없는 무미건조한 시절이었다. 아침 자율학습에서 시작해 수업, 야간 자율학습, 그리고 독서실로 이어지는 그 생활을 몇 년을 했다는 것이 지금 생각해보면 믿기지 않는다. 지금도 크게 달라진 것 같지는 않지만 그땐 다들 그렇게 살았다.

하지만 그때는 지긋지긋 했던 고교시절이 서른 중반이 된 지금은 가끔 그리울 때가 있다. 우리나라의 입시제도를 미화하려고 의도는 추호도 없지만 한가지에 자신의 모든 것을 쏟아 부어 몰두하는 경험, 그리고 그 노력의 결과를 좋든 나쁘든 성적이라는 결과물로 확인하고 다시 시작하는 과정에서 많이 배우고 성장한 것은 사실이니 말이다. 어른이 되서는 뭔가에 그렇게까지 집중하기도 힘들고 노력한 결과가 바로바로 보이지도 않으니 말이다.

각설하고 본론으로 들어가자면, 필자가 스냅에서 보낸 석달은 마치 고등학교에 다시 입학한 수험생이 된 기분이었다. 밤낮, 주말도 없이 열심히 일하는 동료들과 보조를 맞추고, 숨가쁜 스케줄과 쏟아지는 이메일을 소화하기 위해서는 깨어있는 시간을 거의 업무에 투자해야 했다. 그러고도 항상 뭔가 부족한 기분이 든다면 지나친 걱정일까. 이렇게 기진 것을 다 털어넣어 일하는 경험은 고등학교, 그리고 대학원 이후 처음이었다.

한가지 다행인 것은 누가 시켜서 이렇게 한 것도 아니고, 그 과정이 고통스럽지는 않았다는 점이다. 우리 팀에는 스냅챗에 검색 기능을 런치해야 한다는 분명하고 가치있는 목표가 있었으며, 이런 공통의 목표를 항하여 모두 열심히 일하는 분위기에 자연스럽게 녹아들었기 때문이다. 마치 기계의 톱니바퀴가 서로 맞물려 돌아가듯 이런 환경에서 대충 시간만 때우려고 했다면 오히려 괴로웠을 갓이다.

이렇게 모두가 합심해서 노력할 끝에 우리 팀은 몇 주 전 스냅챗의 스토리 검색 기능은 미국 전역에 성공적으로 런칭할 수 있었다. 스토리 검색은 전세계의 스냅챗 사용자들이 공유한 스냅을 흥미있는 스토리로 만들어 이를 검색할 수 있게 만들어주는 기능으로, 기존의 메신저 서비스에 더하여 사진 및 비디오 중심의 컨텐츠 플랫폼으로 발돋음하려는 스냅의 중요한 디딤돌이다. 검색에 이어 지난주에 파트너 팀에서 런칭한 스냅 맵 역시 이런 컨텐츠 전략의 일환이다.

필자는 대학원 시절부터 검색 관련 일을 했지만, 소셜 네트워크 상에서 이미지 및 비디오 컨텐츠를 대상으로 하는 스냅챗의 스토리 검색은 상당히 다른 문제다. 사용자들의 검색 의도, 질의 패턴, 그리고 컨텐츠의 성격이 모두 다르기 때문이다. 원하는 정보를 효율적으로 찾아주어야 하는 검색엔진의 기본에 충실하면서, 흥미있는 컨텐츠를 원하는 스냅챗 사용자들의 특성을 모두 만족시켜야 하는 것이다. 또한 문서가 아닌 이미지와 비디오에서 검색에 필요한 다양한 속성을 뽑아낼 수 있어야 한다.

게다가 검색 대상인 웹 문서가 이미 주어진 웹 검색과 달리 스냅챗의 검색은 ‘문서’를 만드는 것에서부터 시작한다. 검색 대상이 되는 스토리 자체를 사용자들이 공유한 스냅을 바탕으로 만들어야 하기 때문에 비슷한 주제 및 시공간에서 찍힌 스냅을 일관성있는 스토리로 만드는 과정이 추가되는 것이다. 여기에는 분류, 군집화, 필터링 등 다양한 머신러닝 기법이 사용되며, 이 과정이 꾸준히 개선되기 위해서는 대한 엄밀한 평가 기법이 필요한데, 이 부분이 현재 필자의 주된 업무 영역이다.

연구자와 개발자의 구분의 비교적 뚜렸했던 MS에 비해, 필자가 직접 완성도나 높은 코드를 짜서 보여줘야 한다는 것도 새로운 도전이었다. 평가 지표 및 데이터 분석 결과를 리포트나 프리젠테이션 형태로 다른 팀에게 전달했던 예전 직장에서와 달리, 실제 지표 계산에 필요한 데이터 파이프라인을 많은 부분 직접 만들어야 하기 때문이다. 그래도 원래 글쓰기던 코딩이던 뭔가 만들는 행위를 즐기는 편이라 별로 힘들지는 않았다. 덕분에 문서가 아닌 코드로 말하는 개발자의 일상에도 익숙해지고 있다.

스냅에서의 세 달은 분명 필자의 인생에서 가장 편안한 시기는 아니었지만 돌이켜보면 상당히 만족스러웠다. 정신없이 하루하루를 보내다가 어느 날 거울에서 키가 훌쩍 큰 자신을 발견한 십대의 기분이랄까. 작년 창발의1 컨퍼런스 키노트에서 윤필구님은 현실에 안주하지 않는 도전을 강조하며 ‘스스로를 불편하게 만드는 일을 종종 해야 성장한다’는 말씀을 하셨는데, 편안하고 만족스러운 시애틀 생활에 머물렀다면 지금의 만족감은 경험하지 못했을 것이다.

시애틀에서 LA로, 그리고 최근에 검색팀이 있는 SF오피스로 옮기면서 생활 면에서도 적응해야 할 부분이 많았는데, IT의 중심지인 실리콘벨리에서의 생활도 기대가 된다. 당분간 회사일로 바쁜데다 몇주 전에는 아내가 귀여운 딸아이를 출산해서 정신이 없었지만, 앞으로 이 지역에 계시는 IT 종사자 분들과도 폭넓게 교류하려고 한다. 마지막으로 Snap의 LA / SF / 시애틀 오피스에서는 열정과 실력을 갖춘 데이터 과학자 및 개발자를 채용하고 있으니 혹시 관심이 있는 분이라면 필자의 메일(lifidea@gmail.com)로 연락 바란다.

[1]: 시애틀의 한인 IT 종사자들의 모임: http://www.changbal.com/

MSFT >> SNAP

The biggest risk is not taking any risk… In a world that changing really quickly, the only strategy that is guaranteed to fail is not taking risks. — Mark Zuckerberg

snapchat_sci2

필자가 MS의 데이터 과학자로서 검색 모델을 만들고 평가하는 일을 시작한지 약 5년이 지났다. 그동안 다양한 팀과 일하면서 여러 검색 및 평가 지표를 개발하였고, 그 과정에서 검색을 포함한 다양한 온라인 서비스의 품질을 평가하는 일에 대한 전문성을 쌓을 수 있었다. 연구자에게 MS는 특히 거의 이상적인 직장이다. 엄청난 데이터와 컴퓨팅 자원, 여전히 세계 최고 수준을 자랑하는 연구자들, 출퇴근 시간에 아무도 신경쓰지 않는 자유로운 근무 환경까지 말이다. 아마 평생 MS에서 좋은 경력을 쌓는다고 해도 괜챃은 삶이 될 것이다.

하지만 지난 4년간 MS에 근무하면서 세상이 얼마나 빠르게 바뀌는지를 실감했다. 전통적인 웹 검색이 모바일 검색에 추월당한 것이 몇 년 되지도 않았는데, 모바일 검색도 음성 비서 등에 조만간 자리를 내줄 전망이다. 대부분의 기계학습 연구자들이 앙상블(ensemble) 러닝에 열광하던 것이 엇그제 같은데, 어느새 대학생들도 딥러닝을 공부하는 시대가 되었다. 데이터 과학계의 뉴스가 공유되는 Datatau에는 거의 매일 새로운 시각화, 기계학습, 데이터 처리 도구가 올라온다.

데이터 과학 분야에서 약 10년간 배우고 일했으며, 새로운 지식과 기술을 배우는 것을 누구보다도 즐긴다고 자부하는 필자에게도 이는 현기증이 날만한 속도다. 그 동안 공부를 멈추지 않기 위해 매년 꾸준히 논문을 쓰고, 작년에는 책까지 출간했지만 이런 변화를 따라가기에는 충분치 않다고 느꼈다. 변화에 적응하고, 나아가서 이를 선도하기 위해서는 좀더 작고 기민한 조직에서 일해야겠다는 생각을 했다. 조직에 속한 개인의 발전 속도는 그 조직의 민첩성에 제한받기 마련이기 때문이다.

이와 함께 필자에게 찾아온 것이 전통적인 ‘연구’에 대한 회의다. 필자는 검색 모델 및 평가 분야에서 박사 학위를 받고 MS에 와서도 꾸준히 논문을 써 왔다. 이공계의 박사 과정은 자신이 택한 분야의 최신 지식과 기술(state-of-the-art)을 습득하고 나아가 이를 한단계 끌어올리는 것을 목표로 하며, 필자는 여기에 도전한 것을 한번도 후회한 적이 없다. 하지만, 학위를 받고 약 5년간 같은 분야의 일을 하면서 과연 필자가 선택한 연구자로서의 진로가 스스로의 미래에 최선의 길인지에 대해 최근에 의구심이 들기 시작했다.

오해의 소지를 막기위해 밝히자면 필자는 여전히 연구를 좋아한다. 필자가 의구심을 갖는 것은 ‘학술적인(academic)’ 연구자의 길을 가는 것이다. 주요 저널이나 컨퍼런스에 게시하기 위한 논문을 쓰는 것이 실제 세계에 영향을 미칠 수있는 최선의 방법일까 하는 고민이다. 연구 논문을 쓰는 일은 엄격한 형식을 요구하며, 그 결과가 컨퍼런스 등에 발표되어 세상의 빛을 보는 데에는 오랜 시간이 걸린다. 실제 세계의 큰 영향을 주는 훌륭한 연구자와 논문이 있지만 이는 매우 드물며, 이는 환경과 노력 그리고 운이 모두 결합되야 가능한 일이다.

논문이 아니라도 최근에는 블로그, GitHub 페이지, SNS 등 자신의 연구 결과를 전달하고 검증받을 수 있는 방법이 얼마든지 있다. 컨퍼런스 역시 학술 컨퍼런스 이외에 OSCon이나 Strata와 같은 산업계 컨퍼런스도 활발하다. 과거에는 제대로 된 연구를 하려면 학계에 있어야 했지만 점차 그런 벽도 허물어지고 있는 것이다. 예전에는 언론사의 기자가 되어야 뉴스를 전할 수 있었지만, 지금은 누구나 글을 써서 널리 퍼뜨릴 수 있는 것과 같은 이치다. 기술 발전에 따라 이런 소위 ‘연구의 민주화’라는 추세는 점차 가속화될 것이다.

MS에 처음 들어올 때만 해도 필자는 계속 논문을 쓸 수 있고 학계에서 활동할 수 있는가를 직업 선택에서 가장 중요한 기준으로 삼았다. 하지만 이제 그런 전통적인 연구자의 길을 고집하지 않기로 했다. 이보다는 어떤 형태가 되었던 새로운 기술과 지식을 접하고 발전시키며, 이를 통해 중요한 문제를 해결하고 세상에 임팩트를 만들 수 있는 일을 하고 싶다는 생각이다. 제도와 형식의 구속을 벗어 던질수록 연구자로서의 본질에 충실할 수 있지 않을까.

이런 고민 끝에 필자는 최근 스냅(Snap Inc.)에서의 새로운 도전을 결심했다. 스냅은 미국 및 유럽의 젋은 층에게 인기를 끌고 있는 SNS 서비스인 스냅챗(Snapchat)으로 잘 알려진 회사로, 최근에는 사진 및 동영상을 손쉽게 촬영할 수 있는 스팩타클(Spectacle)을 선보이기도 했다. 올해 창업 42년이 지난 MS가 중년의 회사라면 스냅은 이제 사춘기를 지나 어른이 되려고 하는 어린 회사다. 또한 스냅챗은 사진 및 비디오 중심의 SNS 서비스니, 필자가 주로 해오던 웹 문서 중심의 검색과는 상당히 다른 영역이다.

스냅은 독특한 제품과 기업 문화로도 잘 알려져 있다. 스냅챗은 카메라가 초기 화면에 나오는 인터페이스, 받자마자 지워지는 메시지, 이벤트에 관련된 사진과 비디오를 시간순으로 묶어서 보여주는 스토리 등 개성있는 디가인과 기능으로 미국과 유럽 10-20대를 중심으로 한 두터운 이용층을 확보하고 있다. 작년에는 카메라가 달린 선글라스인 스펙타클을 런치하고, 이를 옮겨다니는 자판기를 통해 판매하는 독특한 마케팅으로 화제가 되기도 하였다. 대부분의 테크 회사가 실리콘벨리를 거점으로 하고 있지만, 스냅은 LA의 베니스(Venice) 해변가에 오피스가 있다는 점도 다르다.

새로운 회사에서 만만치 않은 도전이 예상되지만 이는 역으로 보면 성장의 기회이기도 하다. MS에 있을때보다 업무야 더 바빠지겠지만 한창 성장하는 젊은 스타트업의 활기찬 에너지를 느끼고, 이에 기여하는 것도 나쁘지는 않은 경험이다. 웹이 아닌 채팅 로그, 그리고 소셜 네트워크 데이터를 만져보는 것도 데이터 과학자로서의 한번 해보고 싶었던 일이다. 문서가 아닌 사진이나 비디오를 검색하거나 추천하는 모델을 만드는 것도 흥미있어 보인다. 정든 시애틀을 떠나는 것도 아쉽지만 LA에서의 생활도 기대가 된다.

서두에서 인용한 마크 저커버그의 말처럼 변화하는 세상에서 가만히 있는 것만큼 위험한 일도 없을 것이다. 이제 변화의 파도에 올라 탔으니 물결에 몸을 맡기고 어디든 가야 할 것이다. 그 목적지가 어딘지는 아직 모르지만, 결말이 뻔한 영화처럼 시시한 것도 또 없지 않은가.

p.s. Snapchat은 여기서 다운받아 사용하실 수 있습니다.

제 Snapchat ID는 lifidea이니, 친구 등록해주세요 :)

데이터과학 팟캐스트를 시작합니다!

예술가들은 종종 자신이 주특기가 아닌 다른 미디엄의 가능성에 도전하곤 한다. 장편 소설을 본업으로 하지만 그 중간중간 좀더 가벼운 소재를 바탕으로 수많은 단편 소설이나 에세이를 펴낸 무라카미 하루키, 화가로 유명하지만 입체파의 대가답게 수백점의 조각을 남기기도 한 피카소가 떠오른다. 이처럼 예술가들이 다양한 장르에 도전함으로써 아이디어에 적합한 표현 방식을 찾거나, 창작의 영감을 얻어왔다.

필자는 스스로를 ‘글쓰는 사람’으로 여겨 왔지만, 이번에 글이 아닌 대화라는 미디엄에 도전하기로 결심했다. 그동안 논문이나 책을 통해 독자들을 만나며 최대한 독자들의 피드백을 청취하려고 애써왔지만, 글이라는 미디엄이 갖는 일방성에 한계를 느껴 왔다. 꾸준히 쓰겠다는 목표를 지탱해줄 동기를 찾기가 쉽지 않은 문제도 있었다. 이에 혼자 일방적으로 전달하는 것이 아니라, 다른 사람과 대화하는 형태가 어떨까 생각하게 되었다.

필자가 생각하는 대화의 구체적인 형태는 데이터 과학의 다양한 영역을 주제로 하는 팟캐스트(Podcast)이다. 작년에 헬로 데이터 과학을 출간한 이래 데이터 과학 분야에서는 딥러닝에 대한 폭발적인 관심을 비롯하여 많은 변화가 있었다. 관련 분야 종사자들에게도 현기증이 날 정도의 발전 속도니, 인공지능 및 관련 기술의 미래에 대해서 다양한 억측이 난무하는 것도 무리는 아니다.

이처럼 빠르게 변화하며, 게다가 데이터 수집, 처리, 분석, 시각화 및 소통 등 다양한 영역을 포괄하는 데이터 과학의 특성상 한사람이 모든 영역의 전문가가 되기는 힘들다. 하지만 각 분야의 전문가들을 초대하여 깊이 있는 이야기를 들을 수 있다면 많은 사람에게 도움이 되는 컨텐츠를 만들어낼 수 있을 것이라는 생각이다.

하지만 팟캐스트를 시작하는 것도 간단한 일이 아닌데, 다행히 나는 프로그래머다(나프다)에서 필자가 진행하는 채널을 하나 만들어 주시기로 하셨다. 채널의 이름은 데이터 싸이언스에서 ‘싸이’를 따서 싸이(Sci)채널로 하기로 했다. 방송을 통해 연구(싸이언스)와 개발(엔지니어링)간의 브릿지 역할을 하고 싶은 생각도 있으니, 나쁘지 않은 이름이다.

나프다는 국내 개발자들이 가장 많이 듣는 방송으로, 필자도 작년에 데이터 과학을 주제로 출연했던 경험이 있다. 팟캐스트를 처음 시작하는 입장에서, 나프다를 통하여 수만명에 달하는 청자에 도달할 수 있는 것은 큰 가능성이다. 나프다에서도 최근 데이터 관련 토픽을 많이 다루고 있으니, 반대로 필자가 기여할 수 있는 부분도 있다고 본다.

나프다는 소프트웨어 개발자를 대상으로 한 방송이기는 하지만, 데이터 과학과 개발은 밀접한 관계가 있으며 그 구분은 점점 무의미해지고 있으니 문제는 없으리라 본다. 사실 요새 개발자 가운데 데이터 과학에 전혀 무관한 사람은 많지 않을 것이며, 딥러닝 분야에서 빠른 혁신이 일어나는 것은 텐서플로와 같은 개발 툴킷의 등장에 힘입은 바가 있으니 이 둘의 거리는 점점 좁혀지고 있다고 본다.

방송은 소통의 수단으로 중요하지만, 방송된 내용이 널리 공유되고 이를 바탕으로 다양한 컨텐츠가 만들어질 수 있다면 더 가치있을 것이다. 앞으로 필자의 홈페이지 및 페북 페이지를 통해서도 방송 내용 뿐 아니라 데이터 과학 관련 자료와 각종 소식을 지속적으로 공유할 생각이다. 이들 채널은 싸이 채널에 출연하시는 분들과도 공유하여, 데이터 과학 전문가들과 일반인들이 소통할 수 있는 장으로 만들어 나갈 계획이다.

아래 이미지를 클릭하면 나프다 싸이 채널의 모든 방송을 들을 수 있다!

2017-02-10 16_39_16-Presentation1 - PowerPoint

 

나프다 싸이채널 방송 듣기

온라인 서비스 개선을 데이터 활용법 (How We Use Data 발표)

최근에는 주로 데이터 과학 입문자들을 위한 글을 주로 올렸었지만, 저의 본업은 검색엔진(Bing)의 데이터 과학자로서 검색 결과의 품질을 측정하고 개선할 수 있는 평가 지표 및 기법을 개발하는 일입니다. 이를 위해서 사용자 행동, 사용자 피드백, 패널 등 다양한 데이터 소스와 실험 디자인 및 분석 기법이 사용됩니다.

이와 관련해 최근에 How We Use Data라는 행사에서 ‘온라인 서비스 개선을 데이터 활용법’이라는 주제로 발표를 할 기회가 있었습니다. 웹 검색엔진, 추천서비스, 소셜 네트워크 등 다양한 온라인 서비스 회사들에서 어떻게 서비스 품질을 평가하고 개선하기 위해 노력하는지를 궁금해 하셨던 분이라면 참고하실만합니다. 좋은 자리 만들어주신 고영혁님께 감사 말씀 드립니다.

아래 발표자료와 동영상을 공개합니다.

위 발표와 관련하여 다음 자료를 추천합니다. 데이터 활용에 관한 좀더 폭넓은 방법과 사례를 원하시는 분이라면 헬로 데이터 과학을 참고하시기 바랍니다.

기계학습을 배우는 가장 쉬운 방법: AzureML로 집값 예측하기

최근 알파고와 인간의 대결이 화제가 되었지만, 기계학습 기법은 다양한 분야에서 널리 활용되고 있다. 여기서는 기계학습을 이용한 문제 해결의 과정을 사례로 배워보도록 하자. 기계학습의 다양한 기법 가운데 수치 형태의 속성을 예측하는 회귀 분석을 수행하고 그 결과를 평가하는 방법을 배워보도록 하자.

시중에는 다양한 기계학습 라이브러리 및 도구가 나와 있는데, 이번 실습에는 코드 없이 직관적인 인터페이스를 통해 기계학습을 수행할 수 있는 AzureML을 (‘애저엠엘’이라고 읽는다) 사용한다. AzureML은 클라우드 기반이라 설치할 필요도 없고, 만들어진 결과를 API 형태로 바로 활용할 수 있는 편리한 환경을 제공한다. (세부사항은 MS 공식 홈페이지 참조)

실습에 사용할 데이터셋은 보스턴의 지역별 집값에 영향을 끼치는 요인을 정리한 것으로, 다양한 변인을 조합하여 각 지역의 집값을 예측하는 것이 목표다. 본격적인 실습에 들어가기에 앞서 우선 데이터의 다양한 속성을 알아보자. 각 속성은 집값에 영향을 끼치는 다양한 요인을 나타내는 것을 알 수 있다.

속성

설명

CRIM

마을별 범죄율

ZN

주거지의 비율

INDUS

공업 지의 비율

CHAS

강변 위치 여부

NOX

대기 중 질소 산화물 농도

RM

가구당 방의 개수

AGE

1940년 전에 지어진 집의 비율

DIS

일터와의 평균 거리

RAD

고속도로 접근성

TAX

재산세율

PTRATIO

마을 별 학생-교사 비율

B

흑인 주거 비율

LSTAT

저소득층 주거 비율

MEDV

집값 중간값


AzureML 소개

AzureML(정식 명칭: Microsoft Azure ML)은 MS Azure (애저) 클라우드 컴퓨팅 플랫폼의 기계학습 부분을 일컫는다. 클라우드 컴퓨팅의 특성상 사용자는 자신의 컴퓨터에 프로그램을 설치하는 대신에 AzureML 서비스에 접속하여 원하는 기계학습 모델을 만들고, 이를 웹 서비스 형태로 배포할 수도 있다.

AzureML은 대용량 처리가 가능한 클라우드 환경에서 기본적인 선형 모델부터 최신의 앙상블 기법에 이르기까지 다양한 기계학습 방법을[1] 제공한다. 또한 사용자 경험(UX) 측면에서도 AzureML 스튜디오라는 (Microsoft Azure ML Studio) 기존 기계학습 환경보다 훨씬 편리한 환경을 제공한다. 프로그래밍이 아닌 마우스 조작으로 기계학습의 모든 단계를 수행할 수 있는 것이다.

AzureML 시작하기

AzureML은 기계학습 모델을 만들고 관리하고 배포하기 위한 모든 기능을 제공하는 AzureML 작업공간(workspace)을 제공한다. AzureML을 시작하기 위해서는 AzureML 작업공간에 무료 계정을 만들어 로긴해야 한다. 그 절차는 다음과 같다.

  1. 컴퓨터의 웹 브라우저를 실행한다.
  2. 주소창에 http://studio.azureml.net를 입력하여 AzureML 작업공간에 접속한다.
  3. 홈페이지의 위/오른쪽 코너의 Sign In 버튼을 클릭한다.
  4. 자신의 마이크로소프트 계정을 입력하고 (hotmail.com 가능) Sign In 버튼을 클릭한다.

    만약 마이크로소프트 계정이 없다면 아래 링크를 클릭하여 계정을 만들 수 있다.
  5. 만약 로긴 후에 Welcome 비디오가 보이면 이를 시청하거나 비디오 오른쪽 위의 X 버튼을 클릭하여 이를 닫는다.
  6. 마이크로소프트에서 제공하는 Microsoft Samples 화면이 나오면 역시 오른쪽 위의 X 버튼을 클릭하여 이를 닫는다.
  7. 이제 여러분은 마이크로소프트 계정을 사용하여 AzureML 작업공간에 로긴되었다.

AzureML에서 실험 만들기

AzureML 작업공간에서는 모델을 만들고 평가하고 분석하는 모든 작업이 실험(Experiment)이라는 단위로 이루어진다. 실험은 모델과 관련된 데이터, 알고리즘, 그리고 기타 작업을 모두 포함한다. 이제 첫번째 실험을 만들어 보자.

  1. 페이지 아래 왼쪽의 NEW 버튼을 클릭한다.
  2. NEW 대화 창에 EXPERIMENT 가 선택된 상태에서 Blank Experiment 버튼을 클릭한다.
  3. 이제 새로운 실험이 생성되었다. 실험의 각 부분은 다음과 같은 기능을 한다.
  1. 화면 중앙에 위치한 캔버스(Canvas)는 여러분이 실험을 구성하는 공간이다. 실험의 구성은 대개 적절한 모듈(module)을 끌어다 놓고 (drag and drop) 데이터의 흐름에 따라 서로 연결하는 과정이다.
  2. 사이트 왼쪽의 네비게이션 아이콘은 작업공간으로 돌아갈 수 있게 해준다.
  3. 캔버스 왼쪽에는 모듈 창이 있다. 모듈은 실험을 구성하는 재료가 된다.
  4. 캔버스 오른쪽에는 속성(Properties) 창이 있다. 여기서 각 모듈의 속성을 지정할 수 있다.
  5. 캔버스 위의 ‘Experiment created on…’,으로 시작하는 텍스트를 선택하여 지우고, 아래와 같이 Boston Housing Prices Regression을 입력한다.

AzureML을 사용한 탐색적 분석

이제 생성된 실험에 데이터셋과 모듈을 추가하여 본격적인 분석을 수행해보자. AzureML은 데이터를 불러들이는 여러 방법을 제공하는데, 여기서는 이 책과 함께 제공되는 보스턴 집값  데이터셋 (ch4/Boston.txt)을 불러들여 볼 것이다.

  1. 앞서 실험을 만들 때와 마찬가지로 페이지 아래 왼쪽의 NEW 버튼을 클릭한다.
  2. NEW 대화 창에 DATASET이 선택된 상태에서 FROM LOCAL FILE 버튼을 클릭한다.
  3. 파일을 데이터셋을 업로드하는 대화상자에서 우선 Choose File을 선택하여 보스턴 집값  데이터셋 (ch4/Boston.txt)을 불러들이고, 다음과 같이 입력한다.
  4. Boston Housing Prices라는 이름의 데이터셋이 추가된 것을 확인할 수 있다.
  5. 위에서 추가한 보스턴 집값 데이터셋을 캔버스로 끌어다 놓고, [dataset/Visualize]를 선택한다.
  6. 이제 데이터셋을 한눈에 확인할 수 있다. 아래 화면은 데이터셋의 행과 열의 개수, 그리고 처음 100행과 100열을 각 열에 대한 히스토그램과 함께 제공한다.
  7. 이제 화면 가장 오른쪽의 집값(medv) 속성을 클릭해본다. 해당 속성에 대한 다양한 통계값과 시각화를 볼 수 있다.
  8. AzureML은 속성간 관계를 시각화하는 기능도 제공한다. 위 화면에서 compare to 옆의 선택상자를 클릭하면 집값과 다른 속성을 스케터플롯으로 비교할 수 있다. 아래는 집값을 범죄율(crim) 및 방의 개수(rm) 속성과 비교한 결과다. 범죄율이 높은 곳은 집값이 상대적으로 낮으며, 방의 개수는 집값과 거의 비례하는 것을 알 수 있다.
  9. 이런 식으로 다양한 속성 간의 관계를 살펴보도록 하자.

AzureML을 사용한 회귀 분석

데이터를 살펴보았으니, 이제 예측 모델을 만들어보자. 우선 주어진 데이터셋을 모델을 만들기 위한 학습 데이터와 만들어진 모델을 평가하기 위한 평가 데이터로 분리하도록 하자.

  1. 우선 작업공간에서 데이터 분리를 위한 모듈을 찾아보자. 작업공간 왼쪽 위의 검색 창에 ‘split’을 입력하고 엔터를 누르면, 검색어에 해당하는 모듈만 볼 수 있다.
  2. Split 모듈을 끌어서 캔버스에 끌어다 놓는다. Split 모듈은 입력 포트 하나와 출력 포트 2개가 있으며, 화면 오른쪽의 Properties 창에서 모듈의 다양한 속성을 지정할 수 있다.
  3. Boston 데이터셋 모듈의 출력 포트에 마우스를 클릭한 뒤 끌어서 Split 모듈의 입력 포트에 놓으면 아래와 같이 두 모듈이 연결된다.
  4. 화면 오른쪽의 Properties 창에서 Fraction of rows in the first output dataset 텍스트 상자를 찾아 0.75를 입력한다. 이는 75%의 입력 데이터를 왼쪽 출력 포트로, 그리고 나머지 25%의 입력 데이터를 오른쪽 출력 포트로 보내는 설정이다.
  5. 캔버스 아래쪽의 RUN을 클릭한다. 이 명령은 작업공간의 각 모듈을 연결된 순서대로 실행한다.
  6. 실행이 완료되면 다음과 같이 Split 모듈의 오른쪽에 녹색 체크 표시를 볼 수 있다.
  7. 이제 Split 모듈의 왼쪽 출력 포트를 클릭해서, 메뉴의 Visualize를 선택하자. 380개의 (75%) 항목을 (rows) 확인할 수 있다. 같은 방식으로 오른쪽 출력 포트를 확인해 보면 126개의 (25%) 항목이 확인된다.

이제 널리 사용되는 선형 회귀 알고리즘을 사용해 집값을 예측하는 모델을 만들어 보자.

  1. 위에서와 같은 방식으로 검색 창에 train을 입력하여 Train Model 모듈을 찾고, 이를 캔버스에 끌어다 놓는다. 그 후에 Split Data 모듈의 왼쪽 출력 포트와 Train Model 모듈의 오른쪽 입력 포트를 연결한 결과는 다음과 같다.
  2. Properties 창에서 Launch column selector 버튼을 클릭한다. 이 창에서 모델이 예측하고자 하는 속성을 선택할 수 있다. 입력 창에 medv를 입력한 결과는 다음과 같다.

    입력 창의 오른쪽 아래 체크 버튼을 () 클릭하여 선택을 완료한다.
  3. 이제 선형 회귀 알고리즘에 해당하는 모듈을 추가해보자. 다시 화면 왼쪽 위의 검색창에 linear regression을 입력하여 선형 회귀 알고리즘을 찾은 후, 이를 캔버스에 끌어 놓고 Train Model 모듈의 첫번째 입력 포트와 연결한 결과는 다음과 같다.
  4. 이제 화면 아래 RUN 버튼을 눌러 선형회귀 모델을 만들 수 있다. 실행이 완료된 후에 Train Model 모듈의 출력 포트에 마우스 오른쪽 클릭을 하여 Visualize 해보면 다음과 같은 결과를 볼 수 있다. 학습된 모델의 설정값과 속성의 가중치를 확인할 수 있다.

마지막으로 만들어진 모델을 평가해보자. 모델은 만드는 과정에는 학습 데이터셋이 사용되었지만 만든 모델을 평가하는 과정에는 평가 데이터셋을 사용한다.

  1. 모듈 검색 창에 score를 입력하여 Score Model을 찾아 캔버스에 끌어 놓은 후, 아래 그림과 같이 앞서 만든 모델 및 평가 데이터와 연결한다. Score Model 모듈은 우리가 앞서 만든 모델을 사용하여 평가 데이터셋의 집값(medv)을 예측하는 기능을 한다.
  2. 화면 아래 RUN 버튼을 사용하여 실험을 실행하고, 실행히 끝난 후에는 Score Model 모듈의 출력 포트를 Visualize한다. 화면에 나오는 속성 가운데 Scored Labels는 집값(medv) 속성을 예측한 결과다.
  3. 화면에 나오는 컬럼 가운데 집값(medv)을 선택하고, 화면 오른쪽의 Visualizations 창에서 compare to에 Scored Labels를 선택하면 다음과 같다. 이 스케터플롯의 각 점은 평가 데이터셋의 각 항목에 대해 예측된 집값과 실제 집값을 비교한 결과다.

위 시각화를 통하여 집값 예측이 비교적 정확하다는 사실을 확인할 수 있었다. 이번에는 각종 평가 지표를 통해 이 결과를 알아보고, 선형회귀 모델보다 좀 더 정확한 부스팅 모델을 추가해서 성능을 비교해보자.

  1. 모듈 검색 창에 evaluate를 입력하여 Evaluate Model을 찾아 캔버스에 끌어 놓은 후, 아래 그림과 같이 앞서 만든 Score Model과 연결한다. Evaluate Model 모듈은 예측 값과 실제 값을 바탕으로 다양한 평가 지표를 보여준다.
  2. 실험을 실행시킨 후 Evaluate Model 모듈의 결과 포트를 Visualize한 결과는 다음과 같다. 앞서 살펴본 RMSE를 비롯한 다양한 평가지표와 예측된 집값과 실제 집값 간의 차이를 시각화한 결과를 볼 수 있다.
  3. 마지막으로 앙상블에 기반한 의사결정트리 모델을 추가해서 성능을 비교해보자. 우선 다음 그림에서와 같이 Boosted Decision Tree Regression 모듈 및 해당하는 Train / Score Model 모듈을 추가하고, Score Model 모듈의 결과 포트를 Evaluate Model 모듈의 다른 쪽 입력 포트에 연결한다.
  4. 다음은 위 실험을 실행한 후에 Evaluate Model 모듈의 출력 포트를 시각화한 모습이다. 선형회귀 모델에 비해 앙상블 트리 모델의 RMSE가 훨씬 낮으며, 에러의 분포 역시 전반적으로 훨씬 낮은 값을 보인다.

지금까지 AzureML을 사용해 간단한 회귀모델을 만들고 평가하는 방법을 알아보았다. 주어진 데이터를 학습 및 평가 데이터로 나누어 모델을 만들고 평가하는 기계학습의 기본 개념만 이해하고 있으면 프로그래밍 지식 없이도 학습 모델을 만들고 평가할 수 있다. 완성된 실험은 아래 링크를 통해 확인할 수 있다.

완성된 실험 보러가기


데이터 과학자가 바라본 알파고: 오해, 진실, 그리고 교훈

이번 주 내내 화제가 되었던 ‘세기의 대결’이 알파고의 승리로 끝났다. 어렸을 때 남들처럼 바둑을 배웠고, 지금은 검색엔진의 데이터 과학자로 일하는 필자 역시 매 대국을 흥미롭게 지켜보았다. 필자는 꾸준히 글을 통해 빅데이터의 허상을 지적해왔고 최근에는 일반인들의 데이터 입문을 돕는 책까지 출판한 터라 특히 관심이 가는 주제였다.

하지만 필자에게 더 흥미로웠던 점은 이 사건에 대한 전문가와 비전문가 간의 반응의 차이였다. 언론, 특히 한국 언론에서 보도되는 알파고는 인류의 구세주 혹은 재앙으로 우리의 삶을 송두리째 바꿔 놓을 것처럼 묘사되고 있다. 반면 데이터 과학 및 인공지능 종사자가 상당수인 필자의 SNS 타임라인은 무덤덤하거나 다소 냉소적인 반응이 주를 이룬다.

‘왜 이런 간극이 생겼을까?’라는 의문에서 출발한 필자는 이 글을 통해 다음 주제를 다루려고 한다.  IT 전문가들은 일반인들이 모르는 무언가를 알고 있을까? 알파고의 실체는 무엇이며 이번 대국의 진짜 의미는 무엇일까? 이제 딥러닝 전문가가 아니면 모두 도태되는 세상이 조만간 올까? 지금 나는 당장 무엇을 해야 하는가?

알파고는 전혀 새로운 종류의 AI다?

우선 알파고에 대한 이야기를 하지 않을 수 없다. 알파고의 작동원리는 구글의 논문 및 관련 글에 (이정원님 / 엄태웅님) 자세히 나와 있으므로 생략하고, 여기서는 알파고와 기존 AI와의 차이에 집중하려고 한다. 알파고의 진짜 혁신은 무엇일까?

필자는 해답을 찾기 위해 구글의 네이쳐 논문을 읽어보았다. 논문 초록에서는 알파고의 새로운 점을 다음과 같이 밝히고 있다. 요약하면 딥러닝 기법(DCNN)을 확률적 트리 서치 알고리즘(MCTS)과 결합했다는 것이다. 또한 알파고의 서로 다른 버전 간의 대국을 통하여 얻은 데이터를 강화 학습에 사용하는 것으로 알려져 있다.

그렇다면 이는 얼마나 새로운 아이디어일까? 위 논문에서 인용한 관련 논문을 찾아보면 바둑에 DCNN이나 MCTS를 적용하는 논문이나 시스템은 이미 여럿 있었다. 또한 최근에 페이스북에서 내놓은 논문에는 DCNN과 MCTS를 결합한 darkfmcts3라는 알고리즘을 소개하고 있다.

물론 darkfmcts3은 알파고를 이기지 못했으므로, 알파고가 현존 최고의 바둑 AI인 것은 맞다. 하지만, 알파고가 무에서 유를 창조했다는 식의 설명은 과장이다. 딥러닝은 이미 바둑 AI에 활용되고 있었고, 알파고는 딥러닝과 트리서치 등의 기존 학습 기법에 자기 자신과의 대국(self-play) 및 강화 학습 등 몇 가지 아이디어를 더해 만들어진 잘 튜닝된 시스템이다. 전혀 새로운 혁신이라기 보다는 점진적인 개선의 산물이라는 것이다.

AI가 세상을 정복하는 세상이 조만간 온다?

알파고가 세상에 전혀 없었던 신기술을 통해 만들어진 괴물(?)이라는 오해는 ‘알파고가 세상의 모든 문제를 풀수 있다’는 착각으로 이어진다. 딥마인드 홈페이지의 아래 설명은 그런 의미에서 오해의 소지가 다분하다. 사실 논문에 레퍼런스까지 읽는 사람이 얼마나 되겠는가?

The game of Go is widely viewed as an unsolved “grand challenge” for artificial intelligence. Despite decades of work, …. In this paper we describe our Go program, AlphaGo. This program was based on general-purpose AI methods, … This is the first time ever that a computer program has defeated a professional Go player, a feat previously believed to be at least a decade away.

위 글을 읽으면 알파고가 조만간 세상의 모든 문제를 해결할 수 있을 것 같다. 하지만, 위에서 설명한 대로 알파고는 기존 연구에 ‘바둑’이라는 문제의 특성에 착안한 몇 가지 아이디어를 더해서 만들어진 ‘바둑 AI’다. 인공지능의 궁극적 목표로 여겨지는 일반인공지능(Artificial general intelligence)과는 거리가 멀다.

이를 좀더 구체적으로 알아보자. 알파고는 체스보다 훨씬 경우의 수가 많은 바둑을 인간 최고수보다 더 잘 둔다. 하지만 바둑은 사람이 하는 다른 영역보다 훨씬 제한된 경우의 수를 가진, 그것도 매우 잘 정의된 규칙을 바탕으로 하는 게임이다. 이런 바둑의 특성은 트리 서치 등의 AI기법의 적용을 용이하게 한다.

더 중요한 것은 바둑 데이터의 핵심이라고 할 역대 기보가 잘 정리된 형태로 공개되어 있다는 것이다. 이런 바둑의 특성은 대용량 데이터를 필요로 하는 딥러닝 기법의 적용을 용이하게 한다. 하지만, 온라인 서비스 (예: 검색엔진) 등 제한된 분야를 제외하고는 이런 대용량의 정제된 데이터를 구하는 것은 어려운 일이다.

요약하면 알파고는 바둑이라는 문제의 특성에 특화된 문제해결 시스템이다. 일반인공지능을 구현하기 위해서는 1) 스스로 문제를 정의하는 기술 2) 경우의 수가 바둑보다 훨씬 큰 (거의 무한대인) 문제에 대한 근사치를 찾는 기술 3) 문제 해결에 필요한 데이터를 찾거나 만들어내는 기술이 필요한데, 이 모두 근래에 해결이 요원한 문제들이다. 그러니 AI가 인간을 대체할 것이라는 걱정은 당분간 접어 두자.

딥러닝으로 무엇이든 해결할 수 있다?

알파고에 대한 관심은 자연히 그 기반 기술인 빅데이터와 딥러닝으로 이어진다. 이미 ‘빅데이터면 무엇이든 할 수 있다’는 식의 기사는 많았고, 이에 더해 최근에는 딥러닝에 대한 기사가 넘쳐 나고 있다. 이들은 대부분 딥러닝의 가능성에 대한 장밋빛 전망 일색이다.

빅데이터에 대한 오해와 진실은 필자의 예전 글을 참조하도록 하고, 여기서는 딥러닝에 대해 이야기해 보자. 검색엔진에서 데이터과학자로 일하는 필자 역시 최근 딥러닝에 대한 다양한 기사와 논문을 접하고 있다. 기존의 기계학습 기법보다 사람의 손을 덜 거치고도 높은 성능을 나타낸다는 점에서 딥러닝은 분명 혁신적인 기술이다. (딥러닝에 대한 좀 더 자세한 설명은 엄태웅님의 글을 참고하자.)

하지만 이런 딥러닝의 잠재력을 실현하기 위해서는 치러야 하는 대가가 많다. 우선 대용량의 학습 데이터가 필요하며, 엄청난 계산량에 속도도 느리고 이를 뒷받침할 컴퓨팅 파워도 기본이다. 학습된 결과물을 인간이 해석하는 것도 쉽지 않은 블랙박스와도 같은 방법이다. 물론 이런 문제들은 연구와 기술 진보로 인해 점차 해결되고 있으니 미래는 지켜 볼일이다.

하지만, 딥러닝을 실제로 배워 당장 활용할 수 있는 조직이나 개인은 얼마나 될까? 기계학습 기법에는 다양한 유형이 있으며, 이중에는 딥러닝과 같은 높은 복잡도와 학습 성능을 자랑하는 알고리즘부터 선형모델과 같이 단순하지만 빠르고 이해가 쉬운 방법도 있다. 다양한 데이터 과학 프로젝트를 진행하는 필자의 경험으로는 현업에서 유용한 알고리즘은 제한된 데이터와 컴퓨팅 자원으로 사람이 이해할 수 있는 결과를 내는 후자인 경우가 많았다.

결국 빅데이터나 딥러닝이나 문제해결의 수단이다. 이미 많은 데이터와 충분한 컴퓨팅 파워가 있으며 학습 성능이 해석 가능성보다 중요한 경우 딥러닝은 고려해 볼만한 옵션이다. 하지만, 런타임에서의 성능 및 예측 결과를 설명할 수 있어야 하는 경우 딥러닝은 최선의 선택은 아니다. 또한 기계학습은 일단 만들어 놓으면 끝이 아니라 이를 꾸준히 유지 보수하는 비용도 생각해야 한다. 요약하면 무작정 딥러닝을 배우기보다는 주어진 예측 문제의 성격부터 고민해야 한다는 것이다.

‘세기의 대결’이 우리에게 가르쳐주는 진짜 교훈?

앞에서 필자는 알파고의 ‘혁신’이 실제로는 기존의 연구 성과의 연장선 상에 있으며, 알파고와 같은 시스템이 일반인공지능으로 발전하기까지는 오랜 시간이 걸릴 것이라고 전망했다. 또한 빅데이터와 딥러닝은 만능 열쇠라기보다는 아직은 한정된 영역의 문제에만 적용 가능한 기법이라는 사실도 알아보았다. 알파고의 기술적인 의의와 함께 그 한계도 명확히 알았을 것이다.

어쨌든 데이터의 폭증과 기계학습 등 이를 처리하는 다양한 기술이 세상을 바꾸고 있는 것은 분명하다. 그렇다면 이 시대를 살아가는 우리가 이러한 변화에 대처하기 위해 지녀야 할 바람직한 태도는 무엇일까? 우선 데이터 관련 기술 진보가 산업에 주는 영향을 설명하기 위해 필자가 상상력을 발휘하여 만든 다음 매트릭스를 살펴보자.

산업별 (열) 데이터 활용도별 (행) 인력 구성을 나타내는 위 매트릭스에 따르면 현재는 IT 산업에 종사하는 사람 중에는 데이터를 활용하는 사람이 많지만 기타 산업에는 데이터를 활용하는 사람이 많지가 않다. 하지만 필자는 아직은 데이터 활용이 저조한 기존 산업에서 데이터를 잘 활용하는 주황색 군에 속하는 사람들이 앞으로 각광 받을 것이라고 전망하고 싶다.

필자는 모두가 개발자나 데이터 과학자가 되어야 21세기에 살아남을 수 있다고 생각하지는 않는다. 오히려 시류에 편승하기 보다는 자신의 영역에서 데이터와 첨단 기술을 적절히 활용하는 것이 가치를 창조하는 지름길이라고 믿는다. 데이터 기반의 접근 방법은 점점 확산되고 있고, 분야에 관계없이 이를 이해하고 앞서나가는 사람에게 기회가 주어지는 것이다.

그렇다면 구체적으로 데이터를 활용한다는 것은 어떤 의미인가? 데이터 활용의 단계를 필자는 다음 세가지로 나누어 설명하고 싶다.

  1. 데이터를 전혀 활용하지 않음
  2. 다른 사람이 만들어 놓은 데이터를 분석하여 활용
  3. 데이터로 활용할 수 있는 문제를 적극적으로 탐색하고 해결

위 단계에 따르면  데이터를 아예 활용하지 않는 것보다는 다른 사람이 만들어 놓은 데이터라도 분석하여 활용하는 것이 바람직하지만, 데이터로 활용할 수 있는 문제를 적극적으로 탐색하고 해결하는 수준이 되어야 데이터 가지고 많은 가치를 만들어낼 수 있다. 이 세번째 그룹은 앞에서 필자가 소개한 매트릭스의 주황색 부분에 속하는 사람들이기도 하다.

그렇다면 어떻게 데이터를 제대로 활용하는 방법을 배울 수 있을까? 필자는 우선 ‘데이터 = 기술’이라는 편견을 깨고 문제 해결의 수단으로 데이터를 바라보는 ‘데이터 마인드’를 강조하고 싶다. 또한 자신의 삶과 업무에 데이터를 적극 활용하는 데이터 생활화 역시 데이터 문맹을 탈출하기 위한 요령이다. 데이터 입문에 대한 좀 더 자세한 내용은 필자의 블로그 및 저서 헬로 데이터 과학을 참조하기 바란다.

맺음말: ‘세기의 대결’ 그 이후는?

미국의 저명한 과학저널 ‘사이언스’에서 발간하는 매거진 최신호에서는 약 20년 전에 체스 인공지능이 인간 최고수를 꺾은 후 체스라는 분야에 일어난 변화를 소개하고 있다. 어떤 선수들은 좌절하고 분야를 떠나기도 하였지만, 다른 선수들은 인공지능 체스라는 새로운 ‘도구’를 개인 훈련 및 기량 향상에 적절히 활용하고 있다고 한다. 인공지능을 공식 경기에 비밀리에 활용하다가 적발된 사례가 있는가 하면, 아예 인공지능과 사람이 파트너로 서로 대결을 하는 룰도 생겨났다고 한다.

‘세기의 대결’이 인공지능의 승리로 끝난 바둑계 역시 변화가 불가피할 것으로 보인다. 이미 기계가 ‘침범한’ 바둑이라는 분야를 떠나려는 기사도 있겠지만, 다른 기사들은 알파고를 비롯한 신세대 인공지능 바둑이 보여주는 새로운 가능성을 연구하고 이를 발전의 계기로 삼을 것이다. 이미 5개월전 알파고와 대결했던 유럽 챔피언 판후이는 알파고와의 대결을 거울삼아 세계 랭킹이 633위에서 300위로 상승했다고 한다.

알파고의 성취는 분명 인상적이지만, 이는 인공지능 역사의 큰 맥락에서는 일보 전진에 불과하다. 하지만 이러한 기술 진보가 보여주는 변화의 잠재력과 방향은 명확하다. 점점 더 많은 현상이 데이터화되고, 이를 효과적으로 활용할 수 있는 개인과 조직에게 더 많은 기회와 보상이 돌아갈 것이다. 다행히 아직 우리에게 유효한 시간은 많이 남아있고, 이제 선택은 여러분에게 달렸다. 변화의 방향으로 한걸음 한걸음 나아갈 것인가, 아니면 변화의 흐름을 외면할 것인가?

헬로 데이터 과학이 출고되었습니다!

헬로 데이터 과학이 드디어 출고되었습니다. 늦어도 며칠 안으로는 온라인/오프라인 서점에서 만나보실 수 있을 겁니다. 독자분들께서 이 책에서 최대한의 가치를 얻어내기 위해 다음 몇 가지 사항을 제안합니다. 책을 읽으시다가 궁금하신 내용은 헬로 데이터 과학 Q&A 게시판을 이용해 주시구요, 구매자 설문에도 꼭 응답해 주시면 감사하겠습니다.

  • 데이터 과학은 결국 데이터를 사용한 문제 해결입니다. 책을 읽기 전에 자신이 데이터를 통해 어떤 문제를 해결하고 싶은지를 생각해 보고, 책을 읽으면서 이 문제를 꾸준히 떠올려 보세요.
  • 데이터 과학의 학습은 직접 해보는 실습으로 완성됩니다. 이책에서 제공하는 엑셀 실습은 꼭 따라 해보고, R 및 기타 실습도 따라해 봅니다.
  • 데이터 과학의 모든 내용을 책 한권에서 배울 수는 없습니다. 심화 학습을 위해 이 책에서 제공하는 참고 자료 중 관심이 가는 것은 꼭 찾아서 학습하세요.
  • 데이터 과학은 다른 사람과 함께 배워야 더 효과적입니다. 자신의 데이터 문제 해결 과정과 궁금증을 생활 데이터 커뮤니티에 공유해 보세요.
  • 데이터 과학은 끊임없이 변화하기 때문에 지속적으로 배워야 합니다.이메일 독자그룹이 책의 Facebook 페이지에 공유되는 데이터 과학에 관련된 최신 소식과 학습자료를 받아보세요.

헬로 데이터 과학을 공개합니다!

‘헬로 데이터 과학’이 드디어 세상의 빛을 보게 되었습니다. 지금 YES24에서 구매를 하실 수 있습니다. 아래는 책 집필에 대한 저의 소회를 담았습니다.


빅데이터니 데이터 과학이니 데이터에 대한 출판물이 쏟아지는 요즘, 또 책을 쓰겠다는 결심이 쉬운 것은 아니었다. 소위 ‘데이터 열풍’이 시작되기 훨신 전부터 스스로 다양한 데이터를 모아 분석하면서 느꼈던 데이터의 가치에 대한 믿음이 가장 큰 원동력이 아니었다 싶다. 굳이 빅데이터가 아니라도, 그리고 복잡한 수학이나 프로그래밍 없이도 데이터에서 많은 가치를 얻을 수 있다는 메시지를 담는다면 의미있는 목소리가 되겠다는 생각을 했다.

하지만 세상의 많은 일이 그렇듯이 책을 쓴다는 일이 어떤 일인지 알았다면 아예 시작조차 하지 않았을 것이다. 처음에 오랫동안 쓰던 블로그의 연장선 정도로 생각했던 책쓰기가 마치 오두막과 마천루를 짓는것과 같은 차이가 있다는 사실을 깨닫기까지는 그리 오랜 시간이 걸리지 않았다. 글을 쓴다는 공통점은 있지만 작업의 규모, 깊이, 그리고 프로세스 면에서 전혀 다른 차원의 결심과 노력을 요구하니 말이다. 물론 이미 시작한 뒤에는 쉽게 멈추기 힘든 매력을 발견하기도 하였다.

그럼에도 불구하고 집필을 시작한 것을 후회한 시간보다는 감사하게 생각했던 시간이 많았던 것 같다. 대학원을 마치고 시작한 회사 생활이 3년차에 접어들면서 현상에 안주하기 시작한 나 자신의 지적인 성장을 꾸준히 채찍질하는 계기가 되었고, 특히 데이터 과학이라는 새롭지만 방대한 분야의 다양한 이론과 사례를 내것으로 소화하는 기회를 얻을 수 있었다. 또한 집필을 시작하고, 집필한 내용을 틈틈이 블로그 및 각종 매체에 기고하기 시작하면서 다양한 인연을 만들 수 있었다.

착수부터 마무리까지 약 1년 반이 걸린 집필 기간동안 필자는 다음 세가지 원칙을 지키기 위해 애썼다. 그리고 책을 마무리한 지금 이순간, 이 원칙들이 어느 정도는 지켜졌다는 생각에 흡족한 마음이다.

최신의 지식과 자신의 노하우를 결합한다. 매일 새로운 기술이 쏟아지는 데이터 과학의 가급적 최신 트렌드를 전하되, 필자 자신의 목소리를 담으려고 애썼다.

매일 읽고 쓰되, 억지로는 하지 않는다. 재미있게 쓴 글이 읽기도 재미있을 것이다. 필자의 생산성 관리 원칙을 적용해 매일 조금씩 하되 무리해서 쓰려고 하지는 않았다.

집필 과정에 데이터 과학을 최대한 활용한다. 가장 좋은 교육은 본보기를 보여주는 것이다. 한 권의 책을 만드는 과정에 필요한 다양한 의사결정에 최대한 데이터를 활용하였다.

좋은 책을 만들겠다는 결심에서 세운 이 원칙들이, 사실 필자가 책 집필이라는 프로젝트를 완수하는데 결정적인 도움을 주지 않았나 생각도 해본다. 필자 자신의 목소리를 담으려고 하지 않았다면 무의미함에 포기했을 것이고, 매일 조금씩 하지 않았다면 지쳐서 포기했을 것이며, 독자 분들의 의견을 청취하고 수렴하는 과정이 없었다면 길을 찾지 못하고 포기했을테니 말이다. 책 집필 과정에 대한 자세한 이야기는 조만간 공개할 예정이다.

어쨌든 우여곡절 끝에 ‘헬로 데이터 과학’을 독자 여러분 손에 내놓게 되었다. 지금 당장 원하는 독자는 아래 링크를 통해 YES24에서 책을 주문할 수 있다. 그동안 참 많은 분들께서 ‘책 언제 나와요’ 라고 물어보실 때마다 쥐구멍에라도 들어가고 싶었는데, 이제 자신있게 답할 수 있게 되었다. ‘최선을 다해 열심히 만들었으니 잘 보셨으면 좋겠네요!’

YES24 바로가기: ‘헬로 데이터 과학 : 삶과 업무를 바꾸는 생활 데이터 활용법’
(책의 목차 및 추천사, 출판사에서 만들어 주신 위트있는 그래픽을 감상하시기 바란다!)

추신: 사람이 하는 일이 다 그렇지만 책은 정말 혼자서는 절대 만들 수 없다. 처음부터 끝까지 격려해준 가족들과 (특히 아내) 친구들, 그리고 유닌히도 고집이 센 저자를 이해하고 다독여 준 한빛미디어의 최현우 팀장님과 송경석 차장님, Last but not least 이 책의 재료가 된 블로그 글과 초고에 대해 응원과 조언을 아끼지 않은 독자 그룹 분들과 리뷰어 분, 그리고 그 중 추천의 글을 허락해 주신 고영혁/권정민/엄태욱/전희원/하용호 님, 그리고 오삼균 교수님께 특별한 감사의 말씀을 전한다.

2016-02-02 01_37_41-Store

넷플릭스가 추천 및 검색 알고리즘을 개선하는 방법

오늘은 최규민님의 소개로 넷플릭스가 추천 및 검색 알고리즘을 개선하는 방법에 관한 아티클을 읽었 습니다. 제 연구분야인 온라인 서비스의 평가방법에 관한 글이라 관심있게 읽었는데, 넷플릭스가 아니더라도 검색이나 추천과 같은 데이터 프로덕트를 만드는데 관심이 있는 분이라면 꼭 읽독을 권합니다. 아래는 간추린 핵심 내용입니다.

  • 넷플릭스의 개인화 추천 알고리즘은 각 고객에게 좀더 다양하고 만족스러운 시청 경험을 제공함으로써 최소한의 영화 컬렉션으로 (비용절감) 최대한의 고객 유지율을 (매출극대화) 달성할 수 있게 합니다.
  • 개인화 추천 알고리즘의 결과 품질에 대해 직관적으로 평가하는 것은 (특히 제3자의 입장에서) 어려운 일이기에, 평가자 데이터보다는 온라인에서의 사용자 행동이 주된 평가 척도가 됩니다.
    • 반대로 비교적 객관적인 평가가 가능한 검색 결과의 경우 평가단에 (Human Relevance Judgment) 많이 의지합니다. (자세한 내용은 제 SIGIR 튜토리얼 참고)
  • 넷플릭스가 사용하는 행동 기반의 지표에는 고객 맴버십 지속도(retention) / 고객 흥미도(engagement) 등이 있는데 흥미도와 지속도 사이에는 강한 상관관계가 있습니다. 또한 지속도는 구전효과(word-of-mouth)와 높은 상관관계가 있습니다.
    • 넷플릭스에서는 새로운 기능이 실제 서비스에 반영되기 위해서는 국지적인 지표의 개선을 가져올 뿐만 아니라 전체적인 고객의 흥미도와 지속도를 높일 수 있어야 합니다.
  • 넷플릭스에서는 온라인 실험을 위해 사용자를 작은 그룹(cell)으로 나누어 각 그룹에 대해 2~6개월 가량 일관된 경험을 제공한 후, 그룹간에 다양한 지표를 비교합니다.
    • 반대로 고객의 유지도보다는 결과의 품질에 초점을 맞추는 정보검색 분야에서는 비교적 짧은 기간(며칠~몇주)안에 온라인 실험이 끝나는 경우가 많습니다. (관련 논문)
  • 온라인 실험에서 주요 지표간 불일치가 발생하는 경우에는 (예: 고객 유지도 증가 but 흥미도 감소 혹은 제자리) 노이즈인 경우라고 생각하고 실험을 다시 수행하게 됩니다.
  • 온라인 실험의 대상에는 신규 고객과 기존 고객이 있는데, 기존 고객은 훨씬 많은 숫자가 있지만 새로운 경험을 제공했을때 그 효과를 편향없이 측정하기가 어렵습니다. 신규 고객은 숫자가 적지만 익숙함에 따른 편향이 적은 대신 Free Trial 관련 노이즈가 있습니다.
  • 넷플릭스에서는 몇 달씩 걸리는 온라인 실험의 효율을 높이기 위해 여러 알고리즘을 동시에 실험에 포함시키거나, 개별 유저를 서로 간섭하지 않는 여러 실험에 동시에 포함시키거나, 혹은 오프라인으로 온라인 실험 결과를 예측하는 기법을 사용하기도 합니다.
  • 넷플릭스는 진출한 나라마다 별도의 추천 알고리즘을 만드는 대신 사용자나 영화 컬렉션 면에서 비슷한 특색을 가진 국가를 지역으로 묶어 지역별로 다른 알고리즘을 제공하는 방법을 사용하고 있습니다.

이 아티클에 지적된 사항 중 많은 부분은 Bing의 검색 품질에 대한 평가를 담당하는 저도 고민하는 부분입니다. 여러가지 미묘한 차이가 있지만, 검색이나 추천이나 결국 사용자의 Input에 따라 최적의 결과를 보여주는 기법이기 때문입니다. 작년에는 주로 데이터 입문자 대상의 글을 썼는데, 올해는 제 연구분야의 글도 본격적으로 써볼 생각이니 기대 바랍니다.

p.s. 예전에 썼던 페이스북 피드 랭킹의 평가에 대한 글도 참고하세요. http://www.hellodatascience.com/?p=572