1. Cost (loss)
foward pass의 경우 위에 그림과 같이, 가중치와 bias을 모두 더해 activation function을 이용하여 output을 산출한다. 하지만 더 정확한 예측을 위해서는 가중치와 bias, 즉 파라미터 값을 업데이트를 진행해야한다. 그러기 위해서 가장 좋은 방법은 무엇일까? 바로 실제 정답인 (target) y와 예측값 output $\hat{y}$ 와의 차이를 비교하는 것이다.
즉, 값의 차이인 오차가 작아질수록 성능이 좋아진다는 의미이다.
하나의 데이터에 대해서 cost를 구할 때는 $(\hat{y}-y)^2$ 으로 구하게 된다. 딥러닝의 경우 모든 데이터의 오차 값을 더한 후 평균을 산출하게 되며 이것을 mean squared error라고 부른다.
참고로 cost, loss, error 모두 같은 용어이다.
1-1 Total cost
한개의 데이터 보다는 모든 데이터를 이용한 cost를 계산하게 되면 파라미터 값이 더욱더 정교해 질 것이다. 따라서 모든 cost 값이 더하게 되는데, 그것을 total cost라 한다.
Total cost를 식으로 표현하자면, 다음과 같다.
$$ C(\theta)=\sum_{n=1}^N L^n(\theta) $$
여기서 N은 전체 데이터 수를 의미하며, $L$은 cost 값을 의미한다. 따라서 모든 데이터의 파라미터를 이용한 cost 값의 합계를 의미한다.
2. Gradient Descent(경사 하강법)
오차가 작을 수록 성능이 향상된다는 사실을 알았다. Gradient Descent(경사 하강법)은 이러한 오차를 최소화 하기 위한 학습 방법 중 하나이다. 그러면 Gradient Descent의 과정을 한번 살펴보겠다.
예를 들어 $w_1$과 $w_2$ 파라미터 값이 존재한다고 가정하자. 이러한 파라미터들을 이용하여, 오차(cost)를 구할 수 있었다. 그중에서도 최소한의 오차값은 그림과 같이 미분을 이용한 함수의 극소값 임을 알 수가 있다. 하지만 문제는 $w_1$과 $w_2$의 오차는 알 수 있지만, cost surface 자체를 알 수가 없다. 따라서 정확한 값은 구할 수 없지만, 최소가 되는 방향은 알 수가 있다.
따라서 Gradient Descent(경사 하강법)은 오차(cost)가 최소가 되는 방향으로 근접하게 다가가기 위하여 반복적으로 진행하게 된다.
따라서 다음과 같이 식으로 표현된다. 딥러닝의 경우 벡터를 주로 이용하기 때문에 편미분을 이용해서 구할 수가 있다.
그러나 위의 식의 경우 값이 큰쪽인 방향으로 가는 것을 나타내기 때문에 음수를 이용하여, 값이 감소하는 방향으로 다음과 같이 표현할 수 있다.
$$ -\Delta_{\theta}C(\theta^t) $$
2-1 Learning rate(학습률)
Gradient Descent(경사 하강법)은 기울기에 학습률 또는 보폭이라고 불리는 스칼라를 곱하게 된다. 기호로는 $\eta$ 로 쓰인다. Learning rate(학습률)은 최소값으로 학습하기 위해 효율적으로 도달할 수 있게 해주는 것이다. 비유적으로 표현하자면, 보폭을 조절하는 것이다.
$$ \theta^{t+1}=\theta^t-\eta\Delta_{\theta}C(\theta^t) $$
Learning rate(학습률)이 과도하게 높으면, 무질서하게 움직이게 되고, 너무 작은 경우에는 학습시간이 오래 걸려 최소값에 도달하지 못하게 된다. 따라서 적절한 Learning rate(학습률)을 구하는 것이 중요하다.
참고) https://www.youtube.com/watch?v=rPRzmPqclXA&t=598s
'DATA > 딥러닝' 카테고리의 다른 글
[딥러닝] - 1. Deep Neural Network - Perceptron (2) | 2023.10.11 |
---|