선형회귀분석 복습
np.linalg.pinv
를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다.
- 이전 강의에서는 무어-펜로즈 역행렬을 활용
- 이번 강의에서는 경사하강법을 이용해 선형모델을 찾는 방법을 배운다.
경사하강법으로 선형회귀 계수 구하기
- 선형회귀의 목적식은 ∣∣y−Xβ∣∣2
- 목적식을 최소화하는 β**를 찾아야 하므로 목적식에 대한 그레디언트 벡터를 구해야 함
- ∣∣y−Xβ∣∣2가 아닌 ∣∣y−Xβ∣∣22를 최소화해도 됨
- 기존 L2 노름과 다른 점은 n 개의 데이터로 계산하기 때문에 평균값을 구해주기 위해 제곱 시그마를 n 으로 나눈다.

알고리즘
Input: X, y, lr, T, Output: beta
for t in range(T):
error = y - X @ beta
grad = - transpose(X) @ error
beta = beta - lr * grad
- 종료조건을 일정 학습횟수 T로 변경
- ∇β∣∣y−Xβ∣∣22 항을 계산해서 β를 업데이트
경사하강법은 만능?
- 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장
- 특히 선형회귀의 경우 목적식 ∣∣y−Xβ∣∣2은 회귀계수 β에 대해 볼록함수이기 때문에 알고리즘을 충분히 돌리면 수렴이 보장
- 하지만 비선형회귀 문제에서는 목적식이 볼록하지 않을 수 있음
확률적 경사하강법
- 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용하지 않고 데이터 한개 또는 일부를 활용하여 업데이트
- 볼록하지 않은(non-convex) 목적식은 SGD를 통해 최적화 가능
- 만능은 아니지만 딥러닝의 경우 SGD가 경사하강법보다 실증적으로 더 낫다고 검증
- SGD는 데이터의 일부를 가지고 파라미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용할 수 있음
- 전체 데이터(X,y)를 쓰지 않고 미니배치(X(b),y(b))를 써서 업데이트 하므로 연산량이 b/n으로 감소
미니배치 연산
-
경사하강법은 전체데이터를 가지고 목적식의 그레디언트를 계산
-
반면 SGD는 미니배치를 가지고 그레디언트 벡터를 계산
- 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀜

-
미니배치에 따라 목적식 모양이 바뀌기 때문에 볼록이 아닌 목적식에서 극소점을 탈출하게 될 가능성 존재
- 따라서 SGD는 볼록이 아닌 목적식에서도 사용 가능하므로 경사하강법보다 머신러닝 학습에 더 효율적
-
경사하강법은 직선처럼 내려가지만, SGD 는 지그재그로 내려감

- 학습률이나 학습횟수 이외에도 적절한 배치 크기 조절 또한 필요하다.
하드웨어
- 이미지 데이터의 경우 모든 데이터를 업로드하면 메모리가 부족하여 Out-of-memory가 발생한다.
- 미니배치 단위로 나누어서 데이터를 업로드해야 한다.(SGD 사용 필요)