메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

편집자/저자토크

『파이썬 라이브러리를 활용한 머신러닝』 - 안드레아스 뮐러의 저자 인터뷰

한빛미디어

|

2017-06-23

|

by 박해선, 안드레아스 뮐러

7,587

portrait_amueller.jpeg

 안드레아스 뮐러

http://amueller.github.io

 

사이킷런(scikit-learn) 핵심 개발자 겸 관리자

컬럼비아 대학교 데이터 과학 강사

파이썬 라이브러리를 활용한 머신러닝』 저자

 

 


 

※ 이 인터뷰는 『파이썬 라이브러리를 활용한 머신러닝』와 텐서플로 첫걸음』의 역자인 박해선 님이 진행해주셨습니다.

 

안녕하세요, 앤디. 먼저 간단한 본인 소개 부탁드립니다.

한국 독자 여러분, 안녕하세요. 안드레아스 뮐러입니다. 편하게 앤디라고 부르세요. 컬럼비아 대학교에서 데이터 과학을 가르치고 있고, 『파이썬 라이브러리를 활용한 머신러닝(원서: Introduction to Machine Learning with Python)』을 썼습니다. 사이킷런 머신러닝 라이브러리의 핵심 개발자이고 수년 전부터 소스 관리에도 참여하고 있습니다. 그 전에는 뉴욕 대학교 데이터과학센터와 아마존에서 머신러닝 과학자로 일했습니다.

최신 머신러닝 기법을 누구나 쉽게 활용할 수 있는 도구로 만드는 일을 좋아합니다.

 

어떻게 사이킷런의 소스 관리자가 되었나요?

처음에는 매우 쉬운 이슈들을 고치면서 사이킷런에 기여하기 시작했습니다. 그러다 스페인 그라나다Granada에서 열린 NIPS 2011의 사이킷런 코딩 스프린트에 참여할 수 있는지 문의했더니 항공편을 지원해주는 게 아니겠습니까. 그래서 스프린트에 참여했는데, 때마침 배포release 관리자가 공석이라며 저에게 배포를 관리해달라고 하더군요. 그때부터 이 프로젝트에 깊게 관여하게 되었습니다.

 

당신에게 데이터 과학과 머신러닝은 어떤 의미인가요?

제가 머신러닝이라고 할 땐 보통 지도 학습을 말합니다. 가장 널리 사용되고 또 가장 유용하거든요. 훌륭한 애플리케이션들이 많이 있지만 제 생각에 가장 유용한 것은 분류, 회귀, 랭킹ranking, 예측forecasting인 것 같습니다. 추론inference도 매우 중요하지만 문제에 따라 통계학의 분야로 볼 수 있습니다. 하지만 둘 간의 경계는 매우 모호합니다. 예측prediction을 하는 통계학자도 있고 인과 모델링causal modeling을 하는 머신러닝 연구자도 있습니다. 데이터 과학을 뭐라고 해야 할지 잘 모르겠습니다. 사람마다 의미하는 바가 다릅니다. 저는 원본 데이터에서 관심 있는 정보를 추출하는 데 필요한 모든 것이 해당한다고 생각합니다. 데이터 취합, 질의query 작성, 데이터베이스 최적화, 분산 컴퓨팅, 데이터 정제, 통계, 머신러닝, 시각화 등 데이터 분석 파이프라인의 모든 부분이 해당됩니다.

 

딥러닝이 큰 붐을 일으키고 있습니다. 딥러닝의 장단점에 대해 한마디 부탁드립니다. (piper 님)

딥러닝은 어느 면에서는 훌륭합니다만 만병통치약은 아닙니다. 만약 보유한 데이터가 아주 많거나 훈련된 신경망 모델에 맞는 데이터가 있다면 딥러닝이 잘 맞을 수 있습니다. 딥러닝은 원본 표현에서는 의미를 찾기 어려운 데이터에서 특징을 추출하는 데 뛰어납니다. 대표적인 사례는 이미지, 비디오, 대화, 오디오입니다. 이런 분야에서는 신경망이 탁월합니다. 반면 아직까지는 고객 데이터처럼 여러 종류의 데이터가 섞여 있는 작은 데이터셋에서는 신경망이 잘 맞지 않는다고 생각합니다. 딥러닝을 하려면 데이터와 자원이 많이 필요합니다. 아주 소수의 연구자만이 대규모 모델을 훈련시킬 자원을 가지고 있기 때문에, 이미 페이스북이나 구글 같은 회사의 컴퓨터 비전vision 연구 결과를 재현하기가 어렵습니다.

 

이제 좀 구체적인 이야기를 해보죠. 사이킷런 0.18 버전에 다층 퍼셉트론Multi-layer Perceptron이 추가되었습니다. 향후 CNN, RNN 모델을 추가되거나 GPU 지원이 될까요?

