Stats & AI tech blog - '일단 시도함'

[ML/DL] Loss function (손실함수) & Gradient Descent (경사하강법) 본문

Statistics & AI/Basic Concept

[ML/DL] Loss function (손실함수) & Gradient Descent (경사하강법)

justdoit ok? 2024. 4. 1. 13:42

 

1. 손실함수 (Loss function)

머신러닝에서 모델을 학습한다는 말은 예측값과 실제값의 오차를 최소화하는 모델 파라미터를 찾는 것이라고 할 수 있다.

 

여기서 말하는 오차(Error)손실(Loss) 또는 비용(Cost)이라고도 하고,

오차를 정의한 함수를 손실함수(Loss function) 또는 비용함수(Cost function)이라고 한다.

 

대표적인 손실함수로는 MSE, RMSE 등이 있는데 일반적인 선형 회귀의 성능 지표로 잘 알려져있다.

이진크로스엔트로피(binary cross entropy)도 분류 문제에서 일반적으로 사용되는 손실함수이고, 그 밖에도 오차를 정의하는 여러 함수들이 존재한다.

 

  • MSE, Mean Square Error
    $$\frac{1}{n}\sum^{n}_{i=1}(y_i=\hat{y_i})^2$$
  • RMSE, Root Mean Square Error
    $$\sqrt{\frac{1}{n}\sum^{n}_{i=1}(y_i=\hat{y_i})^2}$$
  • Binary Cross-entropy
    $$-\frac{1}{n}\sum^{n}_{i=1}(y_ilog\hat{y_i}+(1-y_i)log(1-\hat{y_i}))$$
  • Categorical Cross-entropy
    $$-\sum^{n}_{i=1}y_ilog(a_i)$$

 

 

중요한 점은 우리가 사용할 모델에 맞게 적절한 손실함수를 정의해야 한다는 점이다.

 

적절한 손실함수를 정의했다면, 이 손실함수를 최소로 만드는 최적의 파라미터를 찾는 방법을 정의해야한다.

단순히 생각했을 때, 모든 경우에서 손실함수를 구한 다음 최소 값을 갖는 지점을 찾는 방법도 가능하겠지만, 이런 방법은계산 시간이 너무 오래 걸리기 때문에 복잡한 모델에서 사용하기는 어렵다.

 

머신러닝/딥러닝 분야에서 최적의 모델 파라미터를 찾아주는 방법을 옵티마이저(Optimizer)라고 한다.

이번 포스팅에서 옵티마이저 중 하나인 경사하강법(Gradient Descent)에 대해 알아보도록 하겠다.

 

 

2. 경사하강법 (Gradient Descent)

아래 그림은 파라미터 $\theta_0, \theta_1$에 따른 손실함수를 산맥의 고도처럼 표현한 형태이다.

별표선처럼 경사하강법은 임의의 $\theta_0, \theta_1$ 위치에서 높이가 낮아지는 방향으로 전진하며, 낮은 지점을 찾아가는 방식으로 이해할 수 있다.


    1. 무작위 지점에서 경사를 계산.

    2. 계산된 경사에 의해 높이가 낮아지는 방향으로 한걸음 전진

    3. 전진한 위치에서 다시 경사 계산

    4. 앞의 절차를 반복하다 더 이상 높이가 낮아지는 방향이 없으면 종료

 

 

 

 

 

경사하강법에서 첫 번째로 주의해야할 점은, 시작점에 따라 구해지는 최적의 지점이 다를 수 있다는 것이다.

위 그림의 왼쪽 별에서 시작해 구해진 지점과 오른쪽 별에서 시작해 구해진 지점이 다른 것을 확인할 수 있다.

만약, 구해진 지점이 모든 가능한 손실함수 값에서 구한 가장 낮은 지점이라면 전역 최적값이라고 하고,

전체에서 가장 낮은 값은 아니지만 시작 지점 주변의 가장 낮은 지점이라면 지역 최적값이라고 표현한다.

 

간단한 모델에서는 전역 최적값과 지역 최적값이 쉽게 일치하지만, 복잡한 딥러닝 모델의 경우에는 두 값이 일치하지 않고 지역 최적값만을 찾을 수 있다. 그래도 둘 사이 차이가 그렇게 크지 않다면 지역 최적값을 찾는 것 만으로도 충분히 좋은 성능의 알고리즘을 얻을 수 있다.

 

두번째 주의해야할 점은, 경사하강법의 학습률이다.

경사를 구한 후 낮은 지점으로 한걸음 전진한다고 했는데, 여기서 한걸음의 보폭을 학습률으로 생각할 수 있다.

 

아래의 왼쪽 그림처럼 학습률이 너무 큰 경우에는 최적 지점을 찾아가지 못하고 발산할 수 있고,

오른쪽 그림처럼 학습률이 너무 작은 경우에는 최적값을 찾는데 너무 오랜 시간이 걸릴 수 있다.

일반적으로 학습을 수행할 때는, 큰 학습률에서 시작해서 손실함수가 안정적으로 감소하는지 확인해보고,

필요하다면 학습률을 지수 형태로 감소시켜 나가는 전략을 주로 사용한다.

 

 

지금까지 머신러닝 학습 과정에 사용되는 손실함수의 정의와 손실함수를 최소로 만드는 옵티마이저 중 하나인 경사하강법에 대해 알아보았다. 다음 포스팅에서는 더 많은 옵티마이저 종류와 각각의 장단점을 살펴보도록 하겠다.