9.NN特殊结构(2)——Highway Network & Grid LSTM

这里介绍三种特殊的结构:spatial transformer layer,highway network & grid LSTM,还有recursive network。
本节介绍:Highway Network & Grid LSTM



Highway network实际上受到了LSTM的启发,从结构上来看,深层的前馈网络其实和LSTM非常的像,如下图:


所以二者的差别就在于,在前馈【Feedforward network 】中只有一个input,而LSTM中每一层都要把这一个时刻的x也作为输入。
所以很自然的一个想法,在LSTM中有一个forget gate决定要记住以前多久的信息,那么在前馈网络中也可以引入一个gate来决定有哪些之前的信息干脆就不要了,又或者有哪些以前的信息直接在后面拿来用。
那最简单LSTM变种是GRU,所以highway network借鉴了GRU的方法,把reset gate拿掉,再把每个阶段的x拿掉。

在这里,我们做的改变就是:
①每一步中的input x^t 是没有的;
②每一步中的input y^t 是没有的;
③改一下变量符号,Recurent Network我们都用h表示神经网络的输出;但是feedfoward network我们用a表示
a^{t-1}是第t-1层的输出
⑤没有reset gate
,原因:

  • reset gete是让GRU忘记之前发生过的事情,但是在highway network里面不应该忘记,(因为GRU里面每一个时间点都会有新的information进来,所以可以忘记过去的事情,忘记的也许是不重要的信息,比如语音辨识某句话,某些词汇已经完全辨识出来了,所以就可以忘记了;但是highway network里面,他是一个feedforward network,只有一开始的时候有一个输入,因此中间没有输入,不能忘记信息);
  • 少了很多参数;

所以将GRU简化一下再竖起来,我们就可以得到highway network:


当然感觉也可以将ResNet看做是竖起来的LSTM。那ResNet里面的变换可以是很多层的,所以在现在的实现中,很常见的一个情况是将这个东西叫做一个residual block。

这种highway network好处就是,你可自动控制要用多少个layer。如下图,红色的手写数字代表这个network用了多少层:


所以利用highway network有一个非常明显的好处就是可以避免前馈网络太深的时候会导致梯度消失的问题。另外有一个好处就是通过highway network可以让网络自己去学习到底哪个layer是有用的。
那既然可以将深度的记忆传递下去,那么这样的操作也可以用到LSTM里面,也就是grid LSTM。一般的LSTM是通过forget gate将时间方向上的信息传递下去的,但是并没有将layer之间的信息传递下去。因此grid LSTM就是加一个参数纵向传递,从而将layer的信息传递下去,直观上来说,就是在y后面再拼一个vector,然后这个vector的作用跟c一样。具体的可以看一下DeepMind的这篇论文,Grid LSTM。粗略来说,结构上像这样:


怎么把这些grid lstm的block连接起来呢?要在横纵两个方向都弄一下:

接下来,让我们看看Grid LSTM 的内部原理图:

c
a
串成一个vector作为输入,把
h
b
串成一个vector作为输入,
{h'},{c'}
被送到时间的方向,
{b'},{a'}
被送到深度的方向。输出就是对应的向量
[\begin{array}{*{20}{c}} {c'}\\ {a'} \end{array}]
[\begin{array}{*{20}{c}} {h'}&{b'} \end{array}]

那有2D的grid LSTM很自然就会有3D的grid LSTM,套路都是差不多的:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容