【发布时间】:2021-10-13 16:10:53
【问题描述】:
我正在尝试了解 LSTM 如何解决情绪分析问题。目前,我对这种结构感到困惑:
所以这是我的问题清单:
- 向 LSTM 层提供表示数据集中每个句子的每个单词的向量后,LSTM 层对它们做了什么以及输出是什么?
- 遗忘门有什么作用?比如有50个向量来表示“good”这个词,所以它只是忘记了不必要的向量什么的?
- 为什么有两个 LSTM 层?
【问题讨论】:
标签: python lstm sentiment-analysis
我正在尝试了解 LSTM 如何解决情绪分析问题。目前,我对这种结构感到困惑:
所以这是我的问题清单:
【问题讨论】:
标签: python lstm sentiment-analysis
在你为 LSTM 层提供了代表数据集中每个句子的每个单词的向量之后,LSTM 层对它们做了什么以及输出是什么?
您展示的架构的最终输出(直到它被输入到 softmax 为止)是一个句子嵌入,即表示句子的单个(高维)浮点向量。 (您展示了展开的版本,但我发现同时考虑其真正的卷起形式也很有用。)
就这个问题而言,它与简单的 RNN 做同样的事情,因此请确保您首先了解这一点。有很多文章和视频解释它。例如。 https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45
遗忘门有什么作用?
它试图了解哪些是更重要的词。如果接受过情绪分析的训练,它有望学会给情绪化的词赋予更多的权重,而对没有情绪的词赋予更少的权重。您可能还会看到它被称为保持门。权重高时保留单词,权重低时忘记单词。
假设您有一个长句,例如:“这部电影有一些非常有趣的角色和精彩的动作场景,由汤姆·史密斯执导,迪克·琼斯制作,于 2019 年开始制作。” RNN 进行情感分析的问题是它一次只维护一个单词的状态。每一步它都会失去一些以前的东西。到最后它几乎忘记了早期的积极话语。
您真的希望它被视为:“非常有趣的角色,精湛的动作场景。”。这是一个更短的句子来学习和理解。所以这就是 LSTM 中的遗忘门试图为你做的事情。
剧透警告:它做得不太好,但明显比完全不做要好。
为什么有两个 LSTM 层?
允许更复杂的理解和更好的句子嵌入。这与在全连接神经网络中添加另一层相同。然而,LSTM 不能很好地扩展超过两层。
模型如何准确地基于该向量知道该句子的情感? 该向量是否具有某种使其为正或负的特征
第二个子问题的答案是“也许,但并不总是以人类可读的形式”。您的架构的最后一层正在尝试使用经典的全连接神经网络来了解向量的每个元素表示的情感类型。
例如假设您使用维度为 100 的向量,并且您想将其分为三类:愤怒、快乐、悲伤。然后,您的训练数据会包含诸如“今天一切顺利”之类的带有“快乐”标签的句子。也许该句子在 LSTM 产生的向量的第 77 个元素中具有很高的数量。也许大多数“快乐”句子在该元素中具有很高的价值,但愤怒和悲伤的句子没有显示出它的模式。因此,它给快乐输出一个高正权连接元素 77,以及一个将 77 连接到愤怒和悲伤的零权重。
如果您的目标是提高您的直觉,那么构建只有 2 或 3 维和几个训练句子的模型会很有趣,然后故意在训练数据上过度拟合模型。有时您会遇到噪音,但有时您很幸运,并且可以跟踪每个单词的向量如何相互作用,在输出中给出不同的模式,以及最后一层如何将它们组合起来给出预测。
【讨论】: