极限
极限描述的是:一个量越来越接近某个值时,另一个量会越来越接近什么值。
导数
一个量在某一点变换有多快:
常用求导法则:
- 常数:
- 和差:
- 乘积:
- 商:
- 幂:
- 链式:
记熟这几个就够了:,,,
链式法则
外层函数求导之后,别忘了乘上内层的导数。
比如 :外层是 ,内层是 ,外层求导得 ,内层求导得 2,相乘得到 。
这就是反向传播的全部数学内容:把一个巨大的复合函数拆成一串简单函数,每步只做局部求导,再把结果从后往前传。
写成连乘的形式,设 ,每一步都是 ,则
链式法则的向量版本是雅可比矩阵:,也就是输入的每个分量对输出的每个分量的影响。一层网络的前向传播是 ,它的雅可比就是 W 本身。
泰勒展开
泰勒展开把函数在某一点上「摊平」成多项式:
实际只用前几项做近似,最常用的是二阶:
所以一个函数在一点附近其实就是个二次曲面。牛顿法就建在这上面:让二次近似的导数等于 0,解出下一步的位置:
和线性代数里的「对空间做线性近似」是同一个想法,区别只是这里近似的是函数值,那里近似的是映射本身。
积分
积分:把无数个非常微小的量累加起来,得到一个总量。
定积分:计算累计总量
不定积分:寻找原函数
寻找原函数 使得
微积分基本定理:求导和积分互为逆运算。
于是:
- 定积分只要拿原函数在两端相减,不用真去算出不定积分再代入
- 求不定积分,就是找一个导数等于 f 的函数
- 导数描述局部变化率,积分把它累加回总量;局部和整体其实是同一件事的两种视角
多重积分
多重积分把普通积分从一维区间推广到二维、三维或更高维区间。
- 一重积分:沿线累加
- 二重积分:在面上累加
- 三重积分:在空间中累加
偏导数与全微分
多元函数求导的办法:对某一个变量求导,其他变量全部当成常数固定住,这就是偏导数。
把所有偏导数打包在一起,就是全微分,也就是函数在一小点附近的线性近似:
和一元的情况完全平行:一元里是 ,多元里就是各偏导数求和。同理,固定的 换成矩阵就是雅可比。
梯度
把一个标量函数的所有偏导数打包成一个向量,就是梯度:
梯度有两个关键性质:
- 的方向永远是函数上升最快的方向, 就是下降最快的方向
- 正好是 f 沿方向 v 的变化率
第 2 条正是线性代数中内积的用处:变化率由内积给出,所以梯度必然垂直于函数的等高线——沿着等高线走,变化率是 0。
梯度下降就是沿最陡的下坡方向反复走一步:
其中 是学习率。因为负梯度垂直于等高线,所以这个过程本质上是一路垂直于等高线往下掉,直到落在谷底。
这就是所有机器学习训练的骨架:反向传播负责把梯度算出来,优化器负责沿着梯度往下走。