首页 > 编程知识 正文

BILSTM,bilstm模型

时间:2023-05-06 15:25:20 阅读:279346 作者:1562

一、介绍

1.1 文章组织

本文简要介绍了BiLSTM的基本原理,并以句子级情感分类任务为例介绍为什么需要使用LSTM或BiLSTM进行建模。在文章的最后,我们给出在PyTorch下BiLSTM的实现代码,供读者参考。

1.2 情感分类任务

自然语言处理中情感分类任务是对给定文本进行情感倾向分类的任务,粗略来看可以认为其是分类任务中的一类。对于情感分类任务,目前通常的做法是先对词或者短语进行表示,再通过某种组合方式把句子中词的表示组合成句子的表示。最后,利用句子的表示对句子进行情感分类。

举一个对句子进行褒贬二分类的例子。

句子:我爱赛尔

情感标签:褒义

1.3 什么是LSTM和BiLSTM?

LSTM的全称是Long Short-Term Memory,它是RNN(Recurrent Neural Network)的一种。LSTM由于其设计的特点,非常适合用于对时序数据的建模,如文本数据。BiLSTM是Bi-directional Long Short-Term Memory的缩写,是由前向LSTM与后向LSTM组合而成。两者在自然语言处理任务中都常被用来建模上下文信息。

1.4 为什么使用LSTM与BiLSTM?

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

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

二、BiLSTM原理简介

2.1 LSTM介绍

2.1.1 总体框架

LSTM模型是由时刻的输入词,细胞状态 ,临时细胞状态,隐层状态,遗忘门,记忆门,输出门组成。LSTM的计算过程可以概括为,通过对细胞状态中信息遗忘和记忆新的信息使得对后续时刻计算有用的信息得以传递,而无用的信息被丢弃,并在每个时间步都会输出隐层状态,其中遗忘,记忆与输出由通过上个时刻的隐层状态和当前输入计算出来的遗忘门,记忆门,输出门来控制。

总体框架如图1所示。

图1. LSTM总体框架

2.1.2 详细介绍计算过程

计算遗忘门,选择要遗忘的信息。

输入:前一时刻的隐层状态,当前时刻的输入词 

输出:遗忘门的值

图2. 计算遗忘门

计算记忆门,选择要记忆的信息。

输入:前一时刻的隐层状态,当前时刻的输入词 

输出:记忆门的值,临时细胞状态

图3. 计算记忆门和临时细胞状态

计算当前时刻细胞状态

输入:记忆门的值,遗忘门的值,临时细胞状态,上一刻细胞状态

输出:当前时刻细胞状态

图4. 计算当前时刻细胞状态计算输出门和当前时刻隐层状态

输入:前一时刻的隐层状态,当前时刻的输入词 ,当前时刻细胞状态

输出:输出门的值,隐层状态

图5. 计算输出门和当前时刻隐层状态

最终,我们可以得到与句子长度相同的隐层状态序列{, , ..., }。

2.2 BiLSTM介绍

前向的LSTM与后向的LSTM结合成BiLSTM。比如,我们对“我爱中国”这句话进行编码,模型如图6所示。

图6. 双向LSTM编码句子前向的依次输入“我”,“爱”,“中国”得到三个向量{, , }。后向的依次输入“中国”,“爱”,“我”得到三个向量{, , }。最后将前向和后向的隐向量进行拼接得到{[, ], [, ], [, ]},即{, , }。

对于情感分类任务来说,我们采用的句子的表示往往是[, ]。因为其包含了前向与后向的所有信息,如图7所示。

图7. 拼接向量用于情感分类

三、BiLSTM代码实现样例

3.1 模型搭建

使用PyTorch搭建BiLSTM样例代码。代码地址为https://github.com/albertwy/BiLSTM/。

 

 

参考:https://www.jiqizhixin.com/articles/2018-10-24-13

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。