C5W 循环序列模型

循环序列模型

为什么选择序列模型?

数据符号:


约定了一些符号表示,详情见书。

单词建立一个词典(大小为10,000的话),然后用一个独热编码向量来表示(10,000维)


循环神经网络模型 (RNN model)


首先,一句话之间各个单词是有关联的

其次,一句话中每个单词之间有先后顺序

其次,一句话中单词数量各不相同

单纯的利用以前学习到的神经网络模型,比如一句话有9个单词(也就是九个独热编码向量),输入进神经网络训练,彼此之间不共享信息X的长度也各不相同

再其次,比如10,000维的独热编码向量,总得输入大小是最大单词数乘以10,000,将有着巨大的权重矩阵。

以上问题需要,循环神经网络模型来解决:

只要按照作图来理解就好:

详细内容见深度学习笔记,简要来说:

权重矩阵有:
W a a , W a x , W y a W_{aa},W_{ax},W_{ya} Waa,Wax,Wya

各层共享以上相同的权重矩阵W

a &lt; t &gt; = g 1 ( W a a a &lt; t − 1 &gt; + W a x X &lt; t &gt; + b a ) a^{&lt;t&gt;}=g_1(W_{aa}a^{&lt;t-1&gt;}+W_{ax}X^{&lt;t&gt;}+b_a) a<t>=g1(Waaa<t1>+WaxX<t>+ba)

y ^ &lt; y &gt; = g 2 ( W a y a &lt; t &gt; + b y ) \hat{y}^{&lt;y&gt;}=g_2(W_{ay}a^{&lt;t&gt;}+b_y) y^<y>=g2(Waya<t>+by)

激活函数常用tanh,具体使用根据情况而定,比如说:二分类问题,最后可能用sigmoid,而多类别分类问题,最后可能会用softmax

以上,在前向传播的时候,某一层就共享了前面单词(输入)的信息

但,比如Teddy bought a T-shirt yesterday,Teddy is a dog.在识别命名实体是否是一个人名的时候,其关键信息在后面,这是一个问题。需要双向循环神经网络模型,后讲

最后,简化下标, W a a , W a x W_{aa},W_{ax} Waa,Wax放在一起作为W_a, a &lt; t − 1 &gt; , X &lt; t &gt; a^{&lt;t-1&gt;},X^{&lt;t&gt;} a<t1>,X<t>放在一起

以上等同。

W a y W_ay Way也命名为 W y W_y Wy

最终:如下图


通过时间的反向传播



不同类型的循环神经网络


多对多

  • 输入和输出的的数量相同 (机器翻译)
  • 输入和输出的数量不同 (命名实体识别)

多对一

  • 情感分析

一对一

  • 之前的神经网络几乎都是一对一

一对多

  • 音乐生成

语言模型和序列生成


语言模型:计算出各句话出现的可能性

语料库:很大,可能出现的单词组成的一个字典,各个单词以one-hot形式表示

EOS:有时,需要一个标志标记句子的结束,但不总是如此

UNK:如果句子中出现了一个语料库中没有包括的单词,全部都用UNK表示

模型如上

  1. 首先, a &lt; 0 &gt; , x &lt; 0 &gt; a^{&lt;0&gt;},x^{&lt;0&gt;} a<0>,x<0>都初始化为一个0向量
  2. 而后,通过一个softmax输出语料库中各个单词出现的概率(编号1),注意 y ^ &lt; 1 &gt; \hat{y}^{&lt;1&gt;} y^<1> y &lt; 1 &gt; y^{&lt;1&gt;} y<1>
  3. 而后下一个时间步,传入 y &lt; 1 &gt; y^{&lt;1&gt;} y<1>(或说是 x &lt; 2 &gt; x^{&lt;2&gt;} x<2>),也就是第一个单词cat,输出第 y ^ &lt; 2 &gt; \hat{y}^{&lt;2&gt;} y^<2>
  4. 一直如此,最后希望第九层输出eos的概率很高

对新序列进行采样


与上一个最大的不同就是,除第一个时间步外,每一个时间步的输入都是上一个时间步的输出。

在第一个时间步依概率分布进行采样得到单词输入到第二个时间步,得到softmax输出后再次进行采样输入到下一层。

重复以上步骤,直到:

  1. 采样到一个
  2. 进行了特定的时间步

对于采样到UNK:

  1. 如果在时间步的结尾,字典中没有这个词,你可以从20个或100个或其他单词中进行采样,然后一直抽样下去,直到达到设定的时间步。
  2. 但是如果在此过程中又出现了 unknown word,则可以进行重采样,直到得到一个不是一个未知标识的词。如果不介意UNK的话,也可以忽略这些未知的单词。

基于字符进行采样模型:

优点

优点是不会出现未知的标识

缺点

缺点是使用字符进行采样的模型会得到很多很长的序列

因为一句话中的英文单词仅有几十个,但是字符的长度却有很多个,这样使得RNN的长度过大,使得其不可以捕捉长范围的关系,而且训练起来计算成本比较高昂。

所以现有的RNN都是使用基于单词的采样,但是随着计算机性能越来越高,使用基于字符进行采样也是一种趋势。


循环神经网络的梯度消失问题


经过上述内容我们已经了解到了循环神经网络如何工作的了,但是给定一个句子:

The cat,which already ate …,was full.
The cats,which already ate …,were full.

这样一个句子,它的系动词was和were受名词单复数的影响,而系动词与名词相距较远。

重温梯度爆炸与梯度消失

正是因为梯度消失的问题,在进行权重更新的时候,一个单词仅受其邻近范围单词的影响。

那么很有可能was和were与名词cat单复数的关系就很难建立。

同样也有梯度爆炸的问题,这个一般通过设立一个阈值,超过阈值后就进行梯度修剪就可以了。

而梯度消失问题就很难解决:通过GRU(门控循环单元网络)来解决


GRU单元(Gated Recurrent Unit)和 LSTM

这部分每次复习的时候都要完整的看一遍

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值