梯度下降
while True:
weights_grad = evaluate_gradient ( loss_fun, data, weight )
weights += step_size * weighs_grad
凸函数:这里的博客说的比较明白,其实主要理解一下全局最优和局部最优
神经网络并不是凸优化问题,只能通过不同策略尽可能接近全局最优点。
局部最优值:local minima
鞍点:saddle point ,朝各个方向看过去梯度都为零,梯度下降会卡住。
** SGD可能会在优化过程中发生震荡,解决:减小步伐 **
SGD + Momentum
引入动量的概念:可以从局部最优点或鞍点中“跳”出来
build up “velocity” as a running mean of gradients
rho gives “friction”; typically rho = 0.9 or 0.99 (摩擦力)
vx = 0
while True :
dx = compute_gradient (x)
vx = rho * vx + dx
x -= learning_rate * vx