STORY
MinJ is_

2022년/[K-MOOC] 실습으로 배우는 머신러닝

[4주차] Model Learning with Optimization

KMinJis 2022. 11. 22. 17:44

💡 "[K-MOOC] 실습으로 배우는 머신러닝"을 수강한 내용을 바탕으로 작성된 글입니다.


 

최적화와 모형 학습


🔎 Machine Learning and Optimization 

  • 머신러닝 모델은 파라미터를 조정하여 loss를 최소화하면서 함수를 최적화 함
  • Learning(학습) : 머신러닝 함수를 최적화하는 과정 
  • [예시] Linear Regression으로 학습해보기

[1] 초기 모델 설정

 

[2] Loss 함수 MSE

 

[3] Loss 그래프 그려보기

 

[4] Loss의 값이 최솟값이 되는 파라미터 B를 찾기 : 위 그래프에서 보이듯이 미분값이 0일 때 Loss값이 최소가 됨

 

[5] 최적의 모델 찾기 완료

 

🔎 Loss Function of Neural Networks 

  • Nerual Network는 알아내야 하는 파라미터의 갯수가 굉장히 많음
    (아래의 그림에서 모든 회색선에 각각 하나의 파라미터가 필요)

  • 최적값을 알아내야 하는 파라미터의 갯수가 많아짐에 따라 손실함수의 그래프가 복잡해지고 고차원이 됨

      🤔 복잡한 손실함수 내에서 어떤 파라미터 조정 방식을 사용하여 최솟값를 어떻게 찾을지 의문점이 발생 ! 

 


 

경사하강법


🔎 Gradient Descent 란? 

  •  함수의 기울기(Gradient)를 구하고 기울기의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것
     [Gradient 방향] 함숫값을 올려주는 방향
     [Gradient 반대 방향] 함숫값을 줄여주는 방향
     (ex) x = W에서 기울기가 양수라면 극값은 W보다 작은 값의 x에서 존재하므로 현재 위치보다 음수쪽으로 이동해야함

 

🔎 Parameter Update 수식 유도 

 

[1] 임의의 위치에서 급수전개를 활용해 알지못하는 손실함수를 근사적으로 2차 다항식으로 표현
      (Quadratic approxiamation)

       ✅ Brook Taylor의 급수 전개 : 모든 일반적인 함수들은 무한대에 수렴하는 다항식으로 근사가 가능하다 ! 
       ✅ 급수전개를 활용한 Quadratic approxiamation 공식 (x=xo의 위치에서)

       💡 파라미터 W = Wc일 때 손실함수 L(W)의 Quadratic approxiamation = La(W)
             ( 여기서 tc는 L(W)를 두번 미분한 함수에 Wc를 대입해 나온 값의 역수 )

 

 

[2] 위의 이차함수 La(W)를 W에 대해 미분하여 미분값이 0이 되는 지점을 찾으면 W = Wc - tc * ▽L
    ✅ 이 지점으로 W를 업데이트 !

    ✅ -▽L : 기울기의 반대 방향으로 이동 !

    ✅ tc : 이를 조정하여 step size를 조정할 수 있음 ! ( 관련 자세한 내용은 아래에서 다룰 예정 )

 

🔎 Gradient Descent 과정 그래프 

고차원 표현

 

고차원을 등고선으로 표현


 

 

경사하강법 심화


🔎 Learning Rate 

  • 위에서 구했던 손실함수의 Quadratic approxiamation (2차 다항식 근사) 함수는 W에 대한 2차 함수
  • 이차항의 계수는 1 / tc
    ✅ tc에 따라 Quadratic approxiamation의 그래프 모양이 달라지며,
          현재 위치에서 Quadratic approxiamation의 극솟값까지의 길이가 달라짐

    ✅ tc에 따라 실제 손실함수의 극솟값으로 다가가는 길이가 조절되고 이에 따라 학습 속도가 달라짐

    💡 tc를 "Learning rate" 혹은 "Step size"라고 함

  • Learning Rate가 너무 적을 때 극솟값에 도달하지 못하고 학습이 멈출 수 있음 / 학습속도가 느림

  • Learning Rate가 너무 클 때 Loss값이 발산할 수 있음

 

 

🔎 Stochastic Gradient Descent 

  • Gradient Descent(GD)의 단점
    : 모든 데이터에 대해 손살값을 계산하기 때문에 계산량이 너무 많음
  • Stochastic Gradient Descent(SGD) 이란?
    : 데이터셋을 쪼개 한 Batch에 대해서 손실값을 계산해 연산량을 줄이는 방법

  • 그래프로 보는 GD와 SGD의 차이

                                                  ✅ 여기서 관측치 한개만 선택하는 방법은 부정확도가 크므로
                                               메모리가  가능한 선에서 가장 큰 Batch size를 선택하는 것을 추천 !

 

🔎 Global Minimum & Local Minimum 

  • Global Minimum : Local Minimum에서 제일 작은 값

 

🔎 Momentum 

  • 관성적인 법칙에 따라 왔었던 방향으로 더 밀어주는 것 
    ✅ Saddle point와 Local minimum에서 탈출할 수 있음
          ➕ Saddle point : 극솟값은 아니지만, 미분값이 0인 지점 (ex) 변곡점

  • 수식
    : 파라미터를 업데이트 할 때, 전의 Momentum도 고려하도록 μVc-1을더해줌


 

 

🔎 출처 

https://ko.wikipedia.org/wiki/%EA%B2%BD%EC%82%AC_%ED%95%98%EA%B0%95%EB%B2%95

 

경사 하강법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 경사 하강법(傾斜下降法, Gradient descent)은 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 반대 방향으로 계속 이동

ko.wikipedia.org

http://www.mit.edu/~hlb/StantonGrant/Lecture10/origins.pdf