梯度下降演算法過程詳細解讀
看了很多博文,一談到梯度下降,大多都在畫圖,類比“下山”。對於一開始想要了解“梯度下降”是個什麼玩意兒時,這種類比法是非常有助於理解的。但是,當我大概知道了梯度下降是什麼東西之後,我就好奇了,梯度下降究竟是怎樣尋找到模型的最優引數的?不能一想到梯度下降,腦海中就只有“下山”的畫面,“下山”不是目的,目的在於“下山”的過程中確立引數。下面就簡單概述一下,梯度下降過程是如何一步一步尋找到模型的最優引數。
1.梯度下降相關概念:
- 假設函式(hypothesis function):
所謂假設函式,就是監督學習中,我們擬合樣本特徵對映到目標變數的函式,記為 hθ(x)
- 損失函式(loss function):
又稱為代價函式。通常用損失函式來度量擬合的程度,從而評估模型擬合的好壞,記為 J(θ)。注意,損失函式是關於 θ 的函式!也就是說,對於損失函式來講,θ不再是函式的引數,而是損失函式的自變數!例如,對於線性迴歸的損失函式可以表示為:
J(θ) = 1/(2 *n) * ∑ ( hθ(xi) − yi )2
其中 n
例如,我們的假設函式為: hθ(x) = θ0 + θ1·x1 + θ2·x22
- 損失函式的梯度:
損失函式的梯度即對 θi 求偏導,由於損失函式是關於 θ 的函式,因此,θ 的取值不同,得出來的的梯度向量也是不同的。借用“下山”的比喻來解釋,θ 的不同取值,相當於處於山上的不同位置,每一個位置都會計算出一個梯度向量 ▽J(θ) 。
2. 梯度下降過程
(1) 學習得到損失函式 J(θ) 及樣本點xi 的損失:
例如,對於線性迴歸模型的假設函式為: hθ(x) = θ0 + θ1·x1 + θ2·x2 ,則損失函式為:J(θ) = 1/(2 *n) * Σ(θ0 + θ1·x1 + θ2·x2 - y)2;我們為樣本新增一個維度x0 ,x0 恆等於 1。則,我們可以變損失函式表示為:J(θ) = 1/(2 *n) * Σ(θ0·x0 + θ1·x1 + θ2·x2 - y)2
為了便於講解和理解,我們先只取一個樣本點進行計算。對於樣本點 x1 = (x0 = 1,x1 = 1,x2 = 2),對應的目標變數 y1 = 10,的損失為:J(θ)1 = 1/2 *(θ0 + θ1+ 2*θ2 - 10)2
(2) 求出樣本點 xi 損失函式的梯度向量:
根據 J(θ) ,求出模型損失函式的梯度向量表示為 : ▽J(θ) = <(θ0·x0 + θ1·x1 + θ2·x2 - y)*x0 ,(θ0·x0 + θ1·x1 + θ2·x2 - y)*x1 ,(θ0·x0 + θ1·x1 + θ2·x2 - y)*x2 >
根據 J(θ)1 ,求出樣本點 x1 對應的梯度▽J(θ)1 = <(θ0+ θ1 + 2*θ2 - 10),(θ0+ θ1 + 2*θ2 - 10),(θ0+ θ1 + 2*θ2 - 10)*2 >
(3) 初始化假設函式的引數 θ ,得到相應的梯度向量:
對 θ 進行隨機取值,假設θi 第一次全部取0,θ0 = < 0,0,0>;
將θ0 帶入 J(θ)1 ,得到 取 θ0 時的損失為 J(θ)01 = 1/2 *(0 + 0+ 2*0 - 10)2 = 50
將θ0 帶入▽J(θ)1 ,得到 θ0 處的梯度向量為 ▽J(θ)01 = < -10,-10,-20 > ;
(4) 根據梯度下降步長,進行梯度下降迭代:
設立步長 α = 0.1 ,對 θ0 進行梯度下降,得到 θ1
第一次梯度下降:
θ1 = θ0 - α * ▽J(θ)01 = < 0,0,0 > - 0.1 * < -10,-10,-20 > = < 1,1,2 >
將θ1 帶入 J(θ)1 ,得到 取 θ0 時的損失為 J(θ)01 = 1/2 *(1 + 1+ 2*2 - 10)2 = 8
將θ1 帶入▽J(θ)1
看了很多博文,一談到梯度下降,大多都在畫圖,類比“下山”。對於一開始想要了解“梯度下降”是個什麼玩意兒時,這種類比法是非常有助於理解的。但是,當我大概知道了梯度下降是什麼東西之後,我就好奇了,梯度下降究竟是怎樣尋找到模型的最優引數的?不能一想到梯度下降,腦海中就只有“下山”的畫面,“下山”不是目的,目的在
SGD系列
1)Batch gradient descent(批量梯度下降)
在整個資料集上 每更新一次權重,要遍歷所有的樣本,由於樣本集過大,無法儲存在記憶體中,無法線上更新模型。對於損失函式的凸曲面,可以收斂到全域性最小值,對於非凸曲面,收斂到區域性最小值。 隨機梯度 機器學習三要素
機器學習的三要素為:模型、策略、演算法。
模型:就是所要學習的條件概率分佈或決策函式。線性迴歸模型
策略:按照什麼樣的準則學習或選擇最優的模型。最小化均方誤差,即所謂的 least-squares(在spss裡線性迴歸對應的模組就叫OLS即Ordinary Least Squares):
建議記住的實用符號
符號
含義
m
樣本數目
x
輸入變數
y
輸出變數/目標變數
貌似機器學習最繞不過去的演算法,是梯度下降演算法。這裡專門捋一下。
1. 什麼是梯度
有知乎大神已經解釋的很不錯,這裡轉載並稍作修改,加上自己的看法。先給出連結,畢竟轉載要說明出處嘛。為什麼梯度反方向是函式值區域性下降最快的方向?
因為高等數學都忘光了,先從導數/偏倒數/方向
https://blog.csdn.net/To_be_to_thought/article/details/81780397闡釋Batch Gradient Descent、Stochastic Gradient Descent、MiniBatch Gradient Descent具體原理。
梯度
梯度是一個向量。 函式上某點的梯度的方向:導數最大的方向。梯度的大小(梯度的模):該點的導數的大小。
梯度下降
對於一般二次函式而言: 由於梯度的方向是導數最大的方向,順著梯度方向走,函式值就變大的最快,順著梯度的反方向,那麼函式值減小最快的方向,導數也慢慢減小。當導數減為
在梯度下降演算法中,理論上有一個步長steep需要我們設定。steep的設定非常重要,如果設定不當,我們的梯度下降演算法可能就得不到我們想要的結果。
一:步長不當導致的問題
如果步長太短,很顯然我們訓練集訓練的時間就會加長。如果訓練集比較多,這也是致命的。
如果步長太長,可能出現Oversho
cost function優化
最原始更新由此
相應的難點程式碼:
self.weights = [w-(eta/len(mini_batch))*nw
for w, nw in zip(self.weights, nabla_w)]
self.bi
公式不太好上傳,所以就截圖了,效果不太好,大家想看原件,請下載:https://download.csdn.net/download/qq_24369689/10811686
監督學習-梯度下降演算法
如果你還沒有接觸過梯度下降演算法,你在看下面內容之前可以先看一下,吳恩達的梯度下降的視訊:
演算法介紹:梯度下降演算法是一種利用一次導數資訊求取目標函式極值的方法,也是目前應用最為廣泛的區域性優化演算法之一。其具有實現簡單、容易遷移、收斂速度較快的特徵。在求解過程中,從預設的種子點開始,根據梯度資訊逐步迭代更新,使得種子點逐漸向目標函式的極小值點移動,最終到達目標函式的極小值點。注意,沿梯度正
梯度下降演算法是優化神經網路最常見的方式,這裡我們會接觸梯度下降法的不同變種以及多種梯度下降優化演算法。 梯度下降變種
batch gradient descent 缺點:一次引數更新需要使用整個資料集,因此十分慢,並且記憶體不夠的話很難應付。 優點:保證收斂到全域性最小值或者區
一、一維梯度下降
演算法思想:
我們要找到一個函式的谷底,可以通過不斷求導,不斷逼近,找到一個函式求導後為0,我們就引入了一個概念
學習率(也可以叫作步長),因為是不斷逼近某個x,所以學習率過大會導致超過最優解,而學習率過小,會導致收斂速度過慢。
二、多維梯度下降
梯度下降法
1、梯度:
在微積分裡面,對多元函式引數求偏導數,把求的各引數的偏導數以向量的形式寫出來,就是梯度。
梯度向量從幾何意義上講,就是函式變化增加最快的地方,沿著梯度向量的方向更容易找到函式的最大值,沿著向量相反的方向,梯度減小最快,更容易找
演算法理論
為了實現監督學習,假設對於因變數y有自變數x1x2,則有y=θ1x1+θ2x2+θ0
θ0是偏移量,令θ0=1,得到:
我們再定義誤差函式j(θ)(係數為1/2是用來消去後面的2)來表示h(x)與y的接近程度:
目的是使誤差函式最小,需要求得使誤差函式最小
0. 前言
在講解ping過程之前,我們需要了解以下概念。
1). 何為ping
PING (Packet Internet Groper),因特網包探索器,用於測試網路連通性的程式。
Ping傳送一個ICMP(Internet Control Message
接上篇
4.梯度下降演算法
《斯坦福大學公開課 :機器學習課程》吳恩達講解第二課時,是直接從梯度下降開始講解,最後採用向量和矩陣的方式推導瞭解析解,國內很多培訓視訊是先講解析解後講梯度下降,個人認為梯度下降演算法更為重要,它是很多演算法(邏輯迴歸、神經網路)都可
梯度下降演算法是一個一階最優化演算法,通常也稱為最速下降演算法。
要使用梯度下降演算法尋找區域性最小值,必須向函式上當前點對應梯度的反方向進行迭代搜尋。相反地向函式正方向迭代搜尋,則會接近函式的區域性最大值,這個過程被稱為梯度上升法。
梯度下降演算法基於以下的觀
梯度的方向總是函式值越來越大的方向,如果是求極大值,沿著梯度的方向迭代介面;如果是求極小值,沿著梯度相反的方向迭代即可,即梯度下降法。
梯度下降法(梯度上升法應該也適用)迭代結束的條件,常用的有兩種:
一、定義一個合理的閾值,當兩次迭代之間的差值小於該閾值時,迭代結束。
老師的課程 1.從零開始進行機器學習 2.機器學習數學基礎(根據學生需求不斷更新) 3.機器學習Python基礎 4.最適合程式設計師的方式學習TensorFlow
上節課講完線性迴歸的數學推導,我們這節課說下如何用機器學習的思想把最合適的權重引數求解出來呢?這 相關推薦
梯度下降演算法過程詳細解讀
訓練過程--梯度下降演算法(SGD、adam等)
斯坦福CS229機器學習課程筆記一:線性迴歸與梯度下降演算法
吳恩達機器學習課程筆記02——處理房價預測問題(梯度下降演算法詳解)
機器學習之--梯度下降演算法
優化梯度下降演算法 Momentum、RMSProp(Root mean square propagation)和Adam( Adaptive Moment Estimation)
梯度下降、線性迴歸演算法中的梯度下降、為什麼要用梯度下降演算法。
線性迴歸 梯度下降演算法 overshot the minimun現象
gradient descent梯度下降演算法的優化
監督學習-梯度下降演算法
梯度下降演算法(1) - Python實現
一系列梯度下降演算法
梯度下降 隨機梯度下降 演算法
梯度下降演算法原理介紹
批量梯度下降演算法的簡單Python實現
ping過程詳細解讀
Python實現線性迴歸2,梯度下降演算法
有關機器學習的梯度下降演算法
梯度下降演算法結束條件
從零開始機器學習002-梯度下降演算法