導航:首頁 > 源碼編譯 > 機器學習的一階優化演算法

機器學習的一階優化演算法

發布時間:2022-12-15 08:31:44

A. 機器學習一般常用的演算法有哪些

機器學習是人工智慧的核心技術,是學習人工智慧必不可少的環節。機器學習中有很多演算法,能夠解決很多以前難以企的問題,機器學習中涉及到的演算法有不少,下面小編就給大家普及一下這些演算法。

一、線性回歸

一般來說,線性回歸是統計學和機器學習中最知名和最易理解的演算法之一。這一演算法中我們可以用來預測建模,而預測建模主要關注最小化模型誤差或者盡可能作出最准確的預測,以可解釋性為代價。我們將借用、重用包括統計學在內的很多不同領域的演算法,並將其用於這些目的。當然我們可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘法和梯度下降優化的線性代數解。就目前而言,線性回歸已經存在了200多年,並得到了廣泛研究。使用這種技術的一些經驗是盡可能去除非常相似(相關)的變數,並去除噪音。這是一種快速、簡單的技術。

二、Logistic 回歸

它是解決二分類問題的首選方法。Logistic 回歸與線性回歸相似,目標都是找到每個輸入變數的權重,即系數值。與線性回歸不同的是,Logistic 回歸對輸出的預測使用被稱為 logistic 函數的非線性函數進行變換。logistic 函數看起來像一個大的S,並且可以將任何值轉換到0到1的區間內。這非常實用,因為我們可以規定logistic函數的輸出值是0和1並預測類別值。像線性回歸一樣,Logistic 回歸在刪除與輸出變數無關的屬性以及非常相似的屬性時效果更好。它是一個快速的學習模型,並且對於二分類問題非常有效。

三、線性判別分析(LDA)

在前面我們介紹的Logistic 回歸是一種分類演算法,傳統上,它僅限於只有兩類的分類問題。而LDA的表示非常簡單直接。它由數據的統計屬性構成,對每個類別進行計算。單個輸入變數的 LDA包括兩個,第一就是每個類別的平均值,第二就是所有類別的方差。而在線性判別分析,進行預測的方法是計算每個類別的判別值並對具備最大值的類別進行預測。該技術假設數據呈高斯分布,因此最好預先從數據中刪除異常值。這是處理分類預測建模問題的一種簡單而強大的方法。

四、決策樹

決策樹是預測建模機器學習的一種重要演算法。決策樹模型的表示是一個二叉樹。這是演算法和數據結構中的二叉樹,沒什麼特別的。每個節點代表一個單獨的輸入變數x和該變數上的一個分割點。而決策樹的葉節點包含一個用於預測的輸出變數y。通過遍歷該樹的分割點,直到到達一個葉節點並輸出該節點的類別值就可以作出預測。當然決策樹的有點就是決策樹學習速度和預測速度都很快。它們還可以解決大量問題,並且不需要對數據做特別准備。

五、樸素貝葉斯

其實樸素貝葉斯是一個簡單但是很強大的預測建模演算法。而這個模型由兩種概率組成,這兩種概率都可以直接從訓練數據中計算出來。第一種就是每個類別的概率,第二種就是給定每個 x 的值,每個類別的條件概率。一旦計算出來,概率模型可用於使用貝葉斯定理對新數據進行預測。當我們的數據是實值時,通常假設一個高斯分布,這樣我們可以簡單的估計這些概率。而樸素貝葉斯之所以是樸素的,是因為它假設每個輸入變數是獨立的。這是一個強大的假設,真實的數據並非如此,但是,該技術在大量復雜問題上非常有用。所以說,樸素貝葉斯是一個十分實用的功能。

六、K近鄰演算法

K近鄰演算法簡稱KNN演算法,KNN 演算法非常簡單且有效。KNN的模型表示是整個訓練數據集。KNN演算法在整個訓練集中搜索K個最相似實例(近鄰)並匯總這K個實例的輸出變數,以預測新數據點。對於回歸問題,這可能是平均輸出變數,對於分類問題,這可能是眾數類別值。而其中的訣竅在於如何確定數據實例間的相似性。如果屬性的度量單位相同,那麼最簡單的技術是使用歐幾里得距離,我們可以根據每個輸入變數之間的差值直接計算出來其數值。當然,KNN需要大量內存或空間來存儲所有數據,但是只有在需要預測時才執行計算。我們還可以隨時更新和管理訓練實例,以保持預測的准確性。

