一、实验要求
1. 手动实现循环神经网络RNN,并在至少一种数据集上进行实验,从训练时间、预测精度、Loss变化等角度分析实验结果(最好使用图表展示)
2. 使用torch.nn.rnn实现循环神经网络,并在至少一种数据集上进行实验,从训练时间、预测精度、Loss变化等角度分析实验结果(最好使用图表展示)
3. 不同超参数的对比分析(包括hidden_size、batchsize、lr等)选其中至少1-2个进行分析
4. 用户签到数据实验的难度会稍高一些,若在实验中选用,可酌情加分
5. 手动实现LSTM和GRU并在至少一种数据集进行试验分析 (平台课同学选做,专业课同学必做)
6. 使用torch.nn实现LSTM和GRU并在至少一种数据集进行试验分析 (平台课同学选做,专业课同学必做)
7. 设计实验,对比分析LSTM和GRU在相同数据集上的结果。
二、源代码
见资源“北京交通大学《深度学习》专业课,实验4循环神经网络实验源代码”
三、学习笔记
1. 门控循环神经网络(GRU)
GRU(Gate Recurrent Unit):循环神经网络RNN的一种,且是一种比LSTM网络更加简单的循环神经网络。用于解决长期记忆和反向传播中的梯度等问题。
对比:
GRU是LSTM的一种变体,较LSTM网络的结构更加简单、效果更好。
GRU 网络引入门控机制来控制信息更新的方式。和 LSTM 不同,GRU 不引 入额外的记忆单元,而是引入一个更新门来控制当前状态需要从历史状态中保留多少信息(不经过非线性变换),以及需要从候选状态中接受多少新信息。
更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。
重置门控制前一状态有多少信息被写入到当前的候选集(h_𝑡 ) ̃上,重置门越小,前一状态的信息被写入的越少。
LSTM与GRU:
GRU:参数更少,训练稍快,需要更少的数据来泛化
LSTM:参数多,表达能力强,在数据量较大时效果较好。
Greff, et al. (2016)对流行的LSTM变种做了对比实验,发现它们的表现几乎一致。
Jozefowicz, et al. (2015)测试了超过一万中RNN结构,发现某些任务情形下,有些变种比LSTM工作得更好。
二、深层循环神经网络
循环神经网络是可深可浅的网络。
深网络:把循环网络按时间展开
长时间间隔的状态之间的路径很长
浅网络:同一时刻网络输入到输出之间的路径
𝑋_𝑡→𝑌_t 非常浅
堆叠循环神经网络 (Stacked Recurrent Neural Network, SRNN) 。见下图。
双向循环神经网络(Bidirectional Recurrent Neural Network)由两层循环神经网络组成,它们的输入相同,只是信息传递的方向不同。见下图。
增加循环神经网络的深度的意义?
①增强循环神经网络的能力。
②增加同一时刻网络输入到输出之间的路径x_𝑡→𝑦_t,如增加隐状态到输出ℎ_𝑡→𝑦_t ,以及输入到隐状态 x_𝑡→ℎ_t之间的路径的深度。