
딥러닝
- 딥러닝은 인공신경망에 기반을 둔 머신러닝의 한 종류로 연속된 층(Layer)에서 점진적으로 의미있는 표현을 배우는데 강점이 있으며, 데이터로부터 표현을 학습하는 새로운 방식이다. 인공신경망을 여러 겹 쌓은 것이 곧 딥러닝으로 얼마나 많은 층을 사용했는지가 그 모델의 깊이가 된다.
- 인공신경망의 기본 구성요소는 다른 머신러닝 알고리즘이 발전되어서 만들어진 것인데, 머신러닝이 정형 데이터에 적합한데 비해 딥러닝에 잘 맞는 데이터는 비정형 데이터로 보통 ‘인지’와 관련된 문제를 잘 해결한다고 알려져 있다.
- 딥러닝은 최근 음성인식과 이미지 인식, 자연어처리,헬스케어 등의 전반적인 분야에서 활용되고 있다. 딥러닝 알고리즘으로 학습된 표현은 몇채층올 이루어진 네트워크가 이미지 안의 숫자를 인식하기 위해 Layer를 거쳐 이미지를 변환하여 인식하고 최종적으로 정보를 출력하는 것을 확인할 수 있다.
- 딥러닝 알고리즘은 가장 간단한 인공신경망부터 시작되었지만, 크게 인공신경망의 한계를 극복하기 위해 심층 신경망 기법이 제안되었다. 대표적인 심층 신경망의 방법론은 심층 신경망(DNN, Deep Neural Network), 합성곱 신경망(CNN, Convolution Neural Network),순환 신경망(RNN, Recurrent Neural Network), 생성적 적대 신경망 (GAN,Generative Adversarial Networks), (RBM,Restricted Boltzmann Machine), (DBN,Deep Belief Network) 등이 있다.
인공신경망(ANN)
- Artificial Neural Network
- 인간 뇌의 피질 영역(cortical area)내에는 수많은 뉴런(Neuron)들이 시냅스(Synapse)로 층층이 연결되어 존재하는데, 그것을 신경망이라고 부른다. 인간의 뇌는 100억 개의 뉴런과 6조 개의 시냅스의 결합체이다.
- 인공신경망(artificial neural network)은 인간 뇌의 신경망에 착안하여 구현된 컴퓨팅 시스템의 총칭이다. 하드웨어로 구현될 수도 있으나 주로 컴퓨터 소프트웨어로 구현된다.
심층 신경망(DNN)
- Deep Neural Network
- 심층 신경망(DNN, Deep Neural Network)은 입력층(input layer)과 출력층(out layer) 사이에 다중의 은닉층(hidden layer)을 포함하는 인공신경망(ANN)을 뜻한다.
- 심충 신경망은 다중의 은닉층을 가지고 있기 때문에 데이터의 잠재적인 구조를 파악할 수 있으며, 비선형적 관계를 학습할 수 있다.
- 하지만 학습을 위해 수많은 연산이 필요하고, 과한 학습으로 인해 실제 데이터에 오히려 오차가 증가하는 과적합(Overfitting) 혹은 높은 시간 복잡도(High Time Complexity) 등의 문제가 발생할 수 있다. 2000년대에 들어서면서 드롭아웃(drop-out), ReLU, 배치 정규화 등의 기법을 적용함으로써 이러한 문제를 해결하여 딥러닝의 핵심 모델로 활용되고 있다.
- 의료분야에서 암 진단 시스템 구축 등에 활용되고, 재무분야에서는 주가지수예측, 기업신용평가, 환율예측 등에 활용되고 있다.
- 알고리즘에 따른 심층 신경망의 종류로는 이미지 데이터를 주로 처리하는 CNN(Convolution Neural Network), 시계열 데이터를 처리하는 RNN(Recurrent Neural Network), 비지도형 기계학습을 기반으로 하는 DBN(Deep Belief Network), 심층 오토인코더(deep autoencoder) 등이 있다.
합성곱 신경망(CNN)
- Convolution Neural Network
- 사람의 시각인지 과정을 모방해서 인공신경망에 필터링 기법을 적용한 것으로 이미지와 같은 2차원 데이터를 분석하는 심층 신경망 방법론이다.
- CNN은 필터링을 통해 입력된 이미지로부터 특징을 추출한 뒤 신경망에서 분류 작업을 수행한다. 예를 들어 어떤 이미지를 CNN에 입력시켜주면 그 이미지가 개인지 고양이인지 소인지에 해당하는 이미지 분류를 수행하도록 학습시킬 수 있다.
- CNN은 영상 인식, 영상 분류, 이미지 인식, 자연어 처리 등에 주로 사용되며, 자율주행자동차, 이미지, 텍스트, 사운드,비디오 인식 및 식별 등의 연상, 그림 인식 분야 등에서 활용되고 있다.
순환 신경망(RNN)
- Recurrent Neural Network
- 시계열 데이터(Sequential data, 음성, 자연어,센서, 주가 데이터 등)를 처리하기 위한 모델로 순차적이며 반복적인 데이터를 학습하는데 특화된 알고리즘이다.
- 내부가 순환구조로 이루어져 있는 인공신경망이다. 즉 입력층,은닉층,출력층의 3단계 구조로 이루어져 있으나 가장 큰 특징은 은닉층이 이전 데이터를 참조하도록 서로 연결되어 있다는 것이다.
- 순환구조를 통해 과거에 학습했던 내용을 현재의 학습에 반영한다. 또한 신경망 내부에 상태를 저장아혀 시퀀스(Sequence)형태의 데이터 입력을 처리하여 앞으로의 데이터를 예측한다.
- 동일한 weight와 bias가 모든 입력 값에 대해서 동일하게 사용되며, RNN 네트워크를 재귀적으로 사용하므로 길이에 대한 제한이 없다.
- 병렬처리가 불가능하고 순서대로 처리해야 하므로 속도가 느리다.
- RNN은 보통 음성인식이나 텍스트의 앞 뒤 단어를 파악하는 분석과 같이 과거 데이터를 고려하여 현재 입력 데이터를 순차적으로 처리하는 분석에 주로 사용되고 자동 번역, 단어 의미 판단, 이미지 캡션 생성 등의 자연어 처리 분야 등에서 활용되고 있다.
- 선형 함수가 아닌 비선형 함수를 활성함수로 쓰는 것과 비슷한 이유로 초기값에 따라서 과거 데이터를 계속 곱할수록 작아지는 문제가 발생한다.
- 매 시점마다 심층신경망이 연결되어 있을 경우, 오랜 전의 데이터에 대한 기울기 값이 소실되는 문제가 발생할 수 있어 학습이 어려워진다.
- 이를 해결하기 위한 모델로는 LSTM(Long Short - Term Memory, 장단기 메모리) 방식의 순환신경망이 있다.
LSTM
- Long Short-Term Memory
- RNN의 문제점은 입력된 데이터와 참고해야 할 데이터의 위치 차이가 커지 때 문맥을 연결하기 힘들어진다는 것이었다. 이러한 장기 의존성 문제(은닉층의 과거 정보가 마지막까지 전달되지 못하는 현상)를 보완할 수 있는 딥러닝 프레임워크가 LSTM이다.
- RNN은 단순히 이전 은닉층과 값과 현재 입력값에 각각 가중치를 곱하고 tahn 함수를 거쳐 얻은 출력값을 해당 순번의 은닉층 값으로 계산하는 과정을 반복한다. LSTM에서도 은닉층에서 출력층으로 넘어가는 연산은 RNN과 동일하다.
- 하지만 LSTM에서는 이전 단계의 정보를 메모리 셀(Memory Cell)에 저장하여, 현재 시점의 정보를 토대로 과거 내용을 얼마나 반영할지 결정하고 그 결과에 현재의 정보를 더해서 다음 시점으로 정보를 전달한다.
- LSTM은 RNN과 비교하여 긴 시퀀스의 입력을 처리하는데 탁월한 성능을 보인다.
- LSTM은 각각의 메모리와 결과값을 컨트롤 가능하다는 장점이 있고 메모리가 덮어씌어질 가능성과 연산속도가 느리다는 단점이 있다.