梯度下降
梯度下降是迭代法的一种,通俗来讲你可以把梯度下降任务当成下山的过程。
下面简要介绍几种常用的“下山”方法:BGD、SGD、MBGD、Momentum、RMSProp、Adam、NAG、NAdam并做适当的对比。
Batch Gradient Descent(BGD)批量梯度下降
BGD应该是每个初学神经网络的孩子学习的梯度下降法,核心思想就是一次性迭代训练所有样本。代码附上:
X = data_input
Y = labels
parameters = initialize_parameters(layers_dims)
for i in range(0, num_iterations): #num_iterations--迭代次数
# Forward propagation
a, caches = forward_propagation(X, parameters)
# Compute cost.
cost = compute_cost(a, Y)
# Backward propagation.
grads = backward_propagation(a, caches, parameters)
# Update parameters.
parameters = update_parameters(parameters, grads)
看到了吧,就是不管三七二十一,先把所有数据吃掉,再慢慢消化的感觉。。
BGD的
理想状态下,经过足够多词的迭代后可以达到全局最优。
当然,也相当明显:想一口气吃掉这么多数据,你得有那么大的嘴(内存、显存)和同样优秀的胃口(算力),人工智能时代数据为王,庞大的数据量使得BGD讨不了好。
今天先到这,少爷睡觉去了。