RNN
首先,介绍一个自然语言处理任务中常见的应用问题:Slot Filling(填槽)
用户说出一句话,提取出其中的重点,把它填入对应的槽中,比如“目的地”填“台北”,“抵达时间”填“11月2日”
我们可以用之前讲的 前馈神经网络来解决这个问题
输入:一个单词(更准确的说,是它的向量)
输出:这个单词属于某个槽的概率分布
如:输入 “Taipei”,输出它属于 y1= dest 的概率,属于 y2= time of departure 的概率
课上老师介绍了何用向量来表示一个单词(词的向量化、词的编码或者词嵌入)
1-of-N encoding
它是一个长度为 N 的向量,只有 1个数字是1,其它的N−1 个数字都是0。编码使得每个单词在它们各自的维度上,与其它单词是独立的。通常,这个 N 是词汇表的大小。对于出现在词汇表之外的词,还额外引入一个“other”维度注:其它一些词嵌入的方法见 P22(Word Embedding).
利用前向传播网络来做出现了一些问题。
前向传播神经网络存在的问题:
如果输入的不是“arrive Taipei on November 2nd”,而是“leave Taipei on November 2nd”,那么 “Taipei” 在第一句中是目的地,在第二句中是离开地。
因此,前向传播神经网络需要有一个memory,来存储出现在 “Taipei” 之前的词是 “arrive” 还是 “leave”,由此引入了RNN 。
在前向传播神经网络中加入存储单元 (图中的a1、 a2),每一步执行后,会将隐藏层的输出存储在a1、 a2中。当输入下一个单词时,会从 a1、 a2中读取数据,作为输入之一。
这样子的同一个网络会反复使用,把循环图按照时序展开后如下图所示:
注意我们是用一个网络来进行训练的。
同时,我们处理两个不同的句子
不同句子中,产生的a1的值是不同的。
在介绍完RNN的基本模型后,李老师又介绍了几种新的结构
双向的RNN,在实际应用中,充分考虑了句子的前文和后文对该词的理解。
LSTM
李老师也对现在十分常用的模型 LSTM 进行了讲解
上图李老师为我们展示了lstm 的大致数据走向
该神经元一共被 一个大的memory中心,四个输入和一个输出控制
输入分别为:
待处理数据输入
控制input gate的数值输入(控制新数据是否被叠加)
控制 forget gate 的数值输入(控制memory中的值是否被更新)
控制output gate的数值输入 (控制memory中的值是否被输出)
输出为:处理后的数值输出
下图介绍一下 其计算流程(老师介绍的十分详细,建议听一听)
老师通过多种方式将这个结构进行了讲解。
需要注意的是,LSTM模型的参数比普通的神经网络也多了4倍的参数。
RNN的cost function
和其他的网络一样,RNN的代价也是用交叉熵的和来计算,参数的更新也是采用的反向传播来计算。
但是,效果并不友好,并出现了一些奇特的现象:
接下来,老师详细解释了下面几个问题:
1、解决RNN中训练出现的问题(误差横跳)—是在一篇论文中解释的
使用clipping ,其当梯度大于(阈值t)的时候就不再更新梯度了
2、解释为什么RNN出现了这种奇特的现象(梯度消失,梯度爆炸)
我们可以将参数做小小的变化,看network 的 output 有多大的变化,就可以测出参数梯度变化的大小有多大。
在上图RNN训练过程中,我们输入[1,0,0,0,0,…0]除了一个值为1其余全是0,该RNN结构只有一个线性的神经元,参数为 w 。执行第一次的时候,y1d的输出为1,以此类推,由于RNN中memory和input是相乘的,当执行第1000次的时候,输出y1000 = w的999次方。
那么这时,当w=1时,1000次后的输出为1;当对参数w做小小改变,w=1.01时,1000次后的输出结果就约等于20000,是一个非常大的数,那么这个小小改变就导致参数的梯度非常的大。
同理考虑w = 0.99,和w = 0.01时,对比w=1,w = 1.01时,其输出约等于 0 ,其参数梯度又变得非常的小,这也说明了RNN的误差是非常跳跃的。
3、对此问题有帮助的解决办法
- LSTM(解决梯度消失)
- Clockwise RNN
- SCRN
RNN的应用
在讲解RNN时,我们便介绍了 one to one(输入一个序列,给每个word一个solt lable) 的应用-(自动买票)
第二种,many to one(输出一句话,产生一个向量)–文章的好坏语感理解
第三种,many to many(输入输出都是一个序列)—语音辨识
RNN相关的扩展
在这节,主要一个论文阅读的分享。
并且引入了注意力机制:
输入数据,利用我们学过的神经网络来找到注意的重点,从记忆中提取我们标识的重点,之后经过学过网络的组织分析给出思考结果。