경사하강법 - 2

선형회귀분석 복습

  • np.linalg.pinv를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다.
  • 이전 강의에서는 무어-펜로즈 역행렬을 활용
    • 이번 강의에서는 경사하강법을 이용해 선형모델을 찾는 방법을 배운다.

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

  • 선형회귀의 목적식은 yXβ2||y-X \beta||_2
  • 목적식을 최소화하는 β\beta**를 찾아야 하므로 목적식에 대한 그레디언트 벡터를 구해야 함
    • yXβ2||y-X \beta||_2
  • 기존 L2 노름과 다른 점은 n 개의 데이터로 계산하기 때문에 평균값을 구해주기 위해 제곱 시그마를 n 으로 나눈다.

  • β(t+1)\beta^(t+1)

  • 목적식을 제곱한 값을 최소화하는것도 가능하다.

알고리즘

Input: X, y, lr, T, Output: beta
# norm: L2-norm을 계산하는 함수
# lr: 학습률, T: 학습횟수

for t in range(T):
    error = y - X @ beta
    grad = - transpose(X) @ error
    beta = beta - lr * grad
  • 종료조건을 일정 학습횟수 T로 변경
  • βyXβ22\nabla_\beta||y-X \beta||_2^2

경사하강법은 만능?

  • 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장
  • 특히 선형회귀의 경우 목적식 yXβ2||y-X \beta||_2
  • 하지만 비선형회귀 문제에서는 목적식이 볼록하지 않을 수 있음
    • 수렴이 보장되지 않는다.

확률적 경사하강법

  • 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용하지 않고 데이터 한개 또는 일부를 활용하여 업데이트
  • 볼록하지 않은(non-convex) 목적식은 SGD를 통해 최적화 가능
    • 만능은 아니지만 딥러닝의 경우 SGD가 경사하강법보다 실증적으로 더 낫다고 검증
  • SGD는 데이터의 일부를 가지고 파라미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용할 수 있음
    • 전체 데이터(X,y)(X, y)를 쓰지 않고 미니배치(X(b),y(b))(X_(b), y_(b))

미니배치 연산

  • 경사하강법은 전체데이터를 가지고 목적식의 그레디언트를 계산

  • 반면 SGD는 미니배치를 가지고 그레디언트 벡터를 계산

    • 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜

  • 미니배치에 따라 목적식 모양이 바뀌기 때문에 볼록이 아닌 목적식에서 극소점을 탈출하게 될 가능성 존재

    • 따라서 SGD는 볼록이 아닌 목적식에서도 사용 가능하므로 경사하강법보다 머신러닝 학습에 더 효율적
  • 경사하강법은 직선처럼 내려가지만, SGD 는 지그재그로 내려감

  • 학습률이나 학습횟수 이외에도 적절한 배치 크기 조절 또한 필요하다.

하드웨어

  • 이미지 데이터의 경우 모든 데이터를 업로드하면 메모리가 부족하여 Out-of-memory가 발생한다.
    • 미니배치 단위로 나누어서 데이터를 업로드해야 한다.(SGD 사용 필요)

좋은 웹페이지 즐겨찾기