Ravissement's Wiki

View My GitHub Profile

Contents:
  1. Deep Learning Framework
    1. 딥러닝 프레임워크(Framework)
    2. 시아노(Theano)
    3. 텐서플로우(Tensorflow)
    4. 케라스(Keras)
    5. 토치(Torch)
    6. DL4J(DeepLearning4J)
2 January 2020

Deep Learning Framework

딥러닝 프레임워크(Framework)

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

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

  1. 시아노(Theano)

  2. 텐서플로우(Tensorflow)

  3. 케라스(Keras)

  4. 토치(Torch)

  5. DL4J(DeepLearning4J)




시아노(Theano)

최초의 딥러닝 프레임워크 중 하나인 시아노는 파이썬을 기반으로 개발되었으며, 데이터를 탐색하거나 수치 계산에 매우 유용하다. 하지만 확장성이 뛰어나지는 않으며 다중 GPU에 대한 지원도 부족하다.



텐서플로우(Tensorflow)

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

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



케라스(Keras)

시아노나 텐서플로우를 사용하여 직접 딥러닝 모델을 만드는 것은 딥러닝 전문가가 아니면 매우 어려울 수 있다. 이를 해결하기 위해서 효율적인 인공신경망을 단순화된 인터페이스로 구축할 수 있도록 개발된 딥러닝 프레임워크가 바로 케라스이다.

케라스는 시아노와 텐서플로우를 백엔드로 사용하며, 토치와 같이 직관적인 API를 제공한다. 또한, 파이썬으로 제작되어 매우 가볍고 배우기도 쉬우며, 빠른 업데이트로 다양한 계층에서 빠른 속도로 발전하고 있는 차세대 딥러닝 프레임워크라고 할 수 있다.



토치(Torch)

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

토치는 딥러닝 모델을 만드는 과정을 최대한 유연하고 간단하게 만드는 것을 목표로 개발되었으며, 강화 학습에 필요한 사전 학습된 다양한 라이브러리를 제공해준다.



DL4J(DeepLearning4J)

자바로 개발된 딥러닝 프레임워크인 DL4J는 자바뿐만 아니라 클로저나 스칼라와 같은 다른 JVM언어도 함께 지원하고 있다. DL4J는 하둡과 스파크를 기반으로 하는 빅데이터 도구와 함께 사용할 수 있으므로 효율적인 딥러닝이 가능하며, Akka와 같은 라이브러리를 사용하여 손쉽게 분산 시스템을 구현할 수 있는 장점이 있다.