从零开始学Python自然语言处理(22)—— 效果震撼的Bi-LSTM

浏览: 2889

前文传送门:

从零开始学自然语言处理(21)—— 强大的长短期记忆网络(LSTM)(下)

在上一章中,我们详细讲解了LSTM,LSTM在传统的RNN结构基础上,能处理长期依赖

但如果你比较细心,会发现LSTM作为有方向的单向传播结构,理论上只能通过历史信息预测将来的信息,也就是说,在处理文本序列时,只能通过读过的文本预测之后的文本信息。

这种单向会衍生出问题,例如一句话:“今天周日,天气很热,小明和小红去了__ , 海边的风很大。 ”,如果只是从前往后处理文本,当处理到 “今天周日,天气很热,小明和小红去了__ , ”我们很难预测空格处的位置,但如果同时考虑空格之后的信息,我们能预测出他们去的地方应该是海边、沙滩之类的地方。

为了解决这个问题,Bi-LSTM出现了。它是一种双向的LSTM结构,也属于双向RNN结构,如下图所示:

由于同时包含了前向和后向信息,它可以通过上下文信息预测当前词。其中包含了共享权w1~w6。

通过上图,我们能归纳出双向LSTM的计算公式如下:

ht和h't分别是前向和后向传播到当前节点的输出,然后分别乘以w4和w6权重矩阵,得到当前位置的输出,见图中的红框处:

我们通常还能看到以下这种图,代表了单层的Bi-LSTM:

或是下图这种多层的Bi-LSTM:

Bi-LSTM和条件随机场(CRF)通常组合用于命名实体识别等序列任务中,并且效果很好。下一篇中,我们来聊聊条件随机场(CRF)吧~

扫码下图关注我们不会让你失望!

image.png

推荐 0
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册