自剪枝神经网络

Simple RNN从理论上来看,具有全局记忆能力,因为T时刻,递归隐层一定记录着时序为1的状态

但由于Gradient Vanish问题,T时刻向前反向传播的Gradient在T-10时刻可能就衰减为0。

从Long-Term退化至Short-Term。

尽管ReLU能够在前馈网络中有效缓解Gradient Vanish,但RNN的深度过深,替换激活函数治标不治本。

$\left |  \prod_{j=p+1}^{t}\frac{\partial b_{h}^{j}}{\partial b_{h}^{j-1}}\right |\leqslant (\beta_{W}\cdot\beta_{h})^{t-p} \quad where \quad \beta =UpperBound$

上式中指明的根源所在,由于W和h两个矩阵多次幂导致受数值影响敏感,简而言之就是深度过大。

大部分Long-Term情况下,不需要提供路径上完整的信息,但反向传播还是循规蹈矩地穿过这些冗深度。

解决方案之一是,设置可自主学习的参数来屏蔽掉这些无用的信息,与"降维"相似,这种方法叫"降层"

神经网络的剪枝策略很简单,就是添加参数矩阵,经过一定周期的学习,选择性屏蔽掉输入,精简网络。

从结构上来看,类似“树套树”,就是”神经网络套神经网络“。

动态门结构

简单概括:

★LSTM将RNN的输入层、隐层移入Memory Cell加以保护

★Input Gate、Forget Gate、Output Gate,通过训练参数,将Gate或开(置1)或闭(置0),保护Cell。

在时序展开图上则更加清晰:

公式定义

原版LSTM最早在[Hochreiter&Schmidhuber 97]提出。

今天看到的LSTM是[Gers 2002]改良过的 extended LSTM。

extended LSTM扩展内容:

★Forget Gate,用于屏蔽t-1以及之前时序信息。

在时序展开图上,由左侧锁住以保护Cell。

★三态门控:

97年提出的Gate输入类似RNN,分为两态Weight矩阵:

☻Wx——序列输入信息

☻Wh——递归隐态输入信息

2002年补充了第三态:

☻Wc——递归Cell态输入信息

将Cell的时序状态引入Gate,称为Peephole Weights。

唯一作用似乎是提升LSTM精度,Alex Graves的博士论文中这么说:

The peephole connections,meanwhile, improved the LSTM’s ability to learn tasks that require precise
timing and counting of the internal states.

具体实现的时候,为了增加计算效率,可以忽视:

Theano的Tutorial中这么说道:

The model we used in this tutorial is a variation of the standard LSTM model.

In this variant, the activation of a cell’s output gate does not depend on the memory cell’s state .

This allows us to perform part of the computation more efficiently (see the implementation note, below, for details).

而CS224D Lecture8中压根就没提。

所以双态Gate可能是更为主流的LSTM变种。

2.1 前向传播

输入门:

$i_{t}=Sigmoid(W_{i}x_{t}+U_{i}h_{t-1}+V_{i}C_{t-1})$      ①

遗忘门:

$f_{t}=Sigmoid(W_{f}x_{t}+U_{f}h_{t-1}+V_{f}C_{t-1})$    ②

输出门:

$O_{t}=Sigmoid(W_{o}x_{t}+U_{o}h_{t-1}+V_{o}C_{t})$    ③

原始Cell(RNN部分):

$\tilde{C_{t}}=Tanh(W_{c}x_{t}+U_{c}h_{t-1})$                  ④

门套Cell:

$C_{t}=i_{t}\cdot\tilde{C_{t}}+f_{t}\cdot C_{t-1}$         (输入门+遗忘门)        ⑤

$h_{t}=O_{t}\cdot Tanh(C_{t}) \quad where \quad h_{t}=FinalOutput$       (输出门)       ⑥

————————————————————————————————————————————————————

仔细观察①②③④,发现除了Peephole Weights引入的$V$阵,这四个式子是一样的。

Theano中为了GPU能够一步并行计算,没有使用Peephole Weights,这样①②③④就是一个基本并行模型:

