본문 바로가기
AI · 인공지능/알기쉬운 AI

[알기쉬운 AI - 16] 기계 학습 라이브러리

by 두우우부 2020. 2. 3.
반응형

기계 학습 라이브러리

기계 학습 라이브러리는 딥러닝을 위한 도구로 프레임워크라고도 합니다. 기계 학습 라이브러리는 예전부터 있었습니다만, 2012년에 딥러닝이 주목을 받으면서 신경망 기반의 라이브러리가 단숨에 증가했습니다. 캐나다, 미국, 영국, 중국, 그리고 일본에서도 새로운 라이브러리가 등장하고 있으며, 최근 인기 있는 것, 예전에는 인기가 있었지만, 지금은 쓸모없게 된 것 등 기복이 심한 상황입니다. 앞으로 새로운 라이브러리의 탄생보다는 기존 라이브러리의 개량과 도태가 진행될 것으로 예상됩니다.

표 1에 현재 주류 라이브러리 목록을 보여줍니다. 원래 대학에서 개발된 것이 많지만, 개발자가 Google이나 Facebook 등의 대기업에 초빙받거나 고액의 지원을 받는 등 지금은 대기업이 라이브러리 발전의 중심이 되었습니다. 라이브러리는 오픈소스로 제공되어 인공 지능의 발전에 크게 기여하고 있습니다. 각 튜토리얼도 준비되어 있기 때문에, 누구나(영어만 되면) 간편하게 이용할 수 있습니다.

표 1 : 인기 있는 기계 학습 라이브러리( 순위와 무관 )

오픈 소스 라이선스(OSS)

표 1의 AI 라이브러리는 모두 오픈 소스 라이선스(OSS)로 github에 소스 코드가 공개되어 있습니다. OSS라고 하면GLP(GNU General Public Licence)가 유명했지만, 이용 조건이 너무 엄격하기도 하고 최근에는 표 1에 있는 3개의 라이선스가 많이 사용되고 있습니다.

가장 제약이 느슨한 것이 매사추세츠 공과대학을 기원으로 하는 MIT 라이선스로 사용 조건은 대체로 '저작권자는 의무 나 책임을 지지 않음', '저작권의 표시'의 두 가지입니다. 캘리포니아 대학에 의해 제정된 BSD 라이선스도 거의 같은 정도로, 이 두 가지에, '이용하여 만든 제품의 홍보 시 조직이나 저작권자의 이름을 사용한다'는 조건이 더해지고 있습니다. Apache 라이선스는 AFS(아파치 소프트웨어 재단)에 의한 라이선스 규정으로, '제품을 변경한 경우에 그 변경 사항을 나타낼 것'이라는 조건이 더해지고 있습니다.

주요 기계 학습 라이브러리

표 1의 기계 학습 라이브러리는 아래에 간단하게 소개하겠습니다.

 


(1) Caffe 와 Caffe2

2012년 토론토 대학이 딥러닝을 사용하여 이미지 인식 경연 대회 (ILSVRC)에서 압승함으로써 전 세계의 대학이 딥러닝에 심취했습니다. 그리고 2012년 11월에 몬트리올 대학에서 Teano(테아노)라는 라이브러리가 탄생하고, 그 1년 후 캘리포니아 대학의 Caffe(카페)가 발표되었습니다.

 

Caffe 는 동 대학 버클리에 재학 중인 Yangqing 박사의 프로젝트로 만들어진 프레임 워크로 ILSVRC 2012에서 우승한 CNN(회선 신경망)에 의한 화상인식을 자랑합니다. 다음으로 BVLC(Berkley Vision and Learning Center) 중심으로 개발을 계속하고 있으며, CNN뿐만 아니라 최근 주목받고 있는 RCNN, LSTM 전이 학습 등의 알고리즘을 지원하고 있습니다(알고리즘은 나중에 다시 설명하겠습니다).

Teano 및 Caffe 이후 다양한 프레임 워크가 탄생하여 Caffe는 좀 낡았다는 인상이 있었습니다만, 2017년 4월에 Facebook이 Caffe를 기반으로 Caffe2를 GitHub에 공개하여, 다시 인기를 얻었습니다. 또한 Teano는 MILA라는 단체가 개발을 계속했지만 2017년 10월에 개발을 중지한다고 발표했습니다.

(2) DL4J

최근 라이브러리의 인터페이스는 대부분 Python을 지원하고 있습니다만, DL4J는 Deep Learning for Java라는 이름대로 Java, Scala 기반의 라이브러리입니다. Skymind 라는 신생 기업이 개발하였고, Java 애호가들에게 사랑받고 있습니다.


