AI算法工程师 | 04人工智能基础-高等数学知识强化(二)一元函数微分学
导数是微积分中最核心的概念。尤其是对于机器学习和深度学习来说,更多的会使用到微积分中的微分,导数更是微积分尤其是微分中的支柱了。
文章目录
数学知识 之 一元函数微分学
一、导数的概念
导数是微积分中最核心的概念。尤其是对于机器学习和深度学习来说,更多的会使用到微积分中的微分,导数更是微积分尤其是微分中的支柱了。
导数的定义
设 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数学公式编辑器
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)