七、Boosting 和 AdaBoost

首先,Boosting 是一種集成技術,它試圖集成一些弱分類器來創建一個強分類器。這通過從訓練數據中構建一個模型,然後創建第二個模型來嘗試糾正第一個模型的錯誤來完成。一直添加模型直到能夠完美預測訓練集,或添加的模型數量已經達到最大數量。而AdaBoost 是第一個為二分類開發的真正成功的 boosting 演算法。這是理解 boosting 的最佳起點。現代 boosting 方法建立在 AdaBoost 之上,最顯著的是隨機梯度提升。當然,AdaBoost 與短決策樹一起使用。在第一個決策樹創建之後,利用每個訓練實例上樹的性能來衡量下一個決策樹應該對每個訓練實例付出多少注意力。難以預測的訓練數據被分配更多權重,而容易預測的數據分配的權重較少。依次創建模型,每一個模型在訓練實例上更新權重,影響序列中下一個決策樹的學習。在所有決策樹建立之後,對新數據進行預測,並且通過每個決策樹在訓練數據上的精確度評估其性能。所以說,由於在糾正演算法錯誤上投入了太多注意力,所以具備已刪除異常值的干凈數據十分重要。

八、學習向量量化演算法(簡稱 LVQ)

學習向量量化也是機器學習其中的一個演算法。可能大家不知道的是,K近鄰演算法的一個缺點是我們需要遍歷整個訓練數據集。學習向量量化演算法(簡稱 LVQ)是一種人工神經網路演算法,它允許你選擇訓練實例的數量,並精確地學習這些實例應該是什麼樣的。而學習向量量化的表示是碼本向量的集合。這些是在開始時隨機選擇的,並逐漸調整以在學習演算法的多次迭代中最好地總結訓練數據集。在學習之後,碼本向量可用於預測。最相似的近鄰通過計算每個碼本向量和新數據實例之間的距離找到。然後返回最佳匹配單元的類別值或作為預測。如果大家重新調整數據,使其具有相同的范圍,就可以獲得最佳結果。當然,如果大家發現KNN在大家數據集上達到很好的結果,請嘗試用LVQ減少存儲整個訓練數據集的內存要求

B. 機器學習新手必看十大演算法

