courses
컴퓨터가 실제로 sin(x)나 eˣ 같은 함수를 어떻게 계산하는지 궁금해한 적이 있나요?
컴퓨터는 대부분의 수학적 함수를 직접 계산할 수 없습니다. 덧셈, 뺄셈, 곱셈, 나눗셈만 할 수 있죠. 그러니 파이썬에서 math.sin(0.5)를 호출하면, 이를 기본 산술 연산의 나열로 바꿔주는 무엇인가가 필요합니다. 그것이 다항식 근사이고, 테일러 급수가 그 수학적 토대입니다.
테일러 급수는 거의 모든 매끄러운 함수를, 한 점에서의 도함수를 이용해 구성한 더 단순한 항들의 무한 합으로 다시 쓸 수 있게 해줍니다. 이 아이디어를 이해하면 데이터 과학과 머신 러닝의 많은 것들이 감이 오기 시작합니다. 경사 하강법이 어떻게 작동하는지부터 왜 어떤 활성화 함수가 그런 식으로 거동하는지까지요.
이 글에서는 테일러 급수가 무엇인지, 수학적으로 어떻게 작동하는지, 데이터 과학과 머신 러닝에서 어디에 등장하는지, 그리고 다른 종류의 급수와는 어떤 관련이 있는지를 살펴보겠습니다.
테일러 급수 정의하기
테일러 급수는 수세기 전부터 존재했습니다. 브룩 테일러가 1715년에 소개했으며, 제임스 그레고리와 콜린 맥클로린도 이 아이디어에 크게 기여했습니다.
목표는 복잡한 함수를 다루기 쉬운 다항식으로 나타내는 방법을 찾는 것이었습니다.
테일러 급수는 한 점에서의 도함수로부터 유도된 항들의 무한 합으로 함수를 표현해 근사합니다. 항을 더 많이 포함할수록 실제 함수에 더 가까워집니다.
일반적인 공식은 다음과 같습니다.

테일러 급수 일반식
모든 항은 세 가지 구성 요소로 이루어집니다.
-
f⁽ⁿ⁾(a)- 중심점a에서 평가한 함수의 n차 도함수 -
n!- n의 팩토리얼로, 항이 지나치게 커지는 것을 억제합니다 -
(x - a)ⁿ- 전개 항으로,x가 중심점에서 얼마나 떨어져 있는지를 나타냅니다
중심점 a는 급수를 고정(anchor)하는 지점입니다. a = 0이면 맥클로린 급수라 불리는 특수한 경우가 됩니다. 이에 대해서는 뒤에서 더 설명합니다.
구체적 예시: eˣ
지수 함수 eˣ는 첫 예시로 제격입니다. 도함수가 자기 자신이므로 모든 n에 대해 f⁽ⁿ⁾(0) = 1입니다. a = 0을 중심으로 하면 테일러 급수는 다음과 같습니다.

구체적 예시
이제 e⁰·⁵를 근사하고 싶다고 해봅시다. x = 0.5를 처음 네 항에 대입하면 됩니다. 파이썬 예시는 다음과 같습니다.
x = 0.5
approx = 1 + x + x**2/2 + x**3/6
print(approx)

파이썬으로 본 구체적 예시
e⁰·⁵의 실제 값은 대략 1.6487입니다. 단 네 항만으로도 진짜 값과의 오차가 0.2% 이내입니다. 항을 더 추가하면 근사는 더 정확해집니다.
이것이 테일러 급수의 힘입니다.
eˣ, sin(x), cos(x) 같은 함수는 직접 계산하기 어렵지만, 테일러 급수는 이를 기본 산술 연산으로 환원해 줍니다. 바로 이런 형태를 컴퓨터가 다룰 수 있습니다.
테일러 급수의 수학적 성질
테일러 급수는 근사하려는 함수로 실제로 수렴할 때에만 유용합니다. 그것이 무슨 뜻인지, 그리고 수렴하지 않을 때 무슨 일이 일어나는지 살펴보겠습니다.
테일러 급수 전개
테일러 급수를 전개한다는 것은 한 번에 한 항씩 다항식을 만들어 간다는 뜻입니다. 각 항은 중심점 a 근처에서의 함수 거동에 대한 정보를 더해 줍니다.
a = 0을 중심으로 한 sin(x)를 보겠습니다.

