Lemma
수학, 거꾸로
도입 · 일상적 한 수

대부분의 식은 어렵다. 그 접선은 쉽다.

“작은 θθ에서 sinθθ\sin θ ≈ θ“라고, “여기 근처에선 선형적으로 자란다”라고, “1차 근사로는”이라고 말할 때마다 우리는 를 하고 있다. 너무 흔해서 의식조차 하지 않는 패턴이다. 진자시계가 그 위에서 돌아가고, 뉴턴 방법이 그 위에 서 있으며, 경사하강법도 마찬가지다. 공학의 대부분은 근사가 통하는 영역에 머무는 규율이다.

아래 위젯에서 a (기준점)와 x (평가점)를 끌어보자. a=0a = 0일 때 sin\sin의 접선은 정확히 y=xy = x — 작은 각 근사, 그림으로. x00에서 멀어지게 끌면 오차가 거리의 제곱으로 자란다.

위젯 — 접선 근사
f(x) — 실제0.7174
근사 — 접선0.8000
오차-0.0826
오차 / (x − a)²-0.129
기준이 a = 0일 때 접선은 y = x — 그 유명한 sin x ≈ x. x를 끌어보면: x = 0.1에서 오차는 0.001 아래; x = 1에서 약 −0.16; x = π/2에서 접선은 π/2 ≈ 1.57이라 하지만 실제값은 1. "오차 / (x − a)²" 칸은 기준 근처에서 거의 상수 — 그게 오차가 편차의 제곱으로 자란다는 규칙, 눈으로 보이는 형태.
흐름
1

왜 근사하는가

세상을 움직이는 함수는 대부분 비선형이다 — 진자의 sinθ\sin θ, 트랜지스터의 지수형 전류, 중력의 1/r21/r², 신경망의 softmax. 닫힌 형태로 풀 수 있는 경우는 거의 없다. 그래서 우리는 통제된 방식으로 정확도를 일부 내준다 — 관심 있는 점을 하나 잡고, 그 점 근처에서 비선형 함수를 가장 가까운 선형 함수로 갈아끼우고, “충분히 가까운” 영역에서만 답이 맞다고 받아들인다.

2

한 점에서의 접선

매끄러운 점 aa에서 함수 ff는 값 f(a)f(a)와 기울기 f(a)f'(a)를 동시에 가진다 (미분 모듈에서 본 그대로). (a,f(a))(a, f(a))를 지나면서 그 기울기를 가지는 유일한 직선이 바로 이다:

L_a(x)  =  f(a)  +  f'(a) · (x − a)

이것이 aa에서의 ff의 선형화다. 원래 함수와 두 가지 면에서 일치한다 — 기준점에서 값이 같고 (La(a)=f(a)L_a(a) = f(a)), 기준점에서 기울기도 같다 (La(a)=f(a)L_a'(a) = f'(a)). 두 조건을 동시에 만족하는 직선은 단 하나뿐이다. 위젯의 갈색 점선이 바로 그 직선이다. f(x)=sinxf(x) = \sin xa=0a = 0에서 선형화하면 L0(x)=0+1(x0)=xL_0(x) = 0 + 1 · (x − 0) = x.

import math

# Linearization of f at a:  L_a(x) = f(a) + f'(a) · (x − a).
# Choose anchor a, compare with the true value over a range of x.
def linearize(f, fprime, a):
    fa, slope = f(a), fprime(a)
    return lambda x: fa + slope * (x - a)

L0 = linearize(math.sin, math.cos, a=0)    # tangent at 0 is y = x
[(round(x, 2), round(math.sin(x), 4), round(L0(x), 4))
 for x in (0.05, 0.2, 0.5, 1.0)]
# → [(0.05, 0.0500, 0.0500),    # < 0.0001 error
#    (0.2,  0.1987, 0.2000),    # 0.001
#    (0.5,  0.4794, 0.5000),    # 0.02
#    (1.0,  0.8415, 1.0000)]    # 0.16  — visibly bad
3

오차는 제곱으로 자란다

매끄러운 함수에서 오차 f(x)La(x)f(x) − L_a(x)는 편차 xax − a이차로 움직인다. 편차를 두 배로 늘리면 오차는 약 네 배가 되고, 절반으로 줄이면 오차는 1/4이 된다. 선형이 아니라 이차다 — 바로 이 점이 선형화를 유용하게 만든다. 기준점에 가까워질수록 격차가 매우 빠르게 좁혀진다.

구체적으로 sin\sin00 근방에서는 선두 오차항이 x3/6−x³/6이다. 그래서 오차/(xa)2\text{오차} / (x − a)^2 비율은 일정하지 않고 xx에 따라 천천히 변한다 — 이 경우엔 삼차 항이 지배한다. 다른 함수들(exe^x, 1+x\sqrt{1 + x}, 1/(1x)1/(1 − x))은 기준점에서 2차 도함수가 0이 아니므로 오차/(xa)2\text{오차} / (x − a)^2 비율이 일정하다. 어느 쪽이든 경험칙은 똑같다 — “작은” 편차에서는 선형 근사가 잘 맞고, “큰” 편차에서는 빠르게 어긋난다.

