..

Search

12) 딥러닝 프레임워크

딥러닝 프레임워크


딥러닝 프레임워크

딥러닝에 사용되는 인공신경망 알고리즘에는 DNN, CNN, RNN, RBM, DBN 등 다양한 형태의 수많은 알고리즘이 개발되어 활용되고 있으며, 하나의 문제를 해결하기 위해 두 개 이상의 알고리즘을 혼합하여 사용하는 경우도 많아졌습니다. 이렇게 이미 검증된 알고리즘을 사용할 때마다 계속해서 새롭게 구현해야 한다는 것은 매우 비효율적 방식입니다.

 

딥러닝 프레임워크(framework)는 이렇게 이미 검증된 수많은 라이브러리와 사전 학습까지 완료된 다양한 딥러닝 알고리즘을 제공함으로써, 개발자가 이를 빠르고 손쉽게 사용할 수 있도록 해줍니다. 이를 통해 중복적인 기능을 구현해야 하는 소모적인 작업으로부터 개발자를 해방시켜, 문제 해결을 위한 핵심 알고리즘 개발에만 집중할 수 있도록 도와줍니다.

 

프레임워크(framework)란 응용 프로그램을 개발하기 위한 여러 라이브러리나 모듈 등을 효율적으로 사용할 수 있도록 하나로 묶어 놓은 일종의 패키지라고 할 수 있습니다.

 

딥러닝 개발에 사용되는 프레임워크는 특정 딥러닝 분야에 특화되어 있거나 기능상의 차이가 있을 수 있으므로, 자신이 개발하고자 하는 분야와 목적에 따라 알맞은 프레임워크를 선택해야 합니다.

 

현재 가장 인기 있는 대표적인 딥러닝 프레임워크는 다음과 같습니다.

 

1. 시아노(Theano)

2. 텐서플로우(Tensorflow)

3. 케라스(Keras)

4. 토치(Torch)

5. DL4J(DeepLearning4J)


시아노(Theano)

 

theano

 

최초의 딥러닝 프레임워크 중 하나인 시아노(Theano)는 파이썬을 기반으로 개발되었으며, 데이터를 탐색하거나 수치 계산에 매우 유용합니다.

하지만 확장성이 뛰어나지는 않으며 다중 GPU에 대한 지원도 부족합니다.

그러나 아직까지도 범용적인 딥러닝 모델을 구축할 때 많이 사용되고 있습니다.


텐서플로우(Tensorflow)

 

tensorflow

 

현재 가장 인기 있는 딥러닝 프레임워크 중 하나인 텐서플로우(Tensorflow)는 시아노(Theano)를 대신하기 위해 구글의 구글 브레인 팀에서 개발한 딥러닝 프레임워크입니다.

 

텐서플로우는 C/C++ 엔진에 파이썬 API로 제작되어 빠른 실행이 가능하며, 딥러닝 알고리즘뿐만 아니라 강화 학습을 위한 다양한 알고리즘도 같이 지원하고 있습니다. 또한, 텐서보드(TensorBoard)라는 모델 가상화 도구를 제공하여 모델을 손쉽게 시각화할 수 있습니다.

하지만 다른 프레임워크에 비해 속도가 느린 편이며, 스칼라(Scala) 언어는 지원하지 않고 있습니다.

 

2015년 구글이 텐서플로우를 오픈 소스로 공개한 이후 매우 활발하게 연구가 진행되어 2018년 현재 r1.8버전까지 공개되어 있으며, 지원하는 언어도 파이썬, C/C++뿐만 아니라 자바, Go 언어까지 추가되었습니다.


케라스(Keras)

 

keras

 

시아노(Theano)나 텐서플로우(Tensorflow)를 사용하여 직접 딥러닝 모델을 만드는 것은 딥러닝 전문가가 아니면 매우 어려울 수 있습니다.

이를 해결하기 위해서 효율적인 인공신경망을 단순화된 인터페이스로 구축할 수 있도록 개발된 딥러닝 프레임워크가 바로 케라스(Keras)입니다.

 

케라스(Keras)는 시아노(Theano)와 텐서플로우(Tensorflow)를 백엔드(back-end)로 사용하며, 토치(Torch)와 같이 직관적인 API를 제공합니다.

또한, 파이썬으로 제작되어 매우 가볍고 배우기도 쉬우며, 빠른 업데이트로 다양한 계층에서 빠른 속도로 발전하고 있는 차세대 딥러닝 프레임워크라고 할 수 있습니다.


토치(Torch)

 

torch

 

토치(Torch)는 루아(Lua)라는 스크립트 언어를 기반으로 제작된 딥러닝 프레임워크로 페이스 북, 구글 등과 같은 대기업에서도 토치를 기반으로 하는 자체 버전을 별도로 개발하여 사용하고 있을 정도로 효율적인 프레임워크입니다.

 

토치(Torch)는 딥러닝 모델을 만드는 과정을 최대한 유연하고 간단하게 만드는 것을 목표로 개발되었으며, 강화 학습에 필요한 사전 학습된 다양한 라이브러리를 제공해 줍니다. 여기에 더해 2017년 페이스 북에 의해 오픈 소스화된 파이썬 기반의 Pytorch가 동적 계산 그래프(dynamic computation graph)를 제공하며 순환 신경망(Recurrent Neural Network, RNN) 분야에서 많은 인기를 얻고 있습니다.


DL4J(DeepLearning4J)

 

dl4j

 

자바로 개발된 딥러닝 프레임워크인 DL4J는 자바뿐만 아니라 클로저(Clojure)나 스칼라(Scala)와 같은 다른 JVM 언어도 함께 지원하고 있습니다.

 

DL4J는 하둡(Hadoop)과 스파크(Spark)를 기반으로 하는 빅데이터 도구와 함께 사용할 수 있으므로 효율적인 딥러닝이 가능하며, Akka와 같은 라이브러리를 사용하여 손쉽게 분산 시스템을 구현할 수 있는 장점을 가집니다.

 

이러한 DL4J는 비즈니스 환경 중심의 분산 딥러닝 플랫폼으로 널리 사용되고 있습니다.


연습문제