ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 🤖Machine Learning_최적화(Optimization)
    머신러닝 2024. 2. 20. 18:32

    최적화를 이해하기 위해 먼저 두 가지 수학적 원리를 간단하게 이해해 보자.

    01. 고급 수학

    먼저, 편미분은 미분과 같지만 원하는 변수에 대해서만 미분을 하는 것으로 원하는 변수 외의 모든 것들은 상수로 취급한다.

    연쇄 법칙(chain rule)은 미분을 한다고 가정했을 때, 새로운 변수 u를 가정하고 dy/dx = dy/du * du/dx가 같다는 법칙이다.

    이 두 가지 원리를 가지고 모델의 파라미터에 대해 최적화를 진행한다.

     

    02. 손실 함수

    지금까지 어떤 문제를 푸는지, 어떤 모델인지에 대해 정의를 했지만 그 문제에 맞는 손실함수에 대해서도 정의할 수 있어야 한다.

    문제에 맞는 손실함수라 함은 회귀문제에 어울리는 손실함수와 분류문제에 어울리는 손실함수가 따로 존재를 한다는 것이다.

    먼저, 회귀문제에 맞는 손실함수를 먼저 살펴보면 회귀문제에서는 대표적으로 MSE라는 평균 제곱 오차(mean squared error) 손실 함수를 사용한다.

    MSE는 오차의 제곱의 평균으로 오차는 실제값과 예측값이 차이를 의미하고 제곱은 말 그대로 그 값의 제곱을 말한다.

    모든 데이터셋에 대한 오차값을 줄이는 것이 모델의 목적이어서 평균을 내어 손실값으로 표현한다.

     

    03. 최소 제곱법

    손실함수와 모델을 정의했으면 그 파라미터를 풀어보자.

    파라미터를 풀 수 있는 방법 중 하나가 최소 제곱법(least square method)이다.

    최소제곱법은 데이터에 대한 오차를 최소화하는 것이 목적으로 손실함수로써 MSE를 사용한다.

    함수 최솟값에서 미분을 하면 순간 변화율이 0이라는 것을 알기에 각 파라미터에 대해 미분을 하면 0이라고 계산해 파라미터 값을 구할 수 있다.

    최소 제곱법을 구하는 다른 한 방법은 ||Y-WX||^2라는 행렬에 대한 편미분을 하는 것이다.

    풀이 과정이 상세히 설명하진 않겠지만 어쨌든, 결론은 최소제곱법으로 완벽한 해를 구할 수 있다는 것이다.

    실제 x와 y값의 평균을 구해 계산을 하면 완벽한 해마저도 오차가 존재를 하지만 그중에서도 가장 최적의 값을 찾을 수 있다.

     

    그렇다면 좀 더 복잡하지만 오차의 값을 줄여줄 수 있는 완벽에 가까운 모델이 없을까?

     

    04. 경사하강법

    최소 제곱법을 이용해 최적의 파라미터를 구하는 것은 정답지가 있는 상황에서도 역행렬을 구하는 것이 계산적으로도 많은 비용이 든다.

    최소제곱법만으로는 데이터가 매우 많을 경우 현실적인 문제에 부딪히고 복잡한 함수의 경우에 다중 선형 회귀, 다항 회귀, 비선형 함수 등 다양한 상황이 존재하는데 이 모든 상황을 최소 제곱법으로 해결하기는 어렵다.

    그래서 나온 방법이 경사하강법(gradient descent)이다.

    경사하강법은 말 그대로 경사를 하강하는 것으로 손실 함수가 있을 때, 손실 함수의 값을 최소화시키는 방향으로 파라미터를 업데이트해 나가는 것이다.

    조금 더 자세히 살펴보자면 여기서도 함수의 최솟값의 순간변화율은 무조건 0이라는 성질을 사용해 손실 함수에 대한 미분값이 0이 되는 방향으로 파라미터의 업데이트 방향을 결정한다.

     

    이 과정에 대한 알고리즘을 이해하기 위한 슈도 코드를 작성한다면

    1. 현재 파라미터에서의 손실 함수에 대한 미분값을 구함

    2. 미분값의 반대 방향으로 파라미터 값을 업데이트

    ** 순간 변화율을 낮추는 것이 목적이기에 

    3. 미분값이 0이 될 때까지 1~2번을 에폭(epoch)만큼 반복

    ** 에폭 : 반복 횟수에 대한 하이퍼파라미터

    4. 최솟값을 갖는 파라미터를 구함

     

     

     

     

     

Designed by Tistory.