# Error scales as (x − a)², not as (x − a). Quadratic, not linear.
# Doubling the deviation quadruples the error.
def error_ratio(f, L, a, x):
    return (f(x) - L(x)) / (x - a) ** 2 if x != a else None

[error_ratio(math.sin, L0, 0, x) for x in (0.05, 0.1, 0.2, 0.4, 0.8)]
# → roughly all near −0.166  (≈ −1/6)
# The leading Taylor remainder for sin near 0 is −x³/6, so dividing by
# (x − a)² gives roughly −x/6, drifting slowly with x. The shape "error
# = constant·deviation²" is the dominant term in every linearization;
# all you have to read off is the constant.
4

이게 어디에 나타나나 — 한 도구, 세 필러

선형화는 첫 번째 정직한 거짓말이다 — 굽은 곡선을, 그 부근에서만큼은 진실을 말해 주는 직선으로 갈아끼우는 일. 그 거짓말은 필러마다 다른 이름을 쓰고 등장하지만, 밑바탕의 수학은 똑같다.

물리 : sin θ ≈ θ — 0 근처
ML   : 캘리브레이션 곡선 ≈ 한 구간에서의 접선
금융 : ΔPV ≈ -D · PV · Δr — 현재 금리 근처 (채권 듀레이션)

진자시계는 단 하나의 선형화에 기댄다 — 작은 각도에서 sinθθ\sin θ ≈ θ. 비선형 ODE θ¨=(g/L)sinθ\ddot{θ} = −(g/L) \sin θθ¨=(g/L)θ\ddot{θ} = −(g/L) θ로 바뀌면서 닫힌 사인꼴 해와 일정 주기 진동이 따라 나온다. 17세기 시계 기술 전부가 그 거짓말이 통하는 작은 각 영역 안에서만 작동했고, 페이지의 위젯이 그 영역을 눈에 보이게 만든다.

감쇠 진동자는 그 거짓말을 한 걸음 더 밀어붙인다 — x¨+2γx˙+ω02x=F(t)\ddot{x} + 2γ\dot{x} + ω₀² x = F(t)는 마찰과 외부 구동이 있는 모든 진동계의 작은 진폭 선형화다. 자동차 서스펜션, 건물 흔들림, RLC 회로, 유리잔을 깨는 성대 — 선형화가 통하는 영역 안에서 같은 한 식이 그 모두를 돌린다.

모델 캘리브레이션은 모델이 만든 곡선에 같은 수를 쓴다. 신뢰도 다이어그램의 막대를 클릭하면 위젯이 그 구간 중심에서 캘리브레이션 곡선의 접선을 그린다 — 국소적으로 actual(p)mp+cactual(p) ≈ m·p + c. 기울기와 절편, 이 두 수가 그 구간 근처에서 신뢰도와 빈도 사이의 격차를 설명한다. 기울기 ≈ 1이면 곡선이 그곳에서 대각선과 평행하다 (상수 이동), 기울기 ≠ 1이면 격차가 신뢰도에 따라 달라진다 — 전역 회전(온도 스케일링)으로 바로잡을 수 있다는 뜻이다. 같은 접선 도구로 전혀 다른 일을 하는 셈이다.

현재가치 — 채권 시장의 실무 근사. PV는 금리 rr의 비선형 함수이지만 (erte^{-rt}의 적분), 작은 금리 변동에 대해서는 ΔPVDPVΔr\Delta PV \approx -D · PV · \Delta r로 선형화된다. DD수정 듀레이션. 트레이더는 금리가 한 틱 움직일 때마다 적분을 다시 풀지 않고 듀레이션을 인용한다. 근사는 작은 Δr 이웃에서 정직하고, 그 바깥에서는 같은 페이지의 컨벡시티 보정 (2차 항) 이 듀레이션이 놓치는 부분을 잡는다. 선형화 먼저, 2차 보정 그 다음 — 표준 패턴.

같은 기계가 뉴턴 방법(선형화하고, 직선의 영점을 찾고, 반복)과 경사하강법도 굴린다. 1차 테일러 근사로 L(wηL)L(w)ηL2L(w − η·∇L) ≈ L(w) − η·\|∇L\|²이고, ηη가 충분히 작아 선형화를 믿을 만하면 손실이 줄어든다. 천장을 넘는 순간 선형화는 거짓말이 되고, 그 페이지 위젯에서 η=0.27η = 0.27일 때 보이는 폭발이 정확히 그 경계다. 뉴턴, 경사하강법, 진자, 캘리브레이션, 채권 듀레이션 — 모두 같은 한 스텝을 굴린다 — 접선이 정직한 동안 곡선을 그 접선으로 갈아끼우는 일.

# Newton's method: solve f(x) = 0 by repeatedly linearizing at the
# current guess, then finding where THAT line crosses zero.
def newton(f, fprime, x0, steps=5):
    x = x0
    for _ in range(steps):
        x = x - f(x) / fprime(x)         # the root of the tangent line
    return x

