有效运作神经网络

一、引言---如何有效的运作神经网络

1.超参数调优、构建数据以及如何确保优化算法快速运行,可以操作的比如下列操作:

  • 配置训练、验证和测试数据集
  • 神经网络分多少层 layers
  • 每层含有多少个隐藏单元 hidden units
  • 学习速率是多少 learning rates
  • 各层采用哪些激活函数 activation functions

2.机器学习中,通常将样本分为以下三部分:

  • 训练集training set
  • 简单交叉验证集/验证集 Hold—out cross validtion/dev set
  • 测试集 test

3.划分数据集的方法

名称 说明
三七分 70%验证集+30%测试集
二八分 训练验证测试60/20/20============传统划分比例(数据集规模相对较小的)
验证集+测试集占数据总量的20%或10%以下 数据集百万量级别,最好的选择:

二、偏差和方差

1.先提概念,如下图所示,只有两个特征的:

1.欠拟合 image.png可以用逻辑回归刻画,偏差有点高的情况
2.适度拟合 image.png 是分类器复杂适中, 数据拟合适度的情况
3.过拟合 image.png如图分类器偏差较高, 数据过度拟合的情况

2.训练集误差和验证集误差

  • 偏差bias
  • 方差variance
  • 训练集误差Train set error
  • 验证集误差Dev set error image.png 其中,假定人类误差:最优误差/基本误差接近0%

通过训练集误差可以判断数据拟合情况,至少对训练数据是这样,可以判断是否有偏差问题,然后查看错误率。当完成训练集训练,开始验证集验证时,可以判断方差是否过高, 以上基于两个假定:人类误差接近0%;训练集和验证集数据来自相同分布。

欠拟合===高偏差

过拟合===高方差(曲线灵活性高,以致拟合了两个错误样本,看起来不自然,高维数据的话就常见了)

3.如何降低方差/减少过拟合???

(1)神经网络的正则化(regularization)

正则化可以减少过拟合

一直训练,选择新的更大网络结构,正则适度,直到低偏差+低方差为止。

如果是高偏差,准备更多训练数据其实没太大作用,它是用来减少方差的。

(减少方差的方法,会出现偏差方差的权衡问题) 若神经网络过度拟合了数据,即存在高方差问题,则对应最直接方法为:正则化。其二方法也可:准备更多数据

a.正则化的分类

  • L2正则化
  • dropout正则化(随机失活)

b.正则化的作用原理

1.逻辑回归中的正则化过程

  • 向量参数W的L2正则化(最常见的正则化类型) image.png 其中,第二行是:L2范数,第一行的最后一项通常省略不计。
  • L1正则化,L1范数如下 image.png

λ是正则化参数(regularization parameter),通常使用验证集或交叉验证来配置这个参数,考虑训练集之间的权衡,把参数正常值设置为较小值,避免过拟合。

λ是一个需要调整的超级参数,python中写为lambd===代替:lambda正则化参数。

2.神经网络中的正则化过程

矩阵范数被称为:弗罗贝尼乌斯范数(Frobenius)

image.png

c.dropout正则化的方法

inverted dropout 反向随机失活 image.png

dropout可以随机删除网络中的神经单元,使得迭代后的网络更小,如下图紫色框,每层保留的概率为keep-prob,为1时,意味着保留所有单元,不在该层使用dropout。很复杂时,可选择较低的数,比如0.5。

image.png

(2)数据扩增(额外生成假训练数据)===========可以作为正则化方法

  • 水平翻转图像,数据量直接增加一倍
  • 随意裁剪图像(把原图旋转并随意放大后裁剪) image.png

(3)Early stopping

运行梯度下降时,可以绘制训练误差/代价函数J的优化过程。

三、配置优化问题的方法

1.训练神经网络,其中一个加速训练的方法就是:归一化输入

  • step1 零均值化(左)
  • step2 归一化方差(右)
image.png image.png

1.原图

image.png

2.零均值化后,如下图,特征x1的方差比特征x2的方差大得多

image.png

3.归一化方差后,如下图,x1和x2的方差都等于1 (它使成本函数更快地进行优化)

image.png

(如果特征值处于相似范围内,归一化就不是很重要了)

2.梯度消失/梯度爆炸=====如何更明智的选择随机初始化权重

(1)概念

当训练深度网络时,(激活函数)导数或坡度有时会变得非常大/小,甚至以指数方式变小, 加大了训练难度。

(2)如何解决

先举一个神经单元权重初始化的例子(Relu激活函数),再演变到整个深度网络。

image.png

给权重矩阵w设置了合理值,不能比1大很多,也不能比1小很多,所以梯度没有爆炸或消失很快

3.如何在backprop中执行梯度检验

把所以参数转换成一个巨大的向量数据...待补充

image.png

猜你喜欢

转载自juejin.im/post/7117579895848304676
今日推荐