본문 바로가기

학교 수업/전공 수업

[인공지능]딥러닝의 정의와 구조, 역사

안녕하세요 소프트웨어 공부하는 레오존입니다.

이번 포스팅에서는 딥러닝의 정의와 구조, 역사에 대해 정리해 보도록 하겠습니다.

 

 

 

딥러닝의 정의 

 

딥러닝을 간략하게 정의하자면 머신 러닝 알고리즘 중 심층 인공 신경망을 활용한 것들의 집합이라고 할 수 있습니다. 심층이라는 단어 때문에 deep이라는 단어가 들어가게 된 것입니다. 

처음 인공신경망을 구상했을 당시, 사람을 모델로 두고 뇌세포를 관찰한 후, 뉴런에 해당되는 노드들을 만들어놓고 선으로 연결해서 뉴런과 비슷한 형태의 인공 신경망을 모델링하였습니다.

실제 사람의 뇌에는 엄청나게 많은 뉴런이 존재하기 때문에 그 뉴런들 사이에 연결이 전부 이루어진다면 기하급수적으로 연결된 선이 많을 것입니다.

실제로  하나의 네트워크가 완성된다는 것은 각각의 연결된 연결선들에 숫자값들 할당을 해주어야 한다는 의미를 지닙니다. 이 숫자들을 할당을 하는 과정을 학습이라고 이야기합니다. 처음 뉴럴 네트워크를 고안했을 당시 할당해야 할 weight(가중치)의 숫자가 너무 많다 보니까 주어진 데이터만 가지고 이 기하급수적으로 늘어나는 weight들이 값들을 다 학습하는 것이 불가능했었습니다.

인풋 레이어(input layer)와 아웃풋레이어(output layer) 사이 중간 단계에 있는 것을 히든 레이어(hidden layer)라고 하는데, 이 hidden layer(히든 레이어)가 2개 이상인 네트워크를 deep neural network(딥 뉴럴 네트워크)라고 합니다. 참고로 심층과 관련해 hidden layer 몇 개부터 심층인지에 대한 명확한 정의는 없으나 통상 2개 이상부터 심층으로 간주하게 됩니다.

 

 

딥러닝에 대한 정확한 정의

딥러닝에 대한 매우 정확한 정의에 대해 알아보도록 하겠습니다. 딥러닝은 Machine learning 알고리즘 중 선형 또는 비선형 transform 함수로 구성된 processing layer를 다층으로 갖고 있는 deep graph를 사용하여 입력으로부터 고차원적인 추상화를 목적을 하는 것들의 집합이라고 정의할 수 있습니다.

뉴런과 같은 개념을 가진 노드들을 연결해 신경망을 구성하는데, 노드들 사이에 선으로 연결된 모델을 graph model이라고 합니다. 이러한 모델에는 인풋 노드들이 모여있는 레이어(층)가 있고, 아웃풋 노드들이 모여있는 레이어(층)가 존재할 수 있으며 input layer와 output layer 사이에 hidden layer가 존재하게  됩니다. 또한, 데이터의 이동방향에 따라서 여러 가지 종류의 graph로 분류될 수 있습니다. 예를 들어 directed graph model 같은 경우, 인풋에서 아웃풋 방향으로 한 방향으로 데이터가 전달되는 형태의 graph입니다.

어쨌든 이전단계에 있는 노드로부터 그다음 단계에 있는 노드로 정보가 전달이 될 때, 이전 노드들의 값들의 combination을 가지고서 그다음 노드들의 값을 결정하게 됩니다.

combination을 할 떄 인풋이 들어가고 아웃풋이 나왔으니까 일종의 함수라고 생각할 수 있는데, 그 함수가 linear function일 수도 있고 nonlinear function이 될 수도 있습니다. 그것을 transform function이라고 이야기를 하는데, 그런 함수에 의해서 계속해서 데이터들이 일종의 가공이 돼서 그다음 레이어로 전달전달 되어 최종적으로 아웃풋 결과를 만들어 내게 됩니다. 이렇게 여러 층의 layer을 가지고 있는 네트워크를 딥러닝 네트워크라고 할 수 있습니다.

 

 

 

딥러닝 구조

데이터가 어떠한 방향으로 이동하는지에 따라 네트워크의 구조를 나누게 됩니다. 

 

feed-forward : 순서대로 가는 경우, 초기 neurla nets의 구조는 feed forward였습니다. 초기 딥러닝 모델 중 CNN이 대표적인 feed-forward 구조입니다.

feed-back  : 거꾸로 오는 경우

bi-directional  : 양쪽 방향으로 왔다갔다 하는 경우

recurrent : 데이터가 가다가 순환하는 구조로 있는 네트워크, 순환 신경망 RNN의 방법 중 하나인 lstm 방법이 recuurent 구조입니다.

 

가장 많이 사용하는 구조는 recurrent 구조로 , 특히 시계열 데이터인 음성 데이터를 다룰 때 많이 사용합니다. 그다음 feed-forward 구조로 영상 쪽에서 많이 사용합니다.

 

 

딥러닝의 역사

 

1943년 McCulloch와 Pitt라는 사람이 Neural Nets를 제안했고,

1962년 Rosenblatt이 Perceptron을 제안했습니다.
1973년 Grossberg가 RNN이라는 모델을 제안했으며, 1979년 Fukushima에서 CNN이라는 모델을 제안했습니다.

RNN, CNN이 요즘 많이 사용하고 있는 딥러닝 기술인데, 요즘 많이 사용하고 있다는 것은 실제로 DEEP 한 구조를 만들고 학습을 시켜 사용을 할 수 있도록 만들었다는 의미입니다. RNN과 CNN 자체의 개념은 70년대 사람들이 이미 고안을 했던 굉장히 오래된 개념이었지만 1970년대 당시에는 구현을 하지 못했습니다.


Hinton에 의해 1999년 RBM이, 2006년 DBN이 개발되었습니다.

2012년 Alex 팀에 의해 AlexNet가 개발되었고, 이때부터 본격적으로 딥러닝이 발달하기 시작했습니다.

 

 

 

 

 

지금까지 딥러닝의 정의와 구조, 딥러닝의 역사에 대해 정리해 보았습니다.

감사합니다.