RNN
RNN便于处理具有时序关系的任务
引入“记忆”概念
基本结构
输出不仅依赖于输入,还依赖于记忆
将同一个结构循环利用
两种输入,两种输出,一种函数
三块参数:
U:从输入到隐藏状态
W:从前一隐藏状态到下一隐藏状态
V:从隐藏状态到输出
xt:时间t处的输入
ht:时间t处的记忆,ht=f(ht-1,xt),f可以是tanh等
ht=tanh(Wht-1+Uxt)
yt:时间t时刻的输出,yt=sotfmax(Vht)
f被不断重复利用
模型所需要学习的参数是固定的
无论输入的长度是多少,只需要一个函数f
深度RNN
双向RNN
BPTT算法
LSTM(长短期记忆模型)
遗忘门,输入门,输出门
遗忘门:决定丢弃信息
sigmoid描述每个部分有多少量可以通过
输入门:确定需要更新的信息
首先经过Sigmoid层决定什么信息需要更新,然后通过tanh层输出备选的需要更新的内容,然后加入新的状态中
输出门:输出信息
首先通过sigmoid来决定细胞状态的哪个部分将输出出去。然后将细胞状态通过tanh进行处理并将它和sigmoid门的输出相乘,最终仅仅会输出我们确定输出的那部分
RNN与LSTM不同
处理方式不同
RNN的记忆在每个时间点都会被新的输入覆盖,但LSTM中记忆是与新的输入相加
LSTM:如果前边的输入对Ct产生了影响,那这个影响会一直存在,除非遗忘门的权重为0
LSTM中learning rate可以被尽量设置小
LSTM与GRU(门控循环单元)
差异:
GRU只有两个门,分别为重置门和更新门
混合了细胞状态和隐藏状态
重置门:控制忽略前一时刻的状态信息的程度,重置门越小说明忽略的越多
更新门:控制前一时刻的状态信息被带入到当前状态中的程度,更新门越大表示歉意时刻的状态信息代入得越多
相似:
从t-1到t时刻的记忆的更新都引入加法
可以防止梯度消失