경사하강법

령·2025년 7월 14일

프리코스2

목록 보기
2/4

1. 미분

  • 변수의 움직입에 따른 함수값의 변화를 측정하기 위한 도구
  • 최적화에서 제일 많이 사용하는 기법
import sympy as sym
from sympy.abc import x

sym.diff(sym.poly(x**2 + 2*x + 3), x)
  • 고차원 공간에서는 어느 방향으로 움직여야 함수값이 증가/감소하는지 알기 어려우므로 미분을 이용하여 방향을 정함

  • 경사상승법: 미분값을 더할 때이며, 함수의 극대값의 위치를 구할 때 사용함

  • 경사하강법: 미분값을 뺄 때이며, 함수의 극소값의 위치를 구할 때 사용함

  • 경사상승/경사하강 법은 극값에 도달하면 움직임을 멈춤 = 미분값이 0

2. 경사하강법: 알고리즘

- gradient: 미분을 계산하는 함수
- init: 시작점
- lr: 학습률(미분을 통해 업데이트하는 속도를 조절)
- eps: 알고리즘 종료조건
  • 컴퓨터로 계산할 때 미분이 정확이 0이 되는 것은 불가능하므로 eps보다 작을 때 종료하는 조건이 필요

3. 변수가 벡터라면?

  • 벡터가 입력인 다변수 함수의 경우 편미분(partial differeniation)을 사용함

  • e_i는 i번째 값만 1이고 나머지는 0이므로 원하는 부분 i에서의 값만 계산할 수 있음

  • x와 y가 같이 있는 식의 경우 x에 대해서 미분하면 y는 상수 취급

  • 당연히 x에 대한 편미분뿐만 아니라 y에 대한 편미분도 계산할 수 있음

  • 만약 n차원 벡터라고 한다면 편미분을 n번 계산할 수 있음
    - n개만큼 편미분을 계산한 함수들을 하나의 벡터로 표현할 수 있는데 이것을 그레디언트(gradient) 벡터라고 함

    • 아래와 같은 기호를 사용함

아래 예시

4. 경사하강법: 알고리즘_변수가 벡터일 때

  • 다른 부분은 다 같지만 한가지 차이점이 있음
    -> 앞에서는 미분값의 절대값으로 종료조건을 설정하였지만 벡터일때는 절대값을 쓸 수 없으므로 노름을 계산하여 종료조건을 세움
profile
데이터 사이언스

0개의 댓글