이미지 출처 : http://study.zum.com/book/11779
앞서 Linear Regression과 Classification을 이용한 Logistic Regression을 통해 XOR 테이블을 구현을 하려했으나 불가능 했기에 NAND, OR, AND의 Logistic Regression의 조합을 통해서 XOR을 구현했었습니다.
이 과정은 인간의 신경망의 동작원리와 비슷하게 동작합니다.
※ 활성화 함수 : sigmoid, ReLU, Leaky ReLU...
입력 신호에 가중치를 곱하고 적당한 바이어스를 더하는 Linear Regression 과정과 그 값을 활성화 함수로 통해 다음으로 전달하는 Classification의 Multi-Variable Logistic Regression을 통해 뉴런의 동작원리를 머신러닝에 적용하여 인간의 신경망 (Neural Network)을 머신러닝으로 인공신경망 (Artificial Nerual Network)의 구현이 가능합니다.
딥러닝이란 Logistic Regression을 나타내는 노드가 서로 연결되는 신경망 구조를 바탕으로 입력층(Input Layer), 1개 이상의 은닉층(Hidden Layer), 출력층(Output Layer)을 구축하고, 출력층에서의 오차를 기반으로 각 노드의 가중치를 학습하는 머신러닝의 한 분야입니다.
은닉층을 깊게(Deep)g할수록 정확도가 높아진다고 해서 딥(Deep)러닝이라는 용어가 사용되고 있습니다.
각 가중치 값들은 층과 층사이의 모든 노드에 초기화되어 있으며, 다음 층으로 전파(Propagation)될 때마다 가중치를 업데이트하여 최종적으로 오차가 최소인 최적의 값을 갖게 됩니다.
피드포워드 (Feed Forward)
피드포워드(Feed Foward)란 입력 층으로 데이터가 입력되고, 1개 이상으로 구성되는 은닉층을 거쳐, 마지막인 출력층으로 출력 값을 내보내는 과정입니다.
※ 딥러닝 입력층에서는 활성화 함수를 적용하지 않고, 입력 값 그대로 출력하는 것이 관례화 되어 있습니다.
(a1 = x1, a2 = x2)
은닉층의 선형회귀 값은 위의 식처럼 이전층의 출력 값과 은닉충의 가중치와의 곱과 바이어스와의 합을 통해서 나타내게됩니다. 또한, 모든 출력 값들은 sigmoid를 거치기 때문에 0과 1사이의 값을 나타내게 됩니다.
딥러닝을 이용하여 오차함수 값이 최소가 되도록 가중치와 바이어스를 업데이트하는 Training 과정입니다.
입력층, 은닉층, 출력층을 가정한 후에, training data를 입력하여 feed forward를 진행하여 출력 값 y를 얻어냅니다.
training data의 정답값(t)와 y를 비교하여 손실함수 값을 계산하고 손실함수 값이 최소가 아니라면 가중치 W와 바이어스 b를 업데이트하여 손실함수의 최솟값을 찾을 때까지 해당 과정의 반복을 수행합니다.
출처 : 유튜브 NeoWizard 채널 머신러닝/딥러닝 강의