一天搞懂深度学习-训练深度神经网络(DNN)的要点

前言html

这是《一天搞懂深度学习》的第二部分算法

 

1、选择合适的损失函数网络

  典型的损失函数有平方偏差损失函数和交叉熵损失函数。函数

  交叉熵损失函数:post

  选择不一样的损失函数会有不一样的训练效果学习

2、mini-batch和epoch测试

  (1)什么是mini-batch和epochhtm

    所谓的mini-batch指的是咱们将原来的数据分红不重叠的若干个小的数据块。而后在每个epoch里面分别的运行每一个mini-batch。ecpoch的次数和mini-batch的大小能够由咱们本身设置。blog

  (2)进行mini-batch和epoch划分的缘由element

    之因此要进行mini-batch和epoch的改变,一个很重要的缘由是这样就能够实现并行计算。可是这样的话,每一次的L就不是全局损失而是局部损失。mini-batch采用了并行计算会比以前传统算法的速度更快。而且mini-batch的效果会比传统的方法好

  (3)mini-batch和epoch的缺点

    mini-batch是不稳定的。mini-batch不必定会收敛。

3、新的激励函数

深度学习并非说神经网络的层数越多越好。由于神经网络的深度越深那么在偏差回传的过程当中,由于层数过多可能会有梯度消失的问题。所谓梯度消失问题指的是在训练的过程当中,越靠近输出层的学习的越快越靠近输入层的学习的越慢。那么随着深度的增长,靠近输出层的隐含层权重已经收敛了,可是靠近输入层的隐含层却尚未什么变化,至关于仍是像初始的时候同样权重是随机的。

为了梯度消失的问题,学者提出了使用ReLU函数做为激励函数。如下是ReLU函数:

 

(1)为何要选择ReLU函数做为激励函数

  1.很容易计算

  2.Relu函数和咱们神经元的激励机制很像:神经元只有在接收必定量的刺激才可以产生反应

  3.infinite sigmoid with different biases【这句话不知道咋解释】

  4.解决梯度消失问题

(2)ReLU函数的变种

  ReLU函数有不少种形式,上面的函数图像只是其中最原始的一种。还有Leaky ReLU和Parametric ReLU

 

 (3)Maxout激励函数

Maxout激励函数先将隐含层的神经元进行分组而后利用分段函数获得组中每个elements的值,取最大的输出。这个分段函数分的段数是取决于一个group里面有多少个elements。其实ReLU就是一个group里面只有一个element的Maxout激励函数

 

 4、自适应的学习率

学习率是一个很重要的参数,若是学习率选择的太大的话就会出现没法收敛的状况,若是学习率选择的过小的话收敛的太慢,训练过程太长。

咱们选择学习率通常不是选择一个固定的值,而是让它随着训练次数的不断增长而减小。学习率针对不一样的参数应该是不一样的。而且对于全部的参数来讲学习率应该愈来愈小。导数越大,学习率越小;导数越小,学习率越大。【这里导数是有正负性的】

5、Momentum

单纯的使用导数用于改变学习率,很容易陷入局部最小,或者极值点。为了不这一点,咱们使用了Momentum。虽然加上Momentum并不能彻底的避免陷入局部最小,可是能够从必定的程度上减缓这个现象。

6、过拟合

所谓的过拟合,就是过分的学习训练集的特征,将训练集独有的特征当作了数据的全局特征,使得其没法适应测试集的分布。

防止过拟合的方法叫作正则化,正则化的方式有不少。

在神经网络中正则化的方法主要有四种:

  1.早起中止(eary stopping):好比咱们能够设置训练的最大轮数等

  2.权重衰减:减小无用的边的权重

  3.droupout:每次训练的时候都删除一些节点单元,这样会使网络结构变得简单,训练过程也变得更加简单。它的定义是若是你在训练的阶段对于某一层删除了p%节点,那么你在训练时该层的神经元的权重也要衰减p%。droupout能够看作是一个ensamble的过程。

  4.网络结构:好比CNN

 

转载于:https://www.cnblogs.com/whatyouknow123/p/8919521.html