目录
一、为什么使用序列模型(Why sequence models)
三、循环神经网络(Recurrent neural network)
四、通过时间的反向传播(Backpropagation through time)
五、不同类型的循环神经网络(Different types of RNNs)
六、语言模型和序列生成(Language model and sequence generation)
七、对新序列的采样(Sampling novel sequences)
八、循环神经网络的梯度消失(Vanishing gradients with RNNs)
十、LSTM(long short term memory)
一、为什么使用序列模型(Why sequence models)
输入和输出是序列,使用序列模型。应用很广泛,如下图:
二、数学符号(Notation)
尖括号表示序列中的词的位置编号,圆括号表示第i个样本。两种括号一起使用,表示第i个样本的位置t的词。
单词的表示方法:在词典中出现的位置编号,用one-hot编码。
三、循环神经网络(Recurrent neural network)
为什么不使用普通的神经网络处理句子等NLP问题?
有两个原因:
1、句子的长短是不一致的,即输入层的向量维度是不固定的。如果以最长的为准,其余的补零,也不是一种好方法。
2、没有在整个文本中共享信息。(类似CNN中权值共享的思想)
RNN的图示:
单向的RNN只与前面的词有关系,双向的RNN是与前后的词均有关系。
前向传播的公式:
为了表示方便,把和合写成。
四、通过时间的反向传播(Backpropagation through time)
反向传播过程:从右到左的计算,类似“穿越时空”,“时光倒流”。
一个元素上的损失函数:
整个序列的损失函数
五、不同类型的循环神经网络(Different types of RNNs)
在解决上述不同的场景时,需要用到不同的RNN结构。
如下图,