[AI Math] 4강 경사하강법 매운맛

지구인 ㅣ 2022. 1. 22. 03:00

728x90

1. 선형회귀 계수 구하기

1) 기존에 배운 선형 회귀식 : 무어 펜로즈 역행렬 이용

  • $\beta = (X^{T}X)^{-1}X^{T}y$

 

2) 경사하강법

 

사용 이유 : 선형과 비선형 모델 모두에 적용되는 식이기 때문

경사하강법 - 선형회귀 목적식의 그레디언트 벡터

 

2. 경사하강법으로 선형회귀 계수 구하기

* 선형회귀 계수 : 선형회귀의 목적식을 최소화하는 $\beta$

 

$\nabla_{\beta}\left\|y - X\beta \right\|_{2} = (\partial_{\beta_{1}}\left\|y - X\beta \right\|_{2}, ..., \partial_{\beta_{d}}\left\|y - X\beta \right\|_{2})$

 

위 그레디언트 벡터의 k번째 원소는 아래와 같다.

(* n으로 나눠준 이유는 데이터의 절대적 개수에 따라 오차가 커지는 것을 방지하기 위함이다.)

 

$\partial_{\beta_{k}}\left\|y - X\beta \right\|_{2} = -\frac{{X_{k}}^{T}(y - X\beta)}{n\left\|y - X\beta \right\|_{2}}$

 

따라서 모든 원소에 대해 미분한 전체 그레디언트 벡터는 다음과 같다.

 

$\partial_{\beta}\left\|y - X\beta \right\|_{2} = -\frac{X^{T}(y - X\beta)}{n\left\|y - X\beta \right\|_{2}}$

 

더 간단하게 계산하면 아래와 같다.

 

$\partial_{\beta}{\left\|y - X\beta\right\|_{2}}^{2} = -\frac{2}{n}{X}^{T}(y - X\beta)$

 

* 참고

  • $-2\times X^{T}\times(y - X\beta)$ : 열 벡터
  • $-2\times(y - X\beta)^{T}\times X$ : 행 벡터

         => 두 벡터 모두 ${\left\| y - X\beta \right\|_{2}}^{2}$ 을 미분한 그레디언트 벡터로 같은 값을 가짐.

  • 벡터와 노름의 미분

https://darkpgmr.tistory.com/141

 

벡터 미분과 행렬 미분

논문을 읽거나 어떤 이론을 이해할 때, 그리고 자신이 수식을 전재할 때 종종 벡터, 행렬에 대한 미분이 필요한 경우가 종종 있습니다. 저의 경우는 주로 함수 최적화 기법(Least Squares, Weighted Lest

darkpgmr.tistory.com

 

3. 목적식을 최소화하는 $\beta$ 를 구하는 법

  • 임의의 벡터 $\beta$ 에 대해 경사하강법 알고리즘을 적용하여 $\beta$를 업데이트하는 식
    • $\beta^{(t)}$ : $t$번째 업데이트한 $\beta$
    • $\lambda$ : 학습률(신중하게 설정해야함)
  • 목적식을 최소화하는 $\beta$를 구하는 경사하강법 알고리즘

  • 더 간단 ver : 경사하강법이므로 → t+1번째 벡터 = t번째 벡터 - 학습률 * t번째 벡터에서의 미분 벡터
  • 경사하강법 - 파이썬 코드
    • intercept = 절편 = 편향
    • 주의 : 학습률(0.01)과 학습횟수(100)가 중요한 하이퍼파라미터가 된다.

 

4. 경사하강법의 문제점

  1. 미분 가능 + 볼록(convex)한 함수에 대해서는 수렴이 보장되지만, 그렇지 않은 경우 보장 안됨
  2. 비선형회귀 문제 : convex하지 않을 수 있음 → 수렴 항상 보장 x
  3. 특히 딥러닝을 사용하는 경우 목적식의 대부분은 볼록함수가 아님

5. 확률적 경사하강법(SGD)

  1. 데이터 1개 ~ 일부 활용하여 업데이트
  2. 볼록이 아닌(non-convex)한 목적식은 SGD를 통해 최적화 가능
  3. 딥러닝의 경우 GD보다 SGD의 성능이 더 낫다고 검증됨
  4. 활용하는 데이터의 수가 적으므로, 업데이트 횟수가 줄어 시간 복잡도 줄어듦
  5. → 전체 데이터 $(X, y)$ 를 쓰지 않고 미니 배치 $(X_{(b)}, y_{(b)})$ 를 사용해 업데이트하므로 연산량이 기존의 $b/n$로 감소 (*전체 데이터 개수: n, 미니 배치 개수: b개일 때)

 

6. 미니배치 연산

확률적 경사하강법 - 매번 다른 미니배치(임의추출 데이터) 사용 -> 곡선(데이터) 매번 다름

  • 배치 사이즈가 지나치게 작으면 경사하강법보다 성능 나쁨
  • 적절한 배치 사이즈를 주는 것이 좋음
  • 볼록이 아닌(non-convex) 목적식에서도 사용 가능 -> 머신러닝 학습에서 GD보다 SGD가 더 효율적
  • 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜

 


추가 학습

@ 와 dot 의 차이점 : Notepad for mathcom : 네이버 블로그

  • * : element-wise 연산
  • @ 와 dot : 일반적인 행렬간 곱셈
  • @ 와 dot 의 연산 결과가 달라지는 경우 : 행렬이 3차원 이상일 때
  • 3차원 이상에서는 보통 @ 를 쓴다고 함
728x90