Deep Learning常见问题(三)

1.RNN。

答:用x(i)<t>表示第i个样本input的第t个元素,用y(i)<t>表示第i个样本output的第t个元素。
用Tx(i)表示第i个样本input的输入序列长度,用Ty(i)表示第i个样本output的序列长度。

RNN的表示如上图,a<0>一般用零向量。每一层的参数是共享的。
也可以用下图的方法来表示。

RNN的前向传播如下。其中权重Wya这样的表示是为了说明,该权重用于计算y,且要乘上a。
可以把每一层理解为一个hidden layer,然后用该层的激活值做一个softmax或者sigmoid得到该层的y,并且还要把该层的激活值往下传。

对RNN的表示做一些简化,把两个参数矩阵堆成一个。

Wa为Waa和Wax水平堆放,[a<t-1>,x<t>]为a<t-1>,x<t>垂直堆放。

RNN的反向传播。

cost function为每个y的loss之和,一般用交叉熵。

2.Tx≠Ty的情况。

答:前面介绍的Tx=Ty的网络称为many-to-many的RNN。有时候Tx≠Ty,比如说文本情感分类,input是一个sequence而output是0或1表示negative or positive。这种情况称为many-to-one的RNN。
如下图所示,对于many-to-one的RNN,只需要在最后输出y即可。

也可以有one-to-many的RNN,比如说音乐生成,只需改成第一个单元有输入x,其他单元没有x即可,一般情况下,会把上一个y也输入到下一个单元中。如下图所示。

当然,many-to-many的RNN也可以有Tx≠Ty的情况,比如翻译问题。
只需把RNN改成如下结构即可(先全部读入,再输出)。前半部分称为encoder,后半部分称为decoder。

总结。(one-to-one就和普通的神经网络单元一样)

2.语言模型。

答:在语言模型中,用one-hot编码后,如果遇到语料库中没有的词,可以用UNK标志表示。对于句子的结尾,用EOS标志表示。
RNN处理语言模型如下(从左到右预测下一个词)。

在上面的例子中,y_<1> = "Cats",y_<2> = "average"...
对于每一个单元,接受上一个单元的激活值(a_t-1)和上一个词(y_t-1),通过softmax输出对于每个词出现的概率(y ^ _t)。
损失函数一般用交叉熵,总体cost function为每个单元的loss之和。

通过这种方式,就可以用已经有的词,预测后面出现的词。
如果要预测一个句子的概率,比如预测P(y_<1>,y_<2>,y_<3>),第一个单元预测了P(y_<1>),第二个单元预测了P(y_<2> | y_<1>),第三个单元预测了P(y_<3> | y_<1>,y_<2>),那么P(y_<1>,y_<2>,y_<3>) = P(y_<1>)P(y_<2> | y_<1>)P(y_<3> | y_<1>,y_<2>)。

3.对新序列采样。

答:

如上图,上半部分完成对模型的训练后,下半部分用模型采样新序列(生成新的sequence)。对于第一个单元,a0和x1都为0,之后的每一个单元,接收上一个单元的a和y ^ 。对于每一个单元,y ^ 是一个通过softmax得到的离散概率分布,从这个分布中采样即可。停止采样一般有两种方式:1.采样到EOS标志停止。2.固定采样的个数。
如果采样到UNK标志,可以考虑重新采样。

4.RNN中的梯度消失问题。

答:在RNN中,如果模型很深,会出现梯度消失问题,会导致某一个输出只与附近的输入有关,很难受到很前面的输入的影响,即不擅长处理长期依赖问题。
梯度消失是因为随着模型层数的增加,参数呈指数型下降,当然也有可能出现指数型上升,出现梯度爆炸,即参数显示为NaN。
对于梯度爆炸,可以采用梯度修剪,即当梯度向量大于某个阈值时,缩放梯度向量,保证它不会太大。
梯度消失问题会相对更难处理一些,见下。

5.GRU(Gated Recurrent Unit)单元。

