一、Learning Target
1.Loss Function
如下图所示,这是一个Slot Filling的例子,我们要将输出的y与映射到slot的reference vector做cross entropy。例如,Taipei对应到的slot是dest,那reference vector在dest上的值为1,其余的值都为0。RNN的输出与reference vector的cross entropy的和就是要minimize的对象。注意:句子里面的词语必须按照语序输入,不能打乱语序!
2.Training
1) 有了Loss Function之后,Training也用Gradient Descent,这里为了计算简便,采用了BPTT(Backpropagation through time)。 2) 如下图所示,RNN的Training是比较困难的,我们希望随着Epoch地增加,loss跟图中蓝色线一样慢慢下降,但是很不幸的是我们在训练过程中会出现绿色线的结果。
3.Error surface
1)如下图所示,RNN的error surface(Total Loss对参数变化)是非常崎岖的,这里的意思就是loss在某些地方比较平坦,在某些地方又比较陡峭。假如把橙色点当作起始点,用Gradient Descent调整参数,然后更新参数,可能会得到loss猛增的结果。最坏的情况是一脚踩在悬崖上,由于之前一直处在平坦区域,gradient很小,那么就会把learning rate调的比较大,因此踩在悬崖上时gradient变得很大,就会整个飞出去。 2) 我们用Clipping来解决这个问题。Clipping就是当gradient大于某个threshold时,就不让它继续增长,然后继续做RNN的Training。
二、Why?
如下图所示,当w从1变到1.01后,y^1000从1变到了20000,此时L对w的微分值很大,所以需要较小的Learning rate;当w从0.99变到0.01后,y^1000从0变到了0,此时L对w的微分值很小,所以需要较大的Learning rate;因此我们可以得到,RNN训练困难原因是同样weight在不同的时间点被反复使用。
三、Helpful Techniques
1. 使用LSTM(Long Short-term Memory)可以解决上面的问题,它会把error surface平坦的地方拿掉,从而解决掉gradient vanshing的问题,但是它无法拿掉崎岖的地方,所以无法解决gradient explode的问题。 2. 为什么LSTM可以替换RNN?因为在RNN里面,在每一个时间点,memory里面的信息都会被清理掉;在LSTM里面,会把原来memory里面的值乘上一个值,然后再加上input的值放到Cell里面。对LSTM来说,除非forget gate被使用,否则不会把memory之前的信息给清除掉。 3. 另外一个版本是GRU(Gated Recurrent Unit),只有两个gate操作memory,需要的参数少,不容易过拟合。它秉承的是只有memory里面的信息被清除掉,才会新的信息给添加进来。 4. 其它的技术,Clockwise、SCRN(Structurally Constrained Recurrent Network)等。
四、More Applications
1. 在Slot Filling中,输入一个vector,输出它的label。除此之外,RNN还可以做更多事情。
2.Many to one
1) sentiment Analysis 这是一个语句情绪分析系统,我们给它某影片的相关评价,然后分析语句是Positive or Negative。输入是一个vector sequence,在不同时间点输入不同的字符,在最后时间输出语句的情绪。 2) Key Term Extraction 这里是一个关键词分析系统,给它一篇文章,提取出文章中的关键词,然后把含有关键词标注的文章作为RNN的训练资料。
3.Many to Many
1)如果input和output都是sequence,但output比input更短时,RNN可以解决这类问题。用语音辨识举例说明,输入一段声音讯号,每隔一段时间就用1个vector表示,现在使用Slot Filling来处理,得到识别结果是“好好好棒棒棒棒”,这与我们想要不同,所以使用Trimming把结果重复部分清除掉,得到“好棒”。但是现在没法辨识“好棒棒”,可以用CTC解决问题,它就是在输出中加上NULL,只需要去除NULL,就可以得到我们想要的结果。 2)CTC的训练过程,采用了穷举的方法。 3)得出结果,如下图所示。
五、RNN v.s. Structured Learning
1. 如下图所示,两者各有所长。 2. 如下图所示,其实两者是可以结合起来的。input的feature先通过RNN和LSTM,RNN和LSTM的output再作为HMM等的input。
|