梯度下降的問題

2022-04-01 06:39:18 字數 1272 閱讀 9909

%matplotlib inline

import

gluonbook as gb

import

math

from mxnet import

ndimport

numpy as np

eta = 0.4

deff_2d(x1,x2):

return 0.1*x1**2 + 2*x2**2

defgd_2d(x1,x2,s1,s2):

return (x1-eta*0.2*x1,x2-eta*4*x2,0,0)

deftrain_2d(trainer):

x1,x2,s1,s2 = -5,-2,0,0

results =[(x1,x2)]

for i in range(20):

x1,x2,s1,s2 =trainer(x1,x2,s1,s2)

print('

epoch %d,x1 %f,x2 %f

' % (i+1,x1,x2))

return

results

defshow_trace_2d(f,results):

gb.plt.plot(*zip(*results),'

-o',color='

#ff7f0e')

x1,x2 = np.meshgrid(np.arange(-5.5,1.0,0.1),np.arange(-3.0,1.0,0.1))

gb.plt.contour(x1,x2,f(x1,x2),colors='

#1f77b4')

gb.plt.xlabel('x1

')gb.plt.ylabel('x2

')show_trace_2d(f_2d,train_2d(gd_2d))

eta = 0.6show_trace_2d(f_2d,train_2d(gd_2d))

可以看到,x2 比 x1 的斜率的絕對值更大。

給定學習率,迭代自變數時會使自變數在豎直方向比水平方向移動幅度更大。那麼我們需要乙個較小的學習率從而避免自變數在豎直方向上越過目標函式最優解。然而,這樣又會造成自變數在水平方向上朝著最優解移動變慢。

調大學習率,豎直方向的自變數,不斷越過最優解,並發散。

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...

梯度下降 隨機梯度下降和批量梯度下降

對比梯度下降和隨機梯度下降和批量梯度下降 之前看的知識比較零散,沒有乙個系統的解釋說明,看了一些網上的博主的分析,總結了一下自己的理解。例子這裡我參照其他博主的例子做了一些修改,首先是梯度下降 coding utf 8 import random this is a sample to simula...

stanford 梯度 梯度下降,隨機梯度下降

一 梯度gradient 在標量場f中的一點處存在乙個向量g,該向量方向為f在該點處變化率最大的方向,其模也等於這個最大變化率的數值,則向量g稱為標量場f的梯度。在向量微積分中,標量場的梯度是乙個向量場。標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。更嚴格的說,從歐氏...