lstm模型与情感分析实例

LSTM(Long Short-Term Memory)

LSTM出现背景:由于RNN存在梯度消失的问题,很难处理长序列的数据。为了解决RNN存在问题,后续人们对RNN做了改进,得到了RNN的特例LSTM,它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用。
LSTM模型是RNN的变体,它能够学习长期依赖,允许信息长期存在。

举个例子来讲:比如人们读文章的时候,人们会根据已经阅读过的内容来对后面的内容进行理解,不会把之前的东西都丢掉从头进行思考,对内容的理解是贯穿的。
传统的神经网络即RNN做不到这一点,LSTM是具有循环的网络,解决了信息无法长期存在的问题,在工业界普遍使用有良好的效果。

带循环的递归神经网络如下
带循环的递归神经网络

RNN与LSTM之间联系

RNN具有如下的结构,每个序列索引位置t都有一个隐藏状态h(t)。
在这里插入图片描述
如果略去每层都有的o(t),L(t),y(t),则RNN的模型可以简化成如下图的形式:
在这里插入图片描述
可以看出h(t)由x(t)和h(t−1)得到。
得到h(t)后一方面用于当前层的模型损失计算,另一方面用于计算下一层的h(t+1)。

为了避免RNN的梯度消失,LSTM将tanh激活函数转为更为复杂的结构
LSTM的结构如下图:在这里插入图片描述
在下图中,每一行都带有一个向量,该向量从一个节点输出到其他节点的输入。 粉红色圆圈表示点向运算,如向量加法、点乘,而黄色框是学习神经网络层。 线的合并表示连接,而线的交叉表示其内容正在复制,副本将转到不同的位置。可以看到LSTM的结构要比RNN的复杂的多,真佩服牛人们怎么想出来这样的结构,然后这样居然就可以解决RNN梯度消失的问题?由于LSTM怎么可以解决梯度消失是一个比较难讲的问题,我也不是很熟悉,这里就不多说,重点回到LSTM的模型本身。

LSTM模型结构

细胞状态

我们可以看出每个序列位置t时刻除了跟RNN一样的隐藏状态h(t),还多了一个穿过图的顶部的长横线
长直线称之为细胞状态(Cell State),记为C(t)。如下图
在这里插入图片描述

遗忘门

遗忘门(forget gate)决定我们会从细胞状态中丢弃什么信息
在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。遗忘门子结构如下图所示:
在这里插入图片描述
图中输入的有上一序列的隐藏状态h(t−1)和本序列数据x(t),通过一个激活函数,一般是sigmoid,得到遗忘门的输出f(t)。由于sigmoid的输出f(t)在[0,1]之间,因此这里的输出ft代表了遗忘上一层隐藏细胞状态的概率。用数学表达式即为:
在这里插入图片描述
其中Wf,Uf,bf为线性关系的系数和偏倚,和RNN中的类似。σ为sigmoid激活函数

输入门

输入门它的作用是处理哪部分应该被添加到细胞状态中,也就是为什么被称为部分存储。它的子结构如下图:
在这里插入图片描述
从图中可以看到输入门由两部分组成,第一部分使用了sigmoid激活函数,输出为i(t),第二部分使用了tanh激活函数,输出为a(t), 两者的结果后面会相乘再去更新细胞状态。用数学表达式即为:
在这里插入图片描述
其中Wi,Ui,bi,Wa,Ua,ba,为线性关系的系数和偏倚,和RNN中的类似。σ为sigmoid激活函数。

更新细胞状态

根据遗忘门得到的概率值,丢弃掉一部分之前的细胞状态加上根据输入门得到的新的一部分细胞状态相加,得到此时刻的细胞状态
在这里插入图片描述

输出门

输出门(output gate)由 o(t) 控制,在这一时刻的输出 h(t)和 y(t) 就是由输出门控制的
h(t)的更新由两部分组成,第一部分是o(t), 它由上一序列的隐藏状态h(t−1)和本序列数据x(t),以及激活函数sigmoid得到,第二部分由隐藏状态C(t)和tanh激活函数组成
在这里插入图片描述
简要来说,LSTM 单元能够学习到识别重要输入(输入门作用),存储进长时状态,并保存必要的时间(遗忘门功能),并学会提取当前输出所需要的记忆。

这也解释了 LSTM 单元能够在提取长时序列,长文本,录音等数据中的长期模式的惊人成功的原因。

前向传播算法

一个时刻的前向传播过程如下,对比RNN多了12个参数
在这里插入图片描述
在这里插入图片描述

反向传播算法

反向传播通过梯度下降法迭代更新所有的参数
在这里插入图片描述
如图上的5个不同的阶段反向传播误差

先介绍下各个变量的维度,htht 的维度是黄框里隐藏层神经元的个数,记为d,即矩阵W∗W∗ 的行数(因为WjiWji是输入层的第ii个神经元指向隐藏层第jj个神经元的参数),xtxt的维度记为n,则[ht−1xt][ht−1xt]的维度是d+nd+n,矩阵的维度都是d∗(d+n)d∗(d+n),其他的向量维度都是d∗1d∗1。(为了表示、更新方便,我们将bias放到矩阵里)
以Wf举例:
在这里插入图片描述
同理:
在这里插入图片描述
合并为一个矩阵就是:
在这里插入图片描述
⊙是element-wise乘,即按元素乘。其他的为正常的矩阵乘
用δztδzt表示EtEt对ztzt的偏导
⊗​ 表示外积,即列向量乘以行向量

