文章目录

  • 神经网络技巧
  • 神经网络的检验
  • 特征标准化
  • 选择好特征——Good Feature
  • 激励函数
  • 过拟合:Overfitting
  • 加速神经网络训练
  • 处理不均衡数据
  • 批标准化——Batch Normalization
  • L1/L2正规化


神经网络技巧

神经网络的检验

训练数据:70%
检验数据:30%
这就像平时大量做作业,平时分并不多;考试做题只是少数,但却是占分最重的。对神经网络的基本评价基本上是基于这30%的测试数据。

看一下检验神经网络时参考的曲线:

误差曲线:如果理想的话,刚开始训练误差率降的很快,随后提升的空间减小,曲线也趋于水平。

神经网络相对误差 神经网络训练误差曲线_神经网络相对误差


精确度曲线:最好的精确度是趋近于100%精确。怎样看预测值是连续数字的精确度?可以引用R2分数在测量回归问题的精度;也可以用F1分数,用于测量不均衡数据的精度。

神经网络相对误差 神经网络训练误差曲线_过拟合_02


过拟合:我们的学习模型平时的作业做的很好,但考试的时候却考的一团糟。这是为什么呢?神经网络对平时作业过于依赖,考试的时候就不能拓展学到的知识。这就是过拟合啦。解决过拟合也有很多方法,比如L1,L2正规化,Dropout方法。

神经网络相对误差 神经网络训练误差曲线_ML_03


交叉验证:依然是这个相似的图,纵坐标是误差,但横坐标不是时间而是某一层神经网络的某一参数。逐渐调整这个参数,找到满足误差要求的那个参数就好了。

神经网络相对误差 神经网络训练误差曲线_ML_04

特征标准化

或称之数据的正常化、归一化。训练的时候数据跨度不一,参数变化对这些数据的影响力不同,会导致不同类型数据的训练速度不一。

通常用于特征标准化的途径有两种:

  1. MinMax Normalization。将所有特征数据按照比例缩放到0-1这个取值区间,有时候也可以是-1到1的区间。
  2. Standard Deviation Normalization。用均值、方差进行标准化。

选择好特征——Good Feature

  • 避免无意义的信息
    排除掉没有区分能力的信息,用更多有意义的信息来综合判断当作判断依据。
  • 避免重复的信息
    比如描述距离,里和公里虽然是不同的信息,但是对机器学习并没有帮助
  • 避免复杂的信息
    比如描述两个位置的关系,分别有两种信息,经纬度和距离。显然经纬度会更加复杂,不适合描述。

激励函数

Linear,线性方程
Nonlinear,非线性方程
激励函数:用来解决不能用线性方程概括的问题。将线性函数强行“掰弯”,也就是将线性函数作为参数带入到激励函数中。激励函数必须是可微分的,可谓分的激励函数才能将误差反向传递回去。
在少量层结构中,我们可以选择尝试很多种不同的激励函数。
CNN中,推荐relu
RNN中,推荐tanh或者relu。

过拟合:Overfitting

学习模型过于自信,过于依赖训练数据。不能表达训练数据以外的数据。比如这张图片,训练的时候能很准确区分出两者的界限,但是实际操练的时候,由于原有模型过于依赖训练数据,发生了区分失误。

神经网络相对误差 神经网络训练误差曲线_ML_05


解决方法:

  1. 增加数据量
  2. 运用正规化:L1,L2…regularization。把W参数自身调整到误差值中,促进让神经网络调小这个值。
    神经网络相对误差 神经网络训练误差曲线_数据_06
  3. Dropout regularization:训练的时候,随机忽略掉一些神经元和神经连接,让神经网络不完整,用一个不完整的神经网络训练一次。第二次的时候再随机忽略一些,变成另外一个不完整的神经网络。这样的话,神经网络从根本上没有机会过度依赖某些神经元、某些参数。

加速神经网络训练

SGD:Stochastic Gradient Descent。将数据分批交给模型训练,每次训练的数据虽然不能反映整体上数据的特征,但是却提升了训练的速度。

神经网络相对误差 神经网络训练误差曲线_数据_07


传统方法是再原始W累加上一个负的学习率乘以校正值:

神经网络相对误差 神经网络训练误差曲线_过拟合_08这种方法会让训练过程曲折无比。


Momentum

神经网络相对误差 神经网络训练误差曲线_ML_09相当于给模型一个向下的惯性,让它走的更快。


