栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

解决神经网络训练不起来的方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决神经网络训练不起来的方法

一、局部最小值与鞍点

优化失败即Training Loss没有达到我们的预期或者一开始Loss值就降不下去,这可能时因为梯度下降的微分值接近0,因此无法更新函数。

不仅仅是Local Minima的微分值为0,Saddle Point的微分值也为0,统称为Critical Point。

那么我们需要区分出,当微分为0时是卡在了Local Minima还是Saddle Point:

当给出一个点的Loss值,可以得到其周边的Loss函数,

其中g是一次微分,H是二次微分。

处于Critical Point时,一次微分值都为0,因此不含有g的项。根据含H的这一项可以判断出具体是Local Minima、Local Maxima还是Saddle Point。具体方法如下:

只需要看H的特征值即可判断。

当求出的点是Saddle Point时,根据H可以知道如何继续降低Loss值:

当特征值小于0时,沿着特征向量的方向移动参数即可得到一个Loss值更小的参数。

二、批次与动量

 

参数移动的方向不只与Gradient的方向有关,还考虑进了Momentum的方向和大小,综合了两个向量决定最终参数更新的方向及大小。

可以概括为参数移动的方向等于Gradient的同等反方向大小的向量与上一个Momentum的向量之和。

三、调整Learning Rate

当训练停止时,Gradient的值不一定很小。可能的情况如下,即Learning Rate较大,在山谷的两侧不断震荡。

我们需要给不同的参数设置不同的Learning Rate:在某一个方向上Gradient下降的较为缓慢,则需要设置一个较大的Learning Rate;相反在Gradient下降较为快速的方向上需要设置一个较小的Learning Rate。

调整Learning Rate的方法:

①Adagrad

 ②RMSProp

相当于给现在的Gradient和之前的Gradient的赋了不同重要程度的权重。

对于Adagrad,先前给出的η是一个固定的值,这样会出现一些问题,因此我们让η随时间变化而减小来优化该梯度下降模型。

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号