以相同的代码,运算数据集在空间中的不同部分。

Long-Short Memory Network(LSTM长短期记忆网络)的更多相关文章

  1. LSTM - 长短期记忆网络

    循环神经网络(RNN) 人们不是每一秒都从头开始思考,就像你阅读本文时,不会从头去重新学习一个文字,人类的思维是有持续性的.传统的卷积神经网络没有记忆,不能解决这一个问题,循环神经网络(Recurre ...

  2. LSTM长短期记忆网络

    Long Short Term Memory networks : http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  3. 如何预测股票分析--长短期记忆网络(LSTM)

    在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期 ...

  4. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

    递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...

  5. 理解长短期记忆网络(LSTM NetWorks)

    转自:http://www.csdn.net/article/2015-11-25/2826323 原文链接:Understanding LSTM Networks(译者/刘翔宇 审校/赵屹华 责编/ ...

  6. TensorFlow——LSTM长短期记忆神经网络处理Mnist数据集

    1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2. ...

  7. LSTMs 长短期记忆网络系列

    RNN的长期依赖问题 什么是长期依赖? 长期依赖是指当前系统的状态,可能受很长时间之前系统状态的影响,是RNN中无法解决的一个问题. 如果从(1) “ 这块冰糖味道真?”来预测下一个词,是很容易得出“ ...

  8. Keras(五)LSTM 长短期记忆模型 原理及实例

    LSTM 是 long-short term memory 的简称, 中文叫做 长短期记忆. 是当下最流行的 RNN 形式之一 RNN 的弊端 RNN没有长久的记忆,比如一个句子太长时开头部分可能会忘 ...

  9. LSTM(Long Short-Term Memory)长短期记忆网络

    1. 摘要 对于RNN解决了之前信息保存的问题,例如,对于阅读一篇文章,RNN网络可以借助前面提到的信息对当前的词进行判断和理解,这是传统的网络是不能做到的.但是,对于RNN网络存在长期依赖问题,比如 ...

随机推荐

  1. ThinkPHP入门(二)

    smarty使用 smarty引入流程 1. 控制器IndexAction.class.php function index() $this -> display(); (父类Action的di ...

  2. lsof -ntP -i:端口取出 动行程序的PID 然后xargs kill -9 这个进程

    [root@ok ok]# lsof -ntP -i: [root@ok ok]# netstat -lnutp|grep tcp /dnsmasq tcp /sshd tcp ::: :::* LI ...

  3. C#回顾 – 4.IEnumerable 集合

         

  4. HTTPS的一些疑问解答

    PHP写的网站怎么用https访问,具体要怎样 这跟用什么语言写的网站没有关系,可以去申请个快速的SSL证书,一年也就几十块. 开启apache server的ssl,自己做个免费的ssl证书或者去申 ...

  5. select * from salgrade for update和select * from salgrade for update nowait区别

    1,select * from salgrade for update session1 session2 SQL> delete salgrade where grade=1; 1 row d ...

  6. PHP判断当前访问的是 微信、iphone、android 浏览器

    <?phpvar ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i)=="micromess ...

  7. phpcms v9中调用栏目及调用多个子栏目中的文章列表

    调用一个指定栏目列表:            {pc:content action="lists" catid="6" order="id DESC& ...

  8. hdu 4389 数位dp

    求区间内满足x%fx==0的数的个数,fx为该数各个位数上的数字之和Sample Input21 1011 20 Sample OutputCase 1: 10Case 2: 3 大小不是你想开,想开 ...

  9. 解决因为I_JOB_NEXT问题导致job执行不正常,不停生成trace文件问题

    今天同事说有个项目生产环境的目录老是满.查看了一下bdump目录,发现确实是平均1分钟生成一个8M左右的trace文件.查询了一下alert日志,发现是个job的报错引起的.具体查看了一下trace文 ...

  10. Android系统介绍与框架(转)

    一.Andriod是什么? Android系统是Google开发的一款开源移动OS,Android中文名被国内用户俗称“安卓”.Android操作系统基于Linux内核设计,使用了Google公司自己 ...