改善深层神经网络:超参数调整、正则化以及优化——2.1 Mini-batch梯度下降

杀马特。学长 韩版系。学妹 提交于 2020-01-26 14:36:24

机器学习的应用是一个高度依赖经验的过程,优化算法能够帮助你快速训练模型。深度学习没有在大数据领域发挥最大的效果我们可以利用一个巨大的数据集来训练神经网络,而在巨大的数据集基础上进行训练速度很慢。

因此,使用快速的优化算法,使用好用的优化算法能够大大提高效率,现在谈谈mini-batch梯度下降法。

向量化能有效地对所有m个例子进行计算,允许处理整个训练集而无需某个明确的公式,所以我们要把训练样本放到巨大的矩阵X中,如下X=[x(1),x(2),...,x(m)]X=[x^{(1)},x^{(2)},...,x^{(m)}]Y=[y(1),y(2),...,y(m)]Y=[y^{(1)},y^{(2)},...,y^{(m)}]XX的维数是(nx,m)(n_x,m)YY的维数是(1,m)(1,m),向量化能相对较快地处理所有m个样本,但如果m很大的话,处理速度仍然缓慢,比如说m是500万或者5000万或者更大的一个数,在对整个训练集执行梯度下降法时,必须处理整个训练集,然后才能进行一步梯度下降法,然后需要再重新处理500万个训练样本才能进行下一步梯度下降法。

所以如果在处理完整个500万个样本的训练集之前,先让梯度下降法处理一部分,算法速度会更快。可以把训练集分割为小一点的子训练集,这些子集被取名为Mini-batch,假设每一个子集中只有1000个样本,那么将其中的x(1)x^{(1)}x(1000)x^{(1000)}取出来,将其称之为第一个子训练集,也叫做Mini-batch,然后再取出接下来的1000个样本,从x(1001)x^{(1001)}x(2000)x^{(2000)},然后再取1000个样本,以此类推。

接下来说一个新符号,X{1}X^{\left \{1\right \}},如果训练集数据有500万,每个mini-batch都有1000个样本,也就是说有5000个mini-batch。

之前我们使用x(i)x^{(i)}表示训练集中的第i个数据,用z[l]z^{[l]}表示神经网络的层数,表示神经网络中第l层的z值,现在用X{t}X^{\left \{t\right \}}表示不同的mini-batch。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!