top of page
  • 작성자 사진JC.kim

[Outline] Deep learning (CNN, RNN)

최종 수정일: 2018년 1월 2일


Deep learning 은 토론토 대학의 힌튼교수에 의해 다시 주목 받고 있는 Machine Learning의 분야 중 하나이다. 이 Deep learning은 인공신경망 (Artificial Neural Network) 를 기초로 하고 있다. 이 인공신경망(ANN)은 사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘이다. Perceptron모델과 동일하게 특정 임계치 (threshold)를 넘어야 신경이 전달된다는 것을 Sigmoid function을 이용하여, weight를 업데이트 시켜서 각 Node의 최적의 weight를 찾는 방식으로 작동 된다.

이런 ANN은 여러 문제점을 가지고 있었는데, 먼저 학습과정에서 Parameter의 최적값을 찾기 어려운 문제가 있었다. Sigmoid 함수의 사용은 기울기 값(Gradient)에 의해 weight가 결정되었는데, 이런 gradient 값이 뒤로 가면 갈수록, 점점 작아져 0에 수렴하는 오류가 있었고, 부분적인 error (local minimum)를 최저 error로 인식하여 더이상 학습을 진행하지 않는 경우도 있다.

또 학습데이터에 따른 overfitting문제가 있었다. data가 많지 않은경우 학습데이터에만 특화되어 학습이 발생하여, 이전의 형태와 다른 데이터를 받았을때, 처리를 하지 못하는 단점이 있었다.

마지막으로 ANN은 학습 시간이 너무 느린 단점이 있었다. 은닉층 (hidden layer)가 증가될 수록 연산량이 급격히 증가하여, 하드웨어에 많은 부담이 되었다.


이러한 ANN의 문제점은 후에 많은 방법으로 개선되었다. overfitting과 local minima는 사전훈련(pre-training)을 통해 overfitting을 방지할 수 있는 initialize point 알고리즘이 개선 되었고, ReLU나 Drop-out 기법 등으로 local minima 현상도 해결 할 수 있었다.

느린 학습시간은 그래픽 카드의 발전으로 (GPU, CUDA) 학습시간이 빠르게 개선되었고, 부족한 data처리는 big data 처리를 이용하여 자연히 해결되었다.



Deep learning 과 DNN (Deep Neural Network)

이 ANN 기법의 여러문제가 해결되면서, 자연히 알고리즘 내 Hidden Layer (은닉층) 많이 늘릴 수 있었는데, 여기서 새로 나온 방법이 DNN (Deep Neural Network) 이다. DNN은 은닉층을 2개이상 지닌 학습 방법으로, 컴퓨터가 스스로 분류레이블을 만들어 내고, 공간을 왜곡하고, 데이터를 구분짓는 과정을 반복하여 최적의 구번선을 도출해낸다. 많은데이터와 반복학습을 필요로 하며, Pre-training 기법과 Back-propagation을 통해 현재 최적의 학습방법으로 사용되고 있다.

여러 고차원에서 데이터 분류가 가능해짐에 따라, DNN은 많은곳에 이용되기 시작했는데, 영상처리, 음성인식, 자연어 처리까지 DNN을 통해 학습할 수 있게 되었다. 대표적인 DNN 응용 알고리즘에는, CNN, RNN, LSTM, GRU 등이 있다. 아래에서 DNN의 여러가지 알고리즘에 대해 간단하게 설명되어 있다.



1. CNN (합성곱신경망 :Convolutional Neural Network)

CNN은 사람의 시신경 구조를 모방한 구조이다. 기존의 방식은 데이터에서 지식을 추출해 학습이 이루어졌으나, CNN은 데이터를 feature(특징, 차원)로 추출하여 이 feature들의 패턴을 파악하는 구조이다. 이 CNN알고리즘은 Convolution 과정과 Pooling 과정을 통해 진행된다. Convolution Layer 와 Pooling Layer를 복합적으로 구성하여 알고리즘을 만든다. 이 CNN의 활용용도는 보통 정보추출(Information Extraction), 문장분류(Sentence Classification), 얼굴인식(Face Recognition)에 사용된다.


* Convolution 과정

