目标:

怎么训练很深的神经网络
然而过深的神经网络会造成各种问题,梯度消失之类的,导致很难训练
作者利用了类似LSTM的方法,通过增加gate来控制transform前和transform后的数据的比例,称为Highway network
至于为什么会有效...大概和LSTM会有效的原因一样吧。

方法:

首先是普通的神经网络,每一层H从输入x映射到输出y,H通常包含一个仿射变换和一个非线性变换,如下

在这个基础上,highway network添加了两个gate
1)T:trasform gate
2)C:carry gate
添加后的层输出如下:

可以看出T和C控制就是x和H之间的比例,为了简化,设C=1-T
 

显然,y的值:
 

对应的导数为
 

那么还剩下一个问题,这个transform gate的形式是什么,作者使用的是类似LSTM中的仿射变换+sigmoid的方法:

其中b的值会被初始化为负值(-1~-3),这样的话初始状态carry gate的值会更大,也就是说输出y会更偏向x。
 
另外,由于这里要求每一层的输入x与输出y有相同的大小,所以在每一层之间可能存在一个映射层,把上一层映射到下一层的输入大小。

实验:

所有实验使用带动量的SGD,学习率随指数衰减,每一层的H由仿射和RELU组成,文中提供了源码:
http://people.idsia.ch/~rupesh/very_deep_learning/
 
首先是网络层数的实验
 

highway指的是本文方法,plain指的是普通的神经网络,可以看出,对于深层的神经网络,highway的结果要好得多。这也就说明添加transform gate的方法是有效的。
 
另外还有一些关于准确率/层数/参数数量相关的实验:

分析:
 
首先看看各个gate相关参数的激活

上图中的第一列表示gate的bias项,CIFAR数据集中,bias随着层数不断增减,这也就说明前几层受原始输入影响比较大,而后几层则受激活函数H影响更大。
第二列和第三列表示transform gate的输出,某种意义上说更明显,多数项的gate是close的,仅仅把输入直接传递给输出,只有少数项是激活的。
最后一列是输出,可以看出,输入和输出并没有改变太多,同一block上基本同正负。
 
从上面的结果看,其实这更像是skip connection,输入的结果并不会影响每一层,而是在直接传递n层后给了后面的某一层,这有点像高速公路,多数车在一个车道行驶,偶尔变道。
 
那么这种“变道”是固定的吗?答案是不对,数据还是会选择合适地方进行变道,如下图所示

另一个问题,既然真正激活的内容那么少,是不是意味着许多层并没有提供贡献?
答案:要看问题
对于MNIST,由于问题比较简单,因此就算是移除60%的层,依然可以有让人满意的结果
但是对于复杂的问题,比如CIFAR,随便删除一些层会导致结果大幅度下降,这也就说明深层数对于复杂问题而言更重要(废话
 
总结:
这篇与其说是怎么构造更深的神经网络,不如说是如何帮网络中的信息做路由,不同的信息应该在不同的层得到激活,而不是都在同一层。
而和一般的skip-connection不同,这种跨层的关系不是固定的,是通过学习得到的,所以对问题的适应性应该会更强。

【论文笔记】Training Very Deep Networks - Highway Networks的更多相关文章

  1. 论文笔记(1):Deep Learning.

    论文笔记1:Deep Learning         2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...

  2. 论文笔记: Dual Deep Network for Visual Tracking

    论文笔记: Dual Deep Network for Visual Tracking  2017-10-17 21:57:08  先来看文章的流程吧 ... 可以看到,作者所总结的三个点在于: 1. ...

  3. 论文笔记之:Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks

    Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks NIPS 2015  摘要:本文提出一种 ...

  4. 论文笔记:Deeper and Wider Siamese Networks for Real-Time Visual Tracking

    Deeper and Wider Siamese Networks for Real-Time Visual TrackingUpdated on 2019-04-01 16:10:37 Paper ...

  5. 论文笔记:Semantic Segmentation using Adversarial Networks

    Semantic Segmentation using Adversarial Networks 2018-04-27 09:36:48 Abstract: 对于产生式图像建模来说,对抗训练已经取得了 ...

  6. 论文笔记:Siamese Cascaded Region Proposal Networks for Real-Time Visual Tracking

    Siamese Cascaded Region Proposal Networks for Real-Time Visual Tracking 2019-03-20 16:45:23 Paper:ht ...

  7. 论文笔记:Learning regression and verification networks for long-term visual tracking

    Learning regression and verification networks for long-term visual tracking 2019-02-18 22:12:25 Pape ...

  8. 【论文笔记】Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition

    Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 2018-01-28  15:4 ...

  9. 论文笔记:Visualizing and Understanding Convolutional Networks

    2014 ECCV 纽约大学 Matthew D. Zeiler, Rob Fergus 简单介绍(What) 提出了一种可视化的技巧,能够看到CNN中间层的特征功能和分类操作. 通过对这些可视化信息 ...

随机推荐

  1. iOS 如何写出更加严谨的应用

    本文旨在介绍一些能够帮助大家避开一些开发误区的经验. 一: 在开发中,经常能够遇到共用同一个界面的情况,一般情况下,我们会根据传入的model去做数据处理和保存. 当然如果不存在复用的情况下,根本不需 ...

  2. 详解PV、UV、VV、IP及其关系与计算

    一.什么是PV? PV即Page View,网站浏览量,指页面浏览的次数,用以衡量网站用户访问的网页数量.用户每次打开一个页面便记录1次PV,多次打开同一页面则浏览量累计.一般来说,PV与来访者的数量 ...

  3. C语言学习笔记 (003) - C/C++中的实参和形参(转)

    今天突然看到一道关于形参和实参的题,我居然不求甚解.藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年C++的人来说,真的深深感觉对不起自己对不起C++老师  T ...

  4. 【jsp】JSTL标签大全详解

    一.JSTL标签介绍 1.什么是JSTL? JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便,它与JSP动作标签一样,只不过它不是 ...

  5. intellij idea 双击选中一个变量而不是单词

    在keymap 里搜索 select Word at caret ,然后双击并在弹出选项里选add mouse shortcut,然后选double click,再在下面click pad 区域点一下 ...

  6. IDEA使用笔记(二)——常用快捷键

    1:在IDEA上面找到快捷键都是有哪些?如下图所示: 2:导出快捷键的描述文件,打印一份,慢慢看,多使用,慢慢的就记住了 3:我自己在开发中经常使用的IDEA快捷键,主要是导航.查找.编辑相关的,如下 ...

  7. stm32开发 - 远离 Keil uVision, 回到 Visual Studio

    学了8051单片机, 学了MSP430系列, 终于开始步入正轨, 开始学习 stm32(ARM Cortex-M3)系列微处理器~ 学51用Keil uVision开发环境, 提一下Keil uVis ...

  8. chrome表单自动填充导致input文本框背景变成偏黄色问题解决

    chrome表单自动填充后,input文本框的背景会变成偏黄色的,想必大家都会碰到这种情况吧, 这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有 ...

  9. Java原理之HashMap

    一下JDK1.7测试没问题,1.8就不一样了,应该散列的更优化. 最近看了很多java底层之HashMap的原理,根据自己的实现如下: package com.gmq.chapter02; impor ...

  10. asp.net中C#中计算时间差代码

    我用的最简单的办法是 代码如下 复制代码 DateTime dtone = Convert.ToDateTime("2007-1-1 05:32:22");DateTime dtw ...