반응형
1. 미분, 경사하강법
- 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법이다.
- 미분은 함수 f의 주어진 점 (x,f(x)) 에서의 접선의 기울기를 구한다.
- 한 점에서 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있다.
- 미분값을 더하면 경사상승법(gradient ascent)이라 하며 함수의 극대값의 위치를 구할 때 사용한다
- 미분값이 음수면 x+f’(x) < x는 왼쪽으로 이동하여 함수값이 증가한다.
- 반대로, 미분값을 빼면 경사하승법(gradient desscent)이라 하며 함수의 극소값의 위치를 구할 때 사용한다
- 미분값이 음수면 x-f’(x) < x는 오른쪽으로 이동하여 함수값이 감소한다.
- 경사상승/경사하강 방법은 극값에 도달하며 움직임을 멈춘다.
- 변수가 벡터라면 편미분을 이용한다.
- 각 변수 별로 편미분을 계산한 그레디언트 벡터를 이용하여 경사하강/경사상승법에 사용할 수 있다.
2.그레디언트 벡터
- 양수 그레이언트 벡터 : 최대값으로 가장 빨리 증가하는 방향
- 음수 그레이언트 벡터 : 최소값으로 가장 빨리 감소하는 방향
- 2차원을 넘어선 임의의 차원에서 그레디언트 벡터를 이용하여 최대값, 최소값을 구할 수 있다.
- 경사상승/강사하강법을 이용해 최적화도 가능하다
3.확률적 경사하강법
- 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용해서 업데이트하는 대신 데이터 한개 또는 일부 활용하여 업데이트합니다.
- 데이터 일부만 활용하는 것을 minibatch sgd라고 하고 1개만 한다면 sgd라고한다. 보통의 sgd는 minibatch sgd를 의미한다.
- 볼록이 아닌(non-convex) 목적식은 sgd를 통해 최적화할 수 있다.
- SGD는 데이터의 일부를 가지고 파라미터를 업데이트하기 때문에 연산자원을 좀 더 효율적으로 활용하는데 도움이 된다
- SGD는 미니배치 $D_{(b)} = (X_{(b)},y_{(b)}) \subset D$를 가지고 그레디언트 벡터를 계산한다. 미니배치는 확률적으로 선택하므로 매번 미니배치를 샘플링할때마다 목적식 모양이 바뀌게 된다.
- 그래도 방향은 비슷한 방향으로 나아간다.
- non-convex할때도 확률적으로 극소값이 아닐 수도 있게된다. 목적식이 바뀐 상태에서 그래디언트 벡터는 0이 아니기 때문에 극소값에서 탈출할 수 있음. 그래서 다시 최소값을 구할 수 있음
- SGD는 볼록이 아닌 목적식에서도 사용가능하므로 경사하강법보다 머신러닝 학습에 더 효율적입니다.
- 경사하강법과 달리 왔다갔다하는 모습을 보임
- 확률적 경사하강법은 minibatch를 이용하기 훨씬 빠름
- 미니배치를 너무 작게 작으면 경사하강법보다 느릴 수도 있음
반응형
'Study > AI' 카테고리의 다른 글
[Pytorch] 파이토치 기초 (0) | 2023.03.19 |
---|---|
[AI] 딥러닝 기초 (0) | 2023.03.12 |
[Math] 벡터와 행렬 (0) | 2023.03.12 |
[AI] 넘파이와 판다스 (1) | 2023.03.12 |
[Python] 예외 처리와 파일 및 로그 (0) | 2023.03.12 |