第八篇论文读后总结-使用合成梯度的解耦神经接口
来源:互联网 发布:java导入自己的package 编辑:程序博客网 时间:2024/05/15 05:18
Decoupled Neural Interfaces using Synthetic Gradients
使用合成梯度的解耦神经接口。
Max Jaderberg 1 Wojciech Marian Czarnecki 1 Simon Osindero 1 Oriol Vinyals 1 Alex Graves 1 David Silver 1 Koray Kavukcuoglu1
Proceedings of the 34 th InternationalConference on Machine
Learning, Sydney, Australia, PMLR 70, 2017. Copyright 2017
by the author(s).
本文讲了什么问题?
神经网络的误差拟传播算法(BP算法)是基于梯度下降策略,训练有向神经网络通常需要将数据前向传播通过整个图,然后再反向传播误差信号,从而生成权重更新。因此,网络中所有层或模块就会被锁定,他们必须等待该网络的剩余部分前向执行,然后反向传播误差之后才能实现更新。例如分布于多台机器的大型分布式网络,有时候需要网络中的所有模块等待网络中的其它所有模块都执行完成和反向传播梯度,这个过程非常耗时,而且甚至无法解决。如果我们解耦了这些模块之间的接口,那么我们就能让每一个模块都独立地更新,而不会受到网络中其它的部分的锁定。
解决办法
本文引入了合成梯度的概念,通常,神经网络将其预测与数据集进行比较,以决定如何更新其权重。然后使用反向传播来确定每个权重应该如何移动,以使预测更加准确。然而,对于合成梯度来说,数据的最佳预测由各层完成,然后基于这个预测更新权重。这个最佳预测被称为合成梯度。数据仅用于帮助更新每个层的合成梯度生成器。这使得(大部分情况下)单个层独立学习,提升了训练的速度。
如上图所示,与(a)相比,(b)(c)解耦了接口,分别用梯度生成器更新各层的梯度,这显然更快。
使用合成梯度
如上图所示,最左边的框显示了如何更新神经网络的第一层。第一层前向传播到合成梯度生成器(M i+1),然后返回梯度。使用此梯度而不是实际梯度(这将需要一个完整的正向传播和反向传播来计算)。然后,权重正常更新,并认为该合成梯度是真实的梯度值。
生成合成梯度
合成梯度生成器实际上就是一个合成神经网路,当进行全部的正反向传播时,实际上得到了正确的梯度。我们可以用比较神经网络的输出和数据集的方法,将正确梯度与合成梯度进行比较。因此,我们可以通过假设真实梯度来自于虚拟数据集来训练合成神经网络。
如上图第二部分。梯度(M i+2)是如何通过(f i+1)反向传播到达M(i+1),每一个合成梯度生成器实际上只使用了来自下一层的合成梯度进行训练。因此,只有最后一层实际上是在数据上训练的。其他所有层,包括,合成梯度生成器网络,均基于合成梯度训练。因此,网络只需等待来自下一层的合成梯度就可以训练每个层。
解耦神经接口应用
DNI 能适用任一通用的神经网络架构,而不只是前馈网络。例如循环神经网络(RNN)。一个 RNN 有一个展开的、反复使用的循环核心(recurrent core)来处理序列数据。训练 RNN 的理想情况是:我们能在整个序列(可能无限长)上展开该核心,使用沿时间的反向传播(BPTT)将误差梯度传播穿过整个图(graph)。然而在实践中,由于内存的约束以及需要频繁计算更新我们的核心模型,我们只能在有限的步上展开,这被称之为截断的沿时间的反向传播(truncated BPTT)。如果我们不在 BPTT 的边界之间使用反向传播,而是使用 DNI 和产生合成梯度,我们可以将一个合成梯度模型整合到核心中,以使得在每一个时间步骤,该 RNN 核都会在产生输出的同时产生合成梯度。
- 第八篇论文读后总结-使用合成梯度的解耦神经接口
- 第九篇论文读后总结-相似森林
- 第十篇论文读后总结-GiniClust(基尼聚类)
- 谷歌keras作者推荐:使用「风格迁移」合成高分辨率多尺度神经纹理
- [技术讨论]看了73篇极限编程论文后的感觉和一点总结
- 读《论文与治学》后的感悟
- 周志华机器学习读后总结 第八、九章
- 斯坦福大学「黑盒学习」研究:使用神经变分推理的无向图模型,可替代「采样」 | 附NIPS 2017论文
- 斯坦福大学「黑盒学习」研究:使用神经变分推理的无向图模型,可替代「采样」 | 附NIPS 2017论文
- 制作SDK后的.a文件合成
- 论文读后总结1:一种对多元数据非监督异常点检测算法的对比评估
- video inpainting几篇论文的总结
- 百度语音合成的使用
- 深度神经进化大有可为?Uber详解如何用它优化强化学习 | 5篇论文
- 读论文 + 总结 + 笔记
- 计算机系统会议论文是如何评审的 -- 读后笔记
- 使用科大讯飞第三方接口批量合成提示音
- Thinking In Java读后总结[第四章到第八章]
- jquery的validate简单表单验证
- 《王者荣耀》体验报告及分析报
- PHP通过赋值删除会话
- Interliij Idea 16 如何创建Maven 项目
- HBase的简单基础使用
- 第八篇论文读后总结-使用合成梯度的解耦神经接口
- java 23种设计模式详解01-02-03-工厂
- Pycharm远程配置GitHub
- 截取指定字符串(指针指向)
- <span>中显示文字超出宽度如何自动隐藏
- 实验吧笔记-IPC$管道攻击与防御方法
- Java 利用Xstream注解生成和解析xml
- Hive Metastore 和hive-server2配置
- NOIP2017普及复赛 (~~题解)