(3) Keras

Keras의 메인 개발자는 Google의 François Chollet (프랑소와 숄레)씨로, Google의 프레임 워크 TensorFlow wrapper로 인기 있는 라이브러리입니다. 다양한 기능이 고도로 모듈화되어 있기 때문에 일일이 날 코딩할 필요가 없습니다. 층을 쌓아 각층의 알고리즘이나 매개 변수를 지정하는 방식으로 신경망을 구성할 수 있기 때문에, 작성 코드도 훨씬 적습니다. 또한 시각화 기능도 충실하고, 학습 상황이나 만든 네트워크를 그래프나 차트로 볼 수 있습니다. TensorFlow를 잘 다루려면 나름 난도가 높지만, Keras를 wrapper로 사용하면 매우 쉽게 딥러닝 처리가 가능합니다.

Wrapper란?
Wrapper는 포장지처럼 '원래의 기능을 감싸서 숨기는 기능'을 의미입니다. Keras는 TensorFlow의 wrapper로 사용자가 Keras의 용이성을 이용하여 뒷단에서 사용되는 TensorFlow의 세부 내용은 의식하지 않아도 됩니다.

 

(4) Chainer

Chainer는 일본의 라이브러리입니다. 개발사는 Preferred Networks라는 신생 기업으로 도쿄에 기반을 둔 기계학습 스타트업이며 대부분의 엔지니어가 도쿄대학 출신이고, 도요타를 비롯한 많은 일본 기업에서 자금 지원을 받아 활동하고 있습니다. Chainer의 특징도 사용하기 쉽다는 점으로, 계산 그래프를 쉽게 만들 수 있습니다.

 

(5) TensorFlow

많은 AI 라이브러리 중 가장 인기 있는 것이 Google의 TensorFlow입니다. 원래는 Google 내부에서 사용되고 있었습니다만, 2015년 11월에 오픈소스로 공개되었습니다. TensorFlow의 특징은 범용성이 높고 섬세한 조정이 가능한 프레임워크라는 것입니다.

C++로 구현되어 있기 때문에 처리 속도가 빠르고 신경망 처리를 위한 함수도 다양하게 준비되어 있습니다. 모듈화되어 있지 않기 때문에, 프로그래밍을 어떻게 하느냐에 따라 뭐든지 가능합니다. 그러나 범용적인 만큼 이를 잘 다루고 학습 모델을 만들기까지는 그에 상응하는 학습 시간과 수학 및 통계학 지식이 필요합니다. 그 진입장벽을 덜어주는 것이 앞에 언급한 Keras라는 wrapper입니다.

(6) Torch와 Pytorch

Torch는 가장 오래된 기계 학습 라이브러리로 Lua라는 스크립트 언어로 작성된 것이었습니다. 이를 바탕으로 Python으로도 작성되었는데 2017년 1월에 Facebook이 공개한 라이브러리가 Pytorch입니다. Facebook은 같은 시기에 Caffe2도 공개하고 있기 때문에 두 개의 프레임워크를 지원하고 있습니다.

Facebook에는 FAIR(Facebook AI Research)라는 AI 연구팀과 AML(Applied Machine Learning)이라는 AI 구현 팀이 있습니다. FAIR는 이전부터 Pytorch를 사용했지만, Pytorch는 고급 연구에는 적합하지만, 리소스를 많이 잡아먹는 라이브러리입니다. 연구 기관의 사용 예는 많습니다만, 어디 까지나 연구 용도라고 명기되어 있습니다. 따라서 구현팀인 AML은 스마트폰 등 작은 자원의 환경에서도 사용 가능한 Caffe2를 사용합니다.

 

 

ONNX 란?
Facebook과 Microsoft는 2017년 9월에 ONNX(Open Neural Network Exchange)를 발표하고 GitHub에 공개했습니다. 이것은 여러 프레임워크 간의 학습 모델을 쉽게 스위치 할 수 있는 구조입니다. 현재 Facebook의 Caffe2과 Pytorch, 그리고 Microsoft의 Cognitive Toolkit도 ONNX에 참여하고 있습니다. 예를 들어 Pytouch에서 만든 학습 모델을 Caffe2로도 움직이게 할 수 있습니다. 사용자에게 혜택이 크기 때문에 향후 다른 프레임워크들도 참여하기를 기대하고 있습니다.

(7) Cognitive Toolkit

