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

최종 수정일: 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,471회댓글 0개
  • 작성자 사진JC.kim

앞에서 머신러닝의 세가지 유형에 대해 살펴 보았다면, 이번에는 데이터가 머신러닝에 의해 어떻게 처리되는지, 머신러닝의 처리과정에 대해 본다. 아래의 그림을 글로 간단하게 정리해보았다.



1.전처리 과정 (Preprocessing)

먼저 특정 형식으로 지정되어 있지 않거나 분류되지 않은 데이터들을 동일한 스케일의 피쳐(단위)로 만드는 작업이 이루어진다. 이 과정에서 주로 0과 1사이의 표준정규분포를 갖는 값으로 변환하는 방식이 자주 이용된다. (*피쳐 feature : 여러개의 행들로 이루어 져있는 측정값.)

그 다음 불필요한 feature들을 없애기 위해 데이터 압축을 위한 차원축소 작업을 진행한다. 이는 데이터의 각 부분을 명확하게 나눠주는 역할을 한다. 각 데이터들의 차원을 축소하면 작은 저장공간이 소요되고, 학습 알고리즘의 속도는 빨리 진행 될 수 있다.

그리고 설계된 머신러닝 알고리즘이 훈련데이터에 대해 성능을 높임과 동시에, 새로운 데이터도 잘 처리해야 하므로, 전처리 과정에서 훈련데이터와 테스트 데이터를 나눈다. 훈련데이터는 모델을 최적화 하기위해 계속 갱신되고 사용되는 반면, 테스트용 데이터는 최종 모델을 평가하기 위해 그대로 유지된다.


ex) Iris 꽃 데이터 분류에서 꽃잎 수, 색, 향, 꽃잎의 길이들이 유용한 피쳐가 될 수 있다.

여기서 꽃잎 크기를 피쳐로 정한다면, 여러 가지 데이터들을 군집화 시켜 꽃잎 크기 마다 그룹을 만들어 낼 것이다.



2. 학습 과정 (Learning)

그다음 전처리 단계에서 넘어온 훈련데이터가 설계된 학습 알고리즘에 의해 학습된다.


ex) 전처리 과정에서 분류된 Iris데이터가 넘어와 학습을 하게된다. 전처리과정에서 꽃잎 크기에 관한 피쳐가 만들어 졌다면, 각훈련데이터를 꽃잎크기에 따라 분류하여 처리하기 시작 할 것이다. 이 처리과정이 끝나면, 해당 꽃이 어느 꽃잎크기 그룹에 속하는지 판별이 나며, 이 과정으로 꽃잎의 크기에 따라 Iris 꽃을 분류할 수 있다.



3. 평가 과정 및 예측 (Evaluation and Prediction)

이 과정에선 학습알고리즘에 의해 학습된 최종데이터가 전처리과정에서 남겨졌던 테스트데이터에 의해 평가된다. 그리고 여기서 최종데이터의 피드백이 발생할 경우 레이블로 추가되어, 다시 전처리 과정의 테스트 데이터로 가게 된다. 평가를 받은 최종데이터는 그대로 처리되어 신규 데이터가 된다. 그리고 신규데이터의 출력 값이 새로운 예측레이블을 생성 하게 된다.


ex) Iris 꽃 데이터가 학습에 의해 분류된다. 그리고 이 학습 알고리즘의 성능을 향상시키기 위해 이전에 있던 테스트 데이터를 가져온다. 여기서 향상 시킬 피드백을 레이블에 추가한다. 최종 데이터는 나중에 새로운 데이터들이 분류될 때 또 다른 기준이 되기 위해, 예측값과 실측값을 계산하여 레이블에 추가된다.

조회수 616회댓글 0개
  • 작성자 사진JC.kim

최종 수정일: 2017년 12월 28일

머신러닝은 이전에 사람들이 직접 방대한 데이터를 처리하여 수동으로 그 데이터들의 규칙을 만들어 처리했던 반면, 인공지능은 데이터를 직접 탐색하여 스스로 데이터를 분류하고 처리 규칙을 만들어 차후 새로운 데이터들을 처리한다. 이런 인공지능의 핵심은 바로 머신러닝(Machine Learning ; 기계학습) 이라는 것인데, 이 머신 러닝에는 크게 3가지 유형이 있다. 강화학습, 지도학습, 비 지도학습. 이 세 유형들이 어떻게 정의되어있고, 어떻게 사용되는지 간단하게 정리해 보았다.



머신러닝의 세가지 유형


1. 지도학습

: 레이블이 있는(출력신호를 이미 알고 있는) 훈련 데이터로 모델을 학습하여 경험하지 못한 데이터나 미래 데이터에 관한 예측 제시한다. 사람이 정해놓은 레이블(기준)에 대해서만 학습한다.

ex) 스팸메일을 기존에 있는 문맥을 가지고 분류한다.


* 분류모델 (classification) : 과거 관측치에 기반하여 새로운 분류 레이블 (출력값)을 예측하는 것을 목표로 한다.

ex) 스팸메일과 비스팸메일을 구분한다.


* 다중 분류 분류모델 (multi class classification) : 모든 분류 레이블을 레이블 되지 않는 새로운 인스턴에 할당할수 있다.

ex) 여러 가지 알파벳으로 구성된 필기체를 수집하여 분류한다.


* 회귀 분석 (regression) : 연속형 결과를 예측할 때 사용한다. 종속변수와 독립변수 사이의 관계를 분석하기 위해 사용하는 모델이다. 2차원 데이터를 예를 들면, X에대해 y의 값을 모두 지정해 놓은 상태에서 학습을 진행한다. 그러면 학습이 진행되면서 데이터 회귀선이 그려지게 되는데, 그 회귀선의 패턴을 파악하는 것이 이 회귀 분석이다.

