优达学城 深度学习(五)--循环神经网络
1、RNN在结构上与前馈神经网络有哪些不同?
前向反馈:
image.pngRNN:
image.png第一个区别:定义输入和输出的方式不同,RNN每个时间步长使用单一输入和单一输出,同时使用序列进行训练,前面的输入会影响后面的输出。
第二个区别:RNN包含反馈或存储单元,存储单元作为隐藏层的输出,也可以作为接下来训练步骤中向网络的其他输入,不在用h作为隐藏层的输出,而是用S表示状态。
2、相比MLP,为什么RNN可以处理变长序列,并且需要训练的参数更少?
(这个答案我不是很确定)
RNN能够处理序列输入,每个步长的输出由当前输入和前一个步长的状态(S)决定,对于变长的序列,只要知道前一步长的状态和当前步长的输入,就能计算出输出。
RNN参数共享,相对于MLP,参数更少。
3、RNN适合处理哪一类问题?
输入具有状态(序列)属性,并且输入之间不独立。
4、画出RNN的折叠模式和展开模式下的结构图
image.png image.png5、RNN的输入是什么?输出是什么?目标函数是什么?
输入:序列数据,上一个时间步长隐层的输出,权重
输出:当前的输入和权重以及之前的输入的函数
image.png目标函数:平方误差(MSE)(通常用于回归问题)和交叉熵(通常用于分类问题)
MSE:
image.png6、使用批处理更新梯度有哪两个好处?
1、减少训练过程的复杂性,
2、对权重的多个潜在噪音变化求平均值,提高了准确率。
7、《L1-17基于时间的反向传播算法》说明方程式42是如何得到的。为什么要考虑多个Si的影响,为什么多个影响要用加法合并?
通过链式法则求偏导,计算每一个状态对最后一个状态的影响(链式法则求偏导)并累加。
Sn状态取决于之前的状态Sn-1......S1,在更新Ws时,需要考虑到多个S的影响。
不知道为啥使用加法。
8、《L1-17》给出En对Wx的偏导数
L1-18中有详细步骤
image.png9、《L1-21》为什么权值矩阵U的更新为什么会出现3条路径?如何用递归的方式找到所有的路径?
image.pngimage.png
image.png
image.png
如何用递归?不知道
10、《L1-22》徒手推导含一个隐层的BPTT的最终累加方程
image.png image.pngimage.png
image.png
####
11、《L1-23》梯度裁剪(grade clipping)是如何工作的?为什么要引入梯度裁剪?
引入梯度裁剪为了解决梯度爆炸问题。
原理:每个时间步长检查梯度是否超过特定阈值,如果超过了,对接下来的梯度进行标准化,惩罚超过阈值过大的梯度。
12、《L1-23》小批量法更新RNN权重是如何进行的?为什么一个batch即不能太小,也不能太大?
小批量梯度下降有利于降低训练过程的复杂性,也可以从权重更新中删除噪声,因为对一组噪声样本计算平均值,可以得到噪音更小的值。
image.png(我的理解:累加一批样本的误差,然后更新一次权重。)
批大小太小容易受噪声干扰(极端随机梯度下降),太大训练慢(极端批量梯度下降)。
随机梯度下降缺点:
(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
(3)不易于并行实现。
批量梯度下降缺点:
(1)当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
13、《L1-23》方程式61中, delta_ij中的i和j表示什么
代表对应的哪个权重?不知道
14、《L3-3》在train函数中, 语句hidden = hidden.data的作用是什么?
记录当前隐层状态,在下一时间步训练时使用。
15、LSTM为什么称为长短期记忆?哪个结构对应长期记忆,哪个对应短期,哪个对应事件?
因为LSTM能记住很长一段时间前的节点状态和近期的节点状态
遗忘门和记忆门对应长期记忆
学习门是使用门对应短期记忆
某时刻的输入对应事件
16、LSTM有哪4个门,分别有什么功能?它是如何实现这些功能的?请写出各个门对应的公式。指出下图中的两个错误。
image.pngimage.png
学习门(短期记忆+事件): it:学习因子
合并短期记忆与事件,忽略其中一部分,保留重要部分
image.png
遗忘门(长期记忆+短期记忆+事件): ft:遗忘因子
对长期记忆中的信息选择性遗忘
image.png记忆门(长期记忆+短期记忆+事件):
将遗忘门和学习门的输出结合起来,将当前的短期记忆加入长期记忆中
image.png
使用门(输出门):
使用长期记忆和短期记忆生成生成新的短期记忆和输出结果。
image.pngimage.png
两个错误:1.遗忘门使用了短期记忆和时间计算遗忘因子,图中没有体现
2.使用门产生当前时刻的输出?
17、在下图中,为什么两个tanh函数使用不同的符号。它们在本质上有什么不同?
1如图所示,标准LSTM模型是一种特殊的RNN类型,在每一个重复的模块中有四个特殊的结构,以一种特殊的方式进行交互。
在图中,每一条黑线传输着一整个向量,粉色的圈代表一种pointwise 操作(将定义域上的每一点的函数值分别进行运算),诸如向量的和,而黄色的矩阵就是学习到的神经网络层。
LSTM模型的核心思想是“细胞状态”。“细胞状态”类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。
参考:https://blog.csdn.net/m0_37870649/article/details/80968621
18、为什么LSTM可以缓解梯度消失问题?
LSTM ,可以通过阀门(gate,也就是概率,有输出,遗忘,输入三个阀门)记忆一些长期信息,所以相比RNN,保留更多的长期信息(相应的保留了更多的梯度),因此可以缓解梯度消失的问题。
19、GRU是如何简化LSTM的?
2 @)MS3XTM$L}KG@H27FD9XFX.pngGRU作为LSTM的一种变体,将忘记门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,加上其他一些改动,最终的模型比标准的 LSTM 模型要简单。
20、《L3-8》创建和使用LSTM的典型流程是什么?
3input:输入字符,进行one-hot 编码,然后将one-hot编码向量传入隐藏递归层。
hidden:隐藏层有两个输入,首先生成RNN输出,并生成隐藏状态,继续变化,并在序列的下个时间步传入此隐藏层。递归层会记住这个状态,输出传入最终全连接输出层。
output:生成一系列字符,应用softmax,获得概率最高字符的概率分布。
Load in Data加载数据
Tokenization将文本转换为数字标记,每个字符映射唯一索引,进行one-hot编码
Pre-processing the data:创建函数,接受编码数组并转换为指定长度的one-hot向量。
Making training mini-batches:把被编码的字符变成能传入网络中的mini-batches。
creating batches:
1、首先接受编码数组,丢弃mini-batches多余的值,
2然后调整数组形状,
2.创建窗口,每次以序列长度对batches数据进行迭代
21、将神经网络从支持CPU的环境移植到支持GPU的环境要做哪些工作? (D)
22、《L5-1》将影评情感分析方法用于重庆大学教师评价的情感分析需要做哪些工作?如果希望对老师的六个方面(如 教学方法、师生互动)进行评价呢?
23、 《L7-2》超参数可以分成哪两类?
第一类:优化器超参数,它们是优化和训练过程相关性更大的变量,而非模型本身,学习率,minibatch大小,训练迭代或epoch次数。
第二类:模型超参数。与模型结构相关,包括层数,隐藏单元数量
24、《L7-2》Bengio认为最重要的超参数是什么
学习率
25、《L7-3》梯度下降法在什么情况下可能出现误差函数的值增加的情况?为什么会产生这样的结果?
当我们选择的学习率比理想的学习率大两倍以上就会出下误差函数之增大的情况,会离最佳误差越来越远,因素在于梯度,梯度不仅指出方向还提供曲线上该点的切线,斜率对应的值,曲线的点越高,斜率越大,梯度值会越大,导致学习率过大的问题更严重。
image.png
26、《L7-3》在哪些情况下可以降低学习率?
在训练的过程中验证集误差增大,需要降低学习率
image.png
27、《L7-3》学习率的指数衰减是什么意思?
学习率衰减是在当训练误差在某个值附近振荡时,我们应该通过减小学习率来让他逐渐达到最佳误差。指数衰减则指的是可以每一批次数据处理完以后设置学习率为原来的0.1倍。
image.png
image.png
训练过程中如果出现误差振荡可以通过减小学习率或者使用自适应学习率。
28、《L7-5》MiniBatch大小的设置经验是什么?
通常使用32为minibacth的大小,使用较大的minibatch会使训练计算中使用矩阵乘法的计算速度加快,但也会在训练中过程中占用更多内存,需要更多资源。如果遇到内存不足错误和TensorFlow问题可以通过减小minibatch。但是较小的minibatch会让误差计算中有更多的噪声,噪声有助于防止训练过程在局部最小处停止。minibatch过大会使训练速度太慢,太大会导致计算成本过高降低准确度,一般选择32-256。
29、《L7-6》Epoch的设置经验是什么?什么叫early stop?如何实现?
关注指标为验证误差,手动设置如果验证误差还在减小就继续训练,早期停止是用来确定何时停止训练模型的技术,监督验证误差,并在验证误差停止下降的时候停止训练,我们不应该在第一次看到验证误差开始增高时就停止训练,如果验证误差在最后10-20步内没有任何改进的情况下就停止训练。
30、《L7-7》隐层单元/层数的设置经验是什么?这个经验是针对何种神经元的
当发现训练误差远远小于验证误差时可能过拟合了应该减少隐藏层节点数,也可以使用dropout或者L2正则化,逐渐添加更多隐藏层并且跟踪验证误差,持续添加隐藏单元直到验证误差开始变大。对于第一个隐藏层单元格数设置的比输入数量大的数好一点,层数的话三层比较好(CNN除外 越深效果越好)
31、《L7-8》RNN涉及哪些超参数?超参数值的一般设定是什么?
首先是cell类型:LSTM cell或者GRU cell
模型的深度:字符语言建模至少两层,高级语音识别没用LSTM需要五到七层
如果输入数单词还需要考虑嵌入维度:50
32、《L7-8》根据以往的研究,LSTM与GRU谁的性能更好?*
我们的结果在 比较 LSTM 和 GRU 方面并非决定性的,这表明门控循环单元类型的选择可能在很大程度上取决于数据集和相应的任务。"