cs231n--正则化与优化

Regularization 正则化

cs231n--正则化与优化_第1张图片

cs231n--正则化与优化_第2张图片

cs231n--正则化与优化_第3张图片

cs231n--正则化与优化_第4张图片

Optimization 优化

  • batch 是一次运行的所有数据集,每次只更新一次梯度下降,计算很慢。

BGD 批梯度下降

batch gradient descent BGD 对整个数据总体的loss评估进行参数更新,由于需要扫描完整个数据机才做一次更新,所以收敛速度会很慢
cs231n--正则化与优化_第5张图片

输出的结果实际上是对所有的训练样本对W求梯度 dw,之后再对所有样本的dw求平均的结果。

SGD 随机梯度下降

由于批量梯度下降法在更新每一个参数时,都需要所有的训练样本,所以训练过程会随着样本数量的加大而变得异常的缓慢。随机梯度下降法(Stochastic Gradient Descent,简称SGD)正是为了解决批量梯度下降法这一弊端而提出的

随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。但是,SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。

  • 训练速度快,收敛快
  • 不一定是最优解

MGD Mini-batch gradient descent

结合上述两种方案的折中形式

  • 将整个数据集分割成较小的批量 mini-batch,每个mini-batch分别做损失估计,以及参数更新,能提高训练的收敛速度
  • 计算的mini-batch的梯度,实际上得到的梯度是mini-batch 样本的求得的梯度均值。

你可能感兴趣的:(深度学习,python,人工智能)