[AI Math] 경사하강법 part1

hyunsooo·2022년 9월 22일
0
  • 경사하강법을 알기 위해선 미분에 대해 먼저 알아봐야 한다.

  • 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 나타내기 위한 도구

  • f(x)=limh0f(x+h)f(x)hf'(x) = \lim_{h \rightarrow 0} \frac{f(x+h)-f(x)}{h}

  • 위의 정의대로 f(x)=x2+2x+3f(x) = x^2 + 2x + 3일때 f(x)=2x+2f'(x) = 2x+2로 구할 수 있다.

  • python에서 sympy라이브러리를 사용하여 미분을 구할 수 있으며 아래와 같다.

    • sympy.poly(x**2 + 2*x + 3)으로 먼저 다항함수로 인식을 시킨다.
    • sympy.diff(다항함수, x)를 사용하여 다항함수를 x로 미분하라는 코드를 실행할 수 있다.
  • 미분은 xx에서의 접선의 기울기로 이해할 수 있다.

  • 접선의 기울기를 구하기 위해서는 도형이 연속적이여야 가능하기 때문에 미분은 연속함수에서만 가능하다.

  • 접선의 기울기를 알면 현재 위치에서 함수값이 증가하거나 감소하기위해서는 어느 방향으로 이동을 해야하는지 알 수 있다.

  • 미분값을 더하여 극대값을 찾는것을 경사상승법, 미분값을 빼주어 극소값을 찾는것을 경사하강법이라 한다.

  • 변수가 다변수(여러개) 즉, 벡터의 형태라면 편미분을 활용한다.

    • f(x,y)=x2+2xy+3+cos(x+2y)f(x,y) = x^2+2xy+3+cos(x+2y)

    • xf(x,y)=2x2ysin(x+2y)\partial_xf(x,y) = 2x-2y-sin(x+2y)

    • xx에 대해서 편미분하면 yy는 상수취급하여 미분을 한다.

  • 각 변수별로 편미분을 계산을 하게되면 변수의 개수(차원)만큼 결과가 나오며 벡터로 표현할 수 있으며 그레디언트 벡터라고 부르고 아래와 같이 표기한다.
    f=(x1f,x2f,...xdf)\nabla f = (\partial_{x1}f, \partial_{x2}f, ... \partial_{xd}f)

  • 임의의 점에서 f-\nabla f방향으로 이동하면 어디서든 극소점으로 이동할 수 있다.

profile
지식 공유

0개의 댓글