이제 AI로 Google을 맹렬히 추격 중인 Microsoft는 Cognitive Toolkit이라는 프레임워크를 공개하고 있습니다. Google과 마찬가지로 원래는 사내에서 사용하던 것을 2016년 1월에 CNTK라는 이름으로 GitHub에서 공개하고 같은 해 10월에 Cognitive Toolkit이라는 명칭으로 개칭했습니다.

2017년 6월에 공개된 Cognitive Toolkit2.0은 TesolFlow와 같이 Keras를 wrapper로 사용할 수 있습니다. 또한, 상기 ONNX에도 참여하고 있으며, 마이크로소프트의 오픈 AI 전략이 느껴집니다. 기능의 충실도가 두드러지며 앞으로의 활약이 기대되는 프레임워크입니다.

Cognitive와 Tensor
IBM은 AI를 Artificial Intelligence(인공 지능) 대신 Augmented Intelligence(확장 지능)로 정의하고, AI보다는 Cognitive Computing(인지 컴퓨팅)이라는 말을 사용하도록 하고 있습니다. 상당히 진지하게 Artificial Intelligence라는 말의 차이를 논하는 사람도 있지만, 저에게는 에지 컴퓨팅과 안개 컴퓨팅 같이 말장난(혹은 패권 다툼)으로밖에 보이지 않습니다. 하지만 Cognitive Computing이라는 말 자체가 미국에서는 자주 사용되고 있고, Microsoft 프레임워크도 이 단어를 사용하고 있습니다.

한편, Google의 라이브러리 TensorFlow의 Tensor는 '다차원 배열'입니다. 길이와 무게 등 방향성이 없는 수치는 0층 Tensor로, 방향성을 가지는 벡터는 1층 Tensor, 행과 열로 이루어진 행렬은 2층 Tensor, 행과 열 및 높이를 가지는 3차원 데이터는 3층 Tensor로 배열계산 가능합니다. 실제 공간의 대체 이미지 수는 여기까지이지만, 딥러닝 과정에서 더욱더 높은 층까지 계산할 수 있습니다(차원에 대해서는 블로그 뒷부분에서 설명합니다).


(8) PaddlePadlle

중국의 인터넷 산업은 검색 사이트 百度(Baidu) , 전자상거래 阿里巴巴(Alibaba), SNS의 騰訊(Tencent)의 3개사가 격전을 벌이고 있습니다. 각각의 핵심 사업은 Google, Amazon, Facebook과 동일하다는 점이 재미있네요. 그리고 미국의 3사가 인공 지능에 힘을 쏟고 있는 것처럼 중국의 3사도 인공지능에 주력하고 있습니다.

이 중에서도 바이두는 한발 앞서있으며, PaddlePadlle 이라는 프레임워크를 만들고 있습니다. 일본에서 Chainer가 많이 사용되는 것 같이, 중국에서는 PaddlePadlle의 인기가 많습니다.


PaddlePadlle의 특징은 클라우드뿐만 아니라 분산 컴퓨팅 클러스터에서 고속으로 작동하기 때문에 에지(edge) 컴퓨팅의 보급에 큰 도움이 될 것으로 보입니다. 중국은 국가정책으로 인공 지능에 주력하고 있으며, 새로운 기술을 도입하는 열기도 높기 때문에 앞으로 많은 중국계 기업이 PaddlePadlle을 도입할 것으로 생각됩니다.


(9) MXNet

MXNet은 원래 워싱턴 대학과 카네기 멜런 대학에서 개발된 라이브러리입니다. 2016년 Amazon이 지원을 공표하면서 주목받았습니다. MXNet의 특징은 확장 가능한 것으로, 대규모 학습 연산도 GPU의 수를 늘려서 더 빠르게 처리할 수 있습니다.

또한 학습된 모델은 가벼워서 스마트 폰이나 노트북 PC 등 비교적 처리 능력이 낮은 장치에서도 사용할 수 있습니다. Amazon은 원래 DSSTNE(운명)이라는 라이브러리를 공개했다지만, 앞으로는 MXNet을 중심으로 할 것 같습니다. 역시 Amazon의 확장이라는 특징은 매력적인 것 같습니다.


정리

Vol.2 에서는 현재 많이 사용되는 라이브러리를 살짝 소개해 봤습니다. 많은 라이브러리가 대기업의 지원을 받아 더욱 개발 경쟁을 벌이고 있습니다. 앞으로도 인기 없는 것은 도태되어 가겠지만, 전장은 점차 상위 계층의 AI 플랫폼과 AI 애플리케이션으로 옮겨가고 있습니다.

반응형