# Fixed point of cos:  solve cos(x) − x = 0 starting near 0.5.
newton(lambda x: math.cos(x) - x,
       lambda x: -math.sin(x) - 1,
       x0=0.5)
# → 0.7390851332151607     (the Dottie number)
#
# Each Newton step IS a linearization step. Gradient descent is the
# same recipe applied to ∇L instead of f, with a fixed-size step (η)
# instead of the exact root of the tangent.
5

함정 — 어디까지나 '거의'

모든 선형화는 기준점 근방을 벗어나는 순간 틀린다. 이 도구를 제대로 쓴다는 건 곧 그 근방의 경계를 재고 지키는 규율이다.

  • “선형화가 잘 된다”는 슬로건이 아니라, 선형 답이 충분히 좋게 통하는 편차의 한계를 명시할 것.
  • 다음 차수 항을 계산하거나 어림해서 그 항이 충분히 작은지(또는 부호가 해를 끼치지 않는지) 확인할 것.
  • 설계 단계에서 영역 에 머물 것 — 시계 탈진기는 호를 작게 잡고, ML 훈련 스케줄은 학습률을 줄이며, 제어 시스템은 동작점 근처를 벗어나지 않고, 회로 설계자는 트랜지스터를 선형 영역에 바이어스한다. 머물 수 없을 땐 더 높은 차수의 방법이나 비선형 해법으로 넘어가고, 그 비용을 감수할 것.

“거짓말이 통하는 영역”이라는 표현은 진자시계 페이지가 끝맺는 바로 그 문장이다. 우연이 아니라, 이 모듈이 이름 붙인 패턴이다. 모든 응용 수학 분야에는 그런 영역의 목록이 따로 있고, 어디까지 기댈 수 있는지 정확히 아는 사람들이 그 목록을 관리한다.

접선은 기울기까지는 정확히 맞춰 주는 가장 값싼 답이다. 선형화는 어려운 문제를 쉬운 문제로 바꾼다 — 어떤 영역 안에서는 맞고, 그 밖에서는 언제나 틀린다. 규율은 그 영역에 있다.

exercises · 손으로 풀기
1작은 각 손계산계산기 없이

f(x)=sinxf(x) = \sin xa=0a = 0에서 선형화하라. 그것으로 sin0.1\sin 0.1을 어림하라. 실제값 (소수 3자리)은 0.09980.0998. 오차는? 그것이 xx의 약 몇 분의 1인가?

20에서의 지수함수계산기 없이

f(x)=exf(x) = e^xa=0a = 0에서 선형화하라. 그것으로 e0.2e^0.2를 어림하라. 실제값은 약 1.22141.2214다. e0.5e^0.5 (실제값 1.64871.6487)와도 비교해 보자. 편차가 커질수록 상대 오차는 어떻게 변하는가?

3뉴턴 스텝 = 선형화

어떤 비선형 ff에 대해 f(x)=0f(x) = 0을 풀고 싶다고 하자. 현재 추측이 xnx_n이다. xnx_n에서 ff를 선형화한 뒤 그 직선이 0과 만나는 점을 다음 추측으로 삼으면, 다음 추측이 x(n+1)=xnf(xn)/f(xn)x_(n+1) = x_n − f(x_n) / f'(x_n)이 됨을 보여라. 이 반복이 깨지는 경우는 언제인가?

4왜 경사하강법 η에 천장이 있나

손실의 1차 테일러 근사 L(w+d)L(w)+L(w)dL(w + d) ≈ L(w) + ∇L(w) · dd\|d\|가 작을 때만 정직하다. 경사하강법은 d=ηLd = −η · ∇L을 고른다. 2차 항을 활용해, /ml/gradient-descent의 토이 이차 손실에서 ηη의 천장이 2/L(w)2/L''(w_)에 있는 이유를 논증하라.

용어집 · 이 페이지에서 쓰임 · 2
linearization·선형화
비선형 함수를 어떤 점 근처에서 그 점의 접선으로 바꾸는 것 — 테일러 전개의 상수항과 1차 도함수항만 남기기. `x = 0` 근처에서 `sin x ≈ x`, `cos x ≈ 1 − x²/2`, `e^x ≈ 1 + x`. `|x|`가 작을 때 근사가 매우 좋고, `|x|`가 커질수록 어긋난다. 기계식 시계, 회로 해석, 제어 시스템, 대부분의 "공학 방정식"은 훨씬 어려운 비선형 식의 선형화 버전 — 시스템의 모든 것이 작은 편차 영역에 머물도록 *설계*된 영역에서만 유효하다.
tangent line·접선
곡선과 한 점에서만 닿고 그 점에서 곡선의 방향과 *일치*하는 직선. 접점에서의 기울기가 그 점에서의 함수의 미분값: `m_접선 = f'(a)`. 두 교점이 합쳐질 때 할선이 도달하는 극한 — 곡선의 *순간 방향*을 직선으로 가시화한 것. 삼각함수의 *탄젠트*와는 다른 개념 (같은 단어).