본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

2017년 최고의 오픈소스 소프트웨어 : 머신러닝

OSS 게시글 작성 시각 2017-10-12 06:57:47 게시글 조회수 5784

2017년 10월 11일 (수)

ⓒ ITWorld, Martin Heller, Andrew C. Oliver, | InfoWorld


머신러닝은 이제 대세 중의 대세로 자리잡았다. 지난 몇 년 간 많은 사람들이 가볍게 봤던 머신러닝이 많은 데이터를 사용할 수 있는 클라우드 시대를 맞아 전성기를 구가하고 있다. 이에 따라 머신러닝을 위한 도구와 라이브러리가 수없이 등장하면서 올해는 별도의 카테고리로 분류하지 않을 수 없었다.



시냅틱
브라우저에서 신경망(Neural Network)을 실행할 수 있을까? 원한다면 가능한 일이다. 시냅틱(Synaptic)은 믿을 수 없을 정도로 단순하다. ‘var A = new Neuron()’로 뉴런을 만들 수 있다. 경험 많은 사람들은 애플리케이션 개발 방법을 파악하는 것이 어렵다는 점을 잘 알 것이다. 데이터 과학 관련 전문 지식이 필요할 수도 있다. 시냅틱에는 또한 LSTM이나 Feed-forward 같은 실용적인 아키텍처도 포함되어 있다. 신경망을 학습하고 싶은 사람들을 위한 깔끔하게 정리된 코드 기반과 뛰어난 지침서를 제공한다.


사이킷런
머신러닝 분야를 경험한 파이썬 개발자라면 사이킷런(Scikit-learn)에 필요로 하는 대부분이 있다는 사실을 알 것이다. 사이킷런으로 시작하지 않은 사용자는 필요한 알고리즘이나 구현물이 스파크 MLlib에 없다는 점을 발견하고는 다시 구글로 발길을 돌려 사이킷런을 찾게 될 것이다. 수많은 머신러닝 및 통계 알고리즘을 지원하며, 광범위한 문서를 제공한다. 머신러닝 경험이 있는 파이썬 전문가라면 사이킷런을 툴 중 하나로 활용할 것을 적극 추천한다.


카페2
카페2(Caffe2)는 가벼운 모듈형 딥러닝 프레임워크로, 확장성과 성능을 유지하면서도 이동성이 우수하다. 카페 1.0의 업그레이드 버전이지만, 카페가 시야용 CNN(Convolutional Neural Networks)로 고안된 반면, 카페 2는 기계번역용 LSTM 네트워크와 RNN 등 신경망도 지원한다. 또 여러 GPU로 분산 시스템으로 확장할 수 있으며, 페이스북은 프로덕션용으로 사용하고 있다. 기존 카페 모델을 스크립트를 이용해 카페 2로 업그레이드 할 수 있다.


H2O
H2O는 복잡한 분산형 머신러닝을 추상화해 기업이 R과 파이썬, 스칼라, 자바 등 많이 사용하는 언어로 쉽게 데이터 모델과 워크플로를 구현할 수 있도록 도와준다. H2O에는 분산 클러스터에 인메모리로 구현할 수 있고, HDFS, S3, SQL, NoSQL 데이터 소스에서 읽을 수 있는 인기 머신러닝 알고리즘이 들어 있다. 모델을 POJO로 내보낸 후, 기존 SDLC 도구로 관리할 수도 있다.


파이토치
최근 딥러닝 프레임워크가 아주 많아졌지만, 파이토치(PyTorch)는 그 중에서도 주목할만한 프레임워크이다. 페이스북이 개발했으며, 최첨단 딥러닝 아키텍처를 구현할 수 있는 강력하면서도 동적인 방법을 제공한다. 또한 강력한 프레임워크이지만, 초보자도 쉽게 활용할 수 있는 수 많은 지원 코드와 문서가 포함되어 있다. 현재 가장 인기 있는 딥러닝 프레임워크는 구글 텐서플로우(Tensorflow)이다. 그러나 조만간 파이토치의 ‘비상’이 시작될 전망이다.


캣부스트
캣부스트(CatBoost)는 러시아 검색엔진 업체인 얀덱스가 개발한 의사결정 트리 상의 그래디언트 부스팅(Gradient Boosting)용 알고리즘이다. 랭킹 작업, 예측, 추천 작업에 사용하며, 명령줄 애플리케이션, R 패키지, 파이썬 모듈로 사용할 수 있다. LHC(Large hadron Collider)의 충돌(Collisions) 분류에 사용되었다. 캣부스트는 오버피팅(Overfitting)을 줄여주고, 카테고리를 숫자로 인코딩할 필요가 없는 비수치 범주화 기능을 지원한다.