機器學習新手必看十大演算法
本文介紹了機器學習新手需要了解的 10 大演算法,包括線性回歸、Logistic 回歸、樸素貝葉斯、K 近鄰演算法等。
在機器學習中,有一種叫做「沒有免費的午餐」的定理。簡而言之,它指出沒有任何一種演算法對所有問題都有效,在監督學習(即預測建模)中尤其如此。
例如,你不能說神經網路總是比決策樹好,反之亦然。有很多因素在起作用,例如數據集的大小和結構。
因此,你應該針對具體問題嘗試多種不同演算法,並留出一個數據「測試集」來評估性能、選出優勝者。
當然,你嘗試的演算法必須適合你的問題,也就是選擇正確的機器學習任務。打個比方,如果你需要打掃房子,你可能會用吸塵器、掃帚或拖把,但是你不會拿出鏟子開始挖土。
大原則
不過也有一個普遍原則,即所有監督機器學習演算法預測建模的基礎。
機器學習演算法被描述為學習一個目標函數 f,該函數將輸入變數 X 最好地映射到輸出變數 Y:Y = f(X)
這是一個普遍的學習任務,我們可以根據輸入變數 X 的新樣本對 Y 進行預測。我們不知道函數 f 的樣子或形式。如果我們知道的話,我們將會直接使用它,不需要用機器學習演算法從數據中學習。
最常見的機器學習演算法是學習映射 Y = f(X) 來預測新 X 的 Y。這叫做預測建模或預測分析,我們的目標是盡可能作出最准確的預測。
對於想了解機器學習基礎知識的新手,本文將概述數據科學家使用的 top 10 機器學習演算法。
1. 線性回歸
線性回歸可能是統計學和機器學習中最知名和最易理解的演算法之一。
預測建模主要關注最小化模型誤差或者盡可能作出最准確的預測,以可解釋性為代價。我們將借用、重用包括統計學在內的很多不同領域的演算法,並將其用於這些目的。
線性回歸的表示是一個方程,它通過找到輸入變數的特定權重(稱為系數 B),來描述一條最適合表示輸入變數 x 與輸出變數 y 關系的直線。
線性回歸
例如:y = B0 + B1 * x
我們將根據輸入 x 預測 y,線性回歸學習演算法的目標是找到系數 B0 和 B1 的值。
可以使用不同的技術從數據中學習線性回歸模型,例如用於普通最小二乘法和梯度下降優化的線性代數解。
線性回歸已經存在了 200 多年,並得到了廣泛研究。使用這種技術的一些經驗是盡可能去除非常相似(相關)的變數,並去除噪音。這是一種快速、簡單的技術,可以首先嘗試一下。
2. Logistic 回歸
Logistic 回歸是機器學習從統計學中借鑒的另一種技術。它是解決二分類問題的首選方法。
Logistic 回歸與線性回歸相似,目標都是找到每個輸入變數的權重,即系數值。與線性回歸不同的是,Logistic 回歸對輸出的預測使用被稱為 logistic 函數的非線性函數進行變換。
logistic 函數看起來像一個大的 S,並且可以將任何值轉換到 0 到 1 的區間內。這非常實用,因為我們可以規定 logistic 函數的輸出值是 0 和 1(例如,輸入小於 0.5 則輸出為 1)並預測類別值。
Logistic 回歸
由於模型的學習方式,Logistic 回歸的預測也可以作為給定數據實例(屬於類別 0 或 1)的概率。這對於需要為預測提供更多依據的問題很有用。
像線性回歸一樣,Logistic 回歸在刪除與輸出變數無關的屬性以及非常相似(相關)的屬性時效果更好。它是一個快速的學習模型,並且對於二分類問題非常有效。
3. 線性判別分析(LDA)
Logistic 回歸是一種分類演算法,傳統上,它僅限於只有兩類的分類問題。如果你有兩個以上的類別,那麼線性判別分析是首選的線性分類技術。
LDA 的表示非常簡單直接。它由數據的統計屬性構成,對每個類別進行計算。單個輸入變數的 LDA 包括:
每個類別的平均值;
所有類別的方差。
線性判別分析
進行預測的方法是計算每個類別的判別值並對具備最大值的類別進行預測。該技術假設數據呈高斯分布(鍾形曲線),因此最好預先從數據中刪除異常值。這是處理分類預測建模問題的一種簡單而強大的方法。
4. 分類與回歸樹
決策樹是預測建模機器學習的一種重要演算法。
決策樹模型的表示是一個二叉樹。這是演算法和數據結構中的二叉樹,沒什麼特別的。每個節點代表一個單獨的輸入變數 x 和該變數上的一個分割點(假設變數是數字)。
決策樹
決策樹的葉節點包含一個用於預測的輸出變數 y。通過遍歷該樹的分割點,直到到達一個葉節點並輸出該節點的類別值就可以作出預測。
決策樹學習速度和預測速度都很快。它們還可以解決大量問題,並且不需要對數據做特別准備。
5. 樸素貝葉斯
樸素貝葉斯是一個簡單但是很強大的預測建模演算法。
該模型由兩種概率組成,這兩種概率都可以直接從訓練數據中計算出來:1)每個類別的概率;2)給定每個 x 的值,每個類別的條件概率。一旦計算出來,概率模型可用於使用貝葉斯定理對新數據進行預測。當你的數據是實值時,通常假設一個高斯分布(鍾形曲線),這樣你可以簡單的估計這些概率。
貝葉斯定理
樸素貝葉斯之所以是樸素的,是因為它假設每個輸入變數是獨立的。這是一個強大的假設,真實的數據並非如此,但是,該技術在大量復雜問題上非常有用。
6. K 近鄰演算法
KNN 演算法非常簡單且有效。KNN 的模型表示是整個訓練數據集。是不是很簡單?
KNN 演算法在整個訓練集中搜索 K 個最相似實例(近鄰)並匯總這 K 個實例的輸出變數,以預測新數據點。對於回歸問題,這可能是平均輸出變數,對於分類問題,這可能是眾數(或最常見的)類別值。
訣竅在於如何確定數據實例間的相似性。如果屬性的度量單位相同(例如都是用英寸表示),那麼最簡單的技術是使用歐幾里得距離,你可以根據每個輸入變數之間的差值直接計算出來其數值。
K 近鄰演算法
KNN 需要大量內存或空間來存儲所有數據,但是只有在需要預測時才執行計算(或學習)。你還可以隨時更新和管理訓練實例,以保持預測的准確性。
距離或緊密性的概念可能在非常高的維度(很多輸入變數)中會瓦解,這對演算法在你的問題上的性能產生負面影響。這被稱為維數災難。因此你最好只使用那些與預測輸出變數最相關的輸入變數。
7. 學習向量量化
K 近鄰演算法的一個缺點是你需要遍歷整個訓練數據集。學習向量量化演算法(簡稱 LVQ)是一種人工神經網路演算法,它允許你選擇訓練實例的數量,並精確地學習這些實例應該是什麼樣的。
學習向量量化
LVQ 的表示是碼本向量的集合。這些是在開始時隨機選擇的,並逐漸調整以在學習演算法的多次迭代中最好地總結訓練數據集。在學習之後,碼本向量可用於預測(類似 K 近鄰演算法)。最相似的近鄰(最佳匹配的碼本向量)通過計算每個碼本向量和新數據實例之間的距離找到。然後返回最佳匹配單元的類別值或(回歸中的實際值)作為預測。如果你重新調整數據,使其具有相同的范圍(比如 0 到 1 之間),就可以獲得最佳結果。
如果你發現 KNN 在你的數據集上達到很好的結果,請嘗試用 LVQ 減少存儲整個訓練數據集的內存要求。
8. 支持向量機(SVM)
支持向量機可能是最受歡迎和最廣泛討論的機器學習演算法之一。
超平面是分割輸入變數空間的一條線。在 SVM 中,選擇一條可以最好地根據輸入變數類別(類別 0 或類別 1)對輸入變數空間進行分割的超平面。在二維中,你可以將其視為一條線,我們假設所有的輸入點都可以被這條線完全的分開。SVM 學習演算法找到了可以讓超平面對類別進行最佳分割的系數。
支持向量機
超平面和最近的數據點之間的距離被稱為間隔。分開兩個類別的最好的或最理想的超平面具備最大間隔。只有這些點與定義超平面和構建分類器有關。這些點被稱為支持向量,它們支持或定義了超平面。實際上,優化演算法用於尋找最大化間隔的系數的值。
SVM 可能是最強大的立即可用的分類器之一,值得一試。
9. Bagging 和隨機森林
隨機森林是最流行和最強大的機器學習演算法之一。它是 Bootstrap Aggregation(又稱 bagging)集成機器學習演算法的一種。
bootstrap 是從數據樣本中估算數量的一種強大的統計方法。例如平均數。你從數據中抽取大量樣本,計算平均值,然後平均所有的平均值以便更好的估計真實的平均值。
bagging 使用相同的方法,但是它估計整個統計模型,最常見的是決策樹。在訓練數據中抽取多個樣本,然後對每個數據樣本建模。當你需要對新數據進行預測時,每個模型都進行預測,並將所有的預測值平均以便更好的估計真實的輸出值。
隨機森林
隨機森林是對這種方法的一種調整,在隨機森林的方法中決策樹被創建以便於通過引入隨機性來進行次優分割,而不是選擇最佳分割點。
因此,針對每個數據樣本創建的模型將會與其他方式得到的有所不同,不過雖然方法獨特且不同,它們仍然是准確的。結合它們的預測可以更好的估計真實的輸出值。
如果你用方差較高的演算法(如決策樹)得到了很好的結果,那麼通常可以通過 bagging 該演算法來獲得更好的結果。
10. Boosting 和 AdaBoost
Boosting 是一種集成技術,它試圖集成一些弱分類器來創建一個強分類器。這通過從訓練數據中構建一個模型,然後創建第二個模型來嘗試糾正第一個模型的錯誤來完成。一直添加模型直到能夠完美預測訓練集,或添加的模型數量已經達到最大數量。
AdaBoost 是第一個為二分類開發的真正成功的 boosting 演算法。這是理解 boosting 的最佳起點。現代 boosting 方法建立在 AdaBoost 之上,最顯著的是隨機梯度提升。
AdaBoost
AdaBoost與短決策樹一起使用。在第一個決策樹創建之後,利用每個訓練實例上樹的性能來衡量下一個決策樹應該對每個訓練實例付出多少注意力。難以預測的訓練數據被分配更多權重,而容易預測的數據分配的權重較少。依次創建模型,每個模型在訓練實例上更新權重,影響序列中下一個決策樹的學習。在所有決策樹建立之後,對新數據進行預測,並且通過每個決策樹在訓練數據上的精確度評估其性能。
因為在糾正演算法錯誤上投入了太多注意力,所以具備已刪除異常值的干凈數據非常重要。
總結
初學者在面對各種機器學習演算法時經常問:「我應該用哪個演算法?」這個問題的答案取決於很多因素,包括:(1)數據的大小、質量和特性;(2)可用的計算時間;(3)任務的緊迫性;(4)你想用這些數據做什麼。
即使是經驗豐富的數據科學家在嘗試不同的演算法之前,也無法分辨哪種演算法會表現最好。雖然還有很多其他的機器學習演算法,但本篇文章中討論的是最受歡迎的演算法。如果你是機器學習的新手,這將是一個很好的學習起點。

