Essentially No Barriers in Neural Network Energy Landscape
梗概
作者认为, 神经网络中,假设\(\theta_1, \theta_2\)都是使得损失达到最小的参数,那么通过一些手段,可以找到一个路径(path),沿着这条路径,其上的\(\theta\)也会使得损失很小,几乎与最小没什么区别.
并且作者给出了如何寻找,以及一种扩展方式.
可惜的是,这些都只是猜想,有许多事实支撑,但缺乏理论论证.

主要内容
path的定义
\]
可以说,这个定义非常之简单粗暴了.
需要一提的,作者是\(\theta \in p(\theta_1, \theta_2)^*\)中使得\(L(\theta)\)到达最大的点为鞍点,不过我不知道该怎么证明.
称此路径为MEP(minimum energy path).
path的逼近
上面的那个问题自然是很难求解的,所以不得不去寻找一个替代.
Mechanical Model
假设已经有一组点\(p_i\)(N+2)个, \(p_0=\theta_0, p_{N+1}=\theta_2\), 考虑下式:
\]
其中,\(k\)是人为设定的值.
当\(k\)很小的时候,高能量(损失)的点之间的距离会拉大. 关于这个论点我有一点存疑,因为我觉得如果\(k\)真的很小很小,那么\(p_i\)应该会缩在一起吧,比如俩端. 当\(k\)过大的时候,路径会被缩短和拉紧(像弹簧),这点我是认同的,因为\(p_0, p_{N+1}\)之间的线段会最短,这个肯定是不会太好的,因为会错过"鞍点".
Nudged Elastic Band
一个改进的版本是:
\]
即把\(E(p)\)分成了俩个部分, 进一步:
\]
也就是说,认为第一部分\(\sum L(p_i)\)只提供一个垂直的力,而剩下的一部分只提供一个平行的力,就像一根弹性绳一样,一方面有一个上下拉扯的力,另一方面有一个水平伸缩的力.


其中\(\hat{\tau}_i\)是路径的切线方向. 如何定义这个方向呢:

\(\mathcal{N}(x)\)将\(x\)归一化.
作者说,这么做,使得不会出现拉紧的情况了,值得商榷.
算法:

我奇怪的一点是,为什么更新\(p_i\)的时候,只受到\(F_i^L|_{\perp}\)的作用,切线方向的力呢?
还有一个AutoNEB, 这个算法就是上面的扩展,使得我们自动增加点\(p_i\).

局部最优
作者说,通过上面的算法,往往会找到局部最优的MEP,但是呢,通过某些方法,我们也能使得这些局部最优显得可靠.
假设\(A, B, C\)三个点,代表了三个最小的参数点, 而且我们有了局部最优的路径\(L_{AB}, L_{BC}\), 那么:

这个结论是显然的, 另外:

这个什么意思呢,就是\(A\rightarrow B \rightarrow C\)也是\(A \rightarrow C\)的一个路径,所以自然有上式成立.
这个有什么用呢?
假设我们有很多个最小值点\(t_1, \ldots, t_N\), 先利用算法找到\(t_1\)到\(t_2, \ldots, t_N\)的路径,这个就像一棵树(论文用树来表示,其实图更恰当吧). 可能绝大部分都是局部最优的,如何判断这些局部最优的优劣性. 首先,选出每一条路径中的最大能量点(“鞍点”)\(c_2, \ldots, c_N\), 不妨设\(t_1 \rightarrow t_k\)的路径拥有这些点中最大的,也就是最坏的一个路径. 我们可以试着从\(t_k\)往其它的寻找路径,如果能够找到一个路径(假设为\(t_j\)), \(t_k \rightarrow t_j\), 使得\(t_1 \rightarrow t_j \rightarrow t_k\)比直接\(t_1 \rightarrow t_k\)更优,那么我们就找到一个更好的路径,将其替换,以论下来,再对次劣的进行操作...
这样子,我们就能够有足够的理由相信,这些局部最优的路径是可靠的.


经过实验,作者发现,越深,越宽(每层的神经元个数)的网络,最优点之间的MEP越会展现出无障碍平坦的性质,即普遍的小损失.
如果确实如此,那么我们就容易构造一族解,这样网络就更灵活了不是?
Essentially No Barriers in Neural Network Energy Landscape的更多相关文章
- (转)The Neural Network Zoo
转自:http://www.asimovinstitute.org/neural-network-zoo/ THE NEURAL NETWORK ZOO POSTED ON SEPTEMBER 14, ...
- (转)LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION
LSTM NEURAL NETWORK FOR TIME SERIES PREDICTION Wed 21st Dec 2016 Neural Networks these days are th ...
- What is “Neural Network”
Modern neuroscientists often discuss the brain as a type of computer. Neural networks aim to do the ...
- Recurrent Neural Network[survey]
0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...
- (zhuan) LSTM Neural Network for Time Series Prediction
LSTM Neural Network for Time Series Prediction Wed 21st Dec 2016 Neural Networks these days are the ...
- 1 - ImageNet Classification with Deep Convolutional Neural Network (阅读翻译)
ImageNet Classification with Deep Convolutional Neural Network 利用深度卷积神经网络进行ImageNet分类 Abstract We tr ...
- A Deep Neural Network’s Loss Surface Contains Every Low-dimensional Pattern
目录 概 相关工作 主要内容 引理1 定理1 定理2 A Deep Neural Network's Loss Surface Contains Every Low-dimensional Patte ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Neural Network Toolbox使用笔记1:数据拟合
http://blog.csdn.net/ljp1919/article/details/42556261 Neural Network Toolbox为各种复杂的非线性系统的建模提供多种函数和应用程 ...
随机推荐
- 【分布式】Zookeeper客户端基本的使用
与mysql.redis等软件一样,zookeeper的软件包中也提供了客户端程序用于对服务器上的数据进行操作.本节我们就来学习zookeeper客户端的使用方法.不过在详细讲解zk客户端的使用方法之 ...
- GO 时间处理
比较大小 比较大小 先把当前时间格式化成相同格式的字符串,然后使用time的Before, After, Equal 方法即可. time1 := "2015-03-20 08:50:29& ...
- 2.7 Rust Structs
A struct, or structure, is a custom data type that lets you name and package together multiple relat ...
- spring中JDBCTemplate的简单应用
package cn.itcast.datasource.jdbctemplate;import cn.itcast.utils.JDBCUtils;import org.springframewor ...
- Python模块和函数
目录 一.基础 二.特殊函数 一.基础 #导入模块 import xxx #调用 xxx.dd() from xxx import xx as dd #导入某个函数,as给函数加别名,调用xx() ...
- [BUUCTF]PWN——[BJDCTF 2nd]r2t4
[BJDCTF 2nd]r2t4 附件 步骤 例行检查,64位,开启了canary和nx 64位ida载入,检索字符串的时候发现了后面函数,shell_addr=0x400626 main函数 可以溢 ...
- Python语言的2个典型特性
[动态编程语言] 学习过C.C++的同学都知道,使用这二者编写代码时,变量在使用前必须通过类似"int a=123"的语句提取申明,然后在真正赋值的时候校验取值跟类型是否相符.也就 ...
- CF275A Lights Out 题解
Content 有一个 \(3\times 3\) 的矩阵.一开始每个元素都为 \(1\). 你可以对任意的位置进行操作,每次操作将在这个位置上的元素及其上下左右的元素全部由 \(1\) 改为 \(0 ...
- SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是老三,断更了半年,我又滚回来继续写这个系列了,还有人看吗-- 在前面的章 ...
- python enumerate枚举用法总结
enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumer ...