더북(TheBook)

경사 하강법은 최적화, 머신 러닝 알고리즘 등에서 많이 활용되며, 인공 신경망에서 최적의 가중치를 찾을 때도 많이 사용된다. 잘 적용되는 가장 대표적인 예인 뉴턴랩슨 메서드(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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.