LSTM 和 Bi-LSTM

本文介绍了LSTM和Bi-LSTM的概念及其在自然语言处理中的作用。LSTM通过记忆和遗忘机制处理时序数据,擅长捕捉长距离依赖,而Bi-LSTM结合了前向和后向信息,尤其适用于捕捉句子中的双向语义依赖。在情感分类等任务中,Bi-LSTM的表现通常优于单向LSTM。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:转载于https://blog.csdn.net/Smile_mingm/article/details/105202022

什么是LSTM与Bi-LSTM

LSTM的全称是Long Short-Term Memory,它是RNN(Recurrent Neural Network)的一种。

LSTM由于其设计的特点,非常适合用于对时序数据的建模,如文本数据。

BiLSTM是Bi-directional Long Short-Term Memory的缩写,是由前向LSTM与后向LSTM组合而成。两者在自然语言处理任务中都常被用来建模上下文信息。

为什么使用LSTM与Bi-LSTM

将词的表示组合成句子的表示,可以采用相加的方法,即将所有词的表示进行加和,或者取平均等方法,但是这些方法没有考虑到词语在句子中前后顺序。如句子“我不觉得他好”。“不”字是对后面“好”的否定,即该句子的情感极性是贬义。使用LSTM模型可以更好的捕捉到较长距离的依赖关系。因为LSTM通过训练过程可以学到记忆哪些信息和遗忘哪些信息。

但是利用LSTM对句子进行建模还存在一个问题:无法编码从后到前的信息。在更细粒度的分类时,如对于强程度的褒义、弱程度的褒义、中性、弱程度的贬义、强程度的贬义的五分类任务需要注意情感词、程度词、否定词之间的交互。举一个例子,“这个餐厅脏得不行,没有隔壁好”,这里的“不行”是对“脏”的程度的一种修饰,通过BiLSTM可以更好的捕捉双向的语义依赖。

LSTM

LSTM模型是由 t t t 时刻的输入词 X t X_t Xt,细胞状态 C t C_t Ct,临时细胞状态 C t ~ \widetilde{C_t} Ct ,隐层状态 h t h_t ht,遗忘门 f t f_t ft ,记忆门 i t i_t it,输出门 o t o_t ot 组成。

LSTM的计算过程可以概括为,通过对细胞状态中信息进行遗忘和记忆新的信息使得对后续时刻计算有用的信息得以传递,而无用的信息被丢弃,并在每个时间步都会输出隐层状态 h t h_t ht

其中遗忘门 f t f_t ft,记忆门 i t i_t it ,输出门 o t o_t ot 由通过上个时刻的隐层状态 h t − 1 h_{t-1} ht1 和 当前时间步的输入 X t X_t Xt 得出。

总体框架如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最终,我们可以得到与句子长度相同的隐层状态序列 { h o , h 1 , . . . , h n − 1 } \{h_o,h_1,...,h_{n-1}\} {ho,h1,...,hn1}

Bi-LSTM

前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码,模型如下图所示。
在这里插入图片描述
前向的 L S T M L LSTM_L LSTML 依次输入“我”,“爱”,“中国”得到三个向量 { h L 0 , h L 1 , h L 2 } \{h_{L0},h_{L1},h_{L2}\} {hL0,hL1,hL2}。后向的 L S T M R LSTM_R LSTMR 依次输入“中国”,“爱”,“我”得到三个向量 { h R 0 , h R 1 , h R 2 } \{h_{R0},h_{R1},h_{R2}\} {hR0,hR1,hR2}。最后将前向和后向的隐向量进行拼接得到 { [ h L 0 , h R 2 ] , [ h L 1 , h R 1 ] , [ h L 2 , h R 0 ] } \{[h_{L0},h_{R2}],[h_{L1},h_{R1}],[h_{L2},h_{R0}]\} {[hL0,hR2],[hL1,hR1],[hL2,hR0]},即 { h 0 , h 1 , h 2 } \{h_0,h_1,h_2\} {h0,h1,h2} 对于情感分类任务来说,我们采用的句子的表示往往是 [ h L 2 , h R 2 ] [h_{L2}, h_{R2}] [hL2,hR2]。因为其包含了前向与后向的所有信息,如下图所示:

在这里插入图片描述

参考资源链接:[LSTM Bi-LSTM中文维基百科语言模型Python实现及教程](https://wenku.csdn.net/doc/5af2bit4uo?utm_source=wenku_answer2doc_content) 掌握如何在中文维基百科数据集上训练LSTMBi-LSTM语言模型,并计算新句子的概率是深入理解深度学习在自然语言处理中的应用的关键步骤。为了帮助你更好地掌握这一系列技术,推荐查看这份资源:《LSTM Bi-LSTM中文维基百科语言模型Python实现及教程》。这个项目将提供给你完整的Python源码,让你可以动手实践深入了解这些概念。 首先,你需要准备数据集。这可以通过使用结巴分词对中文维基百科的文本进行处理来实现,创建词典词语id映射。然后,你可以使用提供的train.py脚本来训练模型,该脚本会读取处理好的数据集,并使用LSTMBi-LSTM网络结构进行模型参数的优化。 在模型训练完成后,你可以利用compute_sentence_pro脚本来评估新句子的概率。这个脚本使用训练好的语言模型来计算给定句子的条件概率,帮助你理解模型对于自然语言序列的预测能力。 在训练语言模型时,需要特别注意的是,LSTMBi-LSTM网络结构的选择、超参数的调整以及数据预处理的方式都对最终模型的性能有显著影响。例如,LSTM适用于处理长期依赖问题,而Bi-LSTM能够同时捕捉到序列数据的前向后向上下文,提高模型的理解能力。 完成上述步骤后,你将得到一个能够对中文句子进行概率评估的LSTMBi-LSTM语言模型,这将是你深入研究深度学习自然语言处理的一个宝贵实践经验。如果你想继续深入了解这些高级话题,或者需要更多案例深入内容的资源,这份资料《LSTM Bi-LSTM中文维基百科语言模型Python实现及教程》能够为你提供坚实的起点实用的项目代码。 参考资源链接:[LSTM Bi-LSTM中文维基百科语言模型Python实现及教程](https://wenku.csdn.net/doc/5af2bit4uo?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值