안녕하세요 , 초등학생도 이해 할수 있도록 딥러닝에 대해 정리해 보았습니다.
딥러닝은 기계학습(Machine Learning)의 한분야 입니다. 기계학습은 데이터와 해답을 입력하면 이것을 바탕으로 규칙을 찾아냅니다. 찾아낸 규칙을 통해 새로운 데이터를 넣어 새로운 값을 예측하게 됩니다. 딥러닝은 이러한 규칙을 여러개의 층으로 쌓아 만든 것입니다.
딥러닝의 구조
Input - Hidden Layer - Output 의 기본구조를 가지며 층을 여러개로 할수 록 Hidden layer 의 층이 많아진다.
기본적으로 각각의 층은 선형 구조를 가지지고 가중치 * 입력 + bias 의 형태인 y = w*x + b 의 꼴을 취하게 된다.
아래는 y1 = x1*W1 + x2*W2+x3*W3 +b 의 형태로 사용됩니다.
가중치 합의 조합으로 새로운 특성이 만들어 지고 여러개의 새로운 층 (특성)을 구성해서 Output 값을 예측합니다.
딥러닝 Activation Function 사용 이유
딥러닝은 깊이 쌓을 수록 새로운 특성추출이 많아지기 때문에 정보량이 많아집니다.. 하지만 모든 층(레이어)가 선형변환이면 결국 합성합수곱 형태이기 때문에 하나의 선형변환이나 마찬가지입니다.. 즉 한 층의 신경망 구조나 동일하다는 말이 되버립니다.
그래서 비선형변환인 Activation 함수를 추가함으로써 이러한 한계를 극복할수 있습니다.
활성함수에는 가장 대표적인 Sigmoid 함수가 있고 tanh, ReLU , Leaky ReLU 등이 주로 사용됩니다. 이것들은 나중에 좀더 자세히 다루도록 하겠습니다.
가중치 행렬 정의 및 One Hot Encoding Vector
위에서 신경망은 wx +b 의 선형 형태를 띈다고 말씀드렸는데 , w의 조합을 가중치 행렬이라 합니다.
이때 아래와 같은 데이터가 있고 여기서 가중치 데이터를 인덱싱할때 집위치의 데이터를 서울 경기 제주도 순으로 0,1, 2 으로 인덱싱 해봅시다.
실제는 그렇지 않지만 컴퓨터가 볼때는 경기도 *2 = 제주도 가 되어 버릴수 있습니다. 이러한 현상은 Categorical value에서 많이 나타납니다. 이러한 잘못된 종속관계가 생기는것을 방지 하기 위해 One-Hot-Encoding Vector를 사용합니다.
딥러닝 학습 및 예측방법
가중치 합을 통해 예측된 결과 (y)와 실제정답(영어로는 Ground truth라 합니다.) 간에는 차이가 있습니다. 이 차이의 합을 Cost function 이라 하며 이 차이를 최소화 할 수록 정답에 가까워집니다.
이 기법을 영어로 Optimizer라 하며 여러 종류가 있습니다. (Gradient Desent , SGD, Adam , Momentum 등등)
Optimizer에 대해서는 다음에 좀더 자세히 이야기 해보고 오늘은 전체적인 흐름을 알아가는것에 집중하겠습니다.
즉 신경망의 학습은 모델의 가중치를 업데이트 하는것입니다. 이때 역전파알고리즘을 통해 딥러닝의 가중치 업데이트를 신속하게 할수 있습니다. 미분의 연쇄 법칙을 이용하며 , 각 노드별 미분값을 미리 알고 있어 곱하기만 하면 됩니다. 자세한 것은 나중에 다시 알아보도록 하고 가중치 업데이트에는 역전파를 이용한다라는것만 우선 알고 있으면 됩니다.
이로서 최소를 만족하는 w를 찾았다면 새로운 Input을 넣어 가중치와의 곱을 통해 나온 결과가 새로운 예측값이라 할수 있습니다.