경사하강법 - 2
선형회귀분석 복습
np.linalg.pinv
를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다.- 이전 강의에서는 무어-펜로즈 역행렬을 활용
- 이번 강의에서는 경사하강법을 이용해 선형모델을 찾는 방법을 배운다.
경사하강법으로 선형회귀 계수 구하기
- 선형회귀의 목적식은
- 목적식을 최소화하는 **를 찾아야 하므로 목적식에 대한 그레디언트 벡터를 구해야 함
- 가 아닌 를 최소화해도 됨
- 기존 L2 노름과 다른 점은 n 개의 데이터로 계산하기 때문에 평균값을 구해주기 위해 제곱 시그마를 n 으로 나눈다.
-
은 에서 과 번째 그레디언트 벡터를 곱한 것을 빼 줌으로서 구한다.
-
목적식을 제곱한 값을 최소화하는것도 가능하다.
알고리즘
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로 변경
- 항을 계산해서 를 업데이트
경사하강법은 만능?
- 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장
- 특히 선형회귀의 경우 목적식 은 회귀계수 에 대해 볼록함수이기 때문에 알고리즘을 충분히 돌리면 수렴이 보장
- 하지만 비선형회귀 문제에서는 목적식이 볼록하지 않을 수 있음
- 수렴이 보장되지 않는다.
확률적 경사하강법
- 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용하지 않고 데이터 한개 또는 일부를 활용하여 업데이트
- 볼록하지 않은(non-convex) 목적식은 SGD를 통해 최적화 가능
- 만능은 아니지만 딥러닝의 경우 SGD가 경사하강법보다 실증적으로 더 낫다고 검증
- SGD는 데이터의 일부를 가지고 파라미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용할 수 있음
- 전체 데이터를 쓰지 않고 미니배치를 써서 업데이트 하므로 연산량이 b/n으로 감소
미니배치 연산
-
경사하강법은 전체데이터를 가지고 목적식의 그레디언트를 계산
-
반면 SGD는 미니배치를 가지고 그레디언트 벡터를 계산
- 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜
-
미니배치에 따라 목적식 모양이 바뀌기 때문에 볼록이 아닌 목적식에서 극소점을 탈출하게 될 가능성 존재
- 따라서 SGD는 볼록이 아닌 목적식에서도 사용 가능하므로 경사하강법보다 머신러닝 학습에 더 효율적
-
경사하강법은 직선처럼 내려가지만, SGD 는 지그재그로 내려감
- 학습률이나 학습횟수 이외에도 적절한 배치 크기 조절 또한 필요하다.
하드웨어
- 이미지 데이터의 경우 모든 데이터를 업로드하면 메모리가 부족하여 Out-of-memory가 발생한다.
- 미니배치 단위로 나누어서 데이터를 업로드해야 한다.(SGD 사용 필요)
Author And Source
이 문제에 관하여(경사하강법 - 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yst3147/경사하강법-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)