这是一系列深度学习的介绍,本文不会涉及公式推导,主要是一些算法思想的随笔记录。
适用人群:深度学习初学者,转AI的开发人员。
编程语言:Python
参考资料:吴恩达老师的深度学习系列视频
吴恩达老师深度学习笔记整理
唐宇迪深度学习入门视频课程
深度学习500问
笔记下载:深度学习个人笔记完整版
上节课提到了RNN网络的两个缺点,1.计算量太大,不必要记住离自己太远的信息,即不擅长捕获长期依赖关系;2.计算过程中可能会梯度消失,从输出y_hat得到的梯度很难传播回去,很难影响靠前层的权重。
对于梯度爆炸问题,可以借助梯度修剪,即观察梯度向量,如果它大于某个阈值,缩放梯度向量,保证它不会太大,这就是通过一些最大值来修剪的方法。所以如果你遇到了梯度爆炸,如果导数值很大,或者出现了NaN,就用梯度修剪,这是相对比较鲁棒的,这是梯度爆炸的解决方法。然而梯度消失更难解决,比较棘手。我们接下来会介绍GRU,门控循环单元网络,这个网络可以有效地解决梯度消失的问题,并且能够使你的神经网络捕获更长的长期依赖。
GRU单元(Gated Recurrent Unit)
长短期记忆LSTM(long short term memory)
RNN的升级——LSTM
long short term memory 长短期记忆网络
LSTM网络比较复杂,核心是利用C来决定如何更新
C:控制参数 通过训练得到 决定什么样的信息会被保留,什么样的会被遗忘
可以通过门单元处理 门是一种让信息选择式通过的方法
更新细胞状态
整体网络:
LTSM步骤:
1.确定丢弃信息
2.确定更新信息
3.更新细胞状态
4.产生输出
GRU与LSTM的比较
- GRU和LSTM的性能在很多任务上不分伯仲。
- GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。
- 从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则用memory cell 把hidden state 包装起来。