Batch gradient descent
θ=θ−η⋅∇θJ(θ) .
例如在线性回归中,损失函数是:
J(θ)=12∑mi=1(hθ(x(i))−y(i))2
使用梯度下降的方法使得 J(θ) 最小化
- 初始化 θ ,例如令 θ1=θ2...=θn=0
- 沿着负梯度方向迭代,更新后的 θ 使 J(θ) 更小
θj=θj−α.∂J(θ)∂θj
对于BGD来说
θj=θj−α.∑mi=1∂J(θ)∂θj
其中:
∂J(θ)∂θj=(hθ(x(i))−y(i))x(i)j
缺点:需要整个数据集执行一次梯度更新,更新速度非常慢。 不能在线更新模型。
批量梯度下降保证收敛到凸函数的全局最小值和非凸函数的局部最小值。
代码如下:
for i in range(nb_epochs):
params_grad = evaluate_gradient(loss_function, data, params)
params = params - learning_rate * params_grad
Stochastic gradient descent
θ=θ−η⋅∇θJ(