C. 常用優化器演算法歸納介紹

優化器是神經網路訓練過程中,進行梯度下降以尋找最優解的優化方法。不同方法通過不同方式(如附加動量項,學習率自適應變化等)側重於解決不同的問題,但最終大都是為了加快訓練速度。

這里就介紹幾種常見的優化器,包括其原理、數學公式、核心思想及其性能;

核心思想: 即針對每次輸入的訓練數據,計算輸出預測與真值的Loss的梯度;

從表達式來看,網路中參數的更新,是不斷向著最小化Loss函數的方向移動的:

優點:
簡單易懂,即對於相應的最優解(這里認為是Loss的最小函數),每次變數更新都是沿著局部梯度下降最快的方向,從而最小化損失函數。

缺點:

不同於標准梯度下降法(Gradient Descent)一次計算所有數據樣本的Loss並計算相應的梯度,批量梯度下降法(BGD, Batch Gradient Descent)每次只取一個小批次的數據及其真實標簽進行訓練,稱這個批次為mini-batch;

優點:

缺點:
隨機梯度下降法的 batch size 選擇不當可能導致模型難以收斂;由於這種方法是在一次更新中,就對整個數據集計算梯度,所以計算起來非常慢,遇到很大量的數據集也會非常棘手,而且不能投入新數據實時更新模型。

