경사 하강법은 최적화, 머신 러닝 알고리즘 등에서 많이 활용되며, 인공 신경망에서 최적의 가중치를 찾을 때도 많이 사용된다. 잘 적용되는 가장 대표적인 예인 뉴턴랩슨 메서드(Newton-Raphson method)를 살펴보도록 하자. 뉴턴랩슨 메서드는 방정식의 해를 수치적으로 찾는 대표적인 방법이다. 일종의 선형 근사라는 개념에 기반하였는데, 자세한 내용은 다음 예로 살펴보자.
함수 f(x) = x3 - 1의 실수 해를 찾으려 한다. 실수 해는 이 함수가 0일 때의 x값이다. 그리고 실숫값 중에서 이 식을 0으로 만드는 값은 1인 것을 알 수 있다. 미분과 경사 하강법을 사용해 해를 구해보자.
>>> def f(x): # 함수 정의 >>> return (x**3 - 1) # x = 1에서 하나의 해 존재 >>> from scipy import optimize # 사이파이에서 optimize 모듈 불러오기 # x축의 1.5값 지점에서 시작하여 뉴턴랩슨 메서드로 x의 해를 구함 >>> root = optimize.newton(f, 1.5) >>> print(root) 1.0000000000000016
결과를 보면 거의 1에 가까운 해를 얻었다. newton 함수에 f(x)를 미분한 결과를 넣어 해를 구할 수 있는데, fprime에 미분한 결과를 lambda 함수로 넣어보았다.
# f의 미분된 함수를 표시 >>> root = optimize.newton(f, 1.5, fprime = lambda x: 3 * x**2) >>> print(root) 1.0