아니요. 이미 파이썬에서 사용할 수 있는 훌륭한 딥러닝 라이브러리들이 있고 이 분야는 매우 빠르게 변합니다. 우리가 케라스Keras나 텐서플로TensorFlow를 따라잡아야 할 이유가 없습니다. GPU를 사용하는 데 필요한 패키지를 설치하는 일이 여전히 큰 장벽이라서 GPU 지원은 추가하지 않기로 했습니다. 또 GPU를 지원한다는 것은 근본적으로 알고리즘들을 밑바닥부터 다시 작성해야 한다는 뜻입니다. 다른 패키지를 사용해 쉽게 구현할 수 있는데, 사이킷런에서 굳이 이렇게 해야 할 강한 동기를 찾지 못했습니다. 우리가 모든 활용 예를 지원하는 것은 불가능하니, 그 보완책으로 사이킷런 인터페이스와 호환되고 특별한 목적을 가진 패키지를 위한 사이킷런-contrib 조직을 만들었습니다(http://contrib.scikit-learn.org 사이트를 참고하세요. _박해선).

 

사이킷런 0.17 버전에서 은닉 마르코프 모델Hidden Markov Model을 제외한 이유는 무엇인가요? 다시 추가할 가능성이 있을까요? (lunrot 님)

은닉 마르코프 모델은 사이킷런의 표준 데이터 행렬과는 조금 다른 인터페이스를 사용합니다. 우리는 길이가 다양한 시퀀스sequence를 지원하는 것이 인터페이스를 너무 복잡하게 한다고 판단했습니다. 더욱이 사이킷런에 있는 은닉 마르코프 모델을 유지보수할 개발자를 찾지 못했고 핵심 개발자들이 즐겨 쓰는 모델이 아니기도 합니다.

 

IncrementalPCA처럼 LDALinear Discriminant Analysis의 온라인 학습online learning 기능을 추가할 계획이 있나요? (곽지원 님)

당장은 없습니다. 하지만 추가되면 환영받을 거로 생각합니다.

 

사이킷런에는 왜 잭나이프Jackknife(Leave-One-Out) 회귀 모델이 없나요? (최히욱 님)

잭나이프 샘플링은 LeaveOneOut 클래스에 구현되어 있습니다. 단, 추론inference에 대한 문제라 할 수 있는 예측의 분산variance과 편향bias을 추정하는 데 사용하는 잭나이프 회귀 모델은 없습니다. 사이킷런은 이런 문제보다 예측에 집중합니다.

 

사이킷런의 중장기 로드맵이 있나요?

사실 공식적인 로드맵은 없습니다. 그래도 제가 마음속에 품고 있는 어떤 생각이 있고, 다른 개발자들도 또 다른 생각을 가지고 있습니다. 중기적으로 제가 중요하게 생각하는 것은 pandas와 더 부드럽게 연동시키는 것과 범주형 변수에 대한 기능을 더 추가하고, 결과를 더 손쉽게 시각화하는 일입니다. 장기적으로는 저수준의 멀티스레딩을 지원하여 하나의 모델이더라도 멀티코어 시스템을 충분히 활용하도록 할 계획입니다. 머신러닝 단계를 더 자동화하는 데도 관심이 있습니다. 하지만 이 기능들이 언제 포함될 지는 확실하지 않습니다.

 

마지막으로, 오픈 소스에 기여하려는 사람들에게 조언할 것이 있다면 한마디 부탁합니다.

지금 당장 간단한 것부터 시작하세요. 많은 사람이 처음부터 복잡한 것에 기여하려고 애씁니다. 이슈 추적 시스템을 살펴보고 가장 쉬운 것을 찾아 고치세요. 새로운 도구와 인프라를 사용해 새로운 코드베이스에서 작업하기란 조금 어려운 일이니, 우선은 작게 시작하는 것이 좋습니다. 이슈를 고치는 것 말고도 문서화나 버그 찾기 같이 도울 방법이 다양합니다. 종종 버그 리포트에 개발자에게 매우 필수적인 재현 가능한 스크립트가 없는 경우가 있거든요.

어쩌면 더 작은 오픈 소스 프로젝트를 찾아 시작해보는 게 좋을지 모릅니다. 사이킷런은 매우 잘 알려져 있고 기여자가 많습니다. 하지만 코어 팀이 모든 요청과 기여를 확인하는 게 쉽지 않습니다. 대부분 코드를 검토할 사람이 더 필요하지만 프로젝트에 처음 참여한 사람에게는 쉬운 일이 아닙니다. 여러분이 신생의 작은 프로젝트에 기여한다면 새롭게 구현할 기능이 많고, 운영자들도 여러분이 추가한 기능을 좋아할 것입니다. 사이킷런은 이미 매우 성숙하고 많이 복잡하기 때문에, 우리는 나중에 유지보수를 어렵게 만드는 여러 부가 기능을 추가하는 것에 조금 지쳐있습니다.

댓글 입력
자료실