导读

本文讨论了深层神经网络训练困难的原因以及如何使用Highway Networks去解决深层神经网络训练的困难,并且在pytorch上实现了Highway Networks。

一 、Highway Networks 与 Deep Networks 的关系

深层神经网络相比于浅层神经网络具有更好的效果,在很多方面都已经取得了很好的效果,特别是在图像处理方面已经取得了很大的突破,然而,伴随着深度的增加,深层神经网络存在的问题也就越大,像大家所熟知的梯度消失问题,这也就造成了训练深层神经网络困难的难题。2015年由Rupesh Kumar Srivastava等人受到LSTM门机制的启发提出的网络结构(Highway Networks)很好的解决了训练深层神经网络的难题,Highway Networks 允许信息高速无阻碍的通过深层神经网络的各层,这样有效的减缓了梯度的问题,使深层神经网络不在仅仅具有浅层神经网络的效果。

二、Deep Networks 梯度消失/爆炸(vanishing and exploding gradient)问题

我们先来看一下简单的深层神经网络(仅仅几个隐层)

先把各个层的公式写出来

我们对W1求导:

W = W - lr * g(t)

以上公式仅仅是四个隐层的情况,当隐层的数量达到数十层甚至是数百层的情况下,一层一层的反向传播回去,当权值 < 1的时候,反向传播到某一层之后权值近乎不变,相当于输入x的映射,例如,g(t) =〖0.9〗^100已经是很小很小了,这就造成了只有前面几层能够正常的反向传播,后面的那些隐层仅仅相当于输入x的权重的映射,权重不进行更新。反过来,当权值 > 1的时候,会造成梯度爆炸,同样是仅仅前面的几层能更改正常学习,后面的隐层会变得很大。

三、Highway Networks Formula

Notation

(.) 操作代表的是矩阵按位相乘

sigmoid函数:

Highway Networks formula

对于我们普通的神经网络,用非线性激活函数H将输入的x转换成y,公式1忽略了bias。但是,H不仅仅局限于激活函数,也采用其他的形式,像convolutional和recurrent。

对于Highway Networks神经网络,增加了两个非线性转换层,一个是 T(transform gate) 和一个是 C(carry gate),通俗来讲,T表示输入信息经过convolutional或者是recurrent的信息被转换的部分,C表示的是原始输入信息x保留的部分 ,其中 T=sigmoid(wx + b)

为了计算方便,这里定义了 C = 1 - T

需要注意的是x,y, H, T的维度必须一致,要想保证其维度一致,可以采用sub-sampling或者zero-padding策略,也可以使用普通的线性层改变维度,使其一致。

几个公式相比,公式3要比公式1灵活的多,可以考虑一下特殊的情况,T= 0的时候,y = x,原始输入信息全部保留,不做任何的改变,T = 1的时候,Y = H,原始信息全部转换,不在保留原始信息,仅仅相当于一个普通的神经网络。

四、Highway BiLSTM Networks

Highway BiLSTM Networks Structure Diagram
下图是 Highway BiLSTM Networks 结构图:
input:代表输入的词向量
B:在本任务代表bidirection lstm,代表公式(2)中的 H
T:代表公式(2)中的 T,是Highway Networks中的transform gate
C:代表公式(2)中的 C,是Highway Networks中的carry gate
Layer = n,代表Highway Networks中的第n层
Highway:框出来的代表一层Highway Networks
在这个结构图中,Highway Networks第 n - 1 层的输出作为第n层的输入

Highway BiLSTM Networks Demo
pytorch搭建神经网络一般需要继承nn.Module这个类,然后实现里面的forward()函数,搭建Highway BiLSTM Networks写了两个类,并使用nn.ModuleList将两个类联系起来:

HBiLSTM类的forward()函数里面我们实现Highway BiLSTM Networks的的公式
首先我们先来计算H,上文已经说过,H可以是卷积或者是LSTM,在这里,normal_fc就是我们需要的H

上文提及,x,y,H,T的维度必须保持一致,并且提供了两种策略,这里我们使用一个普通的Linear去转换维度

也可以采用zero-padding的策略保证维度一致

维度一致之后我们就可以根据我们的公式来写代码了:

最后的information_flow就是我们的输出,但是,还需要经过转换维度保证维度一致。
更多的请参考Github: Highway Networks implement in pytorch

