与神经网络能够非常好地学习训练数据(如过拟合)相反的是网络根本无法学习训练数据,这通常是由于网络的病态问题(ill-conditioning)导致的。在BP网络的训练过程中ill-conditioning是很常见的。

定义

神经网络模型学习的目标为最小化模型输出和正确值之间的误差E(W)={ek}E(W)=\{e_k\}.EE的一阶导为:∇E=2JTe\nabla E=2J^Te,其中JJ为雅可比矩阵。


EE的二阶导为∇2E=H\nabla ^2E=H,HH为赫森矩阵。
这里我们关注HH的条件数,因为这个量反映了误差EE的曲面特征,如局部最小值、鞍点等。HH的条件数为:λmaxλmin\frac {\lambda _{max}}{\lambda _{min}},条件数越大,病态问题越严重。

表现

1.如果网络的HH的条件数很大,则网络是病态的(ill-conditioning),可能呈现如下形式。

对于这样的网络,训练中存在的问题是对于不同的权重参数,需要的学习率可能不同,对于平坦的误差曲面需要较大的学习率来加速收敛,而这个较大的学习率可能在错误曲面的峡谷区发散(解释及图示见博文的学习率部分),此时单一学习率的方法不能很好地训练模型。
2.鞍点。HH中的值不确定,可能即是正的也是负的,此时条件数不存在。
3.H是奇异的,即一些优化方法是没有定义的。

优化方法

1.条件数较大的ill-conditioning.
RPROP, Quickprop, conjugate gradients和quasi-Newton 方法都能以自适应的方式应对ill-conditioned 误差曲面,由于这些方法都以负梯度方向为搜索方向,所以同样可以用于well-conditioned网络。
2.未定义的ill-conditioning
Newton, Gauss-Newton和 Levenberg-Marquardt methods能通过一次迭代找到二次误差曲面的最小值,但是对于HH为奇异矩阵的情景, 这些解法可能是没有定义的。神经网络的目的在于模型预测的准确性,而不是为了计算权重,Levenberg-Marquardt 方法可以在优化权重值没有定义的ill-conditioning情况下,产生准确的预测。
3.鞍点
对于包含多个非线性隐含层的神经网络,误差曲面不再是二次的。Hessian矩阵和条件数在训练过程中将不断变化,误差曲面也将包含很多鞍点,对于鞍点对应的Hessian矩阵的值是不确定的,可能同时具有正负两个特征值,所以条件数就不存在,对于这种情况二阶的优化方法的不再适用,在这些地方的一阶方法的学习效果可能比较好。

precondition

网络的病态问题通常与训练数据、网络结构以及网络的初始化权重有关。常见的问题是输入训练数据过大、网络层结构大小不一、初始权重过大或过小。所以在网络训练之前需要进行precondition。针对这些问题的precondition技术详见这里以及这里
数学上,precondition是将病态问题转化为更容易优化求解的问题,通常通过乘以一个preconditioner 矩阵来完成转化。如下图所示,转化前需要4次迭代收敛到f=1f=1,转化后仅需一次迭代。

附录

1.上面的介绍是对神经网络通用的,其实对于不同的网络类型其优化函数的性质不同,论文[1]针对BP网络以最小二乘为目标函数进行了优化。
2.定常迭代算法(如求解线性方程)与 非定常迭代算法(如CG).详见这里

参考

1.Saarinen S, Bramley R, Cybenko G. Ill-conditioning in neural network training problems[J]. SIAM Journal on Scientific Computing, 1993, 14(3): 693-714.
2.Van Der Smagt P, Hirzinger G. Solving the ill-conditioning in neural network learning[M]//Neural networks: tricks of the trade. Springer Berlin Heidelberg, 1998: 193-206.
3.ftp://ftp.sas.com/pub/neural/illcond/illcond.html

