Taylor Formula.
本文目录:
- 泰勒公式 Taylor Formula
- 余项 Remainder
- 泰勒公式的应用:Hard-Sigmoid与Hard-Tanh
1. Taylor Formula
泰勒公式(Taylor Formula)是将一个复杂函数用一个多项式函数进行近似,从而将非线性问题转化为线性问题的方法。
对一个复杂函数$f(x)$,可以用该函数在某点$x_0$的信息描述其附近的取值,信息用该点处的各阶导数表示。从物理学的角度,若复杂函数表示某一运动,当得知运动某一时刻的位置及其一阶导数(速度)、二阶导数(加速度)…,则能够获得该运动的全部信息。
在某点$x_0$处用多项式函数近似复杂函数$f(x)$,称为对函数$f(x)$在$x=x_0$处进行泰勒展开:
\[f(x) = a_0+a_1(x-x_0)+a_2(x-x_0)^2+a_3(x-x_0)^3\\+...+a_n(x-x_0)^n+...\]若$f(x)$在$x=x_0$处高阶可导,则:
\[f(x_0) = a_0\] \[f'(x_0) = a_1\] \[f''(x_0) = 2a_2\] \[f^{(3)}(x_0) = (3\cdot 2)a_3\] \[... \\ f^{(n)}(x_0) = n!a_n\]因此泰勒公式可以表示为:
\[f(x) = f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2}(x-x_0)^2+\frac{f^{(3)}(x_0)}{6}(x-x_0)^3\\+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n+...\]通常选择$x_0=0$作为展开点,则泰勒公式表示成:
\[f(x) = f(0)+f'(0)x+\frac{f''(0)}{2}x^2+\frac{f^{(3)}(0)}{6}x^3\\+...+\frac{f^{(n)}(0)}{n!}x^n+...\]实际计算时,当$n$越大,这种近似越精确,只有$n→∞$时上式才能取等号。
在计算泰勒展开式时可以使用Taylor展开在线计算工具。
2. Remainder
在实际计算泰勒展开时只计算到$n$阶导数,$n+1$阶及之后的导数项被称为余项(remainder),余项会导致实际的近似误差。
\[f(x) = f(x_0)+f'(x_0)(x-x_0)+...+\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n\\+\frac{f^{(n+1)}(x_0)}{(n+1)!}(x-x_0)^{n+1}+\frac{f^{(n+2)}(x_0)}{(n+2)!}(x-x_0)^{n+2}...\](1) Peano’s Remainder
注意到泰勒公式中的每一项是逐渐减小的,若余项(近似误差项)比展开的最后一项还要小,则可以忽略。采用作商的形式计算该比值,称为皮亚诺余项(Peano’s Remainder):
\[R_P(x) = \frac{\frac{f^{(n+1)}(x_0)}{(n+1)!}(x-x_0)^{n+1}+\frac{f^{(n+2)}(x_0)}{(n+2)!}(x-x_0)^{n+2}...}{\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n} \\ = \frac{f^{(n+1)}(x_0)}{(n+1)f^{(n)}(x_0)}(x-x_0)^{}+\frac{f^{(n+2)}(x_0)}{(n+1)(n+2)f^{(n)}(x_0)}(x-x_0)^{2}...\](2) Lagrange’s Remainder
拉格朗日余项(Lagrange’s Remainder)的构造使用了柯西中值定理。柯西中值定理是指对于两个定义在$[x_1,x_2]$上的连续函数$R(x),T(x)$,存在某一点$x’\in[x_1,x_2]$,使得:
\[\frac{R(x_2)-R(x_1)}{T(x_2)-T(x_1)} = \frac{R'(x')}{T'(x')}\]泰勒公式的原始误差项为:
\[R(x)=\frac{f^{(n+1)}(x_0)}{(n+1)!}(x-x_0)^{n+1}+\frac{f^{(n+2)}(x_0)}{(n+2)!}(x-x_0)^{n+2}...\]若令$T(x)=(x-x_0)^{n+1}$,注意到$R(x_0)=T(x_0)=0$,则:
\[\frac{R(x)}{T(x)} = \frac{R(x)-0}{T(x)-0} = \frac{R(x)-R(x_0)}{T(x)-T(x_0)}\]由柯西中值定理,存在某一点$ξ_1\in[x_0,x]$,使得:
\[\frac{R(x)}{T(x)} = \frac{R'(ξ_1)}{T'(ξ_1)} = \frac{R'(ξ_1)}{(n+1)(ξ_1-x_0)^{n}}\]注意到$R’(x_0)=0$,则上式可写作:
\[\frac{R(x)}{T(x)} = \frac{R'(ξ_1)}{(n+1)(ξ_1-x_0)^{n}} = \frac{R'(ξ_1)-R'(x_0)}{(n+1)(ξ_1-x_0)^{n}-(n+1)(x_0-x_0)^{n}}\]由柯西中值定理,存在某一点$ξ_2\in[x_0,ξ_1]$,使得:
\[\frac{R(x)}{T(x)} = \frac{R''(ξ_2)}{n(n+1)(ξ_2-x_0)^{n-1}}\]以此类推,使用$n+1$次柯西中值定理后可以得到:
\[\frac{R(x)}{T(x)} = \frac{R^{(n+1)}(ξ_{n+1})}{(n+1)!}\]因此:
\[R(x) = \frac{R^{(n+1)}(ξ_{n+1})}{(n+1)!}T(x) = \frac{f^{(n+1)}(ξ)}{(n+1)!}(x-x_0)^{n+1}\]3. 泰勒公式的应用:Hard-Sigmoid与Hard-Tanh
神经网络中的激活函数能够为网络增加非线性,从而提高网络的表示能力。常用的激活函数,如sigmoid和tanh,其计算中引入了指数函数。尽管指数函数具有良好的导数性质,但其计算量较大。可以通过泰勒公式对其进行多项式展开,把非线性函数近似为分段线性函数,以减少计算开销。
Sigmoid函数在$x=0$附近的一阶Taylor展开:
\[\text{sigmoid}(x) = \frac{1}{1+e^{-x}} \\≈\text{sigmoid}(0)+\text{sigmoid}'(0)x \\= \text{sigmoid}(0)+\text{sigmoid}(0)(1-\text{sigmoid}(0))x\\ = \frac{1}{2}+ \frac{x}{4}\]Tanh函数在$x=0$附近的一阶Taylor展开:
\[\text{tanh}(x)=2\text{sigmoid}(2x)-1\\≈\text{tanh}(0)+\text{tanh}'(0) x \\ = \text{tanh}(0)+(1-\text{tanh}^2(0)) x \\ =x\]因此在$x=0$附近选择合适的区间$[-n,n]$,可将Sigmoid和Tanh函数分段表示为:
\[\text{sigmoid}(x)≈\begin{cases} 1, & x>n \\ 0, & x<-n \\ \frac{1}{2}+ \frac{x}{2n}, & \text{otherwise.} \end{cases}\] \[\text{tanh}(x)≈\begin{cases} 1, & x>n \\ -1, & x<-n \\ \frac{x}{n}, & \text{otherwise.} \end{cases}\]上式分别称为Hard-Sigmoid($n$取$2$)和Hard-Tanh($n$取$1$)。