기울기 하강.png

개요

기울기 하강(Gradient Descent)은 함수의 기울기를 구해서 기울기가 낮은 쪽으로 계속 이동시켜서 극값에 이를 때까지 반복시키는 알고리즘이다.

설명

최적화할 함수 [math]f(\mathbf{x})[/math]에 대하여, 먼저 시작점 [math]\mathbf{x}_0[/math]를 정한다. 현재 [math]\mathbf{x}_i[/math]가 주어졌을 때, 그 다음으로 이동할 점인 [math]\mathbf{x}_{i+1}[/math]은 다음과 같이 계산된다.

[math]\mathbf{x}_{i+1} = \mathbf{x}_i - \gamma_i \nabla f(\mathbf{x}_i)[/math]

이때 [math]\gamma_i[/math]는 이동할 거리를 조절하는 매개변수이다. (역 삼각형 기호는 그라디언트를 의미한다.)

  1. 이 알고리즘의 수렴 여부는 함수의 성질과 [math]\gamma_i[/math]의 선택에 따라 달라진다. 또한, 이 알고리즘은 가장 가까운 최적해로 수렴한다. 따라서 구한 값이 주어진 함수의 진짜 최적해라는 것을 보장하지 않으며 시작점 [math]\mathbf{x}_0[/math]의 선택에 따라서 달라진다. 이에 따라 다양한 시작점에 대해 하강법을 적용하여 그 중 가장 좋은 결과를 선택할 수도 있다.
  2. 재귀 함수루프를 이용하여 최적해를 찾아 나가게 된다. 이경우 [math]\mathbf{x} = \mathbf{x} - \gamma_i \nabla f(\mathbf{x})[/math] 로 표현된다.

인공 지능

인공지능에서 사용하는 비용 함수도 기울기 하강의 논리를 사용하여 작동한다.

[math] h(x) = a_{0} + a_{1} * x_{1} + a_{2} * x{2} + a_{3} * x{3} .... [/math] 라 주어진 선형 회귀식이 있다고 해보자. 이떄 오차함수 h에 대하여 기울기 하강법을 이용해 [math]a_{0}, a_{1}, a_{2} .. [/math]을 업데이트 하는 식을 나타내면,
[math]\mathbf{x} = \mathbf{x} - \gamma \nabla f(\mathbf{x})[/math] 로 나타내 진다. 결국 기울기 하강법을 이용하면, 우리가 원하는 가중치들의 집합을 구할 수 있다.
  1. x는 선형 회귀에서의 기울기 들의 집합 즉 (a0,a1,a2 ... )를 의미한다.
  2. 감마는 학습 속도(Learning rate)를 의미한다. 감마가 커질수록 수렴도가 높아지지만 지역수렴도로 갈 확률이 커진다. 또한 학습속도가 너무 크면 기울기 하강법이 수렴하지 않고 발산할 위험도 있다.
  3. h는 주어진 오차함수를 의미한다. 오차함수는 식에서 보이다 시피 미분가능해야 한다.