import numpy as np
import matplotlib.pyplot as plt
plot_x=np.linspace(-1,6,141) #在-1到6之間等距的生成141個數
plot_y=(plot_x-2.5)**2+3 # 同時根據plot_x來生成plot_y
由上一段**可以知道,我們生成了一些二次符合函式y=(x-2.5)²+3的一些點,我們可以用python的matplotlib來繪製一下這個函式影象。
在二次函式中,梯度就是導數的意思,所以我們就需要定義乙個求導數的函式和乙個求函式值的函式。
###定義乙個求二次函式導數的函式dj
def dj(x):
return 2*(x-2.5)
###定義乙個求函式值的函式j
def j(x):
try:
return (x-2.5)**2+3
except:
return float('inf')
定義好了這兩個函式後,我們就開始寫梯度下降法的**。
x=0.0 #隨機選取乙個起始點
eta=0.1 #學習率
epsilon=1e-8 #用來判斷是否到達二次函式的最小值點的條件
history_x=[x] #用來記錄使用梯度下降法走過的點的x座標
while true:
gradient=dj(x) #梯度(導數)
由圖可以知道,從x=0.0開始,當向最低點逼近的過程中,x的軌跡越來越密集。這是因為向最低點靠近的過程中,x的導數值越來越小,導致x減小的幅度越來越小,所以軌跡會越來越密集,最後停在最低點。根據圖中的資料我們也可以知道x具體取了哪些值。
在這裡只是利用梯度下降法解決了二維空間的最值問題。轉化到多維空間也是類似,梯度也就是對多個自變數x的的偏導數所組成的向量,向量所指的方向也就是函式增大的方向,思想都是一樣的。只不過是從數值運算轉換成向量運算了。簡單吧,hihi!
梯度下降法求解函式極大值 Matlab
目錄題目 作答1.建立函式檔案ceshi.m 2.這是呼叫的命令,也可以寫在.m檔案裡 3.輸出結果 題外話 本文使用matlab作答 function x1,y1,f now,z ceshi z1,z2 梯度下降法求函式區域性極大值 冀瑞靜 函式 f x,y 目的 求區域性極大值和對應的極大值點座...
梯度下降法 求解最優解
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import math from mpl toolkits.mplot3d import axes3d 設定在jupyter中matplotlib的...
梯度下降法求解線性回歸
梯度下降法 英語 gradient descent 是乙個一階最優化演算法,通常也稱為最速下降法。要使用梯度下降法找到乙個函式的區域性極小值,必須向函式上當前點對應梯度 或者是近似梯度 的反方向的規定步長距離點進行迭代搜尋。如果相反地向梯度正方向迭代進行搜尋,則會接近函式的區域性極大值點 這個過程則...