ex) 키의 분산이 시간이 지나도 커지지 않은 것을 생물학적 현상 설명 (갤턴) : 부모의 키가 자녀에게 유전되는 것이 아닌 인구의 평균방향으로 회귀되는 것을 발견했다.


*의사결정 나무 모델 (Decision Tree Model) : 조건에 따라 확률적으로 정해진 레이블에 분류가 된다. 각 변수에 따른 예측가능한 규칙이나 패턴들을 나뭇가지 형태로 표현했다




* 나이브베이즈모델 (Naive Bayes Model) :

조건부확률을 응용한 모델이다. 데이터 특징에 따른 확률들을 계산하여 분류한다. 모든 특성값은 서로 독립적임을 가정한다. 특성들 사이에 연관성은 없으며, 주로 텍스트 분류에 많이 사용된다.

ex) 스팸문자 분류


*서포트 벡터 머신 (Support Vector Machine) : 분류 및 회귀를 위한 비확률적 이진 선형 분류 모델이다. 다수의 데이터를 최적의 초평면을 찾아 다차원으로 표현, 분류된 데이터의 간격을 이용하여 초평면을 정의한다. 딥러닝 이전에 가장 많이 쓰인 기계학습 알고리즘이다.








아래 표 는 지도학습의 모델들의 장 단점에 대해 설명되어있다.





2. 비지도 학습

: 레이블이 없는 데이터, 구조를 모르는 데이터를 처리 할 때 사용한다. 오르지 데이터만 입력이 된다. 알려진 결과값이나 보상함수(피드백)의 도움없이 데이터의 구조를 탐색하여 의미 있는 정보를 만들 수 있다. 목표는 데이터들의 군집을 형성하고 분류하는데 목적이 있다.


* 군집분석 (clustering) : 어떤 군 (그룹)에 대한 사전 지식이 없이도 그룹 내 정보들을 군집(소그룹)으로 구조화 할 수 있게 해주는 데이터 분석기법. 그룹 내 소그룹을 구분 지을 수 있는 정의가 분석을 하는 동안 만들어진다. 정보를 구조화 시키고, 데이터 간에 의미있는 관계를 만드는데 아주 좋은 기법이다.

ex) 마케팅 프로그램 : 고객들의 관심(선호도)을 이용해 고객들이 각각 관심 있는 항목을 소규모로 묶어 구조화 시킬 수 있다. 고객 그룹 발견에 도움이 된다.


* 데이터 압축을 위한 차원 축소 : 고차원데이터들을 처리할 때, 데이터들의 잡음을 제거하기 위해 데이터 간의 관계정보를 보존(유지)한 채로 낮은 차원의 부분공간으로 압축 시킨다. 데이터의 세밀한 부분들이 제거 되므로 알고리즘의 예측 성능이 떨어진다.

ex) 시각화 데이터 처러 : 3D 시각 데이터를 산점도나, 히스토리 그램으로 가시화 시키기 위해 2D 시각 데이터로 압축 시킨다.


*K means 알고리즘 : 데이터를 K개의 군집으로 만든다. 군집간의 거리차이의 분산값을 최소화 하는 방향으로 동작된다. 초기 평균값을 데이터 중 무작위로 K개를 뽑아 무게중심을 최적화 하는 방향으로 분류한다. 주 용도는 주제별 분류, 네트워크 유해 트래픽 탐지, SNS 유사사용자 군집화, 유사고객집단추출 등이 있다.


* 밀도추정 (Density Estimation) : 데이터 분포로부터 데이터가 가지는 특징의 확률분포의 특성을 파악한다. 데이터와 변수와의 관계를 파악하기 위해 사용된다. 히스토그램이나 커널함수 밀도추정방법 등이 있다.







3. 강화 학습

: 환경과의 상호작용을 기반으로 하여 자신의 성능을 개선하는 시스템을 개발하는 것이 목표이다. 현재 상태에서 최적의 행동을 선택한다.

(환경의 현재 상태의 정보를 보상신호라고 생각한다면, 강화학습도 일종의 지도학습으로 생각 할 수 있음)

강화학습에서 피드백은 절대적인 레이블 값이 아니고 행위(현재 상태)를 보상함수로 잘 측정할 수 있는 기준이 된다.

ex) 체스 게임 : 현재의 상황에 따라 연속된 움직임을 결정하고 보상은 게임의 승패로 결정된다.


*Deep-Q Network (DQN) : 게임 알고리즘으로 개발된 이 방법은, Deep learning 과 Q-learning의 방식을 결합한 방법이다. 학습의 보상은 게임점수, 게임의 조작을 학습하여 점수를 향상시킨다. 게임의 규칙을 따로 부여하지 않고 자신이 스스로 높은 점수대를 유지하는 방법을 찾아간다. 특정 학습횟수를 초과하면, 점수를 높이 올릴수 있는전략이 형성된다.


*유전자 알고리즘 (Genetic Algorithm) : 우수한 객체가 좋은 결과라고 가정하여 진화를 하는 방식으로 세대가 지날 수록 우수한 결과를 낳은 객체를 다음세대로 계속 보낸다. 즉 우수한 점수,우수한 예측을 한 알고리즘을 다음세대로 계속 보내어 학습시키는 방법이다.

초기세대를 형성하고, 초기세대에 대한 적합도를 평가한다. 그리고 초기세대 교배 및 돌연변이를 통해 다음세대가 생성된다. 다음세대에 초기세대에서 우수했던 알고리즘을 보내어 적합도를 계속 평가하는 방식이다.




조회수 701회댓글 0개

bottom of page