试谈`RNN`中`门`的变迁

博客引流

终于发完proposal 的邮件 深吸一口气

希望明天不要被怼的太惨

已经连续 高强度(hua shui) 看paper n天了

一切 索然无味

随着看到的paper层次越来越高

就越发羡慕搞NLP

昨天还在跟室友说 一开始觉得写SMNWuWei dalao指不定是个中年油腻大叔

结果人家研究生还没毕业

哇 满脸的羡慕

言归正传 打算用两三篇blog 讲一下最近学习的多轮检索式对话这个领域

第一篇就来谈一谈 在检索式对话中用到最多的 RNN 模型家族 (之所以 称之为 家族 因为变种太多了)

Naïve RNN

RNN = Recureent Neural Network

翻译成中文就是循环神经网络(注意不是递归,虽然它的过程很递归)

和传统的卷积神经网络CNN 全连接神经网络DNN不同的是其包含时序信息

顺带说一下另外两者的特点

DNN: n层与n-1层每个都有关, 参数数量级巨大;
CNN: 卷积+pool,至于什么是卷积?加权叠加

这一点十分有利于用于训练和时间相关的Dataset 尤其是NLP方面

有没有觉得很像马尔科夫链(en 不是过程 就是链)

事实上在有CNN之前 确实一般都做成隐马尔科夫链

NN起源于多层感知机MLP

感知机之所以能战胜同时期的元胞自动机异军突起 主要是其拥有反向传播算法

但NN随着训练层数的增大 会出现梯度消失现象 但层度深 确实效果好呀

于是就有一堆学者提出了 各种办法 使得 NN的层数能够扩展

比如说预处理 高速公路网络(highway network)和深度残差学习(deep residual learning)

时序的效果不仅仅是训练结果和之前的转态有关 还带来了变长度输出的特性 这点和其他NN尤为不同

图片.png | center | 556x500

CNN 可以在下一个时间点 把输出作用在节点自身

如果按时间展开 就变成那张经典的图 作用在t+1时刻输出o(t+1)是该时刻输入和所有历史共同作用的结果

图片.png | center | 556x500

可以看出 s t + 1 , o t = f ( s t , x t , U , V , W ) s_{t+1}, o_t = f(s_t, x_t, U, V, W) st+1,ot=f(st,xt,U,V,W)

和别的NN不同的是RNN所有步骤共享相同的参数 U , V , W U, V, W U,V,W

有正向的RNN 很容易想到是不是还有双向的(Bidirectional RNN) 深度(Deep Bidirectional RNN)

但对于上述RNN都不可避免的会出现前面说的梯度消失的现象

只不过在这里对的是时间维度上的消失(即 时序信息传播不过k间隔)

所以就有了一系列改进版RNN

LSTM

比如说最著名的LSTM[4]

LSTM = LONG SHORT-TERM MEMORY

其通过的设置来实现长时期的记忆能力

LSTM每个时刻的hidden state包含了多个memory blocks

每个block包含了多个memory cell

每个memory cell包含一个Cell和三个Gate: 输入门,输出门,遗忘门

图片.png | center | 556x500

Forward Pass

  • I n p u t G a t e Input Gate InputGate
    a l t = ∑ i = 1 I w i l x i t + ∑ h = 1 H w h l b h t − 1 + ∑ c = 1 C w c l s c t − 1 a_l^t=\sum\limits_{i=1}^Iw_{il}x_i^t+\sum\limits_{h=1}^Hw_{hl}b_h^{t-1}+\sum\limits_{c=1}^Cw_{cl}s_c^{t-1} alt=i=1Iwilxit+h=1Hwhlbht1+c=1Cwclsct1

    b l t = f ( a l t ) b_l^t=f(a_l^t) blt=f(alt)

  • F o r g e t G a t e Forget Gate ForgetGate
    a ϕ t = ∑ i = 1 I w i ϕ x i t + ∑ h = 1 H w h ϕ b h t − 1 + ∑ c = 1 C w c ϕ s c t − 1 a_\phi^t=\sum\limits_{i=1}^Iw_{i\phi}x_i^t+\sum\limits_{h=1}^Hw_{h\phi}b_h^{t-1}+\sum\limits_{c=1}^Cw_{c\phi}s_c^{t-1} aϕt=i=1Iwiϕxit+h=1Hwhϕbht1+c=1Cwcϕsct1

    b ϕ t = f ( a ϕ t ) b_\phi^t=f(a_\phi^t) bϕt=f(aϕt)

  • C e l l Cell Cell
    a c t = ∑ i = 1 I w i c x i t + ∑ h = 1 H w h c b h t − 1 a_c^t=\sum\limits_{i=1}^Iw_{ic}x_i^t+\sum\limits_{h=1}^Hw_{hc}b_h^{t-1} act=i=1Iwicxit+h=1Hwhcbht1

    s c t = b ϕ t s c t − 1 + b l t g ( a c t ) s_c^t=b_\phi ^ts_c^{t-1}+b_l^tg(a_c^t) sct=bϕt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值