New ML book & scikit-learn v0.18

rc_cat오라일리에서 새로운 파이썬 머신러닝 책인 ‘Introduction to Machine Learning with Python‘이 곧 출시될 예정입니다. 전체 챕터가 거의 다 써졌고 eBook 형태로 미리 구입해서 볼 수 있습니다. 이 책은 넘파이(numpy), 판다스(pandas), 사이킷런(sckit-learn)을 사용하며 최대한 수식은 줄인(아마 하나도 없는 것 같습니다) 실용서라고 볼 수 있습니다.

저자 중 한명인 안드리아스 뮐러(Andreas C. Mueller)는 뉴욕 대학교 리서치 엔지니어로 사이킷런의 코어 개발자 중 한명입니다. 누구보다도 사이킷런에 대해 잘 설명했으리라 생각됩니다. 그런데 이 책에서는 사이킷런의 안정버전인 0.17.x을 사용하지 않고 아직 개발버전인 0.18dev0을 선택했습니다. 혹시나 0.18 버전이 곧 릴리즈 되는건가 하는 생각에 저자에게 직접 물어 보았습니다. 역시나 이 책이 페이퍼백으로 출시될 때와 비슷한 시점인 대략 몇달 후에 0.18 버전이 릴리즈 될 것 같다고 합니다. 아마 늦어도 연내에는 0.18 버전이 나올 것으로 보입니다.

0.18 버전에 관심이 있는 것은 여러가지 기능 개선과 성능에 향상도 있겠지만 무엇보다도 뉴럴 네트워크 부분에 멀티레이어 퍼셉트론이 지원되기 때문입니다. MLPClassifier 와 MLPRegressor 클래스이며 사이킷런 개발버전 문서에서 확인할 수 있습니다.

주요 특징을 보면 활성화 함수로는 시그모이드, 하이퍼볼릭탄젠트, 렐루가 있고 최적화 옵션으로는 l-bfgs, SGD(Stochastic Gradient Descent), 아담(ADAM)이 있습니다. 모멘텀(Momentum)과 네스테로프 모멘텀(Nesterovs Momentum)을 설정할 수 있는 옵션도 보입니다. 옵션의 기본값을 보면 사람들이 어떤 것들을 선호하고 있는지를 미루어 짐작할 수 있는데요. 활성화함수는 렐루가 기본값이고 최적화는 아담입니다. 모멘텀과 네스테로프 모멘텀은 SGD와 함께 쓸 수 있는데 네스테로프 모멘텀의 기본값이 True로 되어 있습니다.

즉 사이킷런의 API는 렐루와 함께 아담이나 SGD+네스테로프 모멘텀을 사용하는 것이 기본으로 되어 있습니다. 올해 초에 작성되기 시작한 ‘Fundamental of Deep Learning‘ 책에서는 저자가 네스테로프 모멘텀에 대해 약간 보수적인 의견을 피력했었는데 사이킷런은 좀 더 적극적으로 적용하는 것 같습니다. 텐서플로우 0.9 버전에는 아직 네스테로프 모멘텀을 지원하지 않지만 바로 얼마전에 마스터 브랜치에 네스테로프 모멘텀을 지원하는 코드가 추가되었습니다! 아마 다음 릴리즈에서는 정식으로 포함되어 사용할 수 있을 것 같습니다. 현재 텐서플로우에 있는 네스테로프 모멘텀 옵션의 기본값은 False입니다.

사이킷런은 현재 GPU를 지원하지는 않습니다만 사이킷런의 장기 목표에는 GPU 지원도 포함되어 있는 것 같습니다. 사이킷런의 뉴럴 네트워크 사용에 관한 보다 자세한 설명은 가이드 문서를 참고하세요.

댓글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중