Stack Building

신경망 기초 본문

딥러닝

신경망 기초

S00ahKim 2019. 8. 27. 13:57

딥러닝이란 머신러닝의 하위 개념 중 하나로, 사람을 모방(신경망)한 알고리즘 또는 엄청난 연산량을 수행하는 알고리즘을 말한다. 비전, 오디오 등에서 주목할 만한 성과를 내고 있다. 증기 기관과 역학 이론 등에서 알 수 있다시피 많은 경우 현상(응용된 발명품)이 먼저 등장하고 이론이 정리되었다. 마찬가지로 현재 딥러닝은 도움이 되는 결과는 내놓고 있지만 정확한 과정이나 이유는 밝혀지지 않고 있다.

 

딥러닝은 머신 러닝의 특정한 한 분야로서 연속된 layer에서 점진적으로 의미 있는 표현을 배우는 데 강점이 있으며, 데이터로부터 표현을 학습하는 새로운 방식입니다. 딥러닝 deep이란 단어가 어떤 깊은 통찰을 얻을 수 있다는 것을 의미하지는 않습니다. 그냥 연속된 층으로 표현을 학습한다는 개념을 나타냅니다. 데이터로부터 모델을 만드는 데 얼마나 많은 층을 사용했는지가 그 모델의 깊이가 됩니다.

출처: 딥러닝이란 무엇인가

 

신경망(neural network)을 간단하게 표현하면 겹겹이 Linear+Activation이 쌓여 있고, 마지막에는 Linear와 분류기가 결합한 모습이라고 할 수 있겠다. 입력값의 X 변수 갯수만큼 가중치가 생성되며, WX+b=H의 형태를 띤다는 점에서 회귀식과 유사하다.

 

Activation(활성) 함수란 입력을 받아 활성, 비활성을 결정한다. 활성 함수에는 선형함수, 비선형함수 모두 있지만, 신경망에서는 비선형함수를 사용한다. 선형함수를 사용하면 층을 쌓는 의미가 없어지기 때문이다. 이진 분류일 때에는 시그모이드, ReLu와 그 변형을 사용할 수 있고, 3개 이상일 때에는 소프트맥스와 그 변형을 주로 사용하며, 목표 정확도와 학습 시간 등을 고려하여 선택하되 혼합 사용할 수 있다. 텍스트에는 tanh 함수, 이미지 등에 흔하게 사용되는 것은 ReLu다.

 

단층신경망에서는 Linear 식이 0보다 작으면 0으로, 0보다 크면 1로 분류하는 식으로 AND, NAND(Not And), OR 문제를 풀 수 있었다. 하지만 XOR(둘 중 하나가 1이면 1)은 어떤 선형으로도 풀 수 없었다. 그래서 다층신경망이 등장했다.

 

다층신경망은 크게 Forward Propagation(순전파)과 Backward Propagation(역전파)으로 나누어 볼 수 있다. 순전파 과정에서 어떤 가중치가 주어지느냐에 따라 최종 값이 바뀌기 때문에 (Softmax는 이전 값에 비례함) 다층신경망의 목표는 최적의 가중치를 찾아가는 것이라고 볼 수 있다. 다층신경망은 출력 패턴과 목표 출력 간의 오차가 줄어들도록 가중치를 조정해간다.

 

H=W1X1 + b1

A=ReLu(H)

S=W2A + b2

P=Softmax(S)

L=-LogLikelihood(P)

 

순전파 과정을 간단하게 요약하면 위와 같다. 마지막에 음의 로그우도를 쓰는 이유는 여기(8번) 참고. 이러한 과정을 통해 특징을 뽑아내며, 수많은 변수 중 어떤 부분에 집중할지를 판단해 나간다.

 

그렇다면 좋은 가중치는 어떻게 찾을 수 있을까? 기존 가중치를 이용하여 구한 현재 확률 p를 이용하여 현재의 Loss를 구할 수 있는데 이 Loss를 줄이는 것이 방법이 될 수 있다. Loss를 최소화하는 데에는 Gradient Descent 알고리즘이 많이 쓰인다. 가중치에 랜덤한 숫자로 초기값을 부여했다가 Loss를 최소화하는 방향으로 가중치를 업데이트한다. (참고: Chain Rule)

 

머신러닝에서는 훈련을 통해 목표를 잘 달성했는지를 나타내는 값을 잡고, 그 값을 기준으로 훈련을 시행합니다. 하나의 실험이더라도 이런 값은 여러 가지가 있을 수 있습니다. 이 중 학습을 통해 직접적으로 줄이고자 하는 값을 손실(loss), 에러(error), 혹은 코스트(cost)라고 합니다. 한편, 학습을 통해 목표를 얼마나 잘(못) 달성했는지를 나타내는 값을 척도(metric)라고 합니다. 머신러닝의 최종 목표는 척도로 달성률을 표시하지만, 직접 척도를 낮추도록 훈련하는 것은 여러 가지 이유로 힘들기 때문에 손실을 줄이는 방향으로 훈련합니다. 손실과 에러 모두 손실 함수(loss function), 에러 함수(error function)이라고 이야기하기도 합니다.

출처: 딥러닝 파트 1

 

 

참고

활성함수 소개 및 비교

다층신경망 개념

 

Comments