请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

对于随机梯度下降的乱序操作不太理解

for i_iter in range(n_iters):
indexes = np.random.permutation(m)
X_b_new = X_b[indexes,:]
y_new = y[indexes]
for i in range(m):
gradient = dJ_sgd(theta, X_b_new[i], y_new[i])
theta = theta - learning_rate(i_iter * m + i) * gradient
关于这段代码不太理解
随机梯度下降的这段代码中,对于乱序排序,按照视频里的说法是随机的看一遍,最后再对每个样本迭代一次,每次的顺序不同是不是为了避免陷入局部最低点??就像是每次的起始位置发生改变是吗??

正在回答

1回答

每次的顺序不同,就是为了更加体现这个随机!这两重循环其实相当于随机取了 n_iters * m 次样本,计算梯度,进行梯度下降的搜索工作,同时,保证了,这个过程,每个样本的信息都用到了(都用到了n_iters次)。


为什么要随机?是的,为了避免陷入局部最低点。同时,这样做,算法性能效率也更高,因为每次梯度计算,只使用了一个样本:)


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 管一三四 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-11 08:55:53
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信