[机器学习入门] 李宏毅机器学习笔记-33 (Recurrent Neural Network part 2;循环神经网络 part 2)
VIDEO |
---|
RNN
Learning Target
cost就是每一个时间点的output与reference的cross entropy的合,就是minimize的对象。
有了这个lost后,training要怎么做呢?
不幸的是,RNN的training是比较困难的,我门期望蓝色的线,可是现实骨感如绿色那条线...
这是一个经常遇到的问题,该方法的作者也有解释。
橙色点的跳跃过程非常震荡,甚至可以飞出去hhh,所以他用工程师的思路来解决该问题,叫做clapping,给gradient设一个最大值,比如当大于15时,都等于15.
为什么RNN会有这种奇特的特性,来自sigmod function?并不是,因为实验表明,ReLu表现的更差一些。
直观地评测,将某参数微小变化,看gradient变化多大。假设输入10000....,在最后一个时刻的output就是w^999,改变w的值,对output有多大影响?
可以看出,gradient非常不好训练,它有high sequent,同一个weight 在不同的时间点会被反复利用。
LSTM就是一种解决该问题的好方法,能够解决过于平坦问题(gradient vanish),但不能解决崎岖问题(gradient explode)。
听说这还还存在几个面试题。
为什么RNN换成LSTM?
因为可以解决gradient vanish 问题。
为什么能解决呢?
如上图,forget gate。
这里有个point,有一种升级版的LSTM叫做Gated Recurrent Unit(GRU),它只有两个gate,参数量是LSTM的一半,所以如果LSTM 过拟合可以考虑这种方法。(原理是将input合output gate 关联)
还有一些其他方法。
其实RNN有很多应用,在上面slot filling 中,input 和output 是同数量的。
其他应用:
Sentiment Analysis
情感分析,negative positive
Key Term Extraction
关键字抽取
Speech Recognition
语音辨识
哈哈哈,关于上面triming方法的语音辨识没法区分‘好棒’和‘好棒棒’,还有方法来解决它,叫做,Conntctionist Temporal Classification(CTC),就是加了一个符号,来表示没有任何东西。
CTC怎么训练呢?
CTC 取得的结果
传说,Google的语音系统已经全面换成CTC了。
Machine Translation
还有一个神奇的应用是机器翻译,把RNN一串input读过去,在最后一个时间点memory中存的就是all information about input sequence。
就像推文接龙一样。
而它什么时候能停下来呢? 当推出‘断’就停。
在RNN中也可以这样做。
在翻译上,这个是很奏效的。
下图是Google 的研究成果,input一种语言的文字,output另一种语言的文字,同理能否input语音,output另一种语音做到语音翻译呢?比如台语转英语的翻译,只需要搜集台语的声音讯号和英文翻译就可以了,而不需要台语语音辨识的文字结果。
Beyond Sequence
那么这种sequence to sequence 的方法还可以用于Syntactic parsing 句法分析上,得到树桩结构。
这一篇内容很多啦~part 3 续