结论

LSTM对比RNN简单来讲就是复杂了每层的计算方式,解决梯度消失,可以用于处理处理长序列的数据,所以在工业界得到了广泛的应用

代码实例

使用keras实现LSTM 情感分析

keras提供一个LSTM层,用它来构造和训练一个多对一的RNN。我们的网络吸收一个序列(词序列)并输出一个情感分析值(正或负)。
训练集源自于kaggle上情感分类竞赛,包含7000个短句 UMICH SI650
每个句子有一个值为1或0的分别用来代替正负情感的标签,这个标签就是我们将要学习预测的。

导入所需库

from keras.layers.core import Activation, Dense, Dropout, S
<think>好的,用户想了解如何将LSTM模型文本分析相结合,特别是方法和应用实例。首先,我需要整理LSTM在文本分析中的常见方法,比如文本分类、情感分析、生成任务等。然后,结合用户提供的引用资料,尤其是引用[1]、[2]、[3]、[4]中提到的情感分析案例,具体说明应用实例。 首先,LSTM处理文本的基本流程是数据预处理,包括分词、向量化等。然后模型构建部分,可能需要嵌入层、LSTM层和全连接层。需要解释为什么LSTM适合处理序列数据,比如捕捉长距离依赖。 接下来是应用实例部分,用户提供的引用中有多个情感分析的例子,比如IMDB电影评论分析。需要具体说明数据处理步骤、模型结构、训练过程等。同时,可以提到其他应用如机器翻译、文本生成,但重点放在情感分析上,因为引用资料中有较多相关内容。 还需要注意用户提到的引用格式,在回答中适当添加引用标识。比如在提到PyTorch构建LSTM模型时,引用[1]和[2],在Keras实现时引用[3]和[4]。 另外,用户可能对实际代码实现感兴趣,所以需要简要说明代码结构,比如嵌入层、LSTM层的参数设置,以及如何防止过拟合,如使用EarlyStopping和ModelCheckpoint,这些在引用[4]中有提到。 最后,确保回答结构清晰,分点说明方法和应用,并生成相关问题。可能的问题包括LSTM其他模型的对比、优化方法、处理长文本的策略等,需要主题相关。</think>### LSTM模型文本分析结合的方法和应用实例 #### 一、LSTM模型在文本分析中的核心方法 1. **序列建模长程依赖捕捉** LSTM(长短期记忆网络)通过门控机制(输入门、遗忘门、输门)控制信息流动,能有效捕捉文本中的长距离依赖关系。例如,在分析句子情感时,模型需关联句子开头的关键词结尾的结论,LSTM的时序处理能力为此提供了支持[^2]。 2. **文本表示嵌入层** - 文本需先转换为数值形式,常用方法包括词袋模型(Bag-of-Words)和词嵌入(Word Embedding)。 - 嵌入层(如Word2Vec、GloVe或随机初始化)将词汇映射为低维稠密向量,例如:$$ \text{Embedding}(word) \rightarrow \mathbb{R}^d $$ 这种表示能保留语义和语法信息[^3]。 3. **模型架构设计** - **基础结构**:嵌入层 + LSTM层 + 全连接层。 - **双向LSTM**:同时捕获前向和后向的上下文信息,适用于情感分析和实体识别等任务。 - **堆叠LSTM**:多层LSTM增强模型表达能力,但需注意过拟合风险。 #### 二、应用实例:文本情感分析 **案例1:IMDB电影评论情感分类(基于Keras)** 1. **数据处理** - 文本分词后转换为整数序列。 - 填充(Padding)使序列等长,例如`pad_sequences`函数[^3]。 2. **模型构建** ```python from keras.models import Sequential from keras.layers import Embedding, LSTM, Dense model = Sequential() model.add(Embedding(input_dim=vocab_size, output_dim=128)) model.add(LSTM(64, dropout=0.2, recurrent_dropout=0.2)) model.add(Dense(1, activation='sigmoid')) # 二分类输 ``` 3. **训练优化** - 使用`EarlyStopping`和`ModelCheckpoint`防止过拟合[^4]。 - 评估指标为准确率(Accuracy)和损失值(Loss)。 **案例2:社交媒体舆情监测(基于PyTorch)** - **任务**:实时分析推文情感倾向(正面/负面)。 - **关键技术**: - 预训练词向量(如GloVe)初始化嵌入层[^1]。 - 双向LSTM捕捉上下文依赖。 - 输层通过Softmax生成概率分布。 #### 三、其他应用场景 1. **文本生成**:基于LSTM的序列生成,如诗歌创作、新闻摘要。 2. **机器翻译**:编码器-解码器架构中,LSTM处理源语言和目标语言的序列映射。 3. **命名实体识别(NER)**:识别文本中的人名、地点等实体。 #### 四、优化挑战 - **优化方向**: - 结合注意力机制(Attention)增强关键信息聚焦能力。 - 使用预训练模型(如BERT)替代传统嵌入层。 - **挑战**: - 长文本处理效率低(可尝试截断或分层LSTM)。 - 数据稀疏性问题(需增加Dropout或数据增强)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值