概率分布
正态分布
高维正态分布
损失函数
平方损失函数
交叉熵损失函数Cross-Entropy Loss
其中可以看作是真实类别
的似然函数。因此交叉熵损失函数也就是负对数似然函数。
Hinge损失函数
FocalLoss
SmoothL1
考察如下几种损失函数,其中 为预测框与 groud truth 之间 elementwise 的差异:
损失函数对 的导数分别为:
观察 (4),当 增大时
损失对
的导数也增大。这就导致训练初期,预测值与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,训练不稳定。
根据方程 (5), 对
的导数为常数。这就导致训练后期,预测值与 ground truth 差异很小时,
损失对预测值的导数的绝对值仍然为 1,而 learning rate 如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高精度。
最后观察 (6), 在
较小时,对
的梯度也会变小,而在
很大时,对
的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。
完美地避开了
和
损失的缺陷。其函数图像如下:

Logistic回归
常用的处理二分类问题的线性模型。
在Logistic回归中,使用Logistic函数来作为激活函数。标签的后验概率为:
标签的后验概率为:
将公示变换后得到:
其中为样本
为正反例后验概率的比值,成为几率(Odds)
参数学习
给定个训练样本,Logistic回归模型对每个样本
进行预测,输出其标签为1的后验概率,记为
,
由于,样本
的真实条件概率可以表示为:
使用交叉熵损失函数,其风险函数为
Softmax回归
参数学习
Softmax回归模型的风险函数为:
激活函数
Sigmoid型函数
Logistic函数
Tanh函数
Tanh函数可以看作是放大并平移的Logistic函数,其值域是
Hard-Logistic和Hard-Tanh
Logistic函数和Tanh函数都是Sigmoid型函数,具有饱和性,但是计算开销较大。因为这两个函数都是在中间(0附近)近似线性,两端饱和。因此,这两个函数可以通过分段函数来近似。
以Logistic函数为例,其导数为
。Logistic函数在0附近的一阶泰勒展开为:
用分段函数来近似Logistic函数,得到:
ReLU函数
- 优点
- Sigmoid型函数会导致一个非稀疏的神经网络,而ReLU具有很好的稀疏性,大约50%的神经元会处于激活状态。
- 相比于Sigmoid的两端饱和,ReLU函数为左饱和函数,且在
时导数为
,一定程度缓解了梯度消失的问题。
- 缺点
- 非零中心化的,会给后一层网络引入位置偏移,影响梯度下降的效率。
- ReLU神经元训练时容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个ReLU神经元在所有训练数据上都不能被激活,那么这个神经元自身参数的梯度永远是0,在以后的训练过程中永远不能被激活
Leaky ReLU
其中是一个很小的常数,例如
。当
小于
时,带泄露的
也可以写为:
PReLU
带参数的ReLU(Parametric ReLU,PReLU)引入一个可学习的参数,不同神经元可以有不同的参数。对于第i个神经元,其PReLU的定义为:ELU
指数线性单元(Exponential Linear Unit,ELU),是一个近似的零中心化的非线性函数Softplus
可以看作Rectifier函数的平滑版本,导数刚好是Logistic函数,Softplus虽然也具有单侧抑制、宽兴奋边界的特性,却没有稀疏激活性:
Swish
Swish函数是一种自门控(Self-Gated)激活函数,定义为:
其中为Logistic函数,
为可学习的参数或一个固定超参数

Swish函数可 以看作是线性函数和ReLU函数之间的非线性插值函数,其程度由参数β控制。GELU
Maxout
反向传播算法
不失一般性,对第层中的参数
和
计算偏导数。根据链式法则,
其中成为误差项。我们只需要计算三个偏导数,分别为
,
和
。



卷积
卷积层的神经元数量:,一般常用的卷积有三类:
- 窄卷积:步长
- 宽卷积:步长
,两端补零
,卷积后输出长度
- 等宽卷积:
,两端补零
,卷积后输出长度
卷积
给定一个图像和一个滤波器
,其卷积为:
互相关
互相关和卷积的区别仅仅在于卷积核是否进行翻转.因此互相关也可以称为不翻转卷积,表示为:导数
假设,其中
,
可以看出关于
的偏导数为
和
的卷积
残差网络
根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习.因此, 原来的优化问题可以转换为:让非线性单元去近似残差函数
,并用
去逼近

CTC
循环神经网络
参数学习
是长度为
的标签序列,即在每个时刻
,都有一个监督信息
,我们定义时刻
的损失函数为
整个序列的损失函数为
整个序列的损失函数关于参数
的梯度为
随时间的反向传播
计算
因为参数和隐藏层在每个时刻
的净输入
有关,因此第
时刻的损失函数
关于参数
的梯度为:
其中表示”直接”偏导数,即公式
中保持
不变,对
进行求偏导,得到



优化算法
学习率调整
学习率衰减
- 逆时衰减(Inverse Time Decay)
- 指数衰减(Exponential Decay)
,其中
为衰减率
- 自然指数衰减(Natural Exponential Decay)
- 余弦衰减(Cosine Decay)
学习率预热
为了提高训练稳定性,在最初几轮迭代时,采用比较小的学习率。
假设预热的迭代次数为,初始学习率为
,在预热过程中,每次更新的学习率为
周期性学习率调整
为了使得梯度下降法能够逃离鞍点或尖锐最小值,一种经验性的方式是在训练过程中周期性地增大学习率AdaGrad算法
其中,
是第
次迭代时的梯度。
RMSProp
其中为衰减率,一般取值
其中为初始学习率,例如
梯度修正
Momentum
其中为动量因子,通常设为
,
为学习率。
Nesterov
在动量法中,实际的参数更新方向为上一步的参数更新方向
和当前梯度的反方向
的叠加:
其中梯度为点
上的梯度,因此在第二步更新中有些不太合理.更合理的更新方向应该为
上的梯度。
更合理的梯度更新方向为
其中表示损失函数在点
上的偏导数。
Adam
可以看作是动量法和RMSProp算法的结合,不但使用动量作为参数更新方向,而且可以自适应调整学习率。
其中和
分别为两个移动平均的衰减率,通常取值为
。
假设,那么在迭代初期
和
的值会比真实的均值和方差要小。因此需要做修正:
Adam算法的参数更新差值为:参数初始化

