这是一篇学习笔记,故内容相对杂乱
RNN循环神经网络Part Ⅰ
有记忆的
给memory要赋予初始值
输入一摸一样的input output也是根据memory有所不同的
输出是根据输入和memory两部分决定输出的
这并不是3个Network,是同一个Network在不同时间被启用了三次
由于store的不一样,输出也相应地不一样
👆Elman Network
👇Jordan Network
是将输出放进memory的,这样可以确定放在memory的是什么【是有限个】
Bidirectional RNN
双向的RNN 可以接入一个结果,一起接决定最终结果
看的范围比较广
LSTM long short-term memory 长短期记忆神经网络
只有Input gate打开的时候才能存入,否则无法存入memory cell,这个是由AI自己学习的
还有一个output gate,与上面同理
forget gate什么时候忘记掉
所以说Zf和Zi是决定是否存入的
Zf打开是记得,关闭是遗忘
例子
这是假设已经训练完了的模型
这和NN有什么关系呢,一个cell(就是一个上面的图的大方框)就是普通的1输入1输出,但是变成了四输入一输出罢了
LSTM的参数更多,一般需要四倍参数
和RNN的关系?
输入xt的不同维度乘以参数之后成为 z丢给不同的input,同理成为zf,zi,zo,一共四个vectors,合起来操控所有的memory cell的运作
丢到每一个cell的是每个vector的一个dimintion
然后还要乘五六层
现在大部分RNN都是LSTM
Keras支持LSTM GRU Simple RNN
RNN循环神经网络Part Ⅱ
学习目标
loss — BPTT (不细讲)
RNN训练中出现的问题
但是RNN的Traning是比较困难的
RNN的Learning carve不容易趋向收敛,会非常剧烈的抖动
RNN的Error surface有些地方非常陡峭,有些地方非常平坦,所以可能一直在平坦的地方随机跳跃,类似于高原
或者直接跳到悬崖,由于之前参数设置的的特别大,根据斜率情况,结果参数直接飞出去了
修正方法:
Clipping,强行限制归点,比如>15就强行设置为15
为什么RNN会有这种奇特的特性?
可能是因为sigmoid function,但是这个老师认为不对
为何会出现这样的问题?
Toy Example:
也就是说,最终结果会由于输入的微小变化导致很大变化
可能不造成影响,但是一旦造成影响其影响都会很大
同样的weight在不同时间点会反复的被使用
如何解决这个问题呢?
LSTM,可以让error surface不那么崎岖
可以将平坦去掉但是不会将很剧烈地方消除掉
为什么LSTM可以这样呢?(为什么RNN要换成LSTM)
因为可以deal with grandient vanishing得问题(就是上面的问题)
RNN,之前的值每次都会被洗掉
LSTM,有一个weight,一旦能够对memory造成影响,这个影响就会一直保留,除非forget gate决定忘记,其结果是上次memory+此次output x 参数的
RNN是连乘,LSTM是加法
尽量不要关闭fgg
新的用gate操控的,Gated Recurrent Unit模型,这个比LSTM少一个gate
gru怎么拿掉Gate?会把input gate和fgg联动,ing打开,fgg关闭,“旧的不去新的不来”
其他的技术,Clockwise RNN, SCRN
RNN的其他应用:
input a senquence, output a vactor
比如通过句子看这句话是好评加还是坏评价
或者长的句子变成短的句子
语音辨识:
如何区分“好棒”和“好棒棒”
多输出出来一个符号,null
如何训练(这里例子是已知label训练)?
穷举
,或者有更巧妙的算法
google 已经在使用CTC进行语音辨识了,rnn的重要应用
不确定input output那个长那个短
比如机器翻译
Beyond Sequence
在Syntactic parsing,语法分析,通过一个句子获得句子的文法树
Sequence-to-sequence auto-encoder – speech
Dimension reducation for a sequence with variable length
audio segments(word-level) -> Fixed-length vector
不需要提交声音至服务器,保护隐私
把单词变成向量
Attention-Based Model
根据注意力记住东西,类似于人脑
Input输入会进入DNN/RNN,操控一个读写头,决定Reading Head的位置,然后根据这个产生output
V1
V2
会写进RNN/DNN
这就是Neural Turing Machine
Visual Question Answering
通过CNN用vector表示图像,
训练进行托福听力考试,使用memory netwrok可以提高很多,Proposed Approach更高(接近49%)
RNN VS Structured Learning
在DEEP的事情上更强(?
RNN可以和SLearing结合,先经过RNN在去Structured Learing
Deep->LSTM->HMM,CRF,Structed/SVM
参考资料:
1️⃣ https://www.bilibili.com/video/BV1JE411g7XF