테일러 급수 전개
첫 항 x은 거친 선형 근사입니다. 두 번째 항을 더하면 곡선이 더 가까워집니다. 항을 더 추가하면 다항식이 x = 0 근처에서 점점 sin(x)와 같아집니다.
평이한 말로 하면, 전개란 정확하지만 계산하기 어려운 함수를 실제로 다룰 수 있는 다항식으로 바꾸는 것입니다.
테일러 급수 근사
무한히 많은 항을 계산하는 일은 없습니다. 실제로는 몇 항에서 멈추고 작은 오차를 받아들입니다. 그 결과를 절단 테일러 급수라고 하며, 이로 인해 생기는 오차를 절단 오차라고 합니다.
라그랑주 나머지항은 그 오차의 상한을 제공합니다. n개 항까지만 사용한 급수에 대해:

라그랑주 나머지항
여기서 c는 x와 a 사이 어딘가의 점입니다. c를 정확히 알 수는 없지만, 함수의 도함수가 얼마나 커질 수 있는지 안다면 f⁽ⁿ⁺¹⁾(c)를 상한으로 묶을 수 있습니다.
이를 이렇게 해석할 수 있습니다.
-
x가 중심점a에서 멀어질수록 오차가 커진다 -
더 많은 항을 포함할수록 오차가 작아진다
-
도함수가 크고 빠르게 증가하는 함수일수록 정확한 근사가 어렵다
예를 들어, 세 항으로 sin(0.1)을 근사한다고 해봅시다.
x = 0.1
approx = x - x**3/6 + x**5/120
print(approx)
print(np.sin(0.1))

파이썬에서의 근사
세 항만으로도 x가 0에 가까울 때 소수점 이하 열 자리 수준의 정확도를 얻습니다. 이것이 절단 오차의 실제 모습입니다. 작지만 0은 아닙니다.
테일러 급수의 수렴
테일러 급수는 어떤 점 x에서, 항을 더해갈수록 부분합이 어떤 고정된 값에 가까워질 때 수렴합니다. 그 고정된 값은 f(x)이어야 하지만, 항상 보장되는 것은 아닙니다.
수렴 반지름 R은 중심점에서 얼마나 떨어진 지점까지 급수가 유효한지를 알려줍니다. 그 반지름 안에서는 급수가 수렴합니다. 바깥에서는 항들이 줄지 않고 커지며 근사가 무너집니다.

수렴 공식
함수마다 수렴 반지름이 다릅니다.
-
eˣ,sin(x),cos(x)는 모든x에 대해 수렴하므로R = ∞ -
ln(1 + x)는-1 < x <= 1에서만 수렴하므로R = 1 -
1/1-x는|x| < 1에서 수렴하므로R = 1
함수에 따라 수렴 반지름이 무한대일 수 있지만 특정 점에서는 테일러 급수와 일치하지 않을 수도 있습니다. 이를 비해석적 함수라고 하며, 데이터 과학에서 자주 보이지는 않지만 알아둘 만한 경계 사례입니다.
따라서 테일러 근사를 신뢰하기 전에 항상 x가 수렴 반지름 안에 있는지 확인하세요.
데이터 과학과 머신 러닝에서의 테일러 급수
테일러 급수는 생각보다 다양한 곳에 등장합니다. 물리 시뮬레이션부터 ing 미분방정식 풀이까지요. 하지만 데이터 과학자 업무에서 가장 큰 영향은 최적화와 모델 근사에 있습니다.
최적화와 경사 하강법
머신 러닝 모델을 학습할 때마다 어떤 형태로든 최적화를 수행합니다. 그리고 그 최적화의 이면에는 흔히 테일러 급수가 있습니다.
경사 하강법은 1차 테일러 근사를 사용합니다. 현재 매개변수 θ에서 손실 함수 L(θ)의 그래디언트를 계산하는 것은, "이 방향으로 조금 이동하면 손실이 얼마나 변할까?"라고 묻는 것과 같습니다. 이는 현재 점을 중심으로 한 1차 테일러 전개입니다.

