경사하강법(매운맛)

경사하강법 II


선형회귀분석

image.png 선형모델의 경우 위와 같은 유사역행렬을 이용해서 회귀분석이 가능하다.이번에는 유사역행렬이 아니라 경사하강법으로 선형회귀식을 찾는다. 좀 더 일반적인 기계학습 모형에서 최적할 때 사용하는 방법론으로 확인해 볼 수 있다.


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

선형회귀의 목적식은 $∥ y-X \beta ∥ _{2}$이고 이를 최소화하는$\beta$를 찾아야 하므로 다음과 같은 그레디언트 벡터를 구해야 한다.

image.png 계산의 편의를 위해서 $∥ y-X \beta ∥ _{2}$가 아닌$∥ y-X \beta ∥ _{2}^{2}$를 최소화해도 된다.


image.png

이 식을 직접 유도해 보면 다음과 같다. image.png


복잡한 계산같지만 사실 $X\beta$를 계수 $\beta$에 대해 미분한 결과에 $X^{T}$만 곱해진 것이다. image.png


이제 목적식을 최소화 하는 $\beta$를 구하는 경사하강법 알고리즘은 다음과 같다. $\lambda$는 learning rate을 의미한다.

$$\beta^{(t+1)} ← \beta^{(t)} - \lambda\nabla_{\beta}∥ y-X \beta ∥$$

여기서 $\lambda\nabla_{\beta}∥ y-X \beta ∥$값을 대체해서 보면 아래와 같은 식이 된다.

$\beta^{(t+1)} ← \beta^{(t)} +$$\lambda\over{n}$${X^{T}(y-X\beta^{(t)})}\over{∥ y-X \beta ∥}$


$∥ y-X \beta ∥ _{2}$가 아닌$∥ y-X \beta ∥ _{2}^{2}$로 최소화

image.png

$\beta^{(t+1)} ← \beta^{(t)} +$$2\lambda\over{n}$${X^{T}(y-X\beta^{(t)})}$


경사하강법 기반 선형회귀 알고리즘

# norm: L2-norm을 계산하는 함수
# lr: 학습률, T: 학습횟수

for t in range(T):
    erro=y-X@beta
    grad=-transpose(X)@error
    beta=beta-lr*grad

for t in range(T)
종료조건을 일정 학습 횟수이다.

for문 안에 코드
$\nabla_{\beta}∥ y-X \beta ∥ _{2}^{2}$항을 계산하여 $\beta$를 업데이트한다.

  • 이제 경사하강법 알고리즘으로 역행렬을 이용하지 않고 회귀계수를 계산할 수 있다.
  • 경사하강법 알고리즘에서는 학습률학습횟수가 중요한 hyperparameter가 된다.


경사하강법은 만능?

  • 이론적으로 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장되어 있다.
  • 특히 선형회귀의 경우 목적식 $∥ y-X \beta ∥ _{2}$은 회귀계수 $\beta$에 대해 볼록함수이기 때문에 알고리즘을 충분히 돌리면 수렴이 보장된다.

image.png

하지만 비선형회귀 문제의 경우 목적식이 볼록하지 않을 수 있으므로 수렴이 항상 보장되지는 않는다



확률적 경사하강법

  • 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용해서 업데이트하는 대신 데이터 한개 또는 일부 활용하여 업데이트합니다.
  • 여기서 일부 데이터만 사용하는걸 mini batch라 한다.
  • 볼록이 아닌(non_convex)목적식은 SGD를 통해 최적화할 수 있다.

image.png

  • SGD라고 만능은 아니다 딥러닝의 경우 SGD가 경사하강법보다 실증적으로 더 낫다고 검증되었다.

SGD는 데이터의 일부를 가지고 패러미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활요하는데 도움이 된다. image.png 전체 데이터(X,y)를 쓰지 않고 미니배치 $(X_{(b)},y_{(b)})$를 써서 업데이트 하므로 연산량이 $b/n$으로 감소한다.


원리: 미니배치 연산

image.png 경사하강법은 전체데이터 $𝒟 = (X, y)$를 가지고 목적식의 그레디언트 벡터인 $∇_{θ}L(𝒟, θ)$를 계산하게 된다.


image.png SGD는 정확한 목적식을 계산하는 것이 아니라 미니배치 $𝒟_{(b)} = (X_{(b)}, y_{(b)}) ⊂ 𝒟$를 가지고 그레디언트를 계산하기 때문에 목적식이 살짝 위의 그림과 같이 바뀌게 된다. 미니배치를 사용했기때문에 그레디언트가 다를 수 있겠지만, 방향은 유사하 것이라고 기대할 수 있다.확률적 경사하강법을 사용하면 원래 경사하강법과 유사하게 이동시키게 된다.


image.png 매번 다른 미니배치로 계산하기 때문에 목적식의 모양이 고정되어 있지않고 바뀌게 된다. non-convex(볼록이 아닌)일때, local point(극소점,극대점)에 도착해도 확률적 경사하강법을 사용하는 경우에는 극소점이나 극대점에서 목적식이 확률적으로 바뀌기 때문에 극소점이나 극대점이 더 이상 아니게 될 확률이 발생하게 된다. 이때문에 극소점이나 극대점에서 탈출을 할 수 있다.

'AI > 이론' 카테고리의 다른 글

Pandas III  (0) 2021.01.28
딥러닝 학습방법 이해하기  (0) 2021.01.27
Pandas II  (0) 2021.01.27
Pandas I  (0) 2021.01.27
경사하강법 I  (0) 2021.01.26
행렬  (0) 2021.01.25
벡터  (0) 2021.01.25
Numpy part III  (0) 2021.01.25

+ Recent posts