가을은 독서의 계절이라고 하지만 여전히 더워서 독서량을 늘이지 못하고 있다. 반성하면서 머신러닝 관련 서적 몇 권을 소개드리려 한다. 오늘은 1번 타자인 '마스터 알고리즘'이다.
알파고 사건 이후 요즘 여기저기서 인공지능과 머신러닝이 열풍을 불러일으키고 있다. 며칠 전에 KSC 2016 튜토리얼에 참석했는데, 많은 개발자들이 텐서플로우를 사용한 머신러닝 기법을 열공하는 모습을 보면서 머신러닝이 더 이상 흑마법을 부리는 신기술이 아니라 일반화된 문제 해법의 영역으로 접어들고 있다는 생각이 들었다. 하지만 머신러닝을 제대로 활용하려면 난관이 한두개가 아니다. 가장 먼서 머신러닝에 대한 일반적인 지식을 갖춰야 한다. 다음으로 (프로그램만 잘하면 되므로 불필요하다고 말하는 사람도 있긴 하지만...) 선형대수, 미분, 통계(특히 조건부 확률) 부문에 대한 기초 지식이 필요하다. 그 다음으로 파이썬이나 자바와 같은 프로그래밍 언어 지식이 필요하며, 텐서플로우나 카페와 같은 머신러닝 프레임워크에 대한 지식이 필요하다. 이 모든 조건을 갖췄다고 완성되는 것이 아니다. T_T 엄청나게 노동집약적인 노력을 투입해 학습시킬 데이터를 만들어야 한다(보통 이 부분을 간과하는데, 한 때는 아마존의 mechanical turk 파워의 50% 이상을 이미지넷을 위한 영상 분류에 투입했다는 일화를 기억하기 바란다). '마스터 알고리즘'은 가장 첫 단계인 머신러닝에 대한 일반적인 지식을 소개한다.
마스터 알고리즘이라는 단어가 특이한데, 저자에 따르면 마스터 알고리즘의 정의는 다음과 같다.
세상의 모든 지식, 즉 과거, 현재, 미래의 모든 지식은 단 하나의 보편적 학습 알고리즘으로 데이터에서 얻어낼 수 있다. 나는 이 머신러닝을 마스터 알고리즘(master algorithm)이라 부른다.
즉, 맥락에 맞춰 알고리즘을 매번 새로 개발하는 대신 데이터와 정보만 넣으면 우리가 원하는 통찰을 얻을 수 있는 어떤 절대적이고 궁극적인 알고리즘을 개발한다면 궁극적인 프로그램의 완성을 볼 수 있다고 주장한다. 물론 아직까지는 일부 분야에서만 성공을 거두고 있으며, 정말로 보편타당한 수준에 이를 수 있을지는 여전히 의문이기는 하다.
이 책은 머신러닝 실현을 위한 여러 가지 방법을 기호주의자, 연결주의자, 진화주의자, 베이즈주의자, 유추주의자라는 다섯 종족으로 나눠 설명하고 최종적으로는 이를 통합해 마스터 알고리즘으로 만드는 가능성에 대해 소개한다. The Programs That Become the Programmers에 소개된 그림 한 장이 이 책의 주제를 아주 잘 드러낸다.
각 종족별로 출발점, 기반 이론, 발전해온 경로를 다루며 장단점에 대해 짚어주기 때문에 현재까지 연구된 여러 가지 머신러닝 기법을 비교해가면서 익힐 수 있는 장점이 있다. 수식은 거의 나오지 않으며(베이지안은 예외다!), 코드도 없기 때문에 이 책을 읽고서 수학적인 관점에서 머신러닝을 이해한다거나 프로그램을 바로 만들 수 있으리라 기대해서는 곤란하겠다. (구체적인 사안을 이해하려면 다음 번에 소개하는 책을 읽어야 한다.)
책에서 다루는 내용을 맛보려면 다음 영상을 보면 되겠다. 영어 자막도 있으므로 천천히 시청하면 책에서 어떤 내용을 다루는지 감이 올 것이다.
그리고 보너스로 Quora에서 머신러닝을 어떻게 적용하는지 소개하는 자료도 올려드리겠다. 이 책을 읽고서 다음 자료를 읽어보면 머신러닝에 대해 한층 이해도가 높아진 자신을 발견할 것이다. :)
결론: 머신러닝에 대한 기초를 쌓고 싶다면 이 책을 읽어보면 되겠다. 하지만 번역상태가 좋지 않고(중간중간 오역도 보인다), 추상적인 내용이 많아서 읽기가 쉽지는 않을 것이다.
EOB
안녕하세요. 이 책의 번역자 강형진입니다.
답글삭제먼저 이 책에 관심을 가져주시고 후기까지 올려주셔서 감사드립니다.
번역때문에 이해가 더뎌진 부분에 매우 안타깝게 생각합니다. 어느 부분인지 간략히라도 알려주시면 다시 검토하고 잘못되어 있으면 다음 쇄에 수정하도록 하겠습니다.
의문나는 사항은 아래 메일이나 블러그에 올려주시면 다시 검토하여 바로잡도록 하겠습니다.
1. 메일: hyungjin.s.kang@gmail.com
2. 블러그: http://blog.naver.com/speedkang71