Study/AI

[Math] 경사하강법

motti 2023. 3. 12. 16:15
반응형

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