최적화에서의 테일러 급수
이 방법은 작동하지만 곡률을 무시합니다. 손실 표면에 곡률이 있으면 1차 근사는 과도하게 이동하거나 비효율적인 스텝을 취할 수 있습니다.
뉴턴 방법은 2차 항, 즉 곡률을 추적하는 헤시안 행렬 H을 포함해 이를 보완합니다.

최적화에서의 테일러 급수 (2)
이 표현의 미분을 0으로 두면 최적의 이동량이 나옵니다. 다만 대규모 모델에서는 전체 헤시안을 계산하는 비용이 큽니다. L-BFGS 같은 방법은 이를 근사해 비용의 일부만으로 대부분의 이점을 얻습니다.
활성화 함수 근사
일부 활성화 함수는 계산 비용이 큽니다. 테일러 급수는 대부분의 목적에 충분히 정확한 저비용 대안을 제공합니다.
시그모이드 함수 σ(x) = 1 / (1 + e⁻ˣ)는 지수함수 계산이 필요해 비용이 큽니다. x = 0 근처에서의 테일러 전개는 다음과 같습니다.

근사에서의 테일러 급수
엣지 디바이스나 FPGA 같은 하드웨어 제약 환경에서는 이런 다항식 근사가 정확한 계산을 소수의 곱셈-덧셈 연산으로 대체할 수 있습니다.
GELU는 BERT와 GPT 같은 트랜스포머 모델에서 사용되며, 정확한 형태가 닫힌형 해가 없는 적분을 포함하므로 종종 오차 함수 erf(x)의 테일러 기반 근사로 구현됩니다.
XGBoost와 2차 최적화
XGBoost는 가장 널리 쓰이는 그래디언트 부스팅 라이브러리 중 하나로, 각 새로운 트리를 맞출 때 손실 함수의 2차 테일러 전개를 사용합니다.
각 부스팅 단계에서 XGBoost는 손실을 다음처럼 근사합니다.

XGBoost 손실 근사
여기서 g_i는 1차 그래디언트이고, h_i는 현재 예측에 대한 손실의 2차 그래디언트(헤시안)입니다. 두 항을 모두 사용하면 XGBoost는 1차 방법보다 더 빠르고 정확하게 트리를 맞출 수 있으며, 이것이 표 형식 데이터에서 좋은 성능을 보이는 큰 이유입니다.
도전 과제와 한계
테일러 급수를 데이터 과학 전반에 사용할 수 있다고 해서, 보이는 모든 문제에 두루 쓰는 만능망치라는 뜻은 아닙니다. 몇 가지는 잘못될 수 있습니다.
-
근사 오차의 누적: 심층 네트워크에서는 많은 연산이 연쇄됩니다. 한 층에서의 작은 테일러 근사 오차가 층을 거치며 누적되어 학습 안정성에 영향을 줄 수 있습니다
-
수렴 반지름의 중요성: 테일러 근사는 전개점 근처에서만 신뢰할 수 있습니다. 추론 시 분포 밖 데이터처럼, 입력이 근사를 구축했던 지점에서 멀어지면 근사가 무너질 수 있습니다
-
고차원 헤시안의 비용: 2차 방법은 강력하지만 확장성이 떨어집니다. 매개변수가
n개인 모델의 헤시안은n × n행렬입니다. 수백만 개 매개변수를 가진 모델에서 그 행렬을 저장하고 역행렬을 구하는 것은 근사 없이는 비현실적입니다.
이러한 절충을 이해하면, 테일러 기반 접근이 가치 있는 때와 더 간단한 1차 방법이면 충분한 때를 구분할 수 있습니다.
잘 알려진 테일러 급수
수학, 물리학, 머신 러닝 전반에 자주 등장하는 테일러 급수가 몇 가지 있습니다. 데이터 과학에 진지하다면 알아둘 가치가 있는 것들입니다.
지수 함수
지수 함수 eˣ는 모든 도함수가 eˣ 자체이므로, 유도하기 가장 쉬운 테일러 급수입니다. a = 0에서의 계수는 모두 1입니다.

