한 때는 강력한 머신러닝 기술들이 개발되면서 인공 신경망 연구가 침체기에 들어서기도 했었다. 신경망을 훈련시키기 위한 데이터의 양이 늘어나고, 컴퓨터 하드웨어가 크게 발전함에 따라 대규모 신경망을 훈련할 수 있는 여건이 점차 만들어졌다.
생물학적 뉴런은 단순하게 동작하지만, 보통은 수십억 개로 구성된 거대한 네트워크로 조직되며, 이는 보통 다른 뉴런 네트워크 수천 개와도 연결된다. 매컬러와 피츠가 이러한 생물학적 뉴런에서 착안하여 단순한 신경망 모델을 제안했는데, 이것이 인공 뉴런이 된다.
Perceptron은 층이 하나뿐인 TLU(threshold logic unit)으로 구성된다. 각 TLU는 모든 입력에 연결되어 있다. 한 층에 있는 모든 뉴런이 이전 층의 모든 뉴런과 연결되어 있을 때 이를 'Fully connected layer' 혹은 'dense layer'라고 부른다.
퍼셉트론의 입력층은 모두 입력 뉴런으로 구성되는데, 보통 이곳에 편향 특성(bias)이 더해진다.
Perceptron의 훈련 알고리즘은 Hebb's rule에서 영감을 많이 받았는데, 이 규칙은 서로 활성화되는 세포가 서로 연결된다, 즉, 두 뉴런이 동시에 활성화될 때마다 이들 사이의 연결 가중치가 증가하는 경향이 있다는 것이라 말한다.
퍼셉트론을 여러 개 쌓아올린 인공 신경망을 다층 퍼셉트론(MLP)라고 한다.
다층 퍼셉트론은 input layer, hidden layer, output layer로 구성된다.
hidden layer를 여러 개 쌓아 올린 인공 신경망을 심층 신경망(DNN)이라고 한다. 딥러닝은 심층 신경망을 연구하는 분야이며 조금 더 일반적으로는 연산이 연속하여 길게 연결된 모델을 연구한다.
Backpropagation은 다층 퍼셉트론을 훈련하는 알고리즘이다. 이 알고리즘은 효율적인 기법으로 gradient를 자동으로 계산하는 경사 하강법이다. 네트워크를 두 번(정방향1, 역방향1) 통과하는 것만으로 Backpropagation은 모든 모델 파라미터에 대한 네트워크 오차의 gradient를 구할 수 있다. gradient를 구하고 나면 평범한 경사 하강법을 수행한다.
정리하면,
- 각 훈련 샘플에 대해 역전파 알고리즘이 먼저 예측을 만들고(정방향 계산) 오차를 측정한다.
- 역방향으로 각 층을 거치면서 각 연결이 오차에 기여한 정도를 측정한다.(역방향 계산)
- 이 오차가 감소하도록 가중치를 조정한다.(경사 하강법 단계)
backpropagation을 잘 작동시키기 위해 다층 퍼셉트론 구조에 중요한 변화를 주었는데, 활성화 함수로 threshold function 대신 logistic(sigmoid)함수를 사용했다. 다른 활성화 함수도 사용될 수 있는데, 대표적으로는 hyperbolic tangent function과 ReLU 함수가 있다.
이러한 다층 퍼셉트론은 회귀 작업과 분류 작업 등 다양하게 활용될 수 있다.