我們會事先定義一個迭代次數 epoch,首先計算梯度向量 params_grad,然後沿著梯度的方向更新參數 params,learning rate 決定了我們每一步邁多大。

Batch gradient descent 對於凸函數可以收斂到全局極小值,對於非凸函數可以收斂到局部極小值。

和 BGD 的一次用所有數據計算梯度相比,SGD 每次更新時對每個樣本進行梯度更新,對於很大的數據集來說,可能會有相似的樣本,這樣 BGD 在計算梯度時會出現冗餘,而 SGD 一次只進行一次更新,就沒有冗餘,而且比較快,並且可以新增樣本。

即訓練時,每次只從一批訓練樣本中隨機選取一個樣本進行梯度下降;對隨機梯度下降來說,只需要一次關注一個訓練樣本,一點點把參數朝著全局最小值的方向進行修改了。

整體數據集是個循環,其中對每個樣本進行一次參數更新

缺點:

梯度下降速度比較慢,而且每次梯度更新時往往只專注與局部最優點,而不會恰好指向全局最優點;

單樣本梯度更新時會引入許多雜訊(跟訓練目標無關的特徵也會被歸為該樣本分類的特徵);

SGD 因為更新比較頻繁,會造成 cost function 有嚴重的震盪。

BGD 可以收斂到局部極小值,當然 SGD 的震盪可能會跳到更好的局部極小值處。

