59 双向循环神经网络【动手学深度学习v2】
深度学习学习笔记
学习视频:https://www.bilibili.com/video/BV12X4y1c71W/?spm_id_from=autoNext&vd_source=75dce036dc8244310435eaf03de4e330
核心思想:取决于过去和未来的上下文,来预测当前的词。前面的RNN,GRU和LSTM是根据前面的一些词预测下一个词,如果是完型填空则要看未来的词。
双向RNN
一个隐藏层其实时有两个,首先输出进去,state给到下一个时间单元,X2输入隐藏状态给到X1,然后合并两个隐藏状态。
实现将序列反过来,输入反向输进去拿到输出,然后输出再返回来,再更新下一个做concat。
Ht是由Ht+1得到,Ht-1得到一个Ht,然后两个concat一下,给到输出层。
双向不适合做推理,几乎不能用在预测下一个词上面,因为你要得到的输出,是既要看到它之后的信息,又要看到它之前的信息,而在它之前是没有之后的信息。不能用来预测未来。
双向RNN最主要的作用是对一个句子做特征提取,比如做翻译时、改写时。
QA:
- 双向RNN,反向初始hidden state也是0
- LSTM 区分C 和 H,H是0-1之间数据,C 没有数值限制可以存一些信息。