阿米霍线搜索的梯度下降

时间:2019-09-18 22:27:55

标签: backtracking gradient-descent

我目前正在实现一种梯度下降算法,其中包括使用goldstein-armijo的动态线搜索方法-回溯方法。它可以工作到一定程度,但是无法收敛,无法分割步长并收敛最小值。由于我对这个话题还比较陌生,所以我真的不知道该如何调整或更改它以使其融合得更多。

# starting position
startx = np.array([x,y])

x_arr = [startx]
x = x_arr[-1]
beta = 0.1
alpha = 0.00001

# search direction,
# f_gradient returns the gradient
p = -f_gradient(x_arr[-1])

# cutoff
cutoff_thressh = 1*(10**(-8))

#initial stepsize
stp = 1

derphi = np.dot(f_gradient(x),p)

while curr_it < lim_it:

    if np.linalg.norm(f_gradient(x)) < cutoff_thressh:
        break

    # armijo conditions to reduce stepsize
    while f(x + stp * p) > (f(x) + alpha * stp * derphi)):
        stp*=beta

    gradient_mult = stp*f_gradient(x)
    x_new = np.subtract(x, gradient_mult)
    x_arr.append(x_new.tolist())

任何建议都是有帮助的! 谢谢

0 个答案:

没有答案