RNN之LSTM(二)

为了constant error flow(即误差信号既不衰减也不指数增加),并解决输入输出误差冲突,构建了一个复杂的单元(a memory cell),增加了input gate(保护存储的信息不被不相关输入打扰)和output gate(保护其他单元不被当前不相关内容打扰)。
第j个memory cell叫做 cj ,除了 netcj cj 会从outj和inj中得到输入——f是不同的激活函数:
这里写图片描述
这里写图片描述
这里的u代表各种输入单元,门单元,memory cell或者传统的隐藏层单元。下面是一个例子:
这里写图片描述
在时刻t, cj 的输出 ycj(t) 为: ycj(t)=youtj(t)h(scj(t)) ,这里的 scj(t) (内核状态),计算公式如下:
这里写图片描述,不同的函数g压缩 cj ,不同的函数h放大memory cell的输出信息。
1. inj 控制error flow到 cj 的输入连接, outj 控制单元j的输出连接的error flow,换句话说,网络使用 inj 决定什么时候保持/覆盖单元 cj 的内容, outj 决定什么时候获取 cj 的内容以及什么时候防止其他单元被 cj 干扰。根据上述特性知道error signal在memory cell的CEC中不会改变,但是不同时刻的error signals对于同一个cell会累加,output gate就是学习哪些error会被陷到CEC中,通过适当的放缩。input gate则学习什么时候释放掉error,同样是通过适当的放缩。在实验中发现并不是所有的gate都是需要的,有时候input gate就足够了。
2.若干个(S)memory cell共享相同的输入门和输出门,从而形成一个“memory cell block of size S”
3.learning:一旦一个错误信号到达一个memory cell output,它将会被输出门激活函数和h’缩放,在通过CEC时信号不会被缩放。只有当信号通过输入门和g离开memory cell时信号再一次被缩放。在信号被删减去除之前会改变输入权重。
4.计算复杂度O(W),W是权重的数量。
5.abuse:在学习阶段的一开始,可能会出现没有存储到信息错误信号就减少了,从而网络就会abuse 记忆单元细胞,例如偏置细胞。这就会使得将会花很长的时间去释放被abuse的cell让他们在进一步的学习中被用到。如果两个cell存储了相同的信息,也会出现同样的问题。对此有两种解决方案:1是序列网络构建,当错误信号停止下降会增加一个cell和相应的门单元被到网络中;2输出门偏置:每一个输出门有一个负的初始化值,将初始的激活函数趋向0。
6.internal state drift,中文翻译成内部状态漂移,感觉怪怪的——举例子:如果记忆单元Cj的输入是正或者负,之后它的内部状态sj将会drift away。这样的后果就是 h(sj) 会采用非常小的值,梯度就会消散。一个解决方法是选择一个合适的函数h,但是像h(x)=x,这样的函数的输出范围又是无限的。存在一个简单有效的解决方法——初始化权重和输入门为0.
以下举一个8个输入单元,4个输出单元,两个大小为2的记忆细胞块的例子:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值