Gradient, Gradient Ascent, Gradient Descent

오늘은 함수의 극대점, 극소점을 찾기 위해 사용되는 기법인 Gradient Ascent법, Gradient Descent법에 대해 설명하고자 한다.  ( 이 포스팅의 일부분은 다크프로그래머님의 Gradient Descent 탐색 방법 포스팅을 참고하였다.)


1.Gradient란?

1)정의: Gradient는 함수 f의 편미분으로 이루어진 벡터이다. (Gradient is a vector composed of partial derivatives of a function.)

gradient

예시)

gradient_ex

2)특징:

  • Gradient는 함수 f의 값이 가장 크게 변화하는 방향을 나타낸다. 또한 Gradient의 크기는 변화의 정도(기울기)를 나타낸다.
  • Gradient는 optimum에 도달했는지를 알려준다. (grad f = 0)

예시) 다음과 같은 함수 f(x,y)가 있다고 해보자.

ex2.png

(1,1)에서 f값이 최대로 변화하는 방향은 (2,2)이고 변화의 크기(기울기)는 ||(2.2)||=sqrt(8)이다.


2.Gradient Ascent 방법

비용함수의 값을 극대화시키는 파라미터 값을 아래와 같이 점진적으로 찾는 방법

ascent

(여기서 lambda_k는 알고리즘의 수렴속도를 조절하는 파라미터로, step size또는 learning rate이라고 부른다.)

아래의 함수 f를 예시로 들어 설명하겠다.

현재 보고있는 x의 값이 x_f라고 가정하자. 우리는 f를 극대화시키는 x_m을 찾는 것이 목표이므로  x_f에서 더 진전해야한다. Gradient Ascent 알고리즘을 사용해보자면, grad_f(x_k)은 양수이므로 (그림의 파란색 기울기를 보자. 기울기가 양수이다.) 이 알고리즘은 새로운 x의 값으로 x_k에서 더 앞으로 나아간 값을 잡는다. 이렇게 grad f값이 양수가 나오는 한 이 알고리즘은 x값을 점점 전진시켜 x_m에 도달하고자 한다.

 

이번에는 현재 보고있는 x의 값이 x_b라고 가정하자. 우리는 f를 극대화시키는 x_m을 찾는 것이 목표이므로  x_b에서 후진해야한다. Gradient Ascent 알고리즘을 사용해보자면, grad_f(x_k)은 음수이므로 (그림의 빨간색 기울기를 보자. 기울기가 음수이다.) 이 알고리즘은 새로운 x의 값으로 x_b의 뒤에 위치해있는 값을 잡는다. 이렇게 grad f값이 음수가 나오는 한 이 알고리즘은 x값을 점점 후진시켜 x_m에 도달하고자 한다.

gradient_ascent


3.Gradient Descent 방법

비용함수의 값을 극소화시키는 파라미터 값을 아래와 같이 점진적으로 찾는 방법

descent

마찬가지로, 아래의 함수 f를 예시로 들어 설명하겠다.

현재 보고있는 x의 값이 x_f라고 가정하자. 우리는 f를 극소화시키는 x_m을 찾는 것이 목표이므로  x_f에서 더 진전해야한다. Gradient Descent 알고리즘을 사용해보자면, grad_f(x_k)은 음수이므로 (그림의 파란색 기울기를 보자. 기울기가 음수이다.) 이 알고리즘은 새로운 x의 값으로 x_k에서 더 앞으로 나아간 값을 잡는다. 이렇게 grad f값이 음수가 나오는 한 이 알고리즘은 x값을 점점 전진시켜 x_m에 도달하고자 한다.

 

이번에는 현재 보고있는 x의 값이 x_b라고 가정하자. 우리는 f를 극소화시키는 x_m을 찾는 것이 목표이므로  x_b에서 후진해야한다. Gradient Descent 알고리즘을 사용해보자면, grad_f(x_k)은 양수이므로 (그림의 빨간색 기울기를 보자. 기울기가 음수이다.) 이 알고리즘은 새로운 x의 값으로 x_b의 뒤에 위치해있는 값을 잡는다. 이렇게 grad f값이 양수가 나오는 한 이 알고리즘은 x값을 점점 후진시켜 x_m에 도달하고자 한다.

descent_graph_modified.png


이상으로 Gradient와 Gradient Ascent, Gradient Descent에 대한 설명을 마친다.

One Comment

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중