나의 작은 valley
[AI] 경사하강법 (2) 본문
728x90
경사하강법으로 선형회귀 구현하기
# norm: L2-노름을 계산하는 함수
# ir = 학습률, T=학습횟수
for t in range(T):
error = y - x @beta
grad = - transpose(x) @error
beta -= ir*grad
>> 미분가능하고 볼록한 함수에 대해서 적절한 학습률과 학습횟수가 선택되었다는 가정하에 수렴이 보장되어 있다.
불록하지 않은 함수의 경우
- 확률적 경사하강법을 사용한다.
- SGD를 통해 최적화를 한다.
>> 모든 데이터를 활용하여 업데이트를 하는 것이 아닌 1개 혹은 일부를 이용하여 업데이트를 한다.
기존에 무어-펜로즈 역행렬을 이용하여 선형회귀모델을 구했었는데, 이는 경사하강법으로도 구해볼 수 있다.
확률적 경사하강법의 원리 : 미니배치 연산
경사하강법(GD)은 전체 데이터를 이용해서 목적식의 gradient 벡터를 계산한다.
반면, SGD는 미니배치를 가지고 gradient 벡터를 계산한다. 미니배치는 확률적으로 선택된 데이터 묶음이므로 매 step마다 다른 미니배치를 사용할 때마다 목적식의 모양이 점점 바뀌게 된다.
- 그렇지만 방향은 얼추 비슷할 것이다.
- 이렇게 목적식의 모양이 바뀌게 되면서, 경사하강법에서는 미분값이 0이되는 극소점이 SGD에서는 극소값이 아니게 된다.
- 즉, local minimun(극소점)을 탈출할 수 있다.
- 이 원리로 non-convex 함수에서도 최소점을 찾는 데에 활용할 수 있다.
- 극소점을 탈출할 수 있으므로 global minimum을 탈출할 수도 있다.
- 이는 SGD의 단점 중 하나로, global minimum 근처까지는 빠르게 수렴하지만 정작 정확한 global minimum 극소값에는 도달하지 못하고 진동하는 경우가 많다.
- 반면, GD는 연산량과 시간이 많이 필요하지만 전체 배치를 통해 모든 점에서 일정한 목적식을 사용하여 global minimum으로 확실히 수렴 가능하다.(convex function인 경우)
- 이와 같은 SGD의 문제점은 learning rate를 점점 줄여나가는 방식으로 step size를 줄임으로써 어느정도 해결할 수 있다.
- 반대로 말하자면, 일반적인 GD은 매 step 목적식이 바뀌지 않으므로 local minimum 도달시 탈출이 불가능하다.
확률적 경사하강법의 원리 : 하드웨어
오늘날 딥러닝의 데이터는 굉장히 많고 사이즈도 크기 때문에, 하드웨어상 경사하강법에 한계가 있다. 일반적인 경사하강법을 사용하여 모든 데이터를 업로드하면, Out-of-memory 오류가 뜨는 경우가 생긴다.
따라서 이러한 점에서 SGD는 필수적인 알고리즘으로 사용되고 있다. 미니배치로 쪼갠 데이터를 활용하여 경사하강법을 업데이트할 수 있으므로 좀 더 빠른 연산이 가능하고, 하드웨어의 한계를 극복해 GPU로 병렬연산하는것이 가능해진다.
728x90
'Computer Science > [인공지능]' 카테고리의 다른 글
[AI] 4주차 과제 (0) | 2023.02.14 |
---|---|
[AI] 3주차 과제 (0) | 2023.02.07 |
[AI] 경사하강법 (1) (0) | 2023.02.07 |
[AI] 행렬과 벡터 (0) | 2023.02.06 |
[AI] numpy (0) | 2023.02.06 |
Comments