CS231n-2017 第6讲 训练网络(上)

21 篇文章 1 订阅
16 篇文章 4 订阅

训练网络模型所需要做的功课有:

  • 训练过程能够正常启动前置条件:设定激活函数、数据预处理、权重系数初始化、网络正则化策略、梯度校验等。
  • 训练过程动态监测:学习曲线监测、参数更新、超参数的优化选择。
  • 模型评估与改进:模型集成。

本节与下一节将描述如上内容。

一. 激活函数

1. sigmoid

表达式为 σ ( x ) = 1 / ( 1 + e − x ) \sigma(x) = 1/(1+e^{-x}) σ(x)=1/(1+ex),图像如下:

图 1. sigmoid函数
使用该函数做激活函数的缺点:
  • 在正负饱和区域,其函数导数趋于0。导致在这些区域,利用梯度下降法不能有效更新参数。( ∂ L / ∂ W \partial L/\partial W L/W的表达中,有一项系数是激活函数的导数。)
  • sigmoid的输出都是正数,不是0-中心的。 ∂ L / ∂ W \partial L/\partial W L/W表达为一个列向量乘上行向量。其中列向量为前一层传递下来的误差项,行向量为本层激活函数的输出值。若激活函数输出一直为正,则 W W W的更新方向只能是全方向的某一部分。一个参数空间为2维的示例如下:
图 2. 二维参数空间中,sigmoid函数使得梯度方向只能取得全方向中的一半
2. tanh函数

超正切函数,表达式为 ( 1 − e − x ) / ( 1 + e − x ) (1-e^{-x})/(1+e^{-x}) (1ex)/(1+ex),图像如下:

图 3. tanh函数

缺点:在正负饱和区域,出现梯度消失现象。

3. ReLU函数

Rectified Linear Unit,表达为 max ⁡ ( 0 , x ) \max(0, x) max(0,x),图像如下:

图 3. ReLU函数

缺点:

  • 非0-中心的。
  • 在负值区域,ReLU会死掉。
4. LReLU函数和PReLU

Leaky ReLU,表达为 max ⁡ ( 0.01 x , x ) \max(0.01x, x) max(0.01x,x)Parametric ReLU,表达为 max ⁡ ( α x , x ) \max(\alpha x, x) max(αx,x),其中 α \alpha α是进行学习的。图像如下:

图 4. LReLU和PReLU函数
5. ELU函数

Exponential Linear Unit,表达式为:

f ( x ) = { x i f x > 0 α ( e x − 1 ) i f x ≤ 0 f(x) = \left\{ \begin{array}{ll} x & if \quad x > 0 \\ \alpha(e^x-1) & if \quad x \le 0 \end{array} \right. f(x)={xα(ex1)ifx>0ifx0
图像为:

图 5. ELU函数
6. Maxout函数

表达式为 max ⁡ ( W 1 T x 1 + b 1 ,   W 2 T x 2 + b 2 ) \max(W_1^Tx_1+b_1,\, W_2^Tx_2+b_2) max(W1Tx1+b1,W2Tx2+b2),缺点就是使得参数数量翻倍。

激活函数选择策略

  • 推荐使用ReLU
  • 若死掉的ReLU太多,可以尝试LReLUMaxoutELU等。
  • 可以尝试tanh,但应该没太大用处。
  • 不要使用sigmoid

二. 数据预处理

对一般应用场景而言,一般做的预处理包含:

  • 0均值,方差归一化。
  • PCA降维。
  • 白化,使得各个维度的特征能起到相同的作用。
    对于图像而言,一般只做0均值化。因为图像数据不同通道之间不会相差太大。

下图说明了0均值化的必要性。在未做0均值化时,分界线稍微摆动一下,就有可能出现错误分类。而0均值化后,所能容忍的正确分类的参数范围会变大。

图 6. 0均值化的必要性

另外,如果某层输入值的均值不为0,那么该层的系数矩阵稍微改变一下,就有可能导致输出值的巨大变动,给学习带来困难。

三. 参数初始化

1. 不恰当初始化的后果
  • 若所有权值初始化为0,那么所有的神经元输出相同。考虑 ∂ L / ∂ W \partial L/\partial W L/W的表达,可知所有的参数(除了第一层)都将以同样的方式进行更新。
  • 若权值初始化为小的随机数,使用tanh做激活函数:对于深层网络是有问题的。由于一层一层 W W W的作用,会导致线性加权后的结果集中分布在0值附近,从而导致梯度消失现象。
图 7. 10层网络,考察每层输出的分布:第一层表现为高斯分布。但后面若干层,分布都将集中于0附近,而方差会越来越小。
  • 若权值初始化较大:激活函数会处于饱和状态,同样会导致梯度消失。
2. 正确的初始化姿势
  • Xavier Initialization:基本思想是要求输出的方差等于输入的方差。但有个前提:需要处于激活函数的线性区间。
  • 对于ReLU,上述前提不成立,何恺明于2015年提出了针对这一问题的初始化方法:引入一个参数调整因子2。

四. 批量归一化

  • 通常添加在全连接层/卷积层和非线性激活层之间,作用就是强制使得输出的数据具有0均值1方差的分布。
  • 可以理解为一种正则化手段。对于训练数据,每个样本x的归一化参数依赖于其所在的批次,即批量归一化对训练数据而言是加入了一种随机化的扰动。对于测试数据,其归一化参数是在训练过程中累积平均得到,因此,把这种随机性给去除了。这符合正则化的思想。
  • 好处:可以使用更大的学习速率;去除了训练效果对参数初始化的强依赖性。

五. 确定网络是否能够正常运行

  • 检查损失函数的取值是否在合理范围内。
  • 在小数据集上,关闭正则化,确保网络能够完美拟合数据。
  • 选择合适的学习速率。

六. 超参数选取

  • 使用交叉验证策略。
  • 最好在对数空间上进行查找。
  • 搜索时注意参数范围的粗细粒度。
  • 对于多个超参数,除了均匀分布的网格搜索策略,可以尝试随机化搜索策略,这样可以获取单个超参数在更为详细的数据点上的效果。
  • 进行搜索优化的超参数不要超过4个,否则搜索空间会过大。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值