基于注意力机制的LSTM的中文在线评论情感分类之LSTM原理详细介绍

声明:本文主要参考于《TensorFlow2深度学习》一书

目录

一、遗忘门

二、输入门

三、输出门

四、小结


     基础的RNN网络结构如下图所示,上一个时间戳的状态向量 h_{t-1} 与当前时间戳的输入 x_{t } 经过线性变换,在通过激活函数tanh后得到当前时间戳的状态变量 h_{t} ,用来进行输出

相对于基础的RNN网络结构中只有一个状态向量 h_{t } ,LSTM新增了一个可以作为内部memory的状态变量 c_{t} ,同时引入门控机制来控制内部信息的流动,如下图

LSTM有三个门控:输入门、遗忘门和输出门。门控机制是利用门控值向量g表示,如下图,通过 \sigma \left ( g \right ) 激活函数将门控制压缩到区间[0,1]中,当 \sigma \left ( g \right ) =0时,门控关闭,输出 o=0;当 \sigma \left ( g \right )=1时,门控打开,输出 o=x。即通过门控机制可以较好地控制数据的流量程度

       下面详细介绍三个门控的原理及其作用

一、遗忘门

       遗忘门作用于LSTM 状态向量 𝒄,用于控制上一个时间戳的记忆 c_{t-1} 对当前时间戳的影响。遗忘门的控制变量 g_{f } 由 g_{f}=\sigma \left ( w_{f}*[h_{t-1},x_{t}]+b_{f} \right ) 产生,如下图所示,其中 w_{f} 和 b_{f} 为遗忘门的参数张量,可由反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。当门控 g_{f } = 1时,遗忘门全部打开,LSTM 接受上一个状态 c_{t-1} 的所有信息;当门控 g_{f } = 0时,遗忘门关闭,LSTM 直接忽略 c_{t-1},输出为0的向量。


      经过遗忘门后,LSTM 的状态向量变为 g_{f }*c_{t-1}

二、输入门

      输入门用于控制LSTM对输入的接受程度。首先通过对当前时间戳的输入 x_{t} 和上一个时间戳的输出  h_{t-1} 做非线性变换,在经过激活函数tanh得到新的输入变量 \tilde{c}_{t}

                                                             \tilde{c}_{t}=tanh(w_{c}*[h_{t-1},x_{t}]+b_{c})

其中 w_{c} 和 b_{c } 为输入门的参数,需要通过反向传播算法自动优化,tanh 为激活函数,用于将输入标准化到区间[−1,1]中。\tilde{c}_{t} 并不会全部刷新进入LSTM 的Memory,而是通过输入门控制接受输入的量。输入门的控制变量同样来自于输入 x_{t} 和输出 h_{t-1}

                                                             g_{i}=\sigma \left ( w_{i}*[h_{t-1},x_{t}]+b_{i} \right )

其中 w_{i} 和 b_{i} 为输入门的参数,需要通过反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。输入门控制变量 g_{i} 决定了LSTM 对当前时间戳的新输入 \tilde{c}_{t} 的接受程度:当 g_{i} = 0时,LSTM 不接受任何的新输入 \tilde{c}_{t};当 g_{i} = 1时,LSTM 全部接受新输入 \tilde{c}_{t},如下图。

       经过输入门后,待写入Memory 的向量为 g_{i}*\tilde{c}_{t}

       在遗忘门和输入门的控制下,LSTM 有选择地读取了上一个时间戳的记忆 c_{t-1} 和当前时间戳的新输入 c_{t},状态向量 c_{t} 的刷新方式为: 

在这里插入图片描述


        得到的新状态向量 c_{t} 即为当前时间戳的状态向量,如上图所示。

三、输出门

        LSTM 的内部状态向量 c_{t} 并不会直接用于输出,这一点和基础的RNN 不一样。基础的RNN 网络的状态向量既用于记忆,又用于输出,所以基础的RNN 可以理解为状态向量 𝒄 和输出向量 h 是同一个对象。在LSTM 内部,状态向量并不会全部输出,而是在输出门的作用下有选择地输出。输出门的门控变量 g_{o}为:

其中 w_{o} 和 b_{o} 为输出门的参数,同样需要通过反向传播算法自动优化,𝜎为激活函数,一般使用Sigmoid 函数。当输出门 g_{o} = 0时,输出关闭,LSTM 的内部记忆完全被隔断,无法用作输出,此时输出为0 的向量;当输出门 g_{o} = 1时,输出完全打开,LSTM 的状态向量 c_{t} 全部用于输出。LSTM 的输出由:

产生,即内存向量 c_{t} 经过激活函数tanh后与输入门作用,得到LSTM 的输出。由于 g_{o} ∈ [0,1],tanh\left ( c_{t} \right ) ∈ [−1,1],因此LSTM 的输出 h_{t} ∈ [−1,1]。

四、小结

       LSTM 虽然状态向量和门控数量较多,计算流程相对复杂。但是由于每个门控功能清晰明确,每个状态的作用也比较好理解。这里将典型的门控行为列举出来,并解释其代码的LSTM 行为,如表所示。

输入门控遗忘门控LSTM行为
01只使用记忆
11综合输入和记忆
00清零记忆
10输入覆盖记忆

备注:本文实现代码详见本系列更新(稍后会附上地址),欢迎来看

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值