欢迎访问欧博亚洲(Allbet Game)!

首页科技正文

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记

admin2020-05-1914

【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,迎接批评指正,不喜勿喷![认真看图][认真看图]

【填补说明】深度学习有多火,我就不多说了。本文主要先容深度学习项目实践历程中可能遇到的一些组件及使用技巧!

一、Optimizor优化器选择

1. 梯度下降:经典

梯度下降的通用盘算公式如下:

其中,是学习率,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第1张是梯度。梯度下降完全依赖于当前的梯度,以是绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第2张可理解为允许当前梯度多大水平影响参数更新。

梯度下降主要包罗三种梯度下降:

(1)批量梯度下降(Batch Gradient Descent)

  • 使用所有的训练样原本更新每次迭代中的模子参数

(2)随机梯度下降(Stochastic Gradient Descent)

  • 在每次迭代中,仅使用单个训练样本更新参数(训练样本通常是随机选择的)

(3)小批量梯度下降(Mini-Batch Gradient Descent):这个最常用

  • 训练时不是使用所有的样本,而是取一个批次的样原本更新模子参数
  • 小批量梯度下降试图在随机梯度下降的稳健性和批量梯度下降的效率之间找到平衡

梯度下降的瑕玷:

  • 选择合适的learning rate对照难题
  • 对所有的参数更新均使用同样的learning rate
  • 可能被困在鞍点,容易发生局部最优,不能到达全局最优

2. Momentum

Momentum是模拟物理里动量的观点,公式如下:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第3张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第4张

其中,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第5张是动量因子。Momentum积累之前的动量来替换真正的梯度。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第6张

Momentum有如下特点:

  • 下降初期时,由于下降偏向和梯度偏向一致,而使t时刻的动量和转变量变大,从而到达加速的目的
  • 下降中后期时,在局部最小值往返震荡的时刻,使得更新幅度增大,跳出陷阱
  • 在梯度改变偏向的时刻,能够削减更新 

总的来说,Momentum可以加速SGD算法的收敛速率,而且降低SGD算法收敛时的震荡。

3. Nesterov

将上一节中的公式睁开可得:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第7张

可以看出,Momentum并没有直接改变当前梯度。Nesterov的改善就是让之前的动量直接影响当前的动量。即:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第8张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第3张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第4张

其中,加上Nesterov项后,梯度在大的跳跃后,再盘算当前梯度举行校正。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第11张

Nesterov有如下特点:

  • 对于Momentum,首先盘算一个梯度(短的蓝色向量),然后在加速更新梯度的偏向举行一个大的跳跃(长的蓝色向量)
  • 对于Nesterov,首先在之前加速的梯度偏向举行一个大的跳跃(棕色向量),然后盘算梯度举行校正(绿色梯向量)

总的来说,Nesterov项在梯度更新时做了一个校正,制止前进太快,同时提高灵敏度。

以上三种方式均需要人工设置一些学习率,接下来先容几种自适应学习率的方式!

4. Adagrad

Adagrad对学习率举行了一个约束。即:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第12张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第13张

其中,对绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第1张从1到绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第15张举行一个递推,形成一个约束项regularizer,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第16张用来保证分母非0。

Adagrad有如下特点:

  • 前期绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第1张较小的时刻,regularizer较大,能够放大梯度
  • 后期绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第1张较大的时刻,regularizer较小,能够约束梯度
  • 高频特征更新步长较小,低频特征更新较大,适合处置希罕梯度
  • 能够自适应学习率,制止了手动调整学习率的贫苦

Adagrad的瑕玷:

  • 由公式可以看出,仍依赖于人工设置一个全局学习率
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第2张设置过大的话,会使regularizer过于敏感,对梯度的调治太大
  • 中后期,分母上梯度平方的累加将会越来越大,使绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第20张,使得训练提前结束

5. Adadelta

Adadelta是对Adagrad的扩展,它主要解决了adagrad算法单调递减学习率的问题。Adagrad会累加之前所有的梯度平方,而Adadelta只累加牢固巨细的项,而且也不直接存储这些项,仅仅是近似盘算对应的平均值。即:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第21张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第22张

其中,Adadelta照样依赖于全局学习率,然则做了一定处置,经由近似牛顿迭代法之后:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第23张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第24张

其中,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第25张代表求期望。此时,可以看出Adadelta已经不用依赖于全局学习率了。

Adadelta另有如下特点:

  • 训练初中期,加速效果不错,很快
  • 训练后期,频频在局部最小值四周发抖

6. RMSprop

RMSprop可以算作Adadelta的一个特例,同样是用于解决adagrad算法学习率消逝的问题。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第26张时,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第23张就变为了求梯度平方和的平均数。

若是再求根的话,就变成了RMS(均方根):

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第28张

此时,这个RMS就可以作为学习率绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第2张的一个约束:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第30张

