(一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)
Optimization的时候,怎么把gradient descent做的更好?
1、局部最小值(Local minima)与鞍点(saddle point)
所谓的saddle point其实就是gradient是零,但是不是local minima,也不是local maxima;比如下面的saddle point,他在左右方向上是比较高的,前后的方向上是比较高的,他是一个马鞍的形状,所以叫做saddle point;
像saddle point这种地方,他也是gradient为零,但他不是local minima,像这种gradient为0的点统称为critical point,所以你可以说你的loss没有办法再下降,也许是因为卡在了critical point,但你不能说是卡在了local minima,因为saddle point也是微分为零的点;
所以当gradient为0的时候,我们就要搞清楚是卡在了local minima上还是saddle point上,如果是卡在了local minima上的话,因为四周都比较高,你现在所在的位置已经是loss最低点,往四周走loss都比较高,你会不知道怎么走到其他的地方去;但是saddle point就比较没有这个问题,如果你是卡在saddle point上的话,saddle point旁边还是有路可以让你的loss更低,只要逃离saddle point,就有可能让你的loss更低,所以当你走到critical point的时候,我们到底是在local minima上还是saddle point上,是一个值得去探讨的问题;
判断该点到底是local minima还是saddle point,需要用到数学的微积分和线性代数:
When gradient is small
Critical Point
Training Fails because
但有时候你会甚至发现,一开始你的model就train不起来,一开始你不管怎麼update你的参数,你的loss通通都掉不下去,那这个时候到底发生了什麼事情呢?
但是如果有一天你要写,跟deep learning相关paper的时候,你千万不要讲卡在local minima这种事情,别人会觉得你非常没有水準,為什麼
但是今天如果你发现你的gradient,真的很靠近零,卡在了某个critical point,我们有没有办法知道,到底是local minima,还是saddle point?其实是有办法的
為什麼我们想要知道到底是卡在local minima,还是卡在saddle point呢
- 因為如果是卡在local minima,那可能就没有路可以走了,因為四周都比较高,你现在所在的位置已经是最低的点,loss最低的点了,往四周走 loss都会比较高,你会不知道怎麼走到其他的地方去
- 但saddle point就比较没有这个问题,如果你今天是**卡在saddle point的话,saddle point旁边还是有路可以走的,**还是有路可以让你的loss更低的,你只要逃离saddle point,你就有可能让你的loss更低
Warning of Math
这边需要用到一点数学,以下这段其实没有很难的数学,就只是微积分跟线性代数,但如果你没有听懂的话,以下这段skip掉是没有关係的
那怎麼知道说一个点,到底是local minima,还是saddle point呢?
你要知道我们loss function的形状,可是我们怎麼知道,loss function的形状呢,network本身很复杂,用复杂network算出来的loss function,显然也很复杂,我们怎麼知道loss function,长什麼样子,虽然我们没有办法完整知道,整个loss function的样子
Tayler Series Approximation
但是如果给定某一组参数,比如说蓝色的这个θ ′ ,在θ ′ 附近的loss function,是有办法被写出来的,它写出来就像是这个样子
所以这个L ( θ ) 完整的样子写不出来,但是它在θ ′ 附近,你可以用这个式子来表示它,这个式子是,Tayler Series Appoximation泰勒级数展开,这个假设你在微积分的时候,已经学过了,所以我就不会细讲这一串是怎麼来的,但我们就只讲一下它的概念,这一串裡面包含什麼东西呢?
第一项是L ( θ ′ ) ,就告诉我们说,当θ跟θ ′ 很近的时候,L ( θ ) 应该跟L ( θ ′ ) 还蛮靠近的
第二项是
g是一个向量,这个g就是我们的gradient,我们用绿色的这个g来代表gradient,这个gradient会来弥补,θ ′ 跟θ 之间的差距,我们虽然刚才说θ ′ 跟θ ,它们应该很接近,但是中间还是有一些差距的,那这个差距,第一项我们用这个gradient,来表示他们之间的差距,有时候gradient会写成∇ L ( θ ′ ) ,这个地方的g 是一个向量,它的第i个component,就是θ的第i个component对L的微分,光是看g还是没有办法,完整的描述L(θ),你还要看第三项
第三项跟Hessian有关,这边有一个$H $
https://www.bilibili.com/video/BV1Wv411h7kN?p=11
笔记:
https://blog.csdn.net/pigpigpig64/article/details/119061752
https://zhuanlan.zhihu.com/p/437609102
泰勒展开式:https://www.zhihu.com/question/25627482/answer/313088784
(一)神经网络训练不起来怎么办:局部最小值(local minia)与鞍点(saddle point)相关推荐
- [深度学习大讲堂]文化、进化与局部最小值
本文为微信公众号[深度学习大讲堂]特约稿,转载请注明出处 Reference:Culture vs Local Minima [Bengio.2012] 关于作者 首次看到Bengio教授这篇论文是在 ...
- Batch Size对神经网络训练的影响
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Daryl Chang 来源丨CV技术指南 编辑丨极市平台 导 ...
- 关于过拟合、局部最小值、以及Poor Generalization的思考
Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...
- 一文让你掌握神经网络训练技巧
神经网络训练是一个非常复杂的过程,在这过程中,许多变量之间相互影响,因此我们研究者在这过程中,很难搞清楚这些变量是如何影响神经网络的.而本文给出的众多tips就是让大家,在神经网络训练过程中,更加简单 ...
- 神经网络训练中的Tricks之高效BP(反向传播算法)
神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...
- 神经网络训练算法的调用,人工神经网络训练案例
1.BP人工神经网络方法 (一)方法原理 人工神经网络是由大量的类似人脑神经元的简单处理单元广泛地相互连接而成的复杂的网络系统.理论和实践表明,在信息处理方面,神经网络方法比传统模式识别方法更具有优势 ...
- 神经网络训练的一般步骤,神经网络训练过程详解
1.想要学习人工神经网络,需要什么样的基础知识? 人工神经网络理论百度网盘下载: 链接:https://pan.baidu.com/s/1Jcg4s2ETCrag2Vo-OA57Og 提取码:rxlc ...
- 神经网络训练常见坑-新手如何优化调整训练神经网络
文章目录 0. 使用指南 Ⅰ. 数据集问题 Ⅱ. 数据归一化/增强 Ⅲ. 实现问题 Ⅳ. 训练问题 神经网络已经持续训练了 12 个小时.它看起来很好:梯度在变化,损失也在下降.但是预测结果出来了:全 ...
- 人工神经网络的训练步骤,神经网络训练过程图解
如何通过人工神经网络实现图像识别 . 人工神经网络(ArtificialNeuralNetworks)(简称ANN)系统从20世纪40年代末诞生至今仅短短半个多世纪,但由于他具有信息的分布存储.并行处 ...
最新文章
- SMTPDiag 诊断工具
- 如何使用ZBrush+Painter来创建一个新生物之母?
- 《分布式系统:概念与设计》一2.3.2 体系结构模式
- font config 问题实践 001 - 如何获取font config的配置文件
- Android:访问网络资源,在手机本地显示网络资源源代码
- js localStorage,sessionStorage
- 【大数据】分布式机器学习平台
- Android 宝典:代码规范与命名规范
- 2019年最佳JavaScript日历和事件日历脚本
- Todd.log - a place to keep my thoughts on programming
- 常见的内存错误java_Java虚拟机常见内存溢出错误汇总,Java中常见的坑看了可以少走点弯路...
- 常见3D打印技术原理及比较
- 利用java代码一键生成数据库文档
- IT屌丝:SKYCC组合营销软件事件营销案例
- 模块电路选型(6)----存储模块
- 5g有线工业级路由器 有线无线自由切换
- 学生为什么要学python_碎碎念|为什么要学Python
- 今天高考╮(╯_╰)╭
- MatLab中rand randi randn 三个函数的解析
- Windows更新清理工具 (winsxs 清理工具)