now is better than never
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (4) 본문
5) 경사하강법 2
- 선형회귀분석
- n개의 데이터를 가장 잘 설명하는 선형 모델
- 무어-펜로즈 역행렬을 이용해서 회귀분석 가능 - L2노름을 최소화하는 y의 근사치를 찾음
- 경사하강법으로도 선형 모델을 찾을 수 있음 -> 선형모델이 아닌데도 적용 가능, 좀더 일반적인 ML 모델
- 선형회귀 목적식 : ∥y − Xβ∥2
이를 최소화하는 β를 찾아야 함
= 이 목적식을 β로 미분 -> 주어진 β에서 미분값을 뺌
- 경사하강법으로 선형회귀 계수 구하기
- 원래 L2 노름과 달리 n개의 데이터를 가지고 계산
i = 1에서 n까지 더해준 다음에 제곱근 X-> 평균값을 계산하기 위해 1/n 나눈 다음에 제곱근 계산 - 결과: Xβ를 계수 β에 대해 미분한 결과인 X^T만 곱해지는 것주어진 β에 대해서 목적식을 최소화하는 β를 구하는 경사하강법 알고리즘
- t+1번째 coeffient : t번째 coeffient에서 위에서 구한 그래디언트 벡터를 빼주면 됨.
경사하강법 알고리즘 원리 (경사(=미분법 =그래디언트 벡터)를 빼주면 목적식을 최소화하는 원리)를 다변수에서 활용하는 것 - λ : 학습률 -> 수렴속도를 결정함
- L2 노름의 제곱을 목적식으로 최소화를 해도 최적화하는 방향이 똑같음, 식은 좀 더 간단해짐
# 경사하강법 기반 선형회귀 알고리즘
for t in range(T):
error = y = X @ beta
grad = - transpose(X) @ error # 그래디언트 벡터
beta = beta - lr * grad
- Input : X, y, lr, T / Output : beta
- norm : L2 노름을 계산하는 함수
- lr : 학습률
- T : 학습횟수
- 정답 = y, 선형모델 = X
X @ beta : X와 beta 벡터의 행렬곱 - error = 목적식의 y − Xβ
- 종료조건 외에 경사하강법 알고리즘과 똑같음
- 학습횟수를 너무 작게 하면 경사하강법 알고리즘에 수렴하지 못할 수 있음
학습률을 너무 크게 잡으면 경사하강법 알고리즘이 불안정하게 움직히고 너무 작으면 수렴을 너무 늦게함
- 경사하강법은 만능일까?
- 역행렬을 사용하지 않고도 최적화를 할 수 있는 편리한 최적화 알고리즘
- 이론적으로 미분이 가능하고 볼록(convex)한 함수
+ 학습률과 학습횟수를 매우 적절하게 선택해야 수렴이 보장 - 볼록한 함수는 그래디언트 벡터가 항상 최소점을 향함
- 선형회귀의 목적식에 사용하는 L2 노름은 회귀계수 β에 대해서 볼록함수
- 비선형회귀일 경우거나 목적식이 볼록하지 않을 경우 항상 수렴이 보장되지는 않음 -> 특히 딥러닝인 경우 대부분 아님
- 확률적 경사하강법 (Stochastic Gradient Descent , SGD)
- 모든 데이터를 사용해 업데이트를 하는 대신 데이터를 한 개 또는 일부만 활용하여 업데이트(=그래디언트 계산)
- 데이터 한 개만 사용 - SGD, 데이터를 일부만 사용 - mini batch SGD
하나만 사용하면 비효율적이기 때문에 mini batch SGD를 많이 이용해서 그냥 SGD로도 부름 - 모든 데이터를 사용한 그래디언트 벡터와 유사 -> 딥러닝의 경우 경사하강법보다 SGD가 실증적으로 더 나음
- 볼록이 아닌(non-convex) 목적식은 SGD로 최적화 가능
- 전제데이터 = n, 미니배치 = b -> 연산량이 b/n으로 줄어듦
- 미니 배치 연산
- 경사하강법은 전체데이터 D=(X, y)를 가지고 목적식(L)의 그래디언트 벡터인 ∇θL(D, θ) (=나블라 세터 L)을 계산
주어진 목적식의 최솟점의 방향으로 안내 - SGD는 미니배치 D(b) = (X(b) , y(b) ) ⊂ D 를 가지고 그래디언트 벡터를 계산
미니배치 : 전체 데이터의 일부
목적식이 살짝 바뀌지만 방향은 유사하다고 기대할 수 있음 - 원래 경사하강법에서 이동시키고 싶어하는 이동식의 방향과 유사
- 매번 다른 미니배치를 사용하기 때문에 곡선 모양이 바뀌게 된다 -
> 극솟점이나 극댓점에서 목적식이 확률적으로 바뀜
-> 극솟점/극댓점이 더이상 아님
-> 원래 경사하강법 그래디언트 극솟점/극댓점에서 탈출
- 단 정확하게 극댓점으로 흐르는게 아님
- 각각의 화살표를 계산하는 연산속도가 경사하강법보다 훨씬 빠름
-> 정확하지 않지만 훨씬 빨라서 머신러닝, 딥러닝 학습에 훨씬 더 효율적 - 단, 미니배치를 너무 작게 잡으면 경사하강법보다 더 느릴 수도 있음
- 확률적 경사하강법에서는 학습률, 학습횟수, 미니배치 사이즈를 고려해야 함
'Python > [코칭스터디 9기] 인공지능 AI 기초 다지기' 카테고리의 다른 글
[인공지능(AI) 기초 다지기] 4. 기초튼튼, 수학튼튼 (2) (0) | 2023.02.14 |
---|---|
[인공지능(AI) 기초 다지기] 4. 기초튼튼, 수학튼튼 (1) (0) | 2023.02.14 |
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (4) (0) | 2023.02.07 |
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (3) (0) | 2023.02.07 |
[인공지능(AI) 기초 다지기] 3. 기초 수학 첫걸음 (2) (0) | 2023.02.03 |