RMSprop有如下特点:

  • 依然依赖于全局学习率
  • 是Adagrad的一种生长,也是Adadelta的变体,效果趋于二者之间
  • 适合处置非平稳目的 

7. Adam:常用

Adam本质上是带有动量项的RMSprop,它行使梯度的一阶矩估量和二阶矩估量动态调整每个参数的学习率。

经由偏置校正后,每一次迭代学习率都有个确定局限,使得参数对照平稳。公式如下:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第31张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第21张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第33张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第34张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第35张

其中,绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第36张绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第37张分别是对梯度的一阶矩估量和二阶矩估量,可以看尴尬刁难期望绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第38张绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第39张的估量;绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第40张绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第41张是对绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第36张绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第37张的校正,这样可以近似为对期望的无偏估量。 可以看出,直接对梯度的矩估量对内存没有分外的要求,而且可以凭据梯度举行动态调整,而绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第44张对学习率形成一个动态约束,而且有明确的局限。

Adam有如下特点:

  • 连系了Adagrad善于处置希罕梯度和RMSprop善于处置非平稳目的的优点
  • 对内存需求较小
  • 为差其余参数盘算差其余自适应学习率
  • 也适用于大多非凸优化,适用于大数据集和高维空间

8. 其他

例如Adamax(Adam的一种变体)、Nadam(类似于带有Nesterov动量项的Adam)等,这里不睁开了。

9. 经验总结

  • 对于希罕数据,使用学习率可自适应的优化方式(例如Adagrad/Adadelta/RMSprop/Adam等),且最好接纳默认值
  • SGD通常训练时间更长,然则在好的初始化和学习率调剂方案的情况下,效果更可靠
  • 若是需要更快的收敛,或者是训练更深更庞大的神经网络,需要用一种自适应的算法

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第45张

二、激活函数选择

1. 常用的激活函数

发现这么写下去,篇幅太大了,以是找到一张图,归纳综合一下吧:

 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第46张

常用的主要是这些吧,种种激活函数的特点看图也显而易见,其他的(例如PReLU等)就不拓展了。

2. 经验总结

  • 对于输出层:二分类义务一样平常选用Sigmoid输出,多分类义务一样平常选用Softmax输出,回归义务一样平常选用线性输出。
  • 对于中心隐层:优先选择Relu激活函数(Relu可以有用解决Sigmoid和tanh泛起的梯度弥散问题,且能更快收敛)。

三、防止过拟合

1. 数据集扩充

即增大训练集的规模,着实难以获得新数据也可以使用数据集增强的方式。

例如可以对图像数据集接纳水平/垂直旋转/翻转、随机改变亮度和颜色、随机模糊图像、随机裁剪等方式举行数据集增强。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第47张

2. L1/L2正则化

正则化,就是在原来的loss function的基础上,加上了一些正则化项或者称为模子庞大度责罚项。

以线性回归为例,优化目的:

min 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第48张 

加上L1正则项(lasso回归):
min 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第49张 

加上L2正则项(岭回归):

min 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第50张 

其中,L1范数更容易获得希罕解(解向量中0对照多);L2范数能让解对照小(靠近0),然则对照平滑(不等于0)。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第51张

3. Dropout

Dropout提供了一个简朴的方式来提升性能。实在相当于做简朴的Ensemble,但训练速率会慢一些。

 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第52张

4. 提前终止Early stopping

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第53张

5. 交织验证

 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第54张

剩下就是选择合适的模子和网络结构了,甚至可以接纳多模子融合等思绪。

四、防止梯度消逝/爆炸

1. 使用合适的激活函数:ReLU等 

解决Sigmoid函数存在的梯度消逝/爆炸问题。

2. 预训练加微调:DBN等

Hinton为领会决梯度的问题,提出接纳无监视逐层训练方式,其基本头脑是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此历程就是逐层“预训练”。在预训练完成后,再对整个网络举行“微调”。

3. 梯度剪切、正则

梯度剪切这个方案主要是针对梯度爆炸提出的,其头脑是设置一个梯度剪切阈值,然后更新梯度的时刻,若是梯度跨越这个阈值,那么就将其强制限制在这个局限之内。另外一种解决梯度爆炸的手段是接纳权重正则化,对照常见的是L1正则和L2正则,以上已经提到了。

4. Batch Normalization

对每一层的输出做scale和shift的方式,通过一定的规范化手段,把每层神经网络随便神经元这个输入值的漫衍强行拉回到靠近均值为0方差为1的尺度正太漫衍,即严重偏离的漫衍强制拉回对照尺度的漫衍。这样使得激活输入值落在非线性函数对输入对照敏感的区域,这样输入的小转变就会导致损失函数较大的转变,使得让梯度变大,制止梯度消逝问题发生。而且梯度变大意味着学习收敛速率快,能大大加速训练速率。

5. 残差结构 Resnet

