欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

梯度下降法原理及实现

发布时间:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的这篇文章主要介绍了 梯度下降法原理及实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

梯度下降代表函数值减少速度最快的方向。当设定目标函数最小值时,只要朝着梯度下降的方向前进,就可以不断的逼近最优值

  • #encoding=utf-8  
  •   
  • """ 
  •     created on 2018-08-12 
  •     @author wt 
  • """  
  •   
  • """ 
  •     利用随机梯度法,首先需要有一个函数,随便找一个函数f(x) = x^2-4*x+4,则f'(x)=2*x-4 
  • """  
  • import numpy as np  
  • import matplotlib.pyplot as plt  
  •   
  •   
  • def f(x):  
  •     return x*x-4*x+4  
  •   
  • def f1(x):  
  •     return 2*x-4  
  •   
  • def Grandient_Descent(start_x,learning_rate,f):  
  •     x = start_x  
  •     for i in range(20):  
  •         grad = f(x)  
  •         x -= grad*learning_rate  
  •         print(i,grad,x)  
  •         if abs(grad) < 1e-10:  
  •             break  
  •     return x  
  •   
  • Grandient_Descent(5,0.1,f)  
  •   
  • x = np.linspace(-10,13,1000)  
  • y = f(x)  
  • plt.plot(x,y)  
  • plt.show()  
  • 可以看出x不断的随着梯度值再下降
  • 注意:随机梯度下降法中,步长设定值要小于安全步长,否则不论初始值等于多少,问题都会收敛不到最优值或者原地打转
  • 例如:根据上面的公式:x=5,f1(x)=6   -> x' = 5-6*step ,f1(x')=2*(5-6*step)-4 -> x'-f1(x')*step = x=5 求解y=1 安全步长为1
  • 总结

    以上是生活随笔为你收集整理的梯度下降法原理及实现的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。