这里是一些暑期培训第一次测试题的部分解释,经过这次测试的摧残,总结备录一下,方便日后回顾复习。
经过几天的学习,7月22日下午,进行了第一次检测。开始以为会让我们推导一些公式什么的,结果当拿到测试题的时候,一首凉凉送给自己……开始的选择题和填空题还能接受,看到简答题,这都是什么,有种似曾相识的感觉,但就是写不出来。为时四十分钟的考试结束后,不到半个小时成绩就出来了,虽然成绩不那么好,但排名还行,然后学长给我们进行了讲解答疑,发现自己学的有点粗糙,没有注意那些细节性问题和概念,学以致用这方面也是有点差的。
校验集是用于调整超参数的,从而更好的优化训练模型。测试集是用于在完成神经网络训练过程后,为了客观评价模型在其未见过(未曾影响普通参数和超参数选择)的数据上的性能,而且测试集不能提出对参数或者超参数的修改意见,只能作为评价网络性能的一个指标。
(备注:不清楚这三个数据集概念及其作用的,可看下我以前写的关于这些的一篇文章。传送门:)
我们要先知道什么是BGD和SGD,从两者的运算方法上,我们就可以得知不同之处。
(1)批量梯度下降法(Batch Gradient Descent) :在更新参数时都使用所有的样本来进行更新。
(2)随机梯度下降法(Stochastic Gradient Descent):在更新参数时都使用一个样本来进行更新。每一次跟新参数都用一个样本,更新很多次。如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将参数迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次,这种方式计算复杂度太高。
废话不多说,直接上图:
对于逻辑回归,把权重初始化为0当然也是可以的,但是对于一个神经网络,如果你把权重或者参数都初始化为0,那么梯度下降将不会起作用。 如果权值全初始化为0,则无法更新权值。这是由于前向传播中,所有节点输出值均相同,由于此处使用了sigmod激活函数,所以此处所有神经节点输出都为1/2,而在反向传播每个节点输出值对损失函数的偏导时,涉及到对权值相乘后的求和,该项永远为0,故所乘的结果也必然为0,这样在计算权值对算是函数的偏导时,其偏导必然为0,所有权值偏导都为0,那么就不要指望使用梯度下降法能更新权值了,自然神经网络的训练也就无法进行下去了。
神经网络中的梯度不稳定指的是梯度消失和梯度爆炸问题。 (备注:对于这两种问题的具体解释和为什么会出现这种问题,以及解决方法,这里不具体讨论了,我会在以后的文章中具体解释到的。)
1. 神经网络中如果预测值与实际值的误差越大,那么在反向传播训练的过程中,各种参数调整的幅度就要更大,从而使训练更快收敛,如果预测值与实际值的误差小,各种参数调整的幅度就要小,从而减少震荡。 2. 使用平方误差损失函数,误差增大参数的梯度会增大,但是当误差很大时,参数的梯度就会又减小了。 3. 使用交叉熵损失是函数,误差越大参数的梯度也越大,能够快速收敛。
(备注:对于结论的推导过程会总结在另一篇文章里。)