當我們稍微減小 learning rate,SGD 和 BGD 的收斂性是一樣的。

優點:

當處理大量數據時,比如SSD或者faster-rcnn等目標檢測模型,每個樣本都有大量候選框參與訓練,這時使用隨機梯度下降法能夠加快梯度的計算。

隨機梯度下降是通過每個樣本來迭代更新一次,如果樣本量很大的情況,那麼可能只用其中部分的樣本,就已經將 迭代到最優解了,對比上面的批量梯度下降,迭代一次需要用到十幾萬訓練樣本,一次迭代不可能最優,如果迭代10次的話就需要遍歷訓練樣本10次。缺點是SGD的噪音較BGD要多,使得SGD並不是每次迭代都向著整體最優化方向。所以雖然訓練速度快,但是准確度下降,並不是全局最優。雖然包含一定的隨機性,但是從期望上來看,它是等於正確的導數的。

梯度更新規則:

MBGD 每一次利用一小批樣本,即 n 個樣本進行計算,這樣它可以降低參數更新時的方差,收斂更穩定,另一方面可以充分地利用深度學習庫中高度優化的矩陣操作來進行更有效的梯度計算。

和 SGD 的區別是每一次循環不是作用於每個樣本,而是具有 n 個樣本的批次。

超參數設定值: n 一般取值在 50~256

缺點:(兩大缺點)

鞍點就是:一個光滑函數的鞍點鄰域的曲線,曲面,或超曲面,都位於這點的切線的不同邊。例如這個二維圖形,像個馬鞍:在x-軸方嚮往上曲,在y-軸方嚮往下曲,鞍點就是(0,0)。

為了應對上面的兩點挑戰就有了下面這些演算法

核心思想:

不使用動量優化時,每次訓練的梯度下降方向,都是按照當前批次訓練數據計算的,可能並不能代表整個數據集,並且會有許多雜訊,下降曲線波動較大:

添加動量項之後,能夠有效減小波動,從而加快訓練速度:

當我們將一個小球從山上滾下來時,沒有阻力的話,它的動量會越來越大,但是如果遇到了阻力,速度就會變小。
加入的這一項,可以使得梯度方向不變的維度上速度變快,梯度方向有所改變的維度上的更新速度變慢,這樣就可以加快收斂並減小震盪。

優點:

通過動量更新,參數向量會在有持續梯度的方向上增加速度;
使梯度下降時的折返情況減輕,從而加快訓練速度;

缺點:

如果數據集分類復雜,會導致 和 時刻梯度 向量方向相差較大;在進行向量求和時,得到的 會非常小,反而使訓練速度大大下降甚至模型難以收斂。

這種情況相當於小球從山上滾下來時是在盲目地沿著坡滾,如果它能具備一些先知,例如快要上坡時,就知道需要減速了的話,適應性會更好。

目前為止,我們可以做到,在更新梯度時順應 loss function 的梯度來調整速度,並且對 SGD 進行加速。

核心思想:

自適應學習率優化演算法針對於機器學習模型的學習率,採用不同的策略來調整訓練過程中的學習率,從而大大提高訓練速度。

這個演算法就可以對低頻的參數做較大的更新,對高頻的做較小的更新,也因此,對於稀疏的數據它的表現很好,很好地提高了 SGD 的魯棒性,例如識別 Youtube 視頻裡面的貓,訓練 GloVe word embeddings,因為它們都是需要在低頻的特徵上有更大的更新。

Adagrad 的優點是減少了學習率的手動調節

式中, 表示第 個分類, 表示第 迭代同時也表示分類 累計出現的次數。 表示初始的學習率取值(一般為0.01)

