利用梯度下降法求解函式最小值

2021-08-28 15:24:20 字數 1358 閱讀 3998

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 是乙個一階最優化演算法,通常也稱為最速下降法。要使用梯度下降法找到乙個函式的區域性極小值,必須向函式上當前點對應梯度 或者是近似梯度 的反方向的規定步長距離點進行迭代搜尋。如果相反地向梯度正方向迭代進行搜尋,則會接近函式的區域性極大值點 這個過程則...