End-to-end training
端到端指的是输入是未经处理的原始数据,输出是最后的结果。一开始,输入端不是直接的原始数据,而是在原始数据中提取的特征。由于图像像素数多、数据维度高,因此通过手工提取图像的关键特征实现降维。但在端到端中,特征可以自己去学习,无需人为干预。
End-to-end的好处——通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输入,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。
正则化
- 正则化的作用
正则化常用于缓解模型过拟合。过拟合发生的原因是模型的容量过大,而正则化可以对模型施加某些限制,从而降低模型的有效容量。 - 正则化策略
- 向模型添加额外的约束,如增加对参数的限制。这是对参数的硬约束。
- 是向目标函数增加额外项。这是对参数的软约束。
- 噪声注入也作为一种正则化方法。
- 注意点
- 在深度学习中,大多数正则化策略都是基于对参数进行正则化。正则化以偏差的增加来换取方差的减少,而一个有效的正则化能显著降低方差,并且不会过度增加偏差。
- 在深度学习的实际应用中,不要因为害怕过拟合而采用一个小模型,推荐采用一个大模型并使用正则化。简单的模型不容易过拟合,但是可能欠拟合。
深度学习中的激活函数
在神经网络中,激活函数的作用通俗上讲就是将多个线性输入转换为非线性的关系。如果不使用激活函数的话,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过激活函数引入非线性因素后,使神经网络的表示能力更强了。
几个常见的激活函数:
-
sigmoid函数
该函数很好的解释了神经元收到刺激后是否被激活,0表示几乎没有被激活,1表示完全被激活。缺点:1)神经网络层数很多时,会产生梯度弥散的问题;2)若输入的是比较大或比较小的数,会产生饱和效应,导致神经元类似于死亡状态。 -
tanh函数
与Sigmoid类似,也存在着梯度弥散或梯度饱和的缺点。 -
ReLU函数
ReLU是修正线性单元(The Rectified Linear Unit)的简称,由于其导数是1或者0,可以解决梯度弥散的问题。相对于sigmoid和tanh激活函数,对ReLU求梯度非常简单,计算也很简单,可以非常大程度地提升随机梯度下降的收敛速度。(因为ReLU是线性的,而sigmoid和tanh是非线性的)。
ReLU的缺点是比较脆弱,随着训练的进行,可能会出现神经元死亡的情况,例如有一个很大的梯度流经ReLU单元后,那权重的更新结果可能是,在此之后任何的数据点都没有办法再激活它了。如果发生这种情况,那么流经神经元的梯度从这一点开始将永远是0。也就是说,ReLU神经元在训练中不可逆地死亡了。 -
Leaky ReLU 函数
避免了梯度的消失,当神经元处于非激活状态时,允许一个非0的梯度存在,这样不会出现梯度消失,收敛速度快。它的缺点跟ReLU类似。 -
ELU 函数
减轻了梯度弥散问题, x > 0 x>0 x>0区间的导数处处为1。 -
Maxout 函数
Maxout是ReLU和Leaky ReLU的一个泛化版本,当 w 1 w_1 w1、 b 1 b_1 b1设置为0时,便转换为ReLU公式。其继承了ReLU的优点,但相比而言,因为有2次线性映射运算,因此计算量翻倍。