AdaGrad
这种方法是在学习率上动手脚,每一个参数的更新都会有自己与众不同的学习率。神经网络相对误差 神经网络训练误差曲线_神经网络相对误差_10这种方法大概理解为,一旦误差dx变大,那么就强制让W的更新减小。


RMSProp
同时具备上面两种的优势
神经网络相对误差 神经网络训练误差曲线_ML_11也是dx变大,那么就让W除以一个更大的数。


Adam
神经网络相对误差 神经网络训练误差曲线_过拟合_12m有Momentum下坡的属性,v有Adagrad阻力的属性。大多数时候,Adam都能又快又好达成目标,迅速收敛。


处理不均衡数据

一般来说,机器和我们都会猜测比例多的数据。如何获得更高的准确性?

  1. 想办法获取更多数据
  2. 换个评判方式

普通评判方式都是
- Accuracy:准确率
- Cost:误差
在不均衡数据面前,前两种评判方式没那么重要。
- Confusion Matrix
- Precision & Recall
- F1 Score

  1. 重组数据
    重新组合不均衡数据,使之均衡。
  • 方式1:复制或者合并少数样本,使之和多数部分数量差不多。
  • 方式2: 砍掉一些多数部分,使两者数量相差不多。
  1. 使用其他机器学习方法
    如果使用的机器学习方法,像神经网络等,面对不均衡护具束手无策。不过有些机器学习方法,比如决策树,decision trees就不会受其影响。
  2. 神经网络相对误差 神经网络训练误差曲线_神经网络_13

  3. 修改算法

批标准化——Batch Normalization

具有统一规格的数据更有利于机器的学习。

如果数据范围差过大,就如下图的红色部分,有可能就到达了激励函数的不敏感区域,不利于数据分析。

神经网络相对误差 神经网络训练误差曲线_ML_14


进行BN操作,让数据分布于激励函数的有效区间。训练得到的效果也会更好,结果不会是分布于参数的两个极端。

神经网络相对误差 神经网络训练误差曲线_神经网络相对误差_15


神经网络相对误差 神经网络训练误差曲线_过拟合_16


BN算法:

Input: Values: 神经网络相对误差 神经网络训练误差曲线_神经网络_17.
Parameters to be learnt:神经网络相对误差 神经网络训练误差曲线_数据_18
Output:神经网络相对误差 神经网络训练误差曲线_过拟合_19

神经网络相对误差 神经网络训练误差曲线_数据_20
神经网络相对误差 神经网络训练误差曲线_过拟合_21
神经网络相对误差 神经网络训练误差曲线_ML_22
神经网络相对误差 神经网络训练误差曲线_神经网络相对误差_23
看到了概率论中的知识了!在学校的理论课没白学。
公式的最后一行是反向操作,将normalized数据再扩展、平移。让神经网络自己学着使用和修改这个扩展参数神经网络相对误差 神经网络训练误差曲线_ML_24和平移参数神经网络相对误差 神经网络训练误差曲线_ML_25

L1/L2正规化

解决过拟合的问题。过拟合,就如同下图中的橙色曲线。希望得到的结果是:a,b,c,d都是待计算的参数,到最后c和d都是0.

神经网络相对误差 神经网络训练误差曲线_数据_26


L2正规化:

神经网络相对误差 神经网络训练误差曲线_数据_27

L1正规化:

神经网络相对误差 神经网络训练误差曲线_过拟合_28

这里的神经网络相对误差 神经网络训练误差曲线_神经网络_29就相当于上面的abcd这些参数。当当图像出现过拟合的时候,也就是c和d过大,神经网络相对误差 神经网络训练误差曲线_神经网络_30过大了。

下图:假如有两个参数神经网络相对误差 神经网络训练误差曲线_神经网络_31需要学习。蓝色的圆心是误差最小的地方,每条蓝线的误差都是一样的。正规化的方程在黄线上产生的的额外误差,黄线上的误差也是一样。黄线和蓝线上的交点处,两个误差的和最小。

神经网络相对误差 神经网络训练误差曲线_过拟合_32


L1可能只能保留神经网络相对误差 神经网络训练误差曲线_ML_33另外就是L1的解并不稳定,就如同上图右侧,黄蓝图像的交点有好多个。

对L1、L2规范化还是有些不明白,后续补上自己的理解。

插个眼:L1L2规范化解释


第一次编辑:2019-05-11 17:19:36