勾配降下法(GD)は現在、機械学習とディープラーニングの最適化問題を解決するための最もコアで最も広く使用されている方法です。これは機械学習アルゴリズムではなく、検索ベースの最適化手法です。その役割は、元のモデルの損失関数を最適化して、最適なパラメーターを見つけ、損失関数の値が最小になるようにすることです。つまり、既知のトレーニングセットデータを使用して最適なパラメーターを見つけ、最適なフィッティングモデルを見つけます。勾配降下法とは何ですか?
1.コンセプト
勾配は、パラメーターの次元と同じベクトルです。簡単に言えば、多変量関数の導関数は勾配です。各変数を個別に微分してから、コンマで区切ります。勾配は括弧で囲まれ、勾配が実際にはベクトルであることを示します。たとえば、線形回帰損失関数Lの勾配は次のとおりです。 。
第二に、計算プロセス
1.手順:
①、各パラメーターベクトルの偏微分、取得
;
②、初期パラメータベクトル、学習率η、しきい値のしきい値を設定;
③、パラメータベクトルを繰り返し計算
値
値が閾値停止閾値より小さい場合、この場合のローカルの最適なソリューションはパラメータベクトルであり、そうでない場合、次の点が算出されるパラメータ・ベクトル、方程式は、パラメータベクトル点-ηであります*
次の反復。
2. 1つの変数の方程式
単項関数:
最初のステップでは、導関数を見つけます。
2番目のステップ、初期化
、η、しきい値。
第3の工程と、コンピューティング
、そしてしきい値と比較されます。
4番目のステップは反復プロセスです。次の表に示すように:
2.1簡単なコードのデモ
首先,手工定义原函数和导函数。
def loss_function(x):
return 3*(x**2)+5*x
def det_function(x):
return 6*x+5
然后,定义梯度下降方法。
def get_GD(od_f=None,f=None,x_0=None,eta=0.001,threshold=0):
x_all=[]
od_f_all=[]
det_f_all=[]
count_n=0
while True:
count_n+=1
y=od_f(x_0)
#计算导数在x处的值
det_f=f(x_0)
od_f_all.append(y)
x_all.append(x_0)
det_f_all.append(det_f)
#计算下一个点的值
x_0=x_0-eta*det_f
#判断是否到达目的地
if det_f<=threshold:
break
return x_all,od_f_all,det_f_all,count_n
最后,设置x_0=1,eta=0.1,threshold=0.0001。查看图形。
参照記事:https : //mp.weixin.qq.com/s/44p8anqiiQV6XYGqH5u-Ug
https://mp.weixin.qq.com/s/nI9IBa4ccfg0xqyn0tbRPA
https://mp.weixin.qq.com/s/8gStYSSBvkXeuaX6pp9
https://mp.weixin.qq.com/s/OUslRwKGpS29gncsiyAPyg