본문 바로가기
IT 와 Social 이야기

[IDG] 딥러닝/머신러닝 프레임워크 6종 비교 분석

by manga0713 2017. 9. 5.

 

 

 

 

■ Machine Learning Framework vs. Deep Learning Framework

 

 

○ Machine Learning Framework

 

- 분류, 회귀(Regression), 클러스터링, 비정상행위 탐지(Anomaly Detection), 데이터 준비(Data Preparation)를 위한 다양한 학습 방법을 다룬다.

 

- 인공 신경망 메소드(Method)를 포함할 수도, 않을수도 있다.

 

- 사이킷런(Scokit-learn), 스파크(Spark) MLlib, 테아노(Theano)

 

 

○ Deep Learning 또는 심층 신경망(Deep Neural Network: DNN) Framework

 

- 여러 개의 은닉 계층(Hidden Layer)을 가진 다양한 신경망 토폴로지를 다룬다.

 

- 각 계층은 다단계 프로세스 패턴 인식으로 이루어져 있으며 망에 계층이 많을수록 클러스터링과 분류를 위해 추출할 수 있는 특징이 더 다양해진다.

 

- 카페(Caffe), 마이크로소프트 인지 툴킷(Cognitive Toolkit: CNTK 2), 딥러닝4j, 케라스(Keras), MX넷, 텐서플로우(TensorFlow)

 

 

 

■ 카페(Caffe)

 

- 본래 이미지 분류를 위한 강력한 프레임워크를 만들기 위해 시작

 

- 버전 1.0 RC3 상태에서 1년 이상 변화 없음

 

- 간단한 망 정의 포맷뿐 아니라 이미지 인식에 대한 훌륭한 컨볼루션 망이 있고 엔비디아 CUDA GPU에 대한 지원도 여전히 훌륭하나 1GB 이상 GPU 메노리가 필요하고 문서화에 허점

 

- 이미지 분류 작업에서 그 효율성을 입증했지만 이미 전성기를 지났다는 평가. 앞으로 사용자의 필요사항에 적합하거나 목적에 맞게 개선되지 않는다면 텐서플로우나 MX넷, CNTK 사용 권장

 

 

 

■ 마이크로소프트 CNTK

 

- 빠르고 사용하기 쉬운 딥러닝 패키지이나 텐서플로우와 비교하면 제한적

 

- 모델과 알고리즘이 매우 다양하고 파이썬과 주피터 노트북에 대한 지원 풍부하며 브레인스크립트(Brainscript)신경망 구성 언어를 가지고 있음

 

- 윈도우와 우분투 리눅스에 대한 자동 배포 지원하나 맥OS는 지원하지 않음

 

 

 

■ MX넷

 

- 아마존이 선택한 DNN

 

- 이식성이 좋고 확장 가능한 딥러닝 라이브러리

 

 

 

■ 사이킷런

 

- 사이킷런 파이썬 프레임워크는 여러 가지 탄탄한 학습 알고리즘을 갖고 있어, 파이썬 팬에게는 머신러닝 라이브러리 중 최고의 선택일 것

 

- 매우 다양하게 잘 정의된 알고리즘과 통합 그래픽을 가지고 있으며, 이미 검증된 라이브러리라는 것도 장점. 상대적으로 설치, 학습, 사용하기 쉽고 예제와 사용 설명서가 잘 돼 있음

 

- 딥러닝이나 강화 학습을 다루지 않으며, 그래픽 모델과 시퀀스 예측(Sequence Prediction) 기능을 지원하지 않는다. 또한, 파이썬 이외의 언어에서는 사용할 수 없고, 파이썬 JIT(Just-in-Time) 컴파일러인 파이파이(PyPy)나 GPU를 지원하지 않음

 

 

 

■ 스파크 MLlib

 

- 스파크용 오픈소스 머신러닝 라이브러리인 스파크 MLlib는 특징 추출(feature extraction), 변환, 차원 축소, 머신러닝 파이프라인 등을 구축, 평가, 조정하는 여러 가지 기능과 도구를 제공

 

- 분류와 회귀, 클러스터링, 협업 필터링(Collaborative Filtering) (하지만 DNN은 아님) 같은 일반적인 머신러닝 알고리즘도 지원

 

- 스칼라로 작성됐으며 선형 대수 패키지인 브리즈(Breeze)를 사용한다. 브리즈는 최적화된 수치 처리를 위해 netlib-java를 활용

 

- 전문가라면 엄청나게 많은 공용 알고리즘과 모델에 놀랄 것

 

- 딥 신경망을 모델링하거나 훈련하는 측면에서는 텐서플로우, MX넷, 카페, 마이크로소프트 CNTK에 미치지 못함

 

 

 

■ 텐서플로우

 

- 구글이 내놓은 이식성 좋은 머신러닝과 인공 신경망 라이브러리이다. 배우기가 조금 어렵지만 성능과 확장
성이 좋다.

 

- 텐서플로우에는 딥러닝에서 많이 사용하는 다양한 모델과 알고리즘이 들어 있으며 GPU(훈련용)나 구글 TPU(현업에 적용할 수 있는 규모로 예측용)를 장착한 하드웨어에서 탁월한 성능을 보임

 

- 파이썬 지원이 훌륭하며 문서화가 잘돼 있고,특히 텐서보드라고 하는 소프트웨어가 포함돼 있어 결과를 설명하는 데이터 플로우 그래프(Data Flow Graph: DFG)를 표시하고 이해하기 좋음

 

- 현재 이미지 인식과 언어 처리 분야를 바꿔놓고 있는 딥 CNN과 LSTM 재귀 모델을 포함해 온갖 종류의 신경망을 쉽게 처리할 수 있음

 

 

 

** 출처: [IDG] 딥러닝/머신러닝 프레임워크 6종 비교 분석 문서 발췌 청리