2020李宏毅学习笔记——16.Recurrent Netural Network 下

语音识别一定想到RNN,就像图片识别想到CNN一样。
英汉翻译有两种方法:一是语音识别,一是英汉对照直接training

1.RNN的learning

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第1张图片

1.1loss function

  • cross entropy是怎么算的呢:对每个输入xi, 其输出的yi 与相应的reference vector
  • cross entropy之和就是loss function
  • 注意:sequence不能打散,要先用x1 得到y1, 再用x2 得到y2.

1.2 training

  • 用gradient descent做training,gradient descent的算法从BP(Backpropagation)进阶为BPTT(Backpropagation through time)
    2020李宏毅学习笔记——16.Recurrent Netural Network 下_第2张图片

  • 但是:很遗憾的,RNN的训练是比较困难,error surface要么很平缓要么很陡峭

  • 解决办法是clipping:当gradient>某个阈值时,让gradient = 阈值

蓝色是好,绿色也是经常出现的。
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第3张图片

RNN的性质就是陡峭:很大的gradient*很大的learning rate就会飞出去。2020李宏毅学习笔记——16.Recurrent Netural Network 下_第4张图片
1.3 为什呢RNN会有rough的error surface?
和sigmoid没关系啊,因为实验证明换成ReLU效果往往更差
所以原因是time sequence,同样的weight在不同时刻被多次使用
(gradient在w=1处很大,在w=0.99处很小

丢进去1,输出就是w的n次方,绿色地方,w有很小的变化(跳崖原因,同一个weight在不同地方使用),输出变化就很大,这种情况,把gradient设大,学习率设小
黄色地方刚好相反,2020李宏毅学习笔记——16.Recurrent Netural Network 下_第5张图片
1.4 怎么解决RNN的跳崖行为呢:
把一般的RNN换成 LSTM呀
为嘛LSTM就可以解决呢?

  • 因为LSTM可以处理gradient vanishing的问题:LSTM可以让error surface不那么崎岖,把平坦的部分拿掉

为什么把LSTM换成RNN:
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第6张图片

  • 那gradient explosion的问题呢?不知道

1.41 先说LSTM怎么处理gradient vanishing的问题

  • 在一般的RNN中,每个时刻neuron的output都会被放到memory中去,所以在每个时刻memory中的值都会被洗掉
  • 但在LSTM中,是把memory中原来的值乘上一个数再加上一个数,即memory和input是相加的关系。
  • 所以LSTM中如果weight影响了memory中的值,那么这个影响会永远都存在
  • 若使用LSTM出现了过拟合,找GRU(参数量很小啊),GRU的精神是“旧的不去,新的不来”:input gate 开,forget gate 关(进来时,不洗) 不进来时,洗,也就是说,把存在memory里面的值洗掉之后,才会有新的值进来

1.42其它处理gradient descent的技巧
clockwise RNN, SCRN
[Quoc V. Le, arXiv’15]提出,如果用单位矩阵初始化一般RNN的weight,那么用ReLU的效果要比用LSTM的效果好。(random初始化一般RNN的weight,那么用ReLU的效果要比用sigmoid的效果差。)
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第7张图片
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第8张图片

2.RNN偏应用的东西

2.1 More Applications

传统,输入输出一样:
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第9张图片
2.11 Many to one
指的是:RNN也可以做到,输入是vector sequence,而输出只有一个vector

输入一个句子到RNN中,最后输出这个句子包含的情感

爬虫爬的就是这个东西,爬影评
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第10张图片

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第11张图片
2.12 Many to Many (Output is shorter):语音辨识
每一小段时间就用一个vector表示:0.01秒
时间太短所以可能多个vector对应同一个字

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第12张图片

  • 1 输入是一个sequence(比较长),输出也是一个sequence(比较短)
  • 2.使用Trimming操作去除掉重复的东西,最后输出这段语音的意思
    但这种情况有时候会存在问题,就是去的多了,比如我想表达的时好棒棒呢?

怎么办呢?
用Connectionist Temporal Classification (CTC)。

简单看一下他的过程:
这个方法会输出一个 $ 代表 “null” 的意思。解决叠字的问题
如果input一串语音,它的output是{ 好,,,棒,,,, },把其中的  拿掉就变成“好棒”。
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第13张图片
CTC怎么做训练呢?:

因为不知道,好对应哪几个$,所以就穷举所有可能
但可能性太多了,是有方法的,这里不细讲
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第14张图片

现在谷歌的语音辨识,都已经换成CTC了,即便有从未出现过的词汇,CTC也可能是把他辨识出来的。
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第15张图片

  • 3.输出正确结果后它不会停下来。
    文字接龙:
    2020李宏毅学习笔记——16.Recurrent Netural Network 下_第16张图片
    怎么办?
    给它加一个“===”的符号,代表任务结束。
    2020李宏毅学习笔记——16.Recurrent Netural Network 下_第17张图片
  • 4.Google的一片论文,它实现了输入声音讯号(比如英语),不经过语音辨识,然后直接输出翻译后的句子(比如翻译成中文)
    就是收集一堆英文的语音讯号,对应标注中文,直接training,modle标识的结果。这样就方便把方言转换出来。
    2020李宏毅学习笔记——16.Recurrent Netural Network 下_第18张图片
  • 5.用于生成 Syntactic parsing tree 。非常surprise

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第19张图片
让机器看一段句子,然后机器就会输出这个句子的语法的结构树。
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第20张图片

  • 6使用bag-of-word方法把一段文字转成word vector的话,是没有考虑顺序的:听不懂廖
    两个单词相同但不同意思句子,在bag-of-word看来就是一样的。
    Sequence-to-sequence Auto-encoder - Text就能在考虑顺序的情况下,把一段文字转成word vector。

chat-bot
收集how are you 对应 i am fine的data去train
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第21张图片
阅读理解:把问的问题丢到中央处理器里面,去看,哪个和这个问题相关,可以换位置,得到最终答案
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第22张图片
这是自己学的
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第23张图片

问题:这是什么水果 回答:这是香蕉
丢给RNN之后,会到中央处理器里面看看哪个位置和他相关;
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第24张图片
句子拿进来-语义分析-转成文字-再把文字语义分析 Attention是看哪些部分画的重点和回答问题有关
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第25张图片

3.RNN vs Structured Learning

3.1 Structured Learning考虑整个语句,cost和error相关,完胜
但RNN的Deep有优势
但必须有Deep,所以RNN完胜

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第26张图片
3.2 两个结合:
2020李宏毅学习笔记——16.Recurrent Netural Network 下_第27张图片
3.3在语音识别里的结合:

怎么work的呢?

2020李宏毅学习笔记——16.Recurrent Netural Network 下_第28张图片

你可能感兴趣的:(2020李宏毅学习笔记——16.Recurrent Netural Network 下)