Taylor Formula.

本文目录:

  1. 泰勒公式 Taylor Formula
  2. 余项 Remainder
  3. 泰勒公式的应用: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

神经网络中的激活函数能够为网络增加非线性,从而提高网络的表示能力。常用的激活函数,如sigmoidtanh,其计算中引入了指数函数。尽管指数函数具有良好的导数性质,但其计算量较大。可以通过泰勒公式对其进行多项式展开,把非线性函数近似为分段线性函数,以减少计算开销。

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]$,可将SigmoidTanh函数分段表示为:

\[\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$)。