答:GRU单元让RNN能够更好的捕捉深层连接,并改善了梯度消失问题。

c<t>为记忆单元(memory cell),c~<t>为记忆单元的候选值,Γu为逻辑门单元(gate)。gate决定了memory cell的更新情况。
因为gate由sigmoid计算,sigmoid函数在很多时候值接近于0,此时c<t>接近于c<t-1>,因此可以有效缓解梯度消失问题。
需要注意的是,c<t>可以是一个向量,此时c~<t>也是一个相同维度的向量,Γu也是相同维度的向量。此时通过gate计算c<t>的那个式子中的乘就是element-wise了。
上面讲到的只是简化过的GRU,完整的GRU如下(只是加上了另一个gate Γr,称为relevant gate)。

6.LSTM(long short term memory)。

答:LSTM中不使用relevant gate,增加了forget gate(遗忘门) Γf,output gate(输出门) Γo,并且c<t>≠a<t>。

用计算图来表示LSTM。

下面的红线说明了为什么LSTM能够长时间的记忆某个值(GRU也可以)。
需要强调的是,和GRU一样,各种单元可以是高维的,但是比如说c<t-1>中的第一个元素只能影响其他单元的第一个元素,这是one-to-one对应的。

peephole connection。如下,让c<t-1>也能影响gate value。


7.双向RNN(Bidirectional RNN,也称为BRNN)。

答:

如上图,先做两次forward pop,一次从左到右,一次从右到左,再预测各个单元的值。此时,每个单元的预测值考虑了过去的信息,也考虑了未来的信息。
每个单元的输出y ^ 会综合考虑正向激活值和反向激活值。
需要注意的是,每个单元可以是普通的RNN,可以是GRU,也可以是LSTM。

8.Deep RNN。

答:用a[l]<t>来表示第l层,第t个时间点。
Deep RNN如下。

需要注意的是,每层的参数W和b是共享的。
也有一些Deep RNN的变形,比如说把直接softmax求y改成一些多层网络(这些层没有水平的连接)。
当然,Deep RNN中的每个单元可以用普通的RNN,可以用GRU,也可以用LSTM。

9.使用one-hot对单词编码的不足?

答:如果one-hot对单词编码,所有不同的单词之间的内积都是0,不能体现单词之间的联系。所以,引入了word embedding。

10.Transfer learning and word embedding。

答:

10.Embedding matrix。

答:embedding matrix乘上单词的one-hot vector就可以得到它对应的word embedding。在实际实现过程中,维度很大的矩阵乘法效率比较低,因此一般直接选择embedding matrix中对应的列。

11.学习word embedding。

答:这里给出了一种学习word embedding的方法。每个词的one-hot vector乘上embedding matrix得到word embedding,之后把每个词的embedding输入到网络的层中(直接stacking成一个n*1的长向量),然后做softmax(softmax的维度和one-hot的维度一致)。之后做back pop,embedding matrix由网络学习得到。

图中o表示one-hot,E表示embedding matrix,e表示word embedding。

现在比较常见的学习word embedding的模型是skip-gram,需要注意的是,skip-gram的trainset是一些单词对,如(a,b)。softmax的分母部分求和计算量太大,因此有两种常见的优化方法,hierarchical softmax(拆成多个二分类,一般构造成哈弗曼树)和负采样。

12.负采样。

答:如下图,由orange预测juice这是一个正样本,然后负样本由orange预测一些随机产生的词。

需要强调的是,负采样放弃了softmax,改用logistics regression单元做多个二分类。
如下图,一组训练数据包括1个正样本和k个负样本,之前10000维的softmax被拆成10000个二分类问题,即logistics regression单元。每次只更新正样本和负样本对应的共k+1个logistics regression单元。

负样本的选取概率一般选用如下等式,其中P(wi)表示wi被选为负样本的概率,f(wi)表示wi的词频。

13.文本情感分类上的处理。

