LSTM 神经网络(转)

转自:LSTM 网络结构简述 - 简书

为什么提出LSTM?

RNN 存在“长期依赖”问题,当序列过长时候,一方面在优化时出现梯度消失或爆炸的问题。另一方面,展开后的前馈神经网络会占用较大的内存。

实际中,复杂语言场景中,有用的信息间隔有大有小,长短不一,RNN性能受限。LSTM则靠一些“门”结构让信息有选择性地影响循环神经网络中每个时刻的状态。

什么是“门”

“门”结构就是通过使用sigmoid函数和按位乘法的操作。其中sigmoid函数作为激活函数会输出0~1之间的数值,来描述当前的输入 有多少信息量 可以通过这个结构。1则表示全通过,0表示无法通过,而0-1之间的数也是按权保留信息,接近1的通过的多,接近0的通过的少。再通过按位相乘,那么就对原有的信息进行了筛选。

基本结构

LSTM 最有特点的也就是 3个门来控制

 

其中 : 1遗忘门 2是输入门 3 是输出门

先大致讲一下等号左端各个符号的含义:

  

i_t表示输入门,f_t表示遗忘门,o_t表示输出门,\widetilde{\boldsymbol{C}}_{t}表示输入的信息,C_t表示当前网络所表示的信息,h_t则表示当前时刻输出的信息。大致可以看到C_t是有两部分相加得到,这也是LSTM避免梯度消失的地方,将乘变为‘+’。

LSTM网络结构中存在着一个隐藏的记忆结构,也就是C_t 。这个变量每一次都参加都运算当中,但是输出的时候只输出h_t,并不会输出C_t。下图红线,表示了再每个LSTM单元中,C_t都是用来协助保存信息的。

 

我们需要关注的是这三个门都是如何起作用的

输入门

输入门

其中h_{t-1}和x_t分别表示前面信息的输出和当前的输入,[h_{t-1},x_t] 的意思是,将h_{t-1},x_t两个向量进行拼接。

比如

h_{t-1} = [1,2] , x_t = [3],那么拼接的向量为:[h_{t-1},x_t] = [1,2,3]

 

W_i 和 b_i 代表着输入门的权重参数和偏置项。 \sigma(\cdot) 代表着sigmoid函数,这也是“门”发挥作用的地方。

LSTM组合式中的\widetilde{\boldsymbol{C}}_{t}=\tanh \left(\boldsymbol{W}_{C} \cdot\left[\boldsymbol{h}_{t-1}, \boldsymbol{x}_{t}\right]+\boldsymbol{b}_{C}\right) \\表示当前输入的信息,在\boldsymbol{C}_{t}=\boldsymbol{f}_{t} \odot \boldsymbol{C}_{t-1}+\boldsymbol{i}_{t} \odot \widetilde{\boldsymbol{C}}_{t}中有一部分为\boldsymbol{i}_{t} \odot \widetilde{\boldsymbol{C}}_{t}。这个式子就是输入门发挥作用的地方,通过按位乘,将对\widetilde{\boldsymbol{C}}_{t}的信息进行“门”控制。

遗忘门

遗忘门

遗忘门的生成跟输入门是一样的,只不过有不同的参数W_f,b_f从而生成了遗忘门。这里比输入门相对简单,因为遗忘门作用在前面输入的信息C_{t-1}上,而C_{t-1} 是直接可得到的。所以\boldsymbol{C}_{t}=\boldsymbol{f}_{t} \odot \boldsymbol{C}_{t-1}+\boldsymbol{i}_{t} \odot \widetilde{\boldsymbol{C}}_{t} \\有了这个式子的\boldsymbol{f}_{t} \odot \boldsymbol{C}_{t-1}部分。其中的C_{t-1}是来自上一个时刻的信息。

这个时候我们再回顾下上面的图片

 

(截图上打不出数学符号,h\_ \ {t-1}就是 h_{t-1} ,依次类推)

可以看到上面各个式子的作用过程

输出门

输出门

输出门的门结构形成与前面是一样的,不同的还是在于参数W_o,b_o。输出门作用的是控制输出信息。通过输出函数:\boldsymbol{h}_{t}=\boldsymbol{o}_{t} \odot \tanh \left(\boldsymbol{C}_{t}\right) 来进行控制。C_t就是我们当前单元得到的信息。其中即包含了对输入信息的选择,也包含了之前信息的选择。(参考\boldsymbol{C}_{t}=\boldsymbol{f}_{t} \odot \boldsymbol{C}_{t-1}+\boldsymbol{i}_{t} \odot \widetilde{\boldsymbol{C}}_{t}

o_t则对输出信息再次进行“门”选择。我们可以得到真正的输出信息。

总结

结合自己一部分认知,以及常宝宝老师今天课上讲的内容,总结了下。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值