若是你希望训练一个更深更庞大的网络,那么残差块绝对是一个主要的组件,它可以让你的网络训练的更深。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第55张

6. 接纳LSTM等模子

我在序列模子专题有先容到LSTM,这里不再赘述。

五、权值初始化

1. 随机初始化

有一些常用的初始化方式:

  • 直接用0.02*randn(num_params)来初始化,固然其余值也可以。
  • 依次初始化每一个weight矩阵,用init_scale / sqrt(layer_width) * randn,init_scale可以被设置为0.1或者1。

初始化很主要,知乎大佬们的惨痛教训:

  • 用normal初始化CNN的参数,最后acc只能到70%多,仅仅改成xavier,acc可以到98%。
  • 初始化word embedding,使用了默认的initializer,速率慢且效果欠好。改为uniform,训练速率和效果也飙升。

2. 迁徙学习

可以接纳迁徙学习预训练的方式。说到这里,我之后想写一个迁徙学习的专题。

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第56张

六、数据预处置

1. 尺度化/归一化处置

就是0均值和1方差化。主要是为了公正看待每个特征、使优化历程变得平稳、消除量纲影响等。

2. Shuffle处置

在训练的历程中,若是数据很整齐,那每次学习到的特征都是与某一个特征相关,会让学习效果有所误差。

因此,一样平常在训练的历程中,建议要将数据打乱,这样才气够更好的实现泛化能力。

七、学习率 learning rate

一样平常建议从一个正常巨细的学习率最先,朝着终点不停缩小。

 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第57张

八、批次巨细 batch_size

batch_size会影响优化历程,建议值取64和128等,太小训练速率慢,太大容易过拟合。

九、损失函数 Loss

1. 多分类问题选用Softmax+交织熵

当Sigmoid函数和MSE一起使用时会泛起梯度消逝。缘故原由如下:

MSE对参数的偏导:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第58张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第59张

corss-entropy对参数的偏导:

  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第60张
  • 绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第61张

以上,相对于Sigmoid求损失函数,在梯度盘算层面上,交织熵对参数的偏导不含对Sigmoid函数的求导,而均方误差MSE等则含有Sigmoid函数的偏导项。同时,Sigmoid的值很小或者很大时梯度险些为零,这会使得梯度下降算法无法取得有用希望,交织熵则制止了这一问题。

为了填补Sigmoid 型函数的导数形式易发生饱和的缺陷,可以引入Softmax作为展望效果,再盘算交织熵损失。由于交织熵涉及到盘算每个类其余概率,以是在神经网络中,交织熵与Softmax函数慎密相关。

十、其他

例如训练时可以先用一小部分数据集跑,看看损失的转变趋势,有助于更快找到错误并调整网络结构等技巧。

另外,看到一张差别参数对于网络训练的影响水平图,分享一下:

绍兴家教:深度学习中的一些组件及使用技巧,数据挖掘竞赛/项目全流程先容,智能推荐算法演变及学习条记 第62张

最后,虽然有许多组件和技巧可以方便使用(框架中一样平常都封装好了),然则照样需要注重各组件、技巧之间的天真组合,才气取得最佳效果。

 

若是您对数据挖掘感兴趣,迎接浏览我的另几篇博客:数据挖掘竞赛/项目全流程先容

若是你对智能推荐感兴趣,迎接先浏览我的另几篇随笔:智能推荐算法演变及学习条记

若是您对人工智能算法感兴趣,迎接浏览我的另一篇博客:人工智能新手入门学习门路和学习资源合集(含AI综述/python/机械学习/深度学习/tensorflow)、人工智能领域常用的开源框架和库(含机械学习/深度学习/强化学习/知识图谱/图神经网络)

若是你是盘算机专业的应届毕业生,迎接浏览我的另外一篇博客:若是你是一个盘算机领域的应届生,你若何准备求职面试?

若是你是盘算机专业的本科生,迎接浏览我的另外一篇博客:若是你是一个盘算机领域的本科生,你可以选择学习什么?

若是你是盘算机专业的研究生,迎接浏览我的另外一篇博客:若是你是一个盘算机领域的研究生,你可以选择学习什么?

若是你对金融科技感兴趣,迎接浏览我的另一篇博客:若是你想领会金融科技,不妨先领会金融科技有哪些可能?

之后博主将连续分享各大算法的学习思绪和学习条记:hello world: 我的博客写作思绪

,

Sunbet 申博

Sunbet 申博www.baodingxsls.com Sunbet是菲律宾娱乐的官方网站。Sunbt官网有你喜欢的Sunbet、申博APP下载、菲律宾娱乐最新网址、菲律宾娱乐管理网最新网址等。

转载声明:本站发布文章及版权归原作者所有,转载本站文章请注明文章来源:欧博亚洲(Allbet Game)!

本文链接:http://www.czshenhaifb.com/post/1147.html

网友评论