前文传送门:
从零开始学自然语言处理(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)吧~
扫码下图关注我们不会让你失望!