지수 함수
이 급수는 모든 x에 대해 수렴하므로 신뢰하기 쉽고 다루기 좋습니다. 분류 모델에서 사용하는 시그모이드와 소프트맥스의 토대이기도 합니다.
사인 함수
사인 함수는 홀수 차 항만 포함합니다. sin(x)가 홀함수, 즉 sin(-x) = -sin(x)이기 때문입니다.

사인 함수
eˣ와 마찬가지로 모든 x에 대해 수렴합니다. 부호가 번갈아 나타나는 것은 sin(x)의 도함수가 cos(x), -sin(x), -cos(x), 다시 sin(x)로 순환하기 때문입니다.
코사인 함수
코사인은 사인의 짝수 대응으로, 짝수 차 항만 포함합니다.

코사인 함수
사인과 코사인 급수를 함께 보면 서로 보완적임을 알 수 있습니다. 이 관계가 오일러의 유명한 항등식 eⁱˣ = cos(x) + i·sin(x)으로 이어집니다.
자연로그
자연로그 ln(1 + x)의 테일러 급수는 x = 0을 중심으로 다음과 같습니다.

자연로그 함수
앞선 세 가지와 달리 이 급수는 -1 < x <= 1에서만 수렴합니다. x가 그 범위를 벗어나면 급수는 발산합니다. 이는 로그 확률이 유효 범위에 있어야 하는 교차 엔트로피 손실에서 중요한 이슈입니다.
등비급수
등비급수는 수학에서 가장 오래되고 널리 쓰이는 결과 중 하나입니다.

등비급수
|x| < 1에서만 수렴합니다. 많은 다른 테일러 급수를 유도하는 출발점이며, 확률론, 신호 처리, 할인된 미래 가치를 합산하는 모든 곳에서 등장합니다.
퀵 레퍼런스
벽에 붙여둘 수 있는, 손에 잡히는 인쇄물을 찾고 계시다면 준비해 두었습니다.

테일러 급수 퀵 레퍼런스
이 다섯 가지 급수만 알아도 데이터 과학과 머신 러닝에서 마주치는 대부분의 경우를 커버할 수 있습니다.
테일러 급수 vs. 관련된 다른 급수
테일러, 푸리에, 맥클로린 급수는 모두 함수를 근사하지만, 서로 다른 문제를 풀고 서로 다른 맥락에서 최적으로 작동합니다.
테일러 급수 vs. 푸리에 급수
테일러와 푸리에 급수는 모두 함수를 무한합으로 표현하지만, 접근 방식은 완전히 다릅니다.
테일러 급수는 다항식, 즉 (x - a)의 거듭제곱으로 함수를 구성합니다. 한 점을 확대해 그 점 근처의 도함수를 통해 함수의 국소적 거동을 포착합니다. 결과적으로 중심점 a 근처에서 정확하지만, 멀어질수록 정확도가 떨어집니다.
푸리에 급수는 사인과 코사인을 빌딩 블록으로 사용합니다.

푸리에 급수
한 점에서의 국소적 거동을 포착하는 대신, 푸리에 급수는 전체 구간에 걸친 전역적인 주기적 거동을 포착합니다. 반복되는 함수, 예를 들어 오디오 신호, 계절성 패턴, 진동하는 모든 것에 적합합니다.
두 방법을 나란히 비교하면 다음과 같습니다.

테일러 vs. 푸리에 비교
푸리에 급수는 신호 처리와 시계열 분석에서 널리 쓰입니다. 스펙트럼 분석, 주파수 분해, 그리고 주의를 푸리에 변환으로 대체한 FNet 같은 일부 신경망 아키텍처에서도요.
표 형식 데이터, 이미지, 최적화를 다룬다면 테일러 급수가 더 관련성이 큽니다. 오디오, 시계열, 주기적 구조가 있는 무언가를 다룬다면 푸리에 급수가 더 적합합니다.
테일러 급수 vs. 맥클로린 급수
이건 간단합니다. 맥클로린 급수는 a = 0에서 중심을 잡은 테일러 급수일 뿐입니다.
일반적인 테일러 급수 공식은 다음과 같습니다.