AdaGrad的核心思想: 縮放每個參數反比於其所有梯度歷史平均值總和的平方根。具有代價函數最大梯度的參數相應地有較大的學習率,而具有小梯度的參數又較小的學習率。

缺點:

它的缺點是分母會不斷積累,這樣學習率就會收縮並最終會變得非常小。

這個演算法是對 Adagrad 的改進,

和 Adagrad 相比,就是分母的 換成了過去的梯度平方的衰減平均值,指數衰減平均值

這個分母相當於梯度的均方根 root mean squared (RMS),在數據統計分析中,將所有值平方求和,求其均值,再開平方,就得到均方根值 ,所以可以用 RMS 簡寫:

其中 的計算公式如下, 時刻的依賴於前一時刻的平均和當前的梯度:

梯度更新規則:

此外,還將學習率 換成了 RMS[Δθ],這樣的話,我們甚至都不需要提前設定學習率了:

超參數設定值: 一般設定為 0.9

RMSprop 是 Geoff Hinton 提出的一種自適應學習率方法。

RMSprop 和 Adadelta 都是為了解決 Adagrad 學習率急劇下降問題的,

梯度更新規則:

RMSprop 與 Adadelta 的第一種形式相同:(使用的是指數加權平均,旨在消除梯度下降中的擺動,與Momentum的效果一樣,某一維度的導數比較大,則指數加權平均就大,某一維度的導數比較小,則其指數加權平均就小,這樣就保證了各維度導數都在一個量級,進而減少了擺動。允許使用一個更大的學習率η)

超參數設定值:

Hinton 建議設定 為 0.9, 學習率 為 0.001。

這個演算法是另一種計算每個參數的自適應學習率的方法。相當於 RMSprop + Momentum

除了像 Adadelta 和 RMSprop 一樣存儲了過去梯度的平方 vt 的指數衰減平均值 ,也像 momentum 一樣保持了過去梯度 mt 的指數衰減平均值:

如果 和 被初始化為 0 向量,那它們就會向 0 偏置,所以做了偏差校正,通過計算偏差校正後的 和 來抵消這些偏差:

梯度更新規則:

超參數設定值:
建議

示例一

示例二

示例三

上面情況都可以看出,Adagrad, Adadelta, RMSprop 幾乎很快就找到了正確的方向並前進,收斂速度也相當快,而其它方法要麼很慢,要麼走了很多彎路才找到。

由圖可知自適應學習率方法即 Adagrad, Adadelta, RMSprop, Adam 在這種情景下會更合適而且收斂性更好。

如果數據是稀疏的,就用自適用方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情況下的效果是相似的。

Adam 就是在 RMSprop 的基礎上加了 bias-correction 和 momentum,

隨著梯度變的稀疏,Adam 比 RMSprop 效果會好。

整體來講,Adam 是最好的選擇。

很多論文里都會用 SGD,沒有 momentum 等。SGD 雖然能達到極小值,但是比其它演算法用的時間長,而且可能會被困在鞍點。

如果需要更快的收斂,或者是訓練更深更復雜的神經網路,需要用一種自適應的演算法。

各種優化器Optimizer原理:從SGD到AdamOptimizer

深度學習——優化器演算法Optimizer詳解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)

閱讀全文

與機器學習的一階優化演算法相關的資料

熱點內容
電子書app怎麼上傳 瀏覽:64
國家反詐中心app注冊怎麼開啟 瀏覽:802
全波差分傅里葉演算法窗長 瀏覽:39
程序員如何講自己做過的項目 瀏覽:5
程序員要看的書頸椎 瀏覽:944
php文章cms 瀏覽:551
CSS權威指南第三版PDF 瀏覽:494
android怎麼搭建框架 瀏覽:182
正宗溯源碼大燕條一克一般多少錢 瀏覽:917
電腦感染exe文件夾 瀏覽:916
wpsppt怎麼轉pdf格式 瀏覽:88
騰訊文檔在線編輯怎麼添加密碼 瀏覽:880
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198
工程加密狗視頻 瀏覽:720
不在內網怎麼連接伺服器 瀏覽:664
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137