Recurrent Neural Network(RNN)
对应视频:p20-p21
基本架构
Elman Network
- 橙、绿、黄构成一个前馈神经网络,蓝色保存了中间层的输出内容。
- 三个前馈神经网络是同一个神经网络,使用时间不同,输入的蓝色部分的内容也因此不同。蓝色的存储元件是循环神经网络的重点。
构成深度神经网络也可以,每一层的输出内容都会被保存下来。
- 其中蓝色箭头表示每一次存储下来的内容,第一次是需要为其赋初始值。
- Elman Network的特点是,保存的是每一个隐藏层的输出值
Jordan Network
- jordan network的特点是,把每一次的真实输出值保存下来,作为下一次的输入部分
Long Short-term Memory(LSTM)
1、构成
- Memory Cell:存储内容
- Input Gate:某一内容能否保留在Memory Cell中,需要操纵信号
- Output Gate: 外界可不可以得到当前保存的内容,需要操纵讯号
- Forget Gate:将memory Cell中的内容忘掉,需要操纵讯号
其中后面三个Gate什么时候打开什么时候关闭都是由机器自主学习决定。
蓝色箭头是四个输入:input gate信号、input的内容,output gate信号,forget gate信号
红色箭头是一个输出:output输出。
2、工作流程
- 原来的cell中保存的内容为C
- 其中所有为f的函数,都是sigmoid函数,因为可以将输入的值变换后控制在0-1之间,0代表门关闭,1代表门打开。
- g,h函数则是对输入的内容进行一定的变换。
- 最终的输出为a
第一步输入z,经过g函数得到g(z),这是想要保存的内容。经过f函数得到f(zi),这是判断能否输入的标志,如果为0则不能输入——相当于输入的值为0.
第二步经过f函数得到f(zf),这是forget gate的标志。不同的是,如果值为0,代表cell中的内容被清洗了,而如果值为1,cell中的内容依旧保留着。
第三步,经过输入后,重新保存在cell中的c’公式为:
c’ = g(z)f(zi)(新输入的部分) + cf(zf)(之前保存的部分)
第四步,保存在cell中的内容经过h函数变换为h(c’),这是可能将会输出的内容,经过f函数得到f(zo),如果为0,则数据不会输出——相当于输出值为0。
最后实际输出值a = f(zo)h(c’)
图上所有f的部分,代表的都是一些讯号。
3、网络构成
理论基础流程
实际
RNN学习问题
梯度爆炸
梯度消失
通过LSTM可以解决
原理解释:LSTM中memory的更新,是旧值+新值,在forget gate不工作的时候,旧值不会被刷新,旧值的影响始终是存在的。
RNN应用
- 输入序列,得到一个结果(many to one)
- sentiment analysis情感分析
- many to many(output < input)
- 语音辨识 speech recognition
- CTC:Connectionist Temporal Classification,核心是加一个NULL的标识输出,解决叠字问题。
- sequence to sequence(no limitation)
- 机器翻译
- Syntactic parsing
- 语音信号可以转换为向量
- 聊天机器人