본문 바로가기

Dev/AI 인공지능

[AI] 경사하강법 | 미분이란? | 경사상승법 | Gradient Descent | Differentation

728x90
반응형

미분(differentation)이란?

  • 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구
  • 즉, 미분은 함수 f의 주어진 점 (x, f(x))에서의 접선의 기울기 값을 구하게 해줌
  • sympy 라이브러리를 이용하면 파이썬 코드로도 미분을 구현할 수 있음 - diff() 함수 이용

 

  • 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가 및 감소하는지 알 수 있다!
  • 딥러닝에서 차원(축)이 매우 크게 증가할 때는, 어느 방향으로 움직여야 오차가 줄어드는지 알기 어려움
  • 따라서 미분을 이용해 함수값이 증가 혹은 감소할 것인지 파악하여 이동

 

미분값(기울기값)이 음수인 경우 (f'(x) < 0)

→ 왼쪽으로 이동 시 함수값 증가 (x + f'(x) > x)

→ 오른쪽으로 이동 시 함수값 감소 (x - f'(x) < x)

 

미분값(기울기값)이 양수인 경우 (f'(x) > 0)

→ 왼쪽으로 이동 시 함수값 감소 (x - f'(x) < x)

→ 오른쪽으로 이동 시 함수값 증가 (x + f'(x) > x)

 

(함수의 극대값) 함수를 증가시키고 싶다면 미분값이 양수든 음수든 더해주면 됨 → Gradient Ascent

(함수의 극소값) 함수를 감소시키고 싶다면 미분값이 양수든 음수든 빼주면 됨 Gradient Descent

(여기서 함수는 보통 오차값을 계산하는 함수임! 따라서 오차값이 작아지는 방향은 미분값을 빼주는 방향)

 

  • 보통 극값에 도달하면 움직임을 멈춤 (극값에서는 미분값이 0이므로)

 

 

만약 변수가 벡터라면?

  • * 벡터가 입력인 다변수 함수의 경우, 편미분(partial differenctiation)을 사용
  • 특정 방향의 벡터만 고려하는 것! → i번째 방향(축)에서만의 변화율을 계산할 수 있게 됨
  • 즉 하나의 변수만 변수로 고려하고 나머지는 상수로 취급하는 것

 

 

변수가 여러개, 즉 벡터라면 기울기는 어떻게 계산하는가?

  • 편미분을 통해서 계산한 기울기값도 여러개!
  • 즉, Gradient Vector을 생성
  • Gradient Vector을 사용함으로써 경사하강/경사상승법에 사용할 수 있음 → ▽f 로 표시
  • ▽f  는 임의의 점에서 가장 빨리 증가하는 방향과 같음
  • -▽f 는 임의의 점에서 가장 빨리 감소하는 방향과 같음

 

여러개의 변수에 대한 편미분 예시

 

 

본 포스트는 부트코스 내 네이버 부스트캠프 AI Tech 5기 강의를 토대로 작성되었습니다

 

728x90
반응형