Search
Duplicate

경사하강법 (심화)

태그
기초수학

경사하강법 (심화)

mai_04.pdf
4399.6KB
np.linalg.pinv 를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다

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

선형회귀의 목적은 yXβ2||y-X\beta||_2 이고, 이를 최소화 하는 β\beta 를 찾아야 하므로, 다음과 같은 그레디언트 벡터를 구해야 한다
이제 목적식을 최소화하는 β\beta 를 구하는 경사하강법 알고리즘은 다음과 같다

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

norm : L2-노름을 계산하는 함수
lr : 학습률
T : 학습 횟수
for t in range(T): error = y - X @ beta grad = - transpose(X) @ error beta = beta - lr * grad
Python
복사
→ 경사하강법으로 최적화를 시킬 때는 반드시 학습률과 학습 횟수를 적절하게 선택하는 것이 중요하다

경사하강법은 만능일까?

역행렬을 사용하지 않고도 최적화 시킬 수 있다는 장점
이론적으로 경사하강법은 미분가능하고 블록(convex) 한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장되어 있다
특히, 선형회귀의 경우 목적식 yXβ2||y-X\beta||_2 은 회귀계수 β\beta 에 대해 볼록함수 이기 때문에 알고리즘을 충분히 돌리면 수렴이 보장된다
하지만 비선형회귀 문제의 경우 목적식이 볼록하지 않을 수 있으므로 수렴이 항상 보장되지는 않는다

확률적 경사하강법

확률적 경사하강법 (stochastic gradient descent) 은 모든 데이터를 사용해서 업데이트하는 대신, 데이터 한개 또는 일부 활용하여 업데이트한다
볼록이 아닌 (non-convex) 목적식은 SGD 를 통해 최적화할 수 있다
GSD 는 데이터의 일부를 가지고 파라미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용하는데 도움이 된다

확률적 경사하강법(SGD)의 원리 : 미니배치 연산

확률적 경사하강법(SGD)의 원리 : 하드웨어