Deep Learning Overview
딥러닝 개요
- ML의 NN내의 한 분야로서
여러 Hidden Layer를 가진 Deep Neural Network(DNN; 심층 신경망)을 기반으로 하는 학습 방법이다.
- 다중처리 계층으로 구성된 계산 모델을 사용해
여러 수준의 Abstraction을 통해 데이터 표현을 학습하여 어떤 것을 인식하는 방법이다.
- Hinton이 RBM과 Drop-Out이라는 새로운 딥러닝 기반 학습 알고리즘을 제안하며
오랫동안 미해결된 Overfitting 문제를 해결할 수 있었다.
* DNN(심층 신경망; HW)과 딥러닝(SW)이 개발된 배경
- 기존 NN에서 Hidden Layer의 개수를 늘려 보다 더 정교한 학습이 필요해졌다.
- CPU와 GPU의 Performance가 비약적으로 개선되었다.
- 병렬 분산처리가 가능해졌다.
- 학습을 통한 Preprocessing 과정이 추가되어 효율성이 증대되었다.
- 인터넷 검색을 통한 Big Data를 수집하여 학습에 이용할 수 있는 여건이 조성되었다.
* Neural Network vs Deep Neural Network (신경망과 심층 신경망)
NN (Neural Network; 신경망) |
DNN (Deep Neural Network; 심층 신경망) |
|
# of Hidden Layers (은닉층의 개수) |
일반적으로, 1~2 개 | 1 개 이상 1,000 개 이하 |
Algorithm (사용된 알고리즘) |
Backpropagation Algorithm (역전파 알고리즘) |
Deep Learning Algorithm (딥러닝 알고리즘) |
Period (주요 이용 시대) |
1986년 이후 | 2006년 이후 |
Dataset (데이터의 규모) |
비교적 적은 학습용 데이터 | 대규모 데이터 |
Runtime Performance (이론상 수행 시간) |
오랜 시간이 소요됨 | 많은 은닉층으로 인해 훨씬 오랜 시간이 소요됨 |
Processor Performance (프로세서 성능) |
상대적으로 저조한 성능 | 비약적으로 개선된 성능 |
Parallel Processing (병렬처리) |
NCUBE/10 등 병렬 슈퍼컴퓨터가 사용됐으나, 큰 성과를 내지 못함 |
수많은 고속 프로세서들을 병렬로 연결하여 빠른 성능을 구현함 |
* Machine Learning vs Deep Learning (머신러닝과 딥러닝)
Machine Learning (ML; 머신러닝) |
Deep Learning (Hierarchical Learning; 딥러닝) |
|
Data Scale (데이터 크기) |
- 작은 데이터 집합에 좋은 결과를 낸다. | - 매우 큰 데이터 집합에 좋은 결과를 낸다. |
Computer (컴퓨터) |
- 학습 시간이 짧아, 일반 컴퓨터로 처리할 수 있다. |
- 학습에 매우 오랜 시간이 걸려, 고성능 컴퓨터가 요구된다. |
Feature Extraction (특징 추출 방법) |
- 특징 추출과 분류가 별개로 수행된다. | - 특징 추출과 분류가 함께 자동적으로 처리된다. |
Processing Time (처리 시간) |
- 몇 분에서 몇 시간이 소요된다. | - 경우에 따라, 몇 주가 소요되기도 한다. |
Algorithm (알고리즘) |
- 다양한 알고리즘이 사용된다. | - 현재는 알고리즘이 많지 않지만, 개발중에 있다. |
* Deep Learning Usage (딥러닝 동향)
- Google AI System
- 음성인식, 영상인식, 번역, 유튜브 동영상 추천, 물체 자동 태깅
- Microsoft Adam Project
- Cortana 연동 이미지 인식, Cortana와 Skype를 연동한 동시통역
- Facebook Deep Face
- 얼굴인식 알고리즘
- Facebook Translator
- 인공지능 번역 도구
- Twitter and MADBITS
- 사진 분석
- Deep Mind AlphaGo
- 인공지능 바둑 기사
- XAI (eXplainable AI; 설명가능 인공지능)
- 인식 결과에 대한 설명이 가능한 인공지능 모델
* Lecture: Introduction to Deep Learning (URL)
Deep Learning Model History (딥러닝 모델의 변천)
- Neocognitron (네오코그니트론, Early 1980's)
- 1980년 초반 일본의 후쿠시마 박사가 개발한 7개의 층을 가진 딥러닝 모델의 시초이다.
- 매우 정교하게 설계되었으나, 학습 시간이 너무 오래 걸려 실용화되지 못했다.
- Multilayer Perceptron Model (다층 퍼셉트론 모델; 1984) (URL)
- 미국 PDP Group이 제안한 신경망 모델이다.
- 학습 시간이 오래 걸리는 등의 문제로 2000년까지 침체기를 겪는 동안,
SVM과 같은 ML기법이 대체제로 사용되었다.
- Large Scale Deep Learning Network Models (대규모 딥러닝 네트워크 모델들; 2000)
- CPU와 GPU의 Performance가 비약적으로 개선되자 대규모의 딥러닝 네트워크의 구성이 가능해졌고,
인터넷의 발달로 데이터를 수급하기에 용이해져 대규모 데이터를 통한 딥러닝 학습이 가능해졌다.
DNN Models (심층 신경망 모델)
- Convolutional Neural Network (CNN; 컨볼루션 신경망, 합성곱 신경망)
- 영상인식, 컴퓨터 비전
- Recurrent Neural Network (RNN; 순환 신경망)
- 음성인식, 작사·작곡, 텍스트 처리, 주가 예측 (Time Series Data Processing)
- Restricted Boltzmann Machine (RBM; 제한된 볼츠만 머신)
- 분류, 선형 회귀 분석, 필터링, 특징값 학습, 차원 축소
- Deep Belief Network (DBN; 심층 신뢰 신경망)
- 글자(필기체)인식, 음성인식
- Generative Adversarial Network (GAN; 생성적 적대 신경망)
- 영상·음성의 생성 및 복원
Convolutional Neural Network (CNN; 컨볼루션 신경망, 합성곱 신경망)
- 합성곱 연산을 사용하여 3차원 데이터의 공간적 정보를 유지한 채 다음 Layer로 전송한다.
- 동물의 시신경 구조와 유사하게 뉴런 사이의 연결 패턴을 형성한다.
- Feature Map을 이용하여 학습한다.
- Goolge Deep Mind의 AlphaGo에도 CNN이 사용되었다.
Recurrent Neural Network (RNN; 순환 신경망)
- 순차적 정보가 담긴 데이터에서 규칙적 패턴을 인식하고,
추상화된 정보를 추출할 수 있는 모델이다.
- 노드간의 연결이 순환적 구조를 가지고 있다.
Restricted Boltzmann Machine (RBM; 제한된 볼츠만 머신)
- 비지도 학습에 활용되는 모델로, 입력 집합에 대한 확률 분포를 학습할 수 있는 모델이다.
- 확률은 에너지 함수 형태로 표현되며, 에너지가 최소화되는 방향을 선택한다.
- RBM은 자체적으로 사용할 수 있고, Deep Belief Network(DBN)의 구성 요소로 사용되기도 한다.
- 방향이 없는 Visible Layer와 Hidden Layer 두 개층으로 구성된다.
Deep Belief Network (DBN; 심층 신뢰 신경망)
- 다층의 Latent Variable(잠재 변수)로 표현되는 Hidden Layer로 구성되는 모델이다.
- 사전에 훈련된 RBM을 여러 층으로 쌓아 올린 구조이다.
- Label이 없는 데이터들에 대한 비지도 학습이 가능하다.
- 부분적인 이미지에서 전체를 연상하는 일반화 과정을 실현할 수 있다.
Generative Adversarial Network (GAN; 생성적 적대 신경망)
- 제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경망으로 구현된다.
- 진짜 같은 가짜를 생성하는 모델과 이에 대한 진위를 판별하는 모델이 서로 경쟁하며
진짜 같은 가짜를 생성한다.
Hardware for Deep Learning (딥러닝을 위한 하드웨어)
- 딥러닝 알고리즘은 복잡한 신경망에 기반하여 수천 개 이상의 연산을 동시에 처리할 수 있어야 하기 때문에
이를 원활히 처리할 수 있는 하드웨어가 요구된다.
Neural Processing Unit (NPU; 신경망 처리장치)
- 퀄컴과 삼성전자 등에서 개발한, 딥러닝 학습 알고리즘을 병렬로 처리할 수 있는 하드웨어이다.
- 데이터를 기반으로 스스로 학습이 가능하다.
Software for Deep Learning (딥러닝을 위한 소프트웨어)
Google TenserFlow Library (구글 텐서플로)
- 다양한 작업에 대해 Dataflow Graph를 사용하여 머신러닝과 딥러닝 프로그램을 쉽게 구현할 수 있도록
다양한 기능을 제공하는 오픈소스 라이브러리이다.
- C++로 구현되어 있으며, Python, Java 등의 언어를 지원한다.
- 입력층, 은닉층, 출력층으로 구성된다.
- 각 층의 벡터와 은닉층의 개수를 손쉽게 정할 수 있고, 임계 함수나 학습률도 즉석에서 쉽게 수정할 수 있다.
- 텐서플로에서 계싼은 Dataflow Graph로 이루어지는데,
텐서 형태의 데이터들이 딥러닝 모델을 구성하는 연산들의 그래프를 따라 흐르면서 연산이 이루어지게 된다.
(텐서란, 다양한 차원의 배열로 나타나는 데이터를 의미한다.)
Facebook PyTorch Library (파이토치)
- 자연어 처리와 같은 애플리케이션에 사용되는 오픈소스 머신러닝 라이브러리이다.
- 간결하고 구현이 빠르며 디버깅이 쉽고, 텐서플로보다 훨씬 배우기 쉽다.
- 계산 그래프가 입력 데이터에 따라 동적으로 유연하게 변한다.
- 실시간으로 결과값을 시각화해준다.
- Python의 다른 라이브러리들과 높은 호환성을 가진다.
- 모델 그래프를 생성할 때 데이터에 따라 유연한 조절이 가능하다.
- 학습과 추론 속도가 빠르다.
- 텐서플로에 비해 사용자가 훨씬 적어 Example이 적다.
Microsoft Cognitive Toolkit (CNTK)
- 텐서플로와 같이, 그래프 구조를 사용하여 Dataflow를 기술하여 딥러닝 신경망을 구성한다.
Amazon Apache MXNet
- AWS에서 채택한 오픈소스 고급 딥러닝 프레임워크이다.
Reference: 처음 만나는 인공지능
(김대수 저, 생능출판사, 2020)
Reference: 인공지능 이론 및 실제
(양기철, 김명철 저; 홍릉과학출판사, 2018)