深度学习基础——正则化和优化

正则化

正则化

所有损害优化的方法都是正则化

提高神经网络泛化能力

  1. L1和L2正则化
  2. 提前终止
  3. Dropout
  4. 数据增强

 

深度学习基础——正则化和优化_第1张图片

深度学习基础——正则化和优化_第2张图片

 

 

L1, L2正则化

L1

w一范数的加和: 会起到产生更加稀疏解的作用

深度学习基础——正则化和优化_第3张图片

 

L2

导数为2W, 正则化就是将权重按照其大小比例缩减, 使权重更加接近原点

深度学习基础——正则化和优化_第4张图片

 

提前终止, Dropout, 数据增强

提前终止

我们使用验证集来测试每一次迭代的参数在验证集上是否最优. 如果验证集上的错误率不再下降, 就停止迭代

Dropout

对一个神经层y=f(Wx+b), 引入一个丢弃函数d(.)使得y=f(Wd(x)+b)

 

M{0,1}是丢弃掩码, 通过以概率为p的伯努利分布随机生成

深度学习基础——正则化和优化_第5张图片

 

意义

  1. 这使得隐层单元都不能依赖于其他隐层单元
  2. 集成学习的解释: 每做一次丢弃, 相当于从原始网格中采样得到一个子网络, 也就是可以达到多个网络集成学习的效果

数据增强

  1. 对图像进行转变引入, 引入噪声等方法来增加数据多样性
  2. 方法: 旋转, 翻转, 缩放, 平移, 加噪声

高维空间凸优化问题

网络优化难点

  1. 结构差异大: 没有通用的优化算法
  2. 非凸优化问题:

     (1)参数初始化

     (2)逃离局部最优化

鞍点,

平摊底部

深度学习基础——正则化和优化_第6张图片

 

可视化神经网络的损失函数

深度学习基础——正则化和优化_第7张图片

 

优化算法: 批量, 学习率, 梯度方向优化

批量

批越小, 效果下降越明显

学习率

 

深度学习基础——正则化和优化_第8张图片

  1. 学习率衰减
  2. Adagrad
  3. Adadelta
  4. RMSprop

梯度方向优化

动量法: 用之前积累动量来替代真正的梯度, 每次迭代的梯度可以看作是加速度

 

 

深度学习基础——正则化和优化_第9张图片

Nesterov加速梯度:

深度学习基础——正则化和优化_第10张图片

 

 

 

梯度截断:将梯度的模限定在一个区间, 当梯度的模小于或大于区间时就进行阶段

(1)按值截断:

(2)按模截断:

Adam

动量法+RMSprop深度学习基础——正则化和优化_第11张图片

 

归一化

归一化方法

批量归一化, 层归一化, 权重归一化, 局部响应归一化

批量归一化计算

L层净输入z, 神经元输入a

均值和方差

结果

 

 

 

超参数优化

超参数

层数, 每层神经元个数, 激活函数, 学习率, 正则化系数, mini-batch大小

优化方法

网格搜索, 随机搜索, 贝叶斯优化, 动态资源分配, 神经架构搜索

网格搜索

  1. 假设总共有K个超参数, 第k个超参数可以取M个值
  2. 如果参数是连续的, 可以将参数离散化, 选择几个”经验”值
  3. 这些超参数可以有m1*m2*m3*...*m4个取值组合

 


一.正则化与正规化

正则化是正规化更加学术的表达(顾名思义,给模型加入某些规则,来达到某些目的。在机器学习和深度学习中是为了防止过拟合)

二.过拟合的解决思路

  • 获取更多样本
  • 丢弃一部分特征,增强模型的容错能力(如PCA降维,Dropout机制)
  •  
  • 保留所有特征,但减少参数的大小。确保所有特征对于预测都有一定贡献,而不是”偏爱“几种特征。

三 .L2正则化(权重衰减:weight decay 即是正则化项前面的系数, 用来调节正则化项的大小)

  • 公式:Cost(w)=Cost(w)+\lambda \sum \omega _i^{2}  (即:原本的损失函数 + 惩罚项(正则化系数 × 各系数平方的和))
  • 简单例子说明:

                   假设:只有两个参数,\omega _1\omega _2。 

                   惩罚项:一个圆\omega _1^{2}+\omega _2^{2}<=C(下图,红色圆圈。cost等值线。)

                   原本的损失函数:一个椭圆(可能)Cost=f(x_1,x_2,\omega _1,\omega _2)     (下图,蓝色圆圈。正则项等值线。)

深度学习基础——正则化和优化_第12张图片        

                               原本的损失函数:黑色的线(梯度下降)

                               正则化后的损失函数:绿色的线(受正则化项约束)        

四.L1正则化

  • 公式:Cost(\omega )=Cost(\omega )+\lambda \sum |\omega _i|
  • 简单的例子:(似上面)

                       假设:只有两个参数

                       正则化约束|\omega _1|+|\omega _2|<=C (一个正方形)

深度学习基础——正则化和优化_第13张图片

l1_regularization = torch.nn.L1Loss(reduction= sum )
loss = ...  # Standard cross-entropy loss
for param in model.parameters():
    loss += torch.sum(torch.abs(param))
loss.backward()

五.选L1还是L2?

L1:

           (1)减少参数数量(轻量化模型——稀疏解:正方形尖角的部分\omega _i=0

           (2)用途:

                1)特征选择:L1会让参数里为0的尽量多,因此可以排除较无用特征,简化问题,降低复杂度。

                2)解释特征:只留下有用的,可以结合模型进行分析

L2:

           (1)减少参数差距(平滑,顺滑)

           (2)使用得更多

六.正则化与先验信息

  • 正则化相当于对模型引入先验分布:缩小解空间,增强泛化能力
  • 最优化问题从贝叶斯看来是贝叶斯最大后验估计:正则化项为先验,损失函数为似然函数。
  • L1:相当于引入拉普拉斯分布

       L2:相当于引入高斯分布

七.正则化系数过大欠拟合,正则化系数过小过拟合。

 


 

八.L0,L1,L2范数

L0范数:\large \left \| w \right \|_0,指向量中非0元素的个数,越小则0元素越多。

L1范数:\large \left \| w \right \|_1,指向量中各元素的绝对值之和。

L2范数:\large \left \| w \right \|_2,指向量中各元素平方和再开方。

(正无穷)范数:指向向量中的最大值。

(负无穷)范数:指向向量中的最小值。

PS:还有矩阵范数。

 

参考:

https://mp.weixin.qq.com/s?__biz=MzU1MTk1MzU0Nw==&mid=2247483832&idx=1&sn=3301642d669d168bfc2bcb5b797130f0&chksm=fb88345cccffbd4a2a929df5517d2ca2f387ce77ea168707abfa3e7c100d34163bcced6e4844&mpshare=1&scene=1&srcid=0817Z6beIXj4uby7aJQNgJbx&sharer_sharetime=1566015684488&sharer_shareid=7ca0cc2a76c8b61bd0545235798d3cdb&pass_ticket=Q4oIRq8%2BMNMNfR9fWUkr4yc98g%2Boas1msGbvnKYPC2m3IlXavQYglx8jmJSIzyhy#rd

 

你可能感兴趣的:(深度学习基础,Pytorch)