딥러닝 프레임워크 (Deep Learning Framework)
딥러닝에 사용되는 인공신경망 알고리즘에는 DNN, CNN, RNN, RBM, DBN 등 다양한 형태의 수많은 알고리즘이 개발되어 활용되고 있으며, 하나의 문제를 해결하기 위해 두 개 이상의 알고리즘을 혼합하여 사용하는 경우도 많아졌다. 이렇게 이미 검증된 알고리즘을 사용할 때마다 계속해서 새롭게 구현해야 한다는 것은 매우 비효율적 방식이다.
딥러닝 프레임워크는 이렇게 이미 검증된 수많은 라이브러리와 사전 학습까지 완료된 다양한 딥러닝 알고리즘을 제공함으로써, 개발자가 이를 빠르고 손쉽게 사용할 수 있도록 해준다. 이를 통해 중복적인 기능을 구현해야 하는 소모적인 작업으로부터 개발자를 해방시켜, 문제 해결을 위한 핵심 알고리즘 개발에만 집중할 수 있도록 도와준다.
텐서플로우 (TensorFlow)
가장 인기 있는 딥러닝 라이브러리 중 하나인 텐서플로우는 구글팀에서 개발했으며 2015년 오픈소스로 공개되었다. 2세대 머신러닝 시스템으로도 불리는 텐서플로우는 파이썬 기반 라이브러리로 여러 CPU 및 GPU와 모든 플랫폼, 데스크톱 및 모바일에서 사용할 수 있다. 다른 프레임워크에 비해 속도가 느린 편이며, 스칼라 (Scala) 언어는 지원하지 않는다. 텐서플로우는 저수준 라이브러리로 딥러닝 모델을 직접 만들거나 그 위에 래버 라이브러리를 사용하여 프로세스를 단순화 할 수 있다. 텐서플로우는 C/C++ 엔진에 파이썬 API로 제작되어 빠른 실행이 가능하며, 딥러닝 알고리즘뿐만 아니라 강화 학습을 위한 다양한 알고리즘도 같이 지원하고 있다. 또한, 텐서보드 (TensorBoard)라는 모델 가상화 도구를 제공하여 모델을 손쉽게 시각화할 수 있다.
케라스 (Keras)
텐서플로우는 매우 훌륭한 딥러닝 라이브러리지만 직접 사용하여 모델을 만드는 것은 매우 저수준이기 때문에 어려울 수 있다. 이 문제를 해결하기 위해 케라스는 효율적인 신경망 구축을 위한 단순화 된 인터페이스로 개발되었다. 케라스는 Theano 또는 텐서플로에서 작동하도록 구성할 수 있고 백엔드 (back-end)로 사용하며, 토치 (Torch)와 같이 직관적인 API를 제공한다. 또한, 파이썬으로 제작되어 매우 가볍고 배우기도 쉬우며, 빠른 업데이트로 다양한 계층에서 빠른 속도로 발전하고 있는 차세대 딥러닝 프레임워크라고 할 수 있다. 비교적 새로운 라이브러리임에도 불구하고 아주 좋은 문서를 가지고 있으며, 몇 줄의 코드에서 케라스를 사용하여 신경망을 만들 수 있다.
토치 (Torch)
토치는 루아 (Lua)라는 스크립트 언어를 기반으로 제작된 딥러닝 프레임워크로 페이스북, 구글 등과 같은 대기업에서도 토치를 기반으로 하는 자체 버전을 별도로 개발하여 사용하고 있을 정도로 효율적인 프레임워크이다. 토치는 최대한의 유연성을 달성하고 모델을 제작하는 과정을 매우 간단하게 만드는 것을 목표로 만들어졌으며 강화 학습에 필요한 사전 학습된 다양한 라이브러리를 제공해 준다. 루아는 자바스크립트 (Javascript)와 비슷한 스크립트 언어로 파이썬보다 빠른 특징이 있다.
Theano
최초의 딥러닝 라이브러리 중 하나로 파이썬 기반이며 CPU 및 GPU의 수치계산에 매우 유용한 선형대수 심벌 컴파일러로서 미분, 선형대수 계산을 포함해 Symbolic expression을 통한 정의된 수식을 사람처럼 미분하거나 재정리해서 전체 계산에 대한 최적의 계산 경로를 찾아내는 소프트웨어를 말한다. Theano는 저수준 라이브러리로 딥러닝 모델을 직접 만들거나 그 위에 래퍼 라이브러리를 사용하여 프로세스를 단순화 할 수 있다. 다른 확장 학습 프레임워크와 달리 확장성이 뛰어나지 않고 다중 GPU지원이 부족하지만 범용적으로 딥러닝을 할 때 전 세계의 많은 개발자가 여전히 선택하고 있는 것 중 하나이다.
DL4J (DeepLearning4J)
DL4J는 자바 (Java)로 개발된 인기 있는 딥러닝 프레임워크로 클로저 (Closure)나 스칼라 (Scala)와 같은 다른 JVM언어도 지원한다. 상업/산업 중심의 분산 딥러닝 플랫폼으로도 널리 사용된다. DL4J는 하둡 (Hadoop)과 스파크 (Spark)를 기반으로 하는 빅데이터 도구와 함께 사용할 수 있으므로 효율적인 딥러닝이 가능하기 때문에 전체 자바 생태계의 힘을 결합하여 효율적인 딥러닝을 수행할 수 있다는 장점이 있다. 이러한 DL4J는 비즈니스 환경 중심의 분산 딥러닝 플랫폼으로 널리 사용되고 있다.
'Learning-driven Methodology > DL (Deep Learning)' 카테고리의 다른 글
[Deep Learning] 전이 학습 (Transfer Learning) (1) (0) | 2022.06.21 |
---|---|
[Deep Learning] 딥러닝 프레임워크 비교 (0) | 2022.05.19 |
[Deep Learning] XGBoost (0) | 2022.05.03 |
[Deep Learning] Orion을 통한 불안정한 시계열 이상 감지 (0) | 2022.05.03 |
[Deep Learning] Basic Guide to Spiking Neural Networks for Deep Learning (3) (0) | 2022.01.17 |