神经网络优化中的病态问题相关推荐

  1. 如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题

    如何理解神经网络优化中Momentem能够缓解hessian矩阵病态的问题? 1.首先介绍一下,矩阵的病态问题 矩阵病态主要是因为矩阵向量之间相关性太大,在二维上说就是矩阵向量之间的夹角太小,导致这两 ...

  2. 神经网络优化中的Weight Averaging

    ©PaperWeekly 原创 · 作者|张子逊 研究方向|神经网络剪枝.NAS 在神经网络优化的研究中,有研究改进优化器本身的(例如学习率衰减策略.一系列 Adam 改进等等),也有不少是改进 no ...

  3. 中计算散度的函数_深度神经网络优化中的不可导函数如何计算梯度?

    众所周知,神经网络仅能处理连续的浮点数,标准的输出也是连续型的数字.但实际问题中,我们很多时候都需要一个离散的结果,比如分类问题中我们希望输出正确的类别,"类别"是离散的,&quo ...

  4. Halide视觉神经网络优化

    Halide视觉神经网络优化 概述 Halide是用C++作为宿主语言的一个图像处理相关的DSL(Domain Specified Language)语言,全称领域专用语言.主要的作用为在软硬层面上( ...

  5. 人工智能实践:TensorFlow笔记学习(四)—— 神经网络优化

    神经网络优化  大纲 4.1 损失函数 4.2 学习率 4.3 滑动平均 4.4 正则化 4.5 神经网络搭建八股 目标 掌握神经网络优化方法 4.1 损失函数 神经元模型:用数学公式表示为:,f为激 ...

  6. Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法

    Paper:论文解读-<Adaptive Gradient Methods With Dynamic Bound Of Learning Rate>中国本科生(学霸)提出AdaBound的 ...

  7. 各种神经网络优化算法:从梯度下降到Adam方法

    在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法? 这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳 ...

  8. 【深度学习】从梯度下降到 Adam!一文看懂各种神经网络优化算法

    王小新 编译自 Medium 量子位 出品 | 公众号 QbitAI,编辑:AI有道 在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯 ...

  9. 神经网络优化器的选择_神经网络:优化器选择的重要性

    神经网络优化器的选择 When constructing a neural network, there are several optimizers available in the Keras A ...

  10. 神经网络优化算法总结【SGD】---【Adam】

    在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法? 这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳 ...

最新文章

  1. 与基础事务管理器的通信失败 存货申请_金九银十跳槽季,恶补分布式事务
  2. Castle实践9-在Castle IOC容器中使用AspectSharp(全面剖析AspectSharp Facility)
  3. Spring整合基础
  4. openocd安装与调试
  5. canon l11121e驱动_佳能L11121e驱动官方下载-佳能Canon L11121e打印机驱动4.8.0.16 官方版-东坡下载...
  6. Thread调用SaveFileDialog
  7. linux下数据同步、回写机制分析
  8. java程序设计练习题_Java程序设计基础练习题
  9. 图像识别利用计算机对图像进行,图像识别技术的应用与发展
  10. 学习编程是否真的有用?
  11. Thunder v7.9.5.4480 Ayu 优化版
  12. 华为校园招聘技术类笔试面试经验(摘)
  13. 初中数学题目(勾股定理)
  14. coreseek错误WARNING: failed to open pid_file '/usr/local/coreseek/var/log/searchd_mysql.pid'
  15. pdf翻译成中文,怎样翻译比较好?
  16. 迅雷Q2季报图解:净利70万美元 环比下降91%
  17. 电商平台投诉,都适用哪些场景
  18. Java实现纸牌游戏
  19. 366API如何做到微信扫二维码无跳转调用外部浏览器页面
  20. 《21天学通Java(第6版)》—— 1.4 属性和行为

热门文章

  1. 关于php中的json_encode和json_decode的”\“(反斜杠)的问题
  2. 请教大家一个问题,有关于数据库的设计
  3. hfs文件服务器打开显示空白,解决Adobe Creative Cloud打开界面一直显示空白的方法...
  4. android 7 audio架构,7.2.1 Audio系统的各个层次
  5. matlab钢材切割,一种基于MATLAB的钢材裂纹扩展速率试验数据处理方法
  6. Security+ 学习笔记45 移动设备安全
  7. keepalived详解(三)——keepalived与Nginx配合实战
  8. python成长之路--python的安装与配置 pycharm的安装与激活
  9. python中的变量的学习
  10. 【转载】使用 Google Guava 美化你的 Java 代码