神经网络中的术语
(1)batchsize:批大小。在深度学习中,一般采用SGD(Stochastic Gradient Descent, 随机梯度下降)训练,即每次训练在训练集中抽取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;
举个例子,训练集有1000个样本,batchsize=10,那么:
训练完整个样本集需要:
100次iteration,1次epoch。
mini-batch gradient decent:
深度学习的优化算法,说白了就是梯度下降。每次的参数更新有两种方式。
第一种,遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度下降。
另一种,每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hit不到最优点。两次参数的更新也有可能互相抵消掉,造成目标函数震荡的比较剧烈。
为了克服两种方法的缺点,现在一般采用的是一种折中手段,mini-batch gradient decent,小批的梯度下降,这种方法把数据分为若干个批,按批来更新参数,这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多,计算量也不是很大。
DAG: 有向非循环图形(directed acyclic graph, or DAG)
导数消亡(vanishing gradient):
理论研究表明,在神经元总数一定的前提下,与传统的浅层神经网络(只有一个隐藏层)相比,深层神经网络具有更强大的学习能力[4],能够自动提取出具有高层抽象含义的特征来解决复杂的机器学习问题。但深层神经网络的学习也有一些非常难以克服的难点。首先,神经网络训练的目标函数是非凸的,这意味着网络参数的训练并不能保证一定会收敛于全局最小点,而有可能在某个局部最小点停止。对于深层神经网络,传统的后向传播算法(back propagation)会遇到“导数消亡”(vanishing gradient)问题[5],使得靠近输入端的隐藏层参数不能得到有效的训练,更容易陷入局部最小点,这导致深层神经网络的实际学习效果常常不如浅层神经网络,虽然它在理论上应该具有更强的学习能力。第二个难点是深层神经网络的学习会带来很大的计算量,学习的过程经常会持续数星期甚至数月。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
支付宝扫一扫捐赠
支付宝扫一扫捐赠
微信公众号: 共鸣圈
欢迎讨论,邮件: 924948$qq.com 请把$改成@
QQ群:263132197
QQ: 924948