맥클로린 급수
a = 0으로 두면 다음을 얻습니다.

a = 0에서의 맥클로린 급수
콜린 맥클로린이 자신의 연구에서 이 특수한 경우를 자주 썼기 때문에 별도의 이름을 얻게 되었지만, 수학적으로는 특정 중심점에서의 테일러 급수 그 이상도 이하도 아닙니다.
실제로 우리가 자주 보는 급수들, 예를 들어 eˣ, sin(x), cos(x), ln(1 + x) 등은 대개 맥클로린 급수입니다. 0을 중심으로 잡으면 대수가 단순해지기 때문입니다. 다른 점 근처에서 함수를 근사해야 할 때는 중심점을 a ≠ 0으로 옮겨 일반 테일러 급수를 사용합니다.
결론적으로, 모든 맥클로린 급수는 테일러 급수지만, 모든 테일러 급수가 맥클로린 급수인 것은 아닙니다.
테일러 급수와 선형 모델
처음에는 테일러 급수와 선형 모델이 무관해 보일 수 있지만, 알아둘 만한 연결점이 있습니다. 그것은 1차 테일러 근사에서 시작합니다.
테일러 급수를 첫 항까지만 절단하면 점 a 근처에서의 선형 근사를 얻습니다.

테일러 급수와 선형 모델 (1)
이는 직선입니다. 기울기(f'(a))와 절편(f(a) - f'(a) ⋅ a)을 갖습니다. 익숙하지 않나요? 이는 단순 선형 회귀 모델과 같은 구조입니다.

테일러 급수와 선형 모델 (2)
차이는 각자의 유래입니다. 테일러 근사에서는 기울기와 절편이 한 점에서의 도함수로 결정됩니다. 선형 회귀에서는 예측 오차를 최소화하도록 데이터로부터 추정합니다. 하지만 구조적으로는 같은 일을 합니다.
이 연결이 유용해지는 지점
이는 선형 모델이 어떤 상황에서 잘 작동하고, 어떤 상황에서 실패하는지를 설명합니다.
선형 회귀는 입력과 출력 사이의 관계가 선형이거나 선형으로 취급될 수 있다고 가정합니다. 테일러 급수는 그 가정이 언제 성립하는지 정확히 알려줍니다. 입력이 고정된 한 점 근처에 머물고, 근사하려는 함수가 매끄러울 때입니다. 입력이 그 점에서 멀어지면 선형 근사는 무너집니다. 이것은 강한 비선형 패턴이 있는 데이터에서 선형 회귀가 자주 실패하는 이유와 동일합니다.
일반화 선형 모형(GLM)은 이 연결을 더욱 명확히 드러냅니다.
예를 들어 로지스틱 회귀는 결과의 로그 오즈를 선형 함수로 모형화합니다. 선형 예측자와 출력 확률 사이의 연결은 시그모이드 함수를 거치며, 앞서 보았듯 시그모이드는 0 근처에서 잘 거동하는 테일러 전개를 가집니다.
선형에서 비선형으로
1차 테일러 전개가 선형 모델을 준다는 것을 이해했다면, 다음 단계는 더 많은 항을 포함하는 것입니다. 그러면 다항식 모델이 됩니다.
2차 테일러 전개는 다음을 줍니다.

