有哪些sequence model
Notation:
RNN - Recurrent Neural Network
传统NN 在解决sequence input 时有什么问题?
RNN就没有上面的问题. 注意这里还提到了BRNN 双向RNN的概念。
激活函数 g1 经常用的是tanh, 也有用relu的但是不常用. 如果是binary classification 问题,g2就是sigmoid.
Backpropagation through time
Difference types of RNNs
Language model and sequence generation
language modelling 用来找出可能性最大的句子.
language model 训练好了以后,一个有趣的应用例子是自己创造句子, 也就是 sample novel sequences.
和训练时候不一样的是,训练时候因为有真数据,所有y<i>喂的是真数据,sampling 时候就是直接把前面预测出来的y hat 喂给下一步
Sample novel sequences
除了常见的word-level language model, 还有一种很不常见的character-level language model.
Vanishing gradient problem
因为RNN 每个word 最主要受到附近的word的影响,如果遇到下面图片里的setence 就处理不好. 遇到一个名词就需要记忆很久这个名词(cat)的单复数,直到遇到动词(was/were)这个不是RNN擅长的.
除了vanishing gradient 问题,还有exploding gradient 问题,但是相对来说 exploding gradient 好解决,solution 是gradient clipping, 具体是说gradient 的值太大了就clip according to max value (threshold).
GRU - Gated Recurrent Unit
接下来就谈怎么解决vanishing gradient 问题。
先来看basic RNN. 这里要注意一下,我们接下来看到的图都画的是一个框,实际上里面有多个neron,只是为了直观简洁没有画而已,在比如keras编程时候要求我们传入的参数就有定义多少个neron, 好像叫 hiden state 参数.
在对比着看GRU
上面是为了好理解做的简化版的GRU,Full GRU是这样的
LSTM 和GRU 怎么选择呢?没有优劣,不同的问题可能适用不同的算法。
LSTM 比 GRU 更复杂,但是GRU更简单所以更快。GRU 有两个gate, LSTM 有三个gate. 如果要选择一个,可以默认先选择LSTM
BRNN - Bidirection RNN
下面的问题需要BRNN来处理
实际应用中,BRNN + LSTM 的组合最常用
注意下图中,紫色和绿色部分合起来都属于forward propagation, 不要看成back prop了
Deep RNNs
不像 CNN 可以有几百层,RNN 有3层就算很大了,因为临时维度(?)
Questions:
1. gate 的概念没有理解
2. LSTM 没有理解