答:可以对文本中的词向量求和或求平均,再放入softmax中做分类。但这样做没有考虑词序信息。
要考虑词序信息,可以用RNN,把每个词的词向量作为输入,最后一个单元做softmax输出。

14.机器翻译。

答:x<i>为要翻译的文本,y<i>为翻译后的文本。前半部分称为encoder network,后半部分称为decoder network。

15.图片描述。

答:用预训练好的CNN学习图片的representation向量,再接一个RNN即可。

16.beam search algorithm。

答:机器翻译问题希望能找到一个更好的翻译,一般定义如下目标函数。

枚举y<1>,...y<Ty>的效率很低,因此使用beam search algorithm。
beam search algorithm:
1)设置超参数B称为beam width,这里令B = 3。
2)把要翻译的句子输入RNN的encoder network,decoder network的第一个单元softmax后输出的是各个词的概率,保留概率最大的3(beam width大小)个词。

3)如下图,分别取前面保留的3个词输入到网络中,预测第二个词。(如果B = 3,就复制3份这样的网络)
此时,可以通过P(y<1>,y<2>|x) = P(y<1>|x)*P(y<2>|x,y<1>)计算前两个词出现的概率。

4)如果vocabulary有10000个词,当前有3*10000个P(y<1>,y<2>|x)组合。取最大的3(beam width大小)个P(y<1>,y<2>|x) ,重复上述过程。
5)一般以EOS标志终止。

当B = 1时,就变成了贪心策略了。

17.改进beam search。

答:之前的beam search的目标函数可以拆成多个概率之积(概率的链式法则),每个概率都是小于0的,当句子很长时,可能造成数值下溢,因此如下图,给它加上log。

但是仍然存在一些问题,p ≤ 1,则log p ≤ 0,模型会更倾向于选择短的句子。
因此,如下图所示,再加上一个句子长度惩罚项,Ty为句子长度,α为超参数,0 ≤ α ≤ 1。(Length normalization)

需要注意的是,beam search不能保证找到最优解,只是一个近似搜索。

18.beam search的误差分析。

答:通过误差分析来判断改进beam search还是改进RNN。
对于一个句子的翻译,人工翻译为y *,模型翻译得到y ^。
将y * 和y ^ 放入RNN,计算P(y * | x)和P(y ^ | x)。
如果P(y * | x) > P(y ^ | x),说明beam search没有选择更好的解,因此改进beam search;如果P(y * | x) ≤ P(y ^ | x),说明RNN更倾向于选择后者,而前者却是更好的翻译,因此要改进RNN。
通过多个example来判断beam search和RNN分别出错的比例,可以了解更应该focus在哪个方面来改进模型。

19.注意力模型(attention model)。(很重要,GAT里用的就是这个想法)

答:在翻译中使用attention的想法,比如说一个长句子翻译,一般不会读完整个句子再全部翻译,而是读一点翻译一点。对于第一个词的翻译,我们希望把更多的attention放在原句第一个词附近的词上,而不是很远的词。

如下图,使用双向RNN,a<t'> = (a_-><t'>,a<-_<t'>) 也就是正向和反向两个激活值组成的向量(正向和反向激活值都可以是高维的)。C<1>,C<2>,...,C<t>是attention,也就是对所有a<t'>的加权求和。然后把attention的值,再往S层传。

计算attention α<t,t'> (第一个t是上图中S层的输出那个t,第二个t'是上图中最下面一层的那个t)。
α<t,t'> = amount of attention y<t> should pay to a<t'>
具体α<t,t'>的计算如下式,使用softmax是为了让所有权重加起来为1。

e<t,t'>看下图,使用了一个小型神经网络来训练。这么直觉上可以这样想,α<t,t'>和e<t,t'>应该与s<t-1>和a<t'>有关,但是我们不知道这个函数关系,因此用小型神经网络让它自己学习。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,635评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,543评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,083评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,640评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,640评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,262评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,833评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,736评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,280评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,369评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,503评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,870评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,340评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,460评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,909评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,512评论 2 359

推荐阅读更多精彩内容