딥러닝은 러닝머신의 한 분야로 머신러닝의 하위집단에 속한다.
탄생배경: 과거에 선형회귀 논리회귀를 이용한 1차 함수로 모든 문제를 풀고자했지만 자연계에는 직선으로만 설명할 수 없는 문제들이 휠씬 많았다.
이런 복잡한 문제를 해결하기 위해 선형회귀를 여러번 반복했지만 선형이 비선형이 되는 것은 아니니, 선형 사이에 비선형의 무언가를 넣어야 한다 생긱헸고 아래같이 층(Layer)을 여러개 쌓게 되었다. 이 모델은 정말 잘 동작했고 이를 층을 깊게 쌓는다 하여 딥러닝이라 불렀다.
1958년 erceptron(퍼셉트론) 등장으로 스스로 생각하는 기꼐를 만들 수 있다는 기사가 나갔지만, 그 당시에는 Perceptron을 여러개 붙인 Multilayer Perceptrons (MLP)라는 개념을 도입해서 문제를 푸는 것에 한계를 맞이했고 10년~20년 정도 침채기를 가졌다.
1974년 발표된 Paul Werbos(폴)박사 논문으로 Backpropagation (역전파) 딥러닝의 침체기는 끝이났고 (역전파: 출력에서 Error(오차)를 발견하여 뒤에서 앞으로 점차 조절하는 방법)
1986년 Hinton 교수가 똑같은 방법을 독자적으로 발표하면서 알려지게 됐다.
Layer(층) 쌓기
딥러닝 네트워크 구조는 크게 3가지로 이루어진다.
풀어야하는 문제에 따라 입력층과 출력층의 모양은 정해져 있고, 따라서 우리가 신경써야할 부분은 은닉이다. 은닉층은 완전연결 계층 (Fully connected layer = Dense layer)으로 이루어져 있다.
기본적인 뉴럴 네트워크(Deep neural networks)에서는 보통 은닉층에 중간 부분을 넓게 만드는 경우가 많다. 예를 들면 보편적으로 아래와 같이 노드의 개수가 점점 늘어나다가 줄어드는 방식으로 구성된다
활성화 함수를 어디다가 넣어야하는지도 중요! 보편적인 경우 모든 은닉층 바로 뒤에 위치한다.
네트워크의 Width(너비)와 Depth(깊이)
입력층 : 4
1) 은닉층 : 8
2) 은닉층 : 4
출력층 : 1
이 베이스라인 모델을 가지고 가장 간단하게 성능을 테스트할 수 있는 방법이 바로 [모델의 너비와 깊이를 가지고 테스트]하는 것이다.
이는 과접합과 과소적합을 피하기 위한 필수 노가다이다.
딥러닝에는 아래같이 많은 개념과 기법이 있다