2차 테일러 급수
이는 제곱항을 가진 2차식, 즉 다항 회귀 모델입니다. 각 추가 테일러 항은 더 높은 차수의 다항식에 해당하며, 이렇게 다항 회귀는 곡선 관계를 포착하도록 선형 회귀를 확장합니다.
따라서 테일러 급수는 회귀에서의 편향-분산 균형을 원칙 있게 생각할 수 있는 방법을 제공합니다. 1차 근사(선형 모델)는 빠르고 해석 가능하지만, 실제 관계가 비선형이면 편향이 큽니다. 고차 근사는 전개점 근처에서 데이터를 더 잘 맞추지만, 항을 추가할수록 과적합 위험이 커집니다.
선형 회귀와 그 유효 범위를 더 깊이 다루고 싶다면 Essentials of Linear Regression in Python 튜토리얼이 좋은 다음 단계입니다. R 사용자라면 Intermediate Regression in R 코스에서 다항 회귀와 모델 진단을 자세히 다룹니다.
결론
테일러 급수는, 한 번 눈에 들어오면 여기저기서 계속 보이게 되는 수학 도구 중 하나입니다.
테일러 급수가 eˣ와 sin(x) 같은 함수를 기본 산술 연산으로 계산하게 해주는 방법, 수렴과 절단 오차가 근사의 정확도를 어떻게 좌우하는지, 그리고 같은 아이디어가 경사 하강법, XGBoost, 최신 머신 러닝의 활성화 함수 근사를 어떻게 뒷받침하는지를 살펴봤습니다.
지수, 사인, 코사인, 로그, 등비 — 이 다섯 가지 잘 알려진 급수는 암기할 가치가 있습니다. 충분히 자주 등장하므로, 보면 바로 알아보는 것만으로도 시간을 절약할 수 있습니다.
여기서 다음 단계는, 이런 수학과 나란히 있는 알고리즘적 사고에 익숙해지는 것입니다. 우리의 Data Structures and Algorithms in Python 코스는 그 기반을 쌓기에 좋습니다. 수학적 아이디어가 어떻게 작동하고 확장 가능한 코드로 번역되는지 이해하는 데 도움이 됩니다.
테일러 급수 FAQ
테일러 급수는 무엇에 쓰이나요?
테일러 급수는 복잡한 함수를 한 점에서의 도함수로 구성한 다항식 항들의 무한합으로 근사합니다. 이를 통해 eˣ나 sin(x) 같은 함수를 기본 산술 연산만으로 계산할 수 있으며, 컴퓨터가 바로 이런 방식으로 평가합니다. 머신 러닝에서는 테일러 급수가 경사 하강법 같은 최적화 알고리즘과 XGBoost 같은 부스팅 방법의 동력이 됩니다.
테일러 급수와 맥클로린 급수의 차이는 무엇인가요?
맥클로린 급수는 a = 0에서 중심을 잡은 테일러 급수일 뿐입니다. 중심점이 0이면 수식이 단순해지므로, eˣ, sin(x), cos(x) 같은 잘 알려진 급수 대부분이 맥클로린 급수입니다. 다른 점 근처에서 함수를 근사해야 한다면 a ≠ 0인 일반 테일러 급수를 사용합니다.
테일러 급수의 수렴 성질은 무엇인가요?
테일러 급수는 항을 추가할수록 부분합이 어떤 고정된 값에 가까워질 때 수렴합니다. 수렴 반지름은 중심점에서 얼마나 떨어진 지점까지 급수가 신뢰할 수 있는지를 알려줍니다. eˣ처럼 모든 x에서 수렴하는 함수도 있고, ln(1 + x)처럼 특정 구간에서만 수렴하는 함수도 있습니다.
테일러 급수는 머신 러닝에 사용할 수 있나요?
네. 경사 하강법은 1차 테일러 근사로 각 업데이트 방향을 결정하며, XGBoost는 각 부스팅 트리를 맞출 때 1차와 2차 테일러 항을 명시적으로 사용합니다. GELU 같은 활성화 함수도 테일러 기반 다항식 근사로 구현됩니다. 대부분의 실무자는 자각하지 못한 채 매일 테일러 급수를 사용합니다.
테일러 급수를 사용할 때의 한계는 무엇인가요?
절단 오차는 x가 중심점에서 멀어질수록 커지므로, a에서 멀리 떨어진 곳에서는 근사의 신뢰도가 낮아집니다. 일부 함수는 제한된 범위에서만 수렴하므로, 그 구간 밖 입력에서는 급수가 완전히 무너집니다. 2차 방법은 더 정확하지만, 전체 헤시안을 계산하는 비용은 대규모 모델에서 매우 큽니다.