딥러닝(Deep Learning)이란 여러 층을 가진 인공신경망(ANN, Artificial Neural Network)을 사 용하여 머신러닝 학습을 수행하는 것으로 심층학습이라고도 부른다. 따라서 딥러닝은 머신러 닝과 전혀 다른 개념이 아니라 머신러닝의 한 종류라고 할 수 있다. 기존의 머신러닝에서는 학습하려는 데이터의 여러 특징 중에서 어떤 특징을 추출할지를 사람 이 직접 분석하고 판단해야만 했지만 딥러닝에서는 기계가 자동으로 학습하려는 데이터에서 특징을 추출하여 학습하게 된다. 이처럼 딥러닝과 머신러닝의 가장 큰 차이점은 바로 기계의 자가 학습 여부로 볼 수 있다. 따라서 딥러닝이란 기계가 자동으로 대규모 데이터에서 중요한 패턴 및 규칙을 학습하고, 이를 토대로 의사결정이나 예측 등을 수행하는 기술로 정의할 수 있다.
딥러닝에 사용되는 인공신경망 알고리즘에는 DNN, CNN, RNN, RBM, DBN 등 다양한 형태의 수많은 알고리즘이 개발되어 활용되고 있으며, 하나의 문제를 해결하기 위해 두 개 이상의 알 고리즘을 혼합하여 사용하는 경우도 많아졌다. 이렇게 이미 검증된 알고리즘을 사용할 때마다 계속해서 새롭게 구현해야 한다는 것은 매우 비효율적 방식이다. 딥러닝 프레임워크(framework)는 이렇게 이미 검증된 수많은 라이브러리와 사전 학습까지 완 료된 다양한 딥러닝 알고리즘을 제공함으로써, 개발자가 이를 빠르고 손쉽게 사용할 수 있도 록 해준다. 이를 통해 중복적인 기능을 구현해야 하는 소모적인 작업으로부터 개발자를 해방 시켜, 문제 해결을 위한 핵심 알고리즘 개발에만 집중할 수 있도록 도와준다.
딥러닝 프레임워크 소개
텐서플로우(TensorFlow)
가장 인기 있는 딥러닝 라이브러리 중 하나인 텐서플로우 (TensorFlow)는 구글에서 개발했으며 2015년 오픈소스로 공 개되었다. 2세대 머신러닝 시스템으로도 불리는 텐서플로우 는 파이썬(Python) 기반 라이브러리로 여러 CPU/GPU와 모든 플랫폼, 데스크톱/모바일에서 사용할 수 있다. 또한 C++과 R 과 같은 다른 언어도 지원하며 딥러닝 모델을 직접 작성하거나 케라스와 같은 래퍼 라이브러리를 사용하여 직접 작성할 수 있다. 현재 텐서플로우는 독자적인 생태계를 갖출 정도로 발전했다. 텐서플로우 전문 블로거가 나오 고, 텐서플로우를 테마로 한 사용자 커뮤니티들도 생겨났다. 따라서 자원이 많고 튜토리얼도 풍부하다.
케라스(Keras)
케라스(Keras)는 파이썬 기반으로 작성된 매우 가볍고 배 우기 쉬운 오픈 소스 신경망 라이브러리다. 텐서플로우 는 매우 훌륭한 딥러닝 라이브러리지만 이를 직접 사용 하여 딥러닝 모델을 만드는데 기초 레벨부터 작업해야 하기 때문에 사용하는데 어려울 수 있 어 이러한 문제를 해결하기 위해 케라스는 효율적인 신경망 구축을 위한 단순화된 인터페이 스로 개발되었다. 케라스는 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하 고 활용할 수 있도록 직관적인 API를 제공하고 있다. “케라스는 사용자들이 어떻게 하면 코딩 을 더 쉽게 할 수 있을까?”에 기반하여 만들어진 라이브러리이다. 실제로 케라스에서는 다양 한 뉴럴 네트워크 모델을 미리 지원해주고 있으므로, 단순히 블록을 조립하듯이 네트워크를 만들면 되는 방식이여서, 전반적인 네트워크 구조를 생각하고 작성한다면 빠른 시간 내에 코 딩을 할 수 있는 엄청난 장점이 있다. 내부적으로는 텐서플로우, 티아노, CNTK 등의 딥러닝 전용 엔진이 구동되지만 케라스 사용자는 복잡한 내부 엔진을 알 필요가 없는 직관적인 API 로 머신러닝의 필수 학습 모델(다층퍼셉트론 모델, 컨볼루션 신경망 모델, 순환 신경망 모델 또는 이를 조합한 모델)을 쉽게 구성할 수 있으며, 다중 입력 또는 다중 출력 등 다양한 구성 을 할 수 있다. 그러나 너무 케라스에만 의존하다 보면 텐서플로우를 완전하게 익히지 못하게 된다는 단점이 존재한다.
테아노(Theano)
'최초의 딥러닝 라이브러리' 중 하나인 테아노 (theano)는 파이썬 기반이며 CPU 및 GPU의 수치계산 에 매우 유용하다. 파이썬 라이브러리의 하나로 다차 원 배열과 관계가 있는 수학적 표현을 정의하고, 최적화하며, 평가하도록 해준다. 텐서플로우와 마찬가지로 테아노는 저수준 라이브러리로 딥러닝 모델을 직접 만들거나 그 위 에 래퍼 라이브러리를 사용하여 프로세스를 단순화할 수 있으나 확장성이 뛰어나지 않으며 다중 GPU지원이 부족한 단점이 있다. 오픈소스 프로젝트로 캐나다 몬트리올 대학의 머신러닝 연구그룹 중 한곳에서 개발
파이토치(Pytorch)
토치(Torch)는 Lua 기반의 딥러닝 프레임워크로서 페 이스북/트위터/구글과 같은 회사들이 사용하고 개발 한 라이브러리이다. GPU 처리를 위해 C/C++ 라이브 러리와 CUDA(NVIDIA의 GPU라이브러리)를 사용한다. 토치는 Lua 스크립트 인터페이스 때문 에 처음 딥러닝을 시작하는 사람들에게 인기가 많지는 않았다. 하지만 최근 파이토치 (PyTorch)라고 불리는 Torch의 파이썬 구현은 인기를 얻었고 빠른 채택을 얻고 있습니다. 파 이토치는 토치(Torch)라는 머신 러닝 라이브러리에 바탕을 두고 만들어진 파이선용 오픈소스 머신 러닝 라이브러리이다. 페이스북의 AI 연구 팀이 개발한 것에서부터 출발했다. 파이토치 공식 웹사이트(https://pytorch.org/)에 의하면 파이토치 라이브러리는 “빠르고 유연한 실험을 하게 해주는 딥러닝 프레임워크”라고 설명했다. 심층 신경망(deep neural network)과 강력한 GPU 가속을 가진 텐서 컴퓨팅(tensor computing)이 포함된 파이선 패키지 형태로 제공된다.
아파치(Apache) MXNet
아파치 MXNet은 오픈소스 딥 러닝 프레임워크로, 아파치 소프트웨어 재단(Apache Software Foundation)에서 개발 중에 있다. Apache MXNet은 빠르고 확장 가능한 교육 및 추론 프레임워크로써 머신러닝을 위해 사용이 쉽고 간단한 API가 제공된다. 이 프레임워크가 주목을 받는 이유는 AWS(Amazon Web Service)가 아파치 MXNet을 딥러닝 엔진으로 선택했기 때문이다. MxNet은 확장성이 좋고 다중 GPU와 컴퓨터로 작업할 수 있기 때문에 대중적이며 기업용으로도 매우 유용하다. 이것이 아마존이 MxNet을 딥러닝을 위한 참 조 라이브러리로 사용한 이유 중 하나이기도 하다. 아마존은 MXNet 커뮤니티에 참여해 프레 임워크 개발에 적극적으로 참여했으며, 상당한 투자를 감행했다.
CNTK
MS 리서치팀이 만든 CNTK(Microsoft Computational Network Toolkit)는 딥러닝 모델을 교육하기 위한 오픈소스 딥러닝 도구 이다. MS는 번역 기술, 음성인식, 이미지 음식 등과 관련한 트 레이닝을 할 때 CNTK를 직접 이용했다고 설명했다. MS 리서 치 팀은 CNTK를 2015년 4월에 처음 공개하고 코드는 자체 코드 저장소 ‘코드플렉스‘에 올렸 다. 앞으로 CNTK 관리는 깃허브 프로젝트 안에서 할 예정이다. MS는 “깃허브로 소스코드를 옮겨서 더 폭넓은 개발자에게 CNTK를 제공할 것”이라고 설명했다. 그만큼 CNTK 생태계를 넓 히고 싶다는 의미이다. 높은 확장성과 성능을 발휘하도록 설계되었고 여러 시스템에서 실행될 때 테아노 및 텐서플로우와 같은 툴킷과 비교할 때 높은 성능을 제공한다
Darknet
Darknet은 오픈 소스 신경망 프레임 워크입니다. 실시간 객체 감지 (이미지에도 사용할 수 있음 )를위한 빠르고 매우 정확한 (맞춤 학습 된 모델의 정확성은 학습 데이터, 시대, 배치 크기 및 기타 요인에 따라 다름) 프레임 워크입니다 . 가장 중요한 이유는 C와 CUDA로 작성 되었기 때문에 빠르다.
'인공지능 > 인공지능' 카테고리의 다른 글
검색 증강 생성(RAG)이란? (3) | 2024.10.15 |
---|---|
랭체인과 LLM에 대해 (0) | 2024.06.16 |
CNN(Convolutional Neural Network) 알고리즘 (0) | 2021.05.17 |
Backbone(백본)에 대해 (0) | 2021.05.17 |
Object Detection on COCO test-dev(COCO test-dev Benchmark Object Detection) (0) | 2020.09.15 |