이 과정은 데이터의 특징을 추출하는 과정이다. 데이터에 각 성분의 인접 성분들을 조사해 특징을 파악한다. 그리고 파악한 특징을 한장으로 도출시키는 과정이다. 여기서 도출된 장을 Convolution layer이라고 부른다. 쉽게 표현하면, 이미지의 특정부분을 추상화 하여 특정 층으로 표현한다. 이 과정은 하나의 압축과정이라고 생각 할 수있다. Parameter의 갯수를 효과적으로 줄여준다.

Filter와 Activation Function으로 이루어 져 있으며, Filter는 특징이 데이터에 있는지 없는지 검출하는 함수이다. 만약 데이터가 있다면 1, 없다면 0으로 처리할 것이다. 그리고 Activation function은 feature의 유무를 수치화 하기위해 비선형 값으로 바꿔주는 함수이다. Filter의 과정을 통해1과0으로 분류된 데이터가 수치화 된다.



* Pooling 과정

이 과정은 Convolution 과정을 거친 layer의 사이즈를 줄여주는 과정이다. 단순히 데이터의 사이즈를 줄여주며, 노이즈를 상쇄시키고, 미세한 부분에서 일관적인 특징을 제공한다. Sub-sampling 이라고 부르는 이 과정은 Max-pooling, Average-pooling, L2-norm pooling 방법이 있다. 보통은 Convolution과정에서 만들어진 feature들의 가장 큰 값들만 가져와 사이즈를 줄인다. (Max-pooling)




2. RNN (순환신경망 ; Recurrent Neural Network)

RNN 알고리즘은 반복적이고 순차적인 데이터(Sequential data)학습에 특화된 인공신경망의 한 종류로써, 내부의 순환구조가 들어있는 특징이 있다. 순환구조를 이용하여, 과거의 학습을 Weight를 통해 현재 학습에 반영한다. 기존의 지속적이고 반복적이며, 순차적인 데이터학습의 한계를 해결하였다. 현재의 학습과 과거의 학습의 연결이 가능해 졌으며, 시간에 종속된다. 음성 Waveform을 파악하거나(Machine Translation) , 텍스트의 문장 앞 뒤성분을 파악할 때(Named Entity Recognition), 주로 사용된다. 이 RNN 단점은 처음시작한 Weight의 값이 점차 학습이 될 수록 상쇄 된다는 것이였는데, 이를 보완한 알고리즘이 LSIM(Long Short Term Memory Network) 알고리즘이다.


* LSTM

(Long Short Term Memory Network)

이 LSTM알고리즘은 Cell State라고 불리는 특징층을 하나 더 넣어 Weight를 계속 기억할 것인지 결정한다. Gradient Vanishing의 문제를 해결하였으다. 기존 RNN의 경우, 정보와 정보사이의 거리가 멀면, 초기의 Weight값이 유지되지 않아 학습능력이 저하된다. LSTM은 과거의 data를 계속해서 update 하므로, RNN보다 지속적이다. Cell state는 정보를 추가하거나 삭제하는 기능을 담당한다.

LSTM의 장점은 각각의 메모리 컨트롤이 가능하다는 점과 결과값이 컨트롤이 가능하다. 그러나 메모리가 덮어씌워질 가능성이 있고, 연산속도가 느리다는 단점을 가지고 있다.



*GRUs (Gated Recurrent Units)

이 알고리즘은 LSTM을 변형시킨 알고리즘으로, Gradient Vanishing의 문제를 해결하였다. LSTM은 초기의 weight가 계속 지속적으로 업데이트되었지만, GRUs는 Update Gate와 Reset Gate를 추가하여, 과거의 정보를 어떻게 반영할 것인지 결정한다. Update Gate는 과거의 상태를 반영하는 Gate이며, Reset Gate는 현시점 정보와 과거시점 정보의 반영 여부를 결정한다.

GRUs의 장점은 연산속도가 빠르며, 메모리가 LSTM처럼 덮여 씌여질 가능성이 없다. 그러나 메모리와 결과값의 컨트롤이 불가능하다는 단점을 가지고 있다.

조회수 2,477회댓글 0개

최근 게시물

전체 보기

bottom of page