XG부스트
수학자, 데이터 과학자, 머신러닝 전문가들은 그래디언트 부스팅에 대해 잘 알고 있을 것이다. 랭킹, 분류, 회귀 관련 문제가 있고, 그래디언트 부스팅을 사용하고 싶을 때 좋은 솔루션이 XG부스트(XGBoost)이다. 다양한 언어와 플랫폼, GPU, 클라우드를 지원하며, 지침서와 문서화도 훌륭하다. 약간의 조정으로 기본적인 그래디언트 부스팅 알고리즘의 성능을 높일 수 있다.


GNU 옥타브
GNU 옥타브(GNU Octave)는 수치 연산, 모델, 시각화, 테스트에 사용할 수 있는 툴이다. MatLab과 같지만 자유소프트웨어재단이 GPL 라이선스 하에 무료로 제공한다. 옥타브는 유사 프로젝트처럼 MatLab 비호환성을 버그로 처리한다. MatLab ‘대체재’에 목적이 있는 툴이다. Coursera에서 스탠포드 머신러닝 과정을 들을 계획이라면, Matlab 대신 옥타브를 사용할 수 있는데, 이보다 더 좋은 ‘보증’은 없을 것이다.


텐서플로우
텐서플로우(TensorFlow)는 데이터 플로우 그래프를 사용한 수치 연산용 소프트웨어 라이브러리이다. 그래프의 노드는 수학 연산이며, 그래프 종단은 수학 연산 간 통신된 다차원 데이터 어레이(Tensor)이다. 단일 API로 데스크톱이나 서버, 모바일 디바이스의 다중 CPU 또는 GPU로 연산을 배치할 수 있는 유연한 아키텍처이다. 현재 가장 효과적인 클라이언트 언어는 파이썬이다. 그래프 실행과 구현 테스트용 인터페이스의 경우, C++, 자바, 고, C 기반 클라이언트 API, 몇몇 커뮤니티 기반 바인딩도 지원한다.


마이크로소프트 CNTK
마이크로소프트 CNTK(Cognitive Toolkit)는 신경망을 방향성 그래프를 통해 일련의 연산 단계로 설명하는 통합 딥러닝 툴킷이다. CNTK는 피드포워드 DNN, CNN(Convolutional Nets), RNN/LSTM(Recurrent Networks)를 인식하고 결합할 수 있다. 멀티 GPU와 서버에서 자동화된 분류(구분)와 병렬화를 통해 에러 역전파(Back-propagation) 학습과 SGD(Stochastic Gradient Descent)를 구현할 수 있다.


아파치 MXNet
아파치 MXNet는 효율적이면서 유연한 딥러닝 프레임워크로, 기호 프로그래밍과 명령형 프로그래밍을 섞어 효율성과 생산성을 극대화할 수 있다. MXNet에는 기호 및 명령 작업을 자동으로 병렬화하는 동적 디펜던시 스케줄러(Dynamic Dependency Scheduler)가 포함되어 있다. 그 위의 그래프 최적화 계층은 기호 작업 속도를 높이고, 메모리를 능률화한다. 또한 가볍고 이동성이 좋아 멀티 GPU와 머신으로 효율적인 확장이 가능하다.


애플 Core ML
코어 ML(Core ML)은 훈련된 머신러닝 모델을 iOS나 맥OS 앱으로 통합할 때 사용하는 애플의 프레임워크이다. 코어 ML은 이미지 분석용 애플 비전 프레임워크, 자연어 처리용 파운데이션 프레임워크, 학습 의사결정 트리 평가용 게임플레이키트(GameplayKit) 프레임워크를 지원한다. 현재는 코어 ML로 직접 모델을 훈련시킬 수는 없으며, 애플 코어 ML의 유일한 훈련 모델은 이미지 분류용만 존재한다. 그러나 파이썬 패키지인 코어 ML 툴즈(Core ML Tools)로 카페, 케라스(Keras), 사이킷런, XG부스트, LIBSVM 모델을 변환할 수 있다.



※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지



[원문출처 : http://www.itworld.co.kr/slideshow/106666]

맨 위로
맨 위로