[https://github.com/bamtercelboo/pytorch_Highway_Networks]

五、Highway BiLSTM Networks 实验结果

本次实验任务是使用Highway BiLSTM Networks 完成情感分类任务(一句话的态度分成积极或者是消极),数据来源于Twitter情感分类数据集,以下是数据集中的各个标签的句子个数:

下图是本次实验任务在2-class数据集中的测试结果。图中1-300在Highway BiLSTM Networks中表示Layer = 1,BiLSTM 隐层的维度是300维。

实验结果:从图中可以看出,简单的多层双向LSTM并没有带来情感分析性能的提升,尤其是是到了10层之后,效果有不如随机的猜测。当用上Highway Networks之后,虽然性能也在逐步的下降,但是下降的幅度有了明显的改善。

References

  • Highway Networks(paper)

    https://arxiv.org/pdf/1505.00387.pdf

  • Training Very Deep Networks

https://arxiv.org/pdf/1507.06228.pdf

  • 为什么深层神经网络难以训练

    http://blog.csdn.net/binchasing/article/details/50300069

  • Training Very Deep Networks–Highway Networks

    http://blog.csdn.net/cv_family_z/article/details/50349436

  • Very Deep Learning with Highway Networks

    http://people.idsia.ch/~rupesh/very_deep_learning/

  • Hightway Networks学习笔记

    http://blog.csdn.net/sinat_35218236/article/details/73826203?utm_source=itdadao&utm_medium=referral


更多精彩内容,请关注 深度学习自然语言处理 公众号,就是下方啦!跟随小博主,每天进步一丢丢!哈哈!

Highway Networks相关推荐

  1. Highway Networks网络详解

    神经网络的深度对模型效果有很大的作用,可是传统的神经网络随着深度的增加,训练越来越困难,这篇paper基于门机制提出了Highway Network,使用简单的SGD就可以训练很深的网络,而且opti ...

  2. [论文笔记] highway networks

    主要介绍下面两篇论文 <Deep Residual Learning for Image Recognition>. 2015. arXiv pre-print. <Training ...

  3. 网络模型--Densely Connected Convolutional Networks

    Densely Connected Convolutional Networks CVPR2017 best paper Code: https://github.com/liuzhuang13/De ...

  4. Residual Networks

    本文介绍一下2015 ImageNet中分类任务的冠军--MSRA何凯明团队的Residual Networks.实际上,MSRA是今年Imagenet的大赢家,不单在分类任务,MSRA还用resid ...

  5. 深度残差网络和Highway网络

    今天讲的这两种网络结构都是最新被业界针对图像处理问题提出的最新的结构,主要解决就是超深层的网络在训练优化中遇到的问题.说实话这两种模型就本身来说数学公式都不复杂,但是确实在实战中取得了非常好的效果(深 ...

  6. shortcut connection和highway network

    CNN演化 先引入一张CNN结构演化图: 2012年AlexNet做出历史突破以来,直到GoogLeNet出来之前,主流的网络结构突破大致是网络更深(层数),网络更宽(神经元数).所以大家调侃深度学习 ...

  7. 【注意力机制】Squeeze-and-Excitation Networks论文理解

    摘要   卷积操作:   卷积操作是卷积神经网络(CNNs)的核心构造块,它通过融合每一层局部接受域(感受野)内的空间和信道信息使网络构建信息特征.大量先前的研究已经调查了这种关系的空间成分,试图通过 ...

  8. Graph Neural Networks: A Review of Methods and Applications(图神经网络:方法与应用综述)

    Graph Neural Networks: A Review of Methods and Applications 图神经网络:方法与应用综述 Jie Zhou , Ganqu Cui , Zhe ...

  9. 论文笔记:Densely Connected Convolutional Networks(DenseNet模型详解)

    [ 转载自http://www.yyliu.cn/post/7cabb4ff.html ] CVPR 2017上,清华大学的Zhuang Liu.康奈尔大学的Gao Huang和Kilian Q.We ...

  10. Densely Connected Convolutional Networks(论文解读三)

    目录 DenseNet:论文解读 1. Abstract 2. Related work 2.1 通过级联来加深网络 2.2 通过 shortcut 连接来加深网络 2.3 通过加宽网络来使网络更深 ...

最新文章

  1. vue 自定义select下拉框样式(div模拟)
  2. 如何使用a手动创建文件。 Windows中的(点)前缀?例如,.htaccess
  3. P11 非线性系统-《Matlab/Simulink与控制系统仿真》程序指令总结
  4. 我的 FPGA 学习历程(11)—— 实验:按键消抖
  5. 软件测试需要什么样的思维,你知道软件测试的核心价值是什么吗?为什么我们需要软件测试?...
  6. K8S集群搭建:利用kubeadm构建K8S集群
  7. [转帖]Ubuntu 对应内核版本
  8. Halcon|读取3D相机点云数据
  9. 最新开发android版本,Android版本检测升级
  10. 重磅官宣:腾讯宣布再投500亿元助力共同富裕
  11. python3.5安装tensorflow_如何为Python 3.5安装OpenCV,Tensorflow和机器学习框架运行对象检测应用程序...
  12. “快手”最了不起的地方,在于它给95%的年轻人以实践的机会
  13. excel打印二维码
  14. ConfuserEx
  15. 运放的转换速率(压摆率)SR的意义和如何选取
  16. Linux网络协议之旅,用西游记的故事串联整个网络世界(必看!)
  17. JAVA计算机毕业设计网上图书销售系统(附源码、数据库)
  18. 绕过滑块验证码登陆网站的实现
  19. 智能共享口红机方案/案列/APP/小程序/开发
  20. HTTP中常见的各种状态码详解及解决方案

热门文章

  1. day39-Spring 02-AOP的概述
  2. [悟] 因上努力,果上随缘(转)
  3. SVN客户端服务器搭建与使用(一)
  4. 学习笔记之什么是持久化和对象关系映射ORM技术
  5. 为tomcat分配内存
  6. Linux操作系统中awk语言常见用法
  7. LC-130 被环绕区域
  8. LinkedList简要分析
  9. zabbix 添加 ROS 软路由监控 WinBox设置
  10. Java中多态的一些简单理解