面向情感分析任务的LSTM结构相关技术问题咨询
LSTM情感分析相关问题解答
问题1:LSTM层对输入词向量的处理及输出内容
- 处理逻辑:每个单词对应LSTM的一个时间步,单步运行时会同时接收3个输入:当前步的词向量、上一个时间步输出的隐藏状态、上一个时间步的细胞状态。随后依次通过4个门控单元完成计算:先通过遗忘门过滤历史细胞状态的冗余信息,再通过输入门确定当前词向量需要写入细胞状态的内容并更新细胞状态,最后通过输出门基于更新后的细胞状态生成当前步的隐藏状态。
- 输出内容:默认会输出每个时间步对应的隐藏状态,在情感分析任务中通常有两种用法:一是直接取最后一个时间步的隐藏状态作为整个句子的全局语义表征,输入后续全连接层做情感极性分类;二是对所有时间步的隐藏状态做均值/最大值池化,得到全局表征后再做后续计算。
问题2:遗忘门的具体作用
首先要纠正一个常见误区:遗忘门不是直接作用于当前输入的词向量,而是作用于上一步传入的历史细胞状态。
遗忘门的输出是一个和细胞状态维度完全一致的向量,每个元素的取值范围在0到1之间:取值越接近0,代表细胞状态对应维度存储的历史信息需要被丢弃;取值越接近1,代表对应维度的历史信息需要保留。
拿你举的“good”对应50维词向量的例子说明:如果当前句子是not good,当输入到“good”这个词时,遗忘门会保留细胞状态中存储的前序“not”对应的否定语义维度信息,不会把这部分历史信息丢弃,最终才能正确识别出整个短语的负面情感,而不是单独把“good”判定为正面。
问题3:设置两层LSTM的原因
- 单层LSTM的建模能力有限,通常只能捕捉到低阶的短距离时序依赖,比如相邻2-3个词的搭配关系。
- 第二层LSTM的输入是第一层LSTM每个时间步输出的隐藏状态,相当于在第一层的低阶语义特征基础上,进一步建模更高阶、更长距离的时序依赖,比如情感分析场景下句首的情感词和句尾转折词的关联关系、长句中跨多个词的修饰关系等,能有效提升情感分类的准确率。
- 情感分析属于轻量级NLP任务,2层LSTM是性能和训练成本的最优平衡,层数过多反而容易出现梯度消失、过拟合等问题,收益极低。
内容的提问来源于stack exchange,提问作者Gorg
相关产品推荐
相关产品推荐

