sympy.diff
을 활용하면 미분을 컴퓨터로 계산 가능한 점에서의 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가 혹은 감소하는지 알 수 있음
# gradient: 미분을 계산하는 함수
# init: 시작점, lr: 학습률, eps: 알고리즘 종료조건
var = init
grad = gradient(var)
while(abs(grad) > eps):
var = var - lr * grad
grad = gradient(var)
벡터가 입력인 다변수 함수인 경우 편미분(partial differentiation)을 사용
각 변수별로 편미분을 계산한 그레디언트(gradient) 벡터를 이용하여 경사하강/경사상승법에 사용 가능
# gradient: 그레디언트 벡터를 계산하는 함수
# init: 시작점, lr: 학습률, eps: 알고리즘 종료조건
var = init
grad = gradient(var)
while(norm(grad) > eps):
var = var - lr * grad
grad = gradient(var)