文章目录
数学知识 之 一元函数微分学
一、导数的概念
导数是微积分中最核心的概念。尤其是对于机器学习和深度学习来说,更多的会使用到微积分中的微分,导数更是微积分尤其是微分中的支柱了。
导数的定义
设
y
=
f
(
x
)
y = f(x)
y=f(x) 定义在区间
I
I
I 上,让自变量在
x
=
x
0
x = x_0
x=x0 处增加一个增量
△
x
\bigtriangleup x
△x (可正可负),其中
x
0
∈
I
x_{0} \in I
x0∈I,
x
0
+
△
x
∈
I
x_{0}+\bigtriangleup x\in I
x0+△x∈I,则可得函数的增量
△
y
=
f
(
x
0
+
△
x
)
\bigtriangleup y=f(x_0+\bigtriangleup x)
△y=f(x0+△x)。若函数增量
△
y
\bigtriangleup y
△y 与自变量增量
△
x
\bigtriangleup x
△x 的比值在
△
x
→
0
\bigtriangleup x \to 0
△x→0 时的极限存在,即
lim
△
x
→
0
△
y
△
x
\lim_{\bigtriangleup x \to 0} \frac{\bigtriangleup y}{\bigtriangleup x}
lim△x→0△x△y 存在,则称函数
y
=
f
(
x
)
y=f(x)
y=f(x) 在点
x
0
x_0
x0 处可导,并称这个极限为
y
=
f
(
x
)
y = f(x)
y=f(x) 在点
x
0
x_0
x0 处的导数,记作
f
′
(
x
0
)
f{}'\left ( x_0 \right )
f′(x0),即:
f
′
(
x
0
)
=
lim
△
x
→
0
△
y
△
x
=
lim
△
x
→
0
f
(
x
0
+
△
x
)
−
f
(
x
0
)
△
x
f{}'\left ( x_0 \right )=\lim_{\bigtriangleup x \to 0} \frac{\bigtriangleup y}{\bigtriangleup x}=\lim_{\bigtriangleup x \to 0} \frac{f(x_{0}+\bigtriangleup x)-f(x_0)}{\bigtriangleup x}
f′(x0)=△x→0lim△x△y=△x→0lim△xf(x0+△x)−f(x0)
小贴士:极限 limit 认为是高等数学和初等数学的分界线
左导数和右导数
△ x → 0 \bigtriangleup x \to 0 △x→0 (趋近于 0)有两个方向,从左边趋向于 0 是左导数,反之是右导数
可导函数
函数 f ( x ) f(x) f(x) 在点 x 0 x_0 x0 处可导的充分必要条件是其左导数与右导数均存在且相等
示例:绝对值函数、Relu 函数在
x
0
=
0
x_0=0
x0=0 处均不可导
二、导数的几何意义与物理意义
几何意义:切线的斜率
物理意义:可以有很多,比如 瞬时速度
三、求导公式
根据 ① 基本函数、② 四则运算、③ 复合函数,这三种公式组合就可以求出任何公式的导数值
基本函数
函数 | 公式 |
---|---|
幂函数 | ( x a ) ′ = a x a − 1 {(x^{a})}'=ax^{a-1} (xa)′=axa−1 |
指数函数 | ( e x ) ′ = e x {(e^{x})}'=e^{x} (ex)′=ex |
以 a 为底的指数函数 | ( a x ) ′ = a x l n a {(a^{x})}'=a^{x}lna (ax)′=axlna ,注: l n a = l o g e a lna=log_{e}a lna=logea |
对数函数 | ( l n x ) ′ = 1 x {(lnx)}'=\frac{1}{x} (lnx)′=x1 |
以任意为底的对数函数 | ( l o g a x ) ′ = ( l n x l n a ) ′ = 1 l n a ⋅ 1 x {(log_{a}x)}'={(\frac{lnx}{lna})}'=\frac{1}{lna}\cdot \frac{1}{x} (logax)′=(lnalnx)′=lna1⋅x1 |
说明:
- 某函数求导得到的结果称为导函数,用来求导的该函数称为原函数
- 导数的公式都可以根据下面的式子推导出来:
lim n → + ∞ ( 1 + 1 n ) n = e , lim x → 0 s i n x x = 1 \lim_{n \to +\infty }(1 + \frac{1}{n})^{n}=e , \lim_{x \to 0} \frac{sinx}{x}=1 n→+∞lim(1+n1)n=e,x→0limxsinx=1 - 无需了解三角函数的导数。因为机器学习中很多时候要求是单调的函数,最好不要周期性函数,而三角函数是周期性函数且很少被用到。
四则运算法则
导数运算 | 公式 |
---|---|
加减法 | ( f ( x ) + g ( x ) ) ′ = f ′ ( x ) + g ′ ( x ) {(f(x)+g(x))}'=f{}'\left ( x\right )+g{}'\left ( x\right ) (f(x)+g(x))′=f′(x)+g′(x) |
乘法 | ( f ( x ) g ( x ) ) ′ = f ′ ( x ) g ( x ) + f ( x ) g ′ ( x ) {(f(x)g(x))}'=f{}'\left ( x\right )g(x)+f(x)g{}'\left ( x\right ) (f(x)g(x))′=f′(x)g(x)+f(x)g′(x) |
除法 | [ f ( x ) g ( x ) ] ′ = f ′ ( x ) g ( x ) − f ( x ) g ′ ( x ) g 2 ( x ) {\left [ \frac{f(x)}{g(x)} \right ]}'=\frac{f{}'\left ( x\right )g(x)-f(x)g{}'\left ( x\right )}{g^{2}(x)} [g(x)f(x)]′=g2(x)f′(x)g(x)−f(x)g′(x) |
复合函数法则(链式求导)
(
f
(
g
(
x
)
)
′
=
f
′
(
g
)
⋅
g
′
(
x
)
{(f(g(x))}'=f{}'\left ( g\right )\cdot g{}'\left ( x\right )
(f(g(x))′=f′(g)⋅g′(x)
复合函数的求导 —— 相当于剥洋葱,一层层将其剥开
示例:
- 对
f
(
x
)
=
l
o
g
(
1
+
x
2
+
e
2
x
)
f(x)=log(1+x^{2}+e^{2x})
f(x)=log(1+x2+e2x) 求导:
f ′ ( x ) = l o g ( 1 + x 2 + e 2 x ) ′ = 1 1 + x 2 + e 2 x × ( 1 + x 2 + e 2 x ) ′ = 0 + 2 x + ( e 2 x ) ′ 1 + x 2 + e 2 x = 0 + 2 x + e 2 x ⋅ ( 2 x ) ′ 1 + x 2 + e 2 x = 2 ( x + e 2 x ) 1 + x 2 + e 2 x {f}'(x)={log(1+x^{2}+e^{2x})}'=\frac{1}{1+x^{2}+e^{2x}}\times {(1+x^{2}+e^{2x})}' =\frac{0+2x+{(e^{2x})}'}{1+x^{2}+e^{2x}} =\frac{0+2x+e^{2x}\cdot {(2x)}'}{1+x^{2}+e^{2x}} =\frac{2(x+e^{2x})}{1+x^{2}+e^{2x}} f′(x)=log(1+x2+e2x)′=1+x2+e2x1×(1+x2+e2x)′=1+x2+e2x0+2x+(e2x)′=1+x2+e2x0+2x+e2x⋅(2x)′=1+x2+e2x2(x+e2x)
以上求导中,用到的公式或法则:① ( f ( g ( x ) ) ′ = f ′ ( g ) ⋅ g ′ ( x ) {(f(g(x))}'=f{}'\left ( g\right )\cdot g{}'\left ( x\right ) (f(g(x))′=f′(g)⋅g′(x); ② ( e x ) ′ = e x {(e^{x})}'=e^{x} (ex)′=ex; ③ ( l o g x ) ′ = 1 x {(logx)}'=\frac{1}{x} (logx)′=x1; ④ ( a + b + c ) ′ = a ′ + b ′ + c ′ {(a+b+c)}'=a'+b'+c' (a+b+c)′=a′+b′+c′
四、导数的用途
用途一:求极值,往往设导数为 0,这里函数的导函数形式肯定得求
用途二:神经网络里面激活函数会用到,其实还是求导数为 0 的情况,只不过是复合函数形式
- 比如:在 Back propagation 反向传播中,需要用到激活函数(如sigmoid函数、tanh函数)的导函数形式,即需要求导
- sigmoid函数
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x)=\frac{1}{1+e^{-x}}
σ(x)=1+e−x1:常被用作神经网络的激活函数,将变量映射到0~1之间
s i g m o i d : σ ′ ( x ) = ( 1 1 + e − x ) ′ = − 1 ( 1 + e − x ) 2 ⋅ ( 1 + e − x ) ′ = − e − x ( 1 + e − x ) 2 ⋅ ( − x ) ′ = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) ( 1 + e − x ) = 1 1 + e − x − 1 ( 1 + e − x ) ( 1 + e − x ) = ( 1 − 1 1 + e − x ) ( 1 1 + e − x ) = [ 1 − σ ( x ) ] ⋅ σ ( x ) sigmoid :\sigma'(x)={(\frac{1}{1+e^{-x}})}'=-\frac{1}{(1+e^{-x})^{2}}\cdot{(1+e^{-x})}' =-\frac{e^{-x}}{(1+e^{-x})^{2}}\cdot{(-x)}' =\frac{e^{-x}}{(1+e^{-x})^{2}} =\frac{1+e^{-x}-1}{(1+e^{-x})(1+e^{-x})} =\frac{1}{1+e^{-x}}-\frac{1}{(1+e^{-x})(1+e^{-x})} =(1-\frac{1}{1+e^{-x}})(\frac{1}{1+e^{-x}}) =[1-\sigma(x)]\cdot \sigma(x) sigmoid:σ′(x)=(1+e−x1)′=−(1+e−x)21⋅(1+e−x)′=−(1+e−x)2e−x⋅(−x)′=(1+e−x)2e−x=(1+e−x)(1+e−x)1+e−x−1=1+e−x1−(1+e−x)(1+e−x)1=(1−1+e−x1)(1+e−x1)=[1−σ(x)]⋅σ(x) - tanh函数
f
(
x
)
=
e
x
−
e
−
x
e
x
+
e
−
x
f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}
f(x)=ex+e−xex−e−x:在 RNN 循环神经网络中用的较多,叫双曲正切函数
t a n h : f ′ ( x ) = ( e x − e − x e x + e − x ) ′ = [ ( e x − e − x ) ( 1 e x + e − x ) ] ′ = ( e x − e − x ) ′ ⋅ ( 1 e x + e − x ) + ( e x − e − x ) ⋅ ( 1 e x + e − x ) ′ = ( e x + e − x e x + e − x ) + ( e x − e − x ) ⋅ [ − 1 ( e x + e − x ) 2 ] ⋅ ( e x + e − x ) ′ = 1 + [ − ( e x − e − x ) ( e x + e − x ) 2 ] ⋅ ( e x − e − x ) = 1 + [ − ( e x − e − x ) 2 ( e x + e − x ) 2 ] = 1 − ( e x − e − x e x + e − x ) 2 = 1 − [ f ( x ) ] 2 tanh :f'(x)={(\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}})}'= \left [ (e^{x}-e^{-x})(\frac{1}{e^{x}+e^{-x}}) \right ]' =(e^{x}-e^{-x})'\cdot(\frac{1}{e^{x}+e^{-x}})+(e^{x}-e^{-x})\cdot(\frac{1}{e^{x}+e^{-x}})' =(\frac{e^{x}+e^{-x}}{e^{x}+e^{-x}})+(e^{x}-e^{-x})\cdot \left [-\frac{1}{(e^{x}+e^{-x})^{2}}\right ]\cdot({e^{x}+e^{-x}})' =1+\left [-\frac{(e^{x}-e^{-x})}{(e^{x}+e^{-x})^{2}}\right ]\cdot({e^{x}-e^{-x}}) =1+\left [-\frac{(e^{x}-e^{-x})^{2}}{(e^{x}+e^{-x})^{2}}\right ] =1-(\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}})^{2} =1-[f(x)]^{2} tanh:f′(x)=(ex+e−xex−e−x)′=[(ex−e−x)(ex+e−x1)]′=(ex−e−x)′⋅(ex+e−x1)+(ex−e−x)⋅(ex+e−x1)′=(ex+e−xex+e−x)+(ex−e−x)⋅[−(ex+e−x)21]⋅(ex+e−x)′=1+[−(ex+e−x)2(ex−e−x)]⋅(ex−e−x)=1+[−(ex+e−x)2(ex−e−x)2]=1−(ex+e−xex−e−x)2=1−[f(x)]2
五、高阶导数
前面学的是一阶导数,对导数再次求导就是高阶导数,二阶和二阶以上的导数统称为高阶导数。
示例:
- 二阶导数 f ′ ′ ( x ) f''(x) f′′(x),相当于对一阶导数 f ′ ( x ) f'(x) f′(x) 进行再次的求导 ( f ′ ( x ) ) ′ (f'(x))' (f′(x))′
- 如:求 6 x 3 6x^{3} 6x3 的二阶导数,可先求一阶导 ( 6 x 3 ) ′ = 18 x 2 (6x^{3})'=18x^{2} (6x3)′=18x2,之后在一阶导的基础上再次求导可得 ( 6 x 3 ) ′ ′ = ( 18 x 2 ) ′ = 36 x (6x^{3})''=(18x^{2})'=36x (6x3)′′=(18x2)′=36x
- n 阶导数可写成 f n ( x ) f^{n}(x) fn(x)
六、一元函数微分学的几何应用
导数与函数单调性的关系
可以通过函数的一阶导数来判断函数的单调性:
- f ′ ( x ) > 0 ↑ f'(x)>0 ↑ f′(x)>0↑:函数的导数大于 0,函数是单调增的。
- f ′ ( x ) < 0 ↓ f'(x)<0 ↓ f′(x)<0↓:函数的导数小于 0,函数是单调减的。
示例:
极值定理
对于可导函数,在极值位置必然有函数的导数等于0 ,即 f ′ ( x ) = 0 f'(x)=0 f′(x)=0 ,因此导数为人们寻找极值提供了依据。
注意:极值处函数的导数等于 0,这是必要条件,但不是充分条件,因为极值处的导数必然等于 0,但是导数等于 0 处不代表一定是极值。
示例:
一阶可导点是极值点的必要条件:
设 f ( x ) f(x) f(x) 在 x = x 0 x=x_0 x=x0 处可导,且在点 x 0 x_0 x0 处取得极值,则必有 f ′ ( x 0 ) = 0 f'(x_0)=0 f′(x0)=0
导数与函数凹凸性的关系
函数的二阶导数是和函数的凹凸性是有关系的
函数凹凸性:
判别凹凸性:
设函数
f
(
x
)
f(x)
f(x) 在
I
I
I 上二阶可导,
① 若在
I
I
I 上
f
′
′
(
x
)
>
0
f''(x)>0
f′′(x)>0,则
f
(
x
)
f(x)
f(x) 在
I
I
I 上的图形是凹的(或凹弧);
② 若在
I
I
I 上
f
′
′
(
x
)
<
0
f''(x)<0
f′′(x)<0,则
f
(
x
)
f(x)
f(x) 在
I
I
I 上的图形是凸的(或凸弧)。
驻点:
驻点是函数增减性的交替点,一侧增一侧减或一侧减一侧增
驻点处:
f
′
(
x
)
=
0
f'(x)=0
f′(x)=0
拐点:
拐点是连续曲线的凹弧与凸弧的分界线,一侧凹一侧凸或一侧凸一侧凹
二阶可导点是拐点的必要条件:设
f
′
′
(
x
)
f''(x)
f′′(x) 存在,且点
(
x
0
,
f
(
x
0
)
)
(x_0,f(x_0))
(x0,f(x0)) 为曲线上的拐点,则
f
′
′
(
x
)
=
0
f''(x)=0
f′′(x)=0
小贴士:
对于函数的凹凸性,存在着不同的可能相反的说法,具体可见:函数的凹凸性 - 百度百科
七、一元函数泰勒展开
泰勒展开是通过多项式函数来近似一个可导函数
f
(
x
)
f(x)
f(x),在
x
=
x
0
x=x_0
x=x0 处进行泰勒展开,如果函数
f
(
x
)
f(x)
f(x) 是 n 阶可导的。常数项 + 一阶项 + 二阶项… 一直加到 n 的阶乘分之一乘以 n 阶导数。
f
(
x
)
=
f
(
x
0
)
0
!
+
f
′
(
x
0
)
1
!
(
x
−
x
0
)
+
f
′
′
(
x
0
)
2
!
(
x
−
x
0
)
2
+
.
.
.
+
f
(
n
)
(
x
0
)
n
!
(
x
−
x
0
)
n
+
R
n
(
x
)
f(x)=\frac{f(x_0)}{0!}+\frac{f'(x_0)}{1!}(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^{2}+... +\frac{f^{(n)}(x_0)}{n!}(x-x_0)^{n}+R_{n}(x)
f(x)=0!f(x0)+1!f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+...+n!f(n)(x0)(x−x0)n+Rn(x)
泰勒展开在机器学习中,主要用于求函数的极值,很多时候函数 f ( x ) f(x) f(x) 可能会非常复杂,因此会用泰勒展开做一个近似。如:
- 梯度下降法:是做一个近似,只保留泰勒展开一阶项;
- 牛顿法:是保留泰勒展开二阶项,忽略二阶以上的项,用二次函数来进行函数 f ( x ) f(x) f(x)。
小贴士 之 博客插入数学公式的方法
- 参考文章:CSDN写博客怎么插入数学公式
- 推荐工具: LaTeX数学公式编辑器