본문바로가기
[인공지능, 수학으로 타파] 테일러 전개로 딥러닝 따라하기
수학동아 2020.10.07 11:37

 

 

Mathematics for AI #6

테일러 전개로 딥러닝 따라하기

 

 

 

 

*출제자의 한 마디*

 

저번 시간에는 선형근사법을 통해 수식이 복잡하거나 직접 계산하기 어려운 함수의 근사값을 어떻게 구할 수 있는지에 대하여 간단하게 살펴보았어요. 복잡한 함수의 미분을 통하여 접선의 기울기를 구하고 이를 통해 접선을 일차함수로 나타낼 수 있었습니다. 이 접선의 수식을 통해 접점 근처에서의 근사값을 쉽게 구할 수 있었습니다. 또한 이 접선의 기울기를 통해 변화율, 즉 함숫값의 증가나 감소가 얼마나 빠르게 일어날 지를 알 수 있었습니다.   

 

이번 시간에는 앞에서 배운 선형근사법에서 더 나아가, 오차가 적은 근사값을 구하는 방법인 테일러 전개(Taylor Expansion)에 대하여 간단히 살펴봅시다. 

 

 

 

--------------

 

 

테일러 전개

 

테일러 전개란 어떠한 함수에 대하여 그 위의 점을 기준으로 하여 다항함수로 표현하는 것을 말합니다. 좀 더 쉬운 예시로, 앞서 배운 선형근사법은 테일터 전개에서 일차함수까지만 전개한 것입니다. 테일러 전개를 통해 구한 다항식의 차수가 높아질수록, 기준점 근처에서  다항함수의 모양도 원래의 함수에 점점 가까워지며 따라서 매우 적은 오차를 가진 근사값을 구할 수 있습니다. 이렇듯 직접 계산하기 어려운 함수의 경우에도 테일러 전개를 통해 다루기 쉬운 다항함수로 구한 다음, 매우 적은 오차를 가진 근사값을 구할 수 있습니다. 

이러한 테일러 전개는 복잡한 함수를 직접 풀지 않고도 다항함수를 구한 다음 컴퓨터를 이용하여 원하는 만큼 정밀한 근삿값을 구할 수 있다는 점에서 머신러닝과 딥러닝의 최적화 과정에서 중요하게 쓰이고 있습니다.

 

 

 

*테일러 전개의 창시자 '브룩 테일러' 

 

영국의 수학자인 브룩 테일러는 1701년 영국 케임브리지대학교에 입학해 12년만인 1712년 영국 왕실에서 허가한 학자만 가입할 수 있는 왕립학회 회원이 된 뛰어난 수학자다. 테일러는 영국의 물리학자 아이작 뉴턴의 제자로, 뉴턴이 만든 미적분학을 계승해 연구했으며 진동하는 현의 움직임에 대한 연구와 원근법의 원리를 수학적으로 해석해 정리했다.

테일러가 1715년 발표한 테일러 전개는 세상에서 가장 아름다운 수식이라고 불리는 ‘오일러 공식  e^{ix }= \cos x+ i\sin x’를 유도할 때 쓰이면서 그 중요성이 세상에 알려졌고, 이후 프랑스 수학자 조제프 루이 라그랑주와 오귀스탱 루이 코시가 연구하면서 크게 발전했다.

 

--------------

 

 

함수 f(x)x=a에서 k번 미분가능할 때 함수 f(x)k차 다항식으로 나타낼 수 있다. 이때의 f(x)에서 x=a부터 k차까지를 '테일러 전개'라고 한다. 함수 f(x) x=a에서 미분 가능하다는 건 x=a에서 f(x)에 접하는 직선의 기울기를 구할 수 있다는 뜻이다. 

f(x)= f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^{2}+ ... + \frac{f^{(k)}(a)}{k!}(x-a)^{k}+h_{k}(x)(x-a)^{k}

(이때,  \lim_{x\rightarrow a} h_{k}(x)=0 )

 

이렇게 나타낸 다항식을 ‘k차 테일러 다항식’이라고 하며, 여기서 1차 테일러 다항식 p_{1}(x)=f(a)+f'(a)(x-a)x= a에서 f(x)에 접하는 직선의 방정식 즉, 선형근사식과 같다. 테일러 전개로 구한 다항함수의 함숫값은 x= a 근처에서 원래의 함숫값과 비슷하고, 두 값의 차이는 k가 커질수록 작아진다.

 

 

문제

x=0에서 함수 f(x)= -log(\frac{\sin (x)}{x}) 를 테일러 전개해보자. 처음에는 4차 테일러다항식으로 나타낸 뒤 점점 차수를 늘려가며  0<x<3에서 테일러 다항식의 그래프가 원래 함수의 그래프와 가까워지는 것을 확인하자. 

 

 

 

 

 

 

--------------

 

 

풀이에 필요한 SageMath 코딩 명령어

 

 

var('x')

f = -log(sin(x)/x)

x를 변수로 지정한 뒤, 함수  f(x)= -log(\frac{\sin (x)}{x}) 를 입력한다.

 

 

sol = f.taylor(x, 0, 4)

show(sol)

x=0에서 함수 f(x) 를 전개해 4차 테일러 다항식으로 나타낸 뒤 그 결과를 수식으로 보여준다. 

 

p1 = plot(f, (0, 3), color='black')

p2 = plot(sol, (0, 3), color='red')

0에서 함수 f(x)와 테일러 전개를 통해 구한 다항식을 각각 p_{1}, p_{2} 라 하고, 색깔을 다르게 지정한다. 

 

show(p1+p2) 

함수 f(x)와 다항식을 동시에 보여준다.

 

 

 

-끝-

 

 

첫 댓글의 주인공이 되어 보세요!
  • 폴리매스 문제는 2019년도 정부의 재원으로 한국과학창의재단의 지원을 받아 수행된 성과물입니다.

  • ☎문의 02-6749-3911