柚子快報激活碼778899分享:人工智能 神經(jīng)網(wǎng)絡(luò)——優(yōu)化算法
柚子快報激活碼778899分享:人工智能 神經(jīng)網(wǎng)絡(luò)——優(yōu)化算法
神經(jīng)網(wǎng)絡(luò)——優(yōu)化算法
課程:人工智能的數(shù)學(xué)思維
Author:RedamancyXun
基本介紹
Reference:一文概覽神經(jīng)網(wǎng)絡(luò)優(yōu)化算法
優(yōu)化算法是一類數(shù)學(xué)方法和技術(shù),用于尋找在給定約束條件下使目標(biāo)函數(shù)取得最優(yōu)值的參數(shù)或變量。在機器學(xué)習(xí)、數(shù)據(jù)挖掘、工程優(yōu)化等領(lǐng)域中,優(yōu)化算法被廣泛應(yīng)用于解決各種問題。
優(yōu)化算法的目標(biāo)通常是最小化或最大化一個被稱為目標(biāo)函數(shù)或者代價函數(shù)的數(shù)學(xué)表達式。這個函數(shù)通常描述了一個系統(tǒng)的性能或者誤差,例如機器學(xué)習(xí)中的損失函數(shù)或者工程中的成本函數(shù)。優(yōu)化算法通過不斷地調(diào)整參數(shù)或變量的取值,使得目標(biāo)函數(shù)達到最小值或最大值。
而對于我們這里即將介紹的神經(jīng)網(wǎng)絡(luò)中的優(yōu)化算法,我們知道機器學(xué)習(xí)的優(yōu)化(目標(biāo)),簡單來說是:搜索模型的一組參數(shù) w,它能顯著地降低代價函數(shù)J(w),該代價函數(shù)通常包括整個訓(xùn)練集上的性能評估(經(jīng)驗風(fēng)險)和額外的正則化(結(jié)構(gòu)風(fēng)險)。與傳統(tǒng)優(yōu)化不同,它不是簡單地根據(jù)數(shù)據(jù)的求解最優(yōu)解,在大多數(shù)機器學(xué)習(xí)問題中,我們關(guān)注的是測試集(未知數(shù)據(jù))上性能度量P的優(yōu)化。
對于模型測試集是未知,我們只能通過優(yōu)化訓(xùn)練集的性能度量P_train,在獨立同分布基礎(chǔ)假設(shè)下,期望測試集也有較好的性能(泛化效果),這意味并不是一味追求訓(xùn)練集的最優(yōu)解。另外,有些情況性能度量P(比如分類誤差f1-score)并不能高效地優(yōu)化,在這種情況下,我們通常會優(yōu)化替代損失函數(shù) (surrogate loss function)。例如,負(fù)對數(shù)似然通常用作 0 ? 1 分類損失的替代。
當(dāng)我們機器學(xué)習(xí)的學(xué)習(xí)目標(biāo)是極大化降低(經(jīng)驗)損失函數(shù),這點和傳統(tǒng)的優(yōu)化是比較相似的,那么如何實現(xiàn)這個目標(biāo)呢?我們第一反應(yīng)可能是直接求解損失函數(shù)最小值的公式/解析解(如最小二乘法),獲得最優(yōu)的模型參數(shù)。但是,通常機器學(xué)習(xí)模型的損失函數(shù)較復(fù)雜,很難直接求最優(yōu)解。幸運的是,我們還可以通過優(yōu)化算法(如遺傳算法、梯度下降算法、牛頓法等)有限次迭代優(yōu)化模型參數(shù),以盡可能降低損失函數(shù)的值,得到較優(yōu)的參數(shù)值(數(shù)值解)。上述去搜索一組最/較優(yōu)參數(shù)解w所使用的算法,即是優(yōu)化算法。
優(yōu)化算法可以分為很多種類,包括梯度下降法、擬牛頓法、隨機梯度下降法、遺傳算法、模擬退火算法等。每種算法都有其特定的優(yōu)勢和適用場景,例如梯度下降法適用于光滑的目標(biāo)函數(shù),而遺傳算法則適用于解決復(fù)雜的搜索空間問題。
總的來說,優(yōu)化算法是解決各種問題的重要工具,在科學(xué)研究和工程實踐中發(fā)揮著重要作用。通過不斷地改進和發(fā)展優(yōu)化算法,可以提高系統(tǒng)的性能和效率,推動科學(xué)技術(shù)的進步。
歷史背景
機器學(xué)習(xí)優(yōu)化算法的歷史可以追溯到上個世紀(jì)中葉,隨著計算機科學(xué)和人工智能的發(fā)展,人們開始探索如何利用計算機來解決各種問題,其中優(yōu)化算法在機器學(xué)習(xí)領(lǐng)域尤為重要。以下是一些歷史背景、產(chǎn)生原因以及重要人物、里程碑事件等的概述:
歷史背景和產(chǎn)生原因:
計算機科學(xué)的發(fā)展:隨著計算機硬件和軟件技術(shù)的進步,人們開始關(guān)注如何利用計算機解決復(fù)雜的優(yōu)化問題,其中包括在機器學(xué)習(xí)中的參數(shù)優(yōu)化、模型構(gòu)建等任務(wù)。人工智能的興起:上個世紀(jì)中葉,人工智能領(lǐng)域開始興起,研究者們開始探索如何使計算機具有類似人類的智能,其中包括機器學(xué)習(xí)和優(yōu)化算法的研究。實際應(yīng)用需求:隨著數(shù)據(jù)量的不斷增加和計算能力的提升,許多實際問題需要更高效、更精確的優(yōu)化算法來解決,這促使了優(yōu)化算法在機器學(xué)習(xí)中的發(fā)展和應(yīng)用。
重要人物和里程碑事件:
艾倫·圖靈(Alan Turing):圖靈是計算機科學(xué)和人工智能領(lǐng)域的先驅(qū)之一,他的工作為機器學(xué)習(xí)和優(yōu)化算法的發(fā)展奠定了基礎(chǔ)。赫伯特·西蒙(Herbert A. Simon):西蒙是計算機科學(xué)和認(rèn)知心理學(xué)的杰出學(xué)者,他的研究涉及人工智能、機器學(xué)習(xí)和決策理論,對優(yōu)化算法的發(fā)展產(chǎn)生了重要影響。線性規(guī)劃的發(fā)展:線性規(guī)劃是優(yōu)化領(lǐng)域的重要分支之一,1940年代至1950年代,喬治·丹齊格(George Dantzig)等人的工作奠定了線性規(guī)劃的理論基礎(chǔ),為后續(xù)優(yōu)化算法的發(fā)展提供了范例。進化算法的提出:20世紀(jì)60年代至70年代,約翰·霍蘭德(John Holland)等研究者提出了進化算法的概念,為后來遺傳算法等優(yōu)化算法的發(fā)展奠定了基礎(chǔ)。神經(jīng)網(wǎng)絡(luò)的復(fù)興:20世紀(jì)80年代至90年代,神經(jīng)網(wǎng)絡(luò)領(lǐng)域經(jīng)歷了一次復(fù)興,反向傳播算法等優(yōu)化算法的提出和應(yīng)用推動了神經(jīng)網(wǎng)絡(luò)在機器學(xué)習(xí)中的發(fā)展。遺傳算法的興起:20世紀(jì)70年代至80年代,約翰·霍蘭德等人提出了遺傳算法的概念,并在后續(xù)的研究中逐漸發(fā)展成熟,成為機器學(xué)習(xí)優(yōu)化算法中的重要分支之一。支持向量機(SVM)的提出:1990年代,Vladimir Vapnik等人提出了支持向量機(SVM)算法,將優(yōu)化理論與機器學(xué)習(xí)相結(jié)合,成為機器學(xué)習(xí)領(lǐng)域的重要突破。深度學(xué)習(xí)的崛起:21世紀(jì)初,隨著大數(shù)據(jù)和計算能力的不斷增強,深度學(xué)習(xí)成為機器學(xué)習(xí)的熱點領(lǐng)域,優(yōu)化算法的進步推動了深度學(xué)習(xí)模型的訓(xùn)練和優(yōu)化。
這些重要人物和里程碑事件共同推動了機器學(xué)習(xí)優(yōu)化算法的發(fā)展,使其在理論和應(yīng)用上取得了長足的進步,并為人工智能的發(fā)展做出了重要貢獻。
早期優(yōu)化算法的發(fā)展:
線性規(guī)劃的奠基:
20世紀(jì)中葉,喬治·丹齊格等人的工作奠定了線性規(guī)劃的理論基礎(chǔ)。線性規(guī)劃是一種在給定約束條件下尋找最優(yōu)解的數(shù)學(xué)方法,為后續(xù)優(yōu)化算法的發(fā)展提供了重要范例。 進化算法的概念提出:
1960年代至1970年代,約翰·霍蘭德等研究者提出了進化算法的概念,試圖模擬生物進化過程來解決優(yōu)化問題。進化算法的出現(xiàn)為后來的遺傳算法等算法奠定了基礎(chǔ)。
神經(jīng)網(wǎng)絡(luò)的復(fù)興和優(yōu)化算法的應(yīng)用:
神經(jīng)網(wǎng)絡(luò)的復(fù)興:
20世紀(jì)80年代至90年代,神經(jīng)網(wǎng)絡(luò)領(lǐng)域經(jīng)歷了一次復(fù)興,反向傳播算法等優(yōu)化算法的提出和應(yīng)用推動了神經(jīng)網(wǎng)絡(luò)在機器學(xué)習(xí)中的發(fā)展。 優(yōu)化算法在神經(jīng)網(wǎng)絡(luò)中的應(yīng)用:
優(yōu)化算法在訓(xùn)練神經(jīng)網(wǎng)絡(luò)中發(fā)揮著關(guān)鍵作用,例如反向傳播算法通過優(yōu)化損失函數(shù)來更新神經(jīng)網(wǎng)絡(luò)的參數(shù),使其逐步逼近最優(yōu)解。
深度學(xué)習(xí)時代的到來:
大數(shù)據(jù)和計算能力的提升:
21世紀(jì)初,隨著大數(shù)據(jù)的涌現(xiàn)和計算能力的提升,深度學(xué)習(xí)成為機器學(xué)習(xí)的熱點領(lǐng)域,對優(yōu)化算法提出了更高的要求。 優(yōu)化算法在深度學(xué)習(xí)中的角色:
隨著深度學(xué)習(xí)模型的復(fù)雜性增加,優(yōu)化算法也在不斷演進,包括隨機梯度下降(SGD)的改進、自適應(yīng)學(xué)習(xí)率算法的提出等,以應(yīng)對深度學(xué)習(xí)模型訓(xùn)練中的挑戰(zhàn)。 深度學(xué)習(xí)優(yōu)化算法的發(fā)展:
隨著深度學(xué)習(xí)的發(fā)展,出現(xiàn)了各種針對深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練的優(yōu)化算法,如動量法、Adam優(yōu)化算法等。這些算法在加速模型收斂、處理非凸優(yōu)化問題等方面發(fā)揮了重要作用。
持續(xù)的研究和創(chuàng)新:
優(yōu)化算法的研究方向:
當(dāng)前,優(yōu)化算法的研究仍然是機器學(xué)習(xí)領(lǐng)域的熱點之一,研究者們不斷提出新的算法和優(yōu)化技術(shù),以解決在實際應(yīng)用中遇到的挑戰(zhàn),如局部最優(yōu)解、收斂速度、泛化能力等問題。 交叉學(xué)科的融合:
優(yōu)化算法的發(fā)展也受益于不同學(xué)科的交叉融合,如數(shù)學(xué)、計算機科學(xué)、統(tǒng)計學(xué)等領(lǐng)域的知識相互滲透,推動了優(yōu)化算法的創(chuàng)新和發(fā)展。 開放源代碼和開放數(shù)據(jù)集的貢獻:
開放源代碼的優(yōu)化算法庫和開放數(shù)據(jù)集為研究者和開發(fā)者提供了豐富的資源,促進了優(yōu)化算法的廣泛應(yīng)用和實踐。
這些里程碑事件和重要人物共同構(gòu)成了機器學(xué)習(xí)優(yōu)化算法發(fā)展的歷史,推動了該領(lǐng)域的不斷進步與創(chuàng)新??偟膩碚f,機器學(xué)習(xí)優(yōu)化算法的發(fā)展歷程是一個不斷演進和創(chuàng)新的過程,受到多個學(xué)科和領(lǐng)域的影響,同時也為人工智能和機器學(xué)習(xí)的發(fā)展做出了重要貢獻。
算法及其數(shù)學(xué)思維
Reference 1:【機器學(xué)習(xí)】優(yōu)化算法_機器學(xué)習(xí)優(yōu)化算法
Reference 2:一文概覽神經(jīng)網(wǎng)絡(luò)優(yōu)化算法
Reference 3:深度學(xué)習(xí)中的優(yōu)化算法研究——陳 爽、張長倫、黎銘亮
Reference 4:【中英字幕】吳恩達機器學(xué)習(xí)系列課程
Reference 5:最優(yōu)化–梯度下降法–牛頓法(詳解)
深度學(xué)習(xí)作為處理神經(jīng)網(wǎng)絡(luò)的一個熱門研究方向,在近些年來備受關(guān)注。深度學(xué)習(xí)模型是一個多層次的網(wǎng)絡(luò)結(jié)構(gòu),評價模型最終效果優(yōu)劣的網(wǎng)絡(luò)參數(shù)必須通過深度學(xué)習(xí)優(yōu)化器進行訓(xùn)練,因此深度學(xué)習(xí)中的優(yōu)化算法成為了國內(nèi)外的研究熱點。本部分對深度學(xué)習(xí)中的優(yōu)化算法進行綜述。
一、梯度下降算法(GD)
優(yōu)化算法主要分為一階算法和二階算法:一階算法基于梯度下降法,是目前深度學(xué)習(xí)理論和實際應(yīng)用中的主導(dǎo)優(yōu)化方法;二階算法有牛頓法和共軛梯度法等,由于二階優(yōu)化算法需要進行二階求導(dǎo),受限于計算量與內(nèi)存成本,很少應(yīng)用在深度學(xué)習(xí)的各項任務(wù)中。
**梯度下降法(Gradient Descent)**最初是最優(yōu)化理論中的基礎(chǔ)方法,常常用于求解無約束最優(yōu)化問題, 廣泛應(yīng)用于目標(biāo)追蹤、工程設(shè)計和產(chǎn)品優(yōu)化等方面,后來拓展到機器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域中。
深度學(xué)習(xí)網(wǎng)絡(luò)模型訓(xùn)練的目標(biāo)是最小化損失函數(shù),即盡可能降低目標(biāo)真實值和模型預(yù)測值之間的差距,如果將損失函數(shù)看作目標(biāo)函數(shù),那么任務(wù)目標(biāo)等價于求解一個最優(yōu)化問題。梯度下降法正是一個可以找到最小損失函數(shù)值的優(yōu)化算法,它首先利用所定義的損失函數(shù)來計算當(dāng)前參數(shù)值的損失,然后計算網(wǎng)絡(luò)中每個參數(shù)的梯度,并且在梯度的相反方向上通過與梯度成比例的因子更新參數(shù)值,重復(fù)上述步驟直到符合需要。
梯度下降算法可以直觀理解成一個下山的方法,將損失函數(shù)J(w)比喻成一座山,我們的目標(biāo)是到達這座山的山腳(即求解出最優(yōu)模型參數(shù)w使得損失函數(shù)為最小值)。
下山要做的無非就是“往下坡的方向走,走一步算一步”,而在損失函數(shù)這座山上,每一位置的下坡的方向也就是它的負(fù)梯度方向(直白點,也就是山的斜向下的方向)。在每往下走到一個位置的時候,求解當(dāng)前位置的梯度,向這一步所在位置沿著最陡峭最易下山的位置再走一步。這樣一步步地走下去,一直走到覺得我們已經(jīng)到了山腳。 當(dāng)然這樣走下去,有可能我們不是走到山腳(全局最優(yōu),Global cost minimun),而是到了某一個的小山谷(局部最優(yōu),Local cost minimun),這也后面梯度下降算法的可進一步調(diào)優(yōu)的地方。
具體算法如下:
視頻學(xué)習(xí):
梯度下降是一個大類,常見的梯度下降算法及優(yōu)缺點,如下圖:
1.1 隨機梯度下降(SGD)
為了尋找最優(yōu)參數(shù),大部分深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中采取的最基本方法是隨機梯度下降法(SGD) 。根據(jù)參數(shù)更新時實際學(xué)習(xí)率是否固定為常數(shù),可以將SGD算法大體分為兩類:第一類是隨機梯度下降及其動量變體算法,第二類是自適應(yīng)學(xué)習(xí)率算法。
對于深度學(xué)習(xí)而言,SGD其實就是基于小批量(mini-batch)的隨機梯度下降,當(dāng)batchsize為1也就是在線學(xué)習(xí)優(yōu)化。隨機梯度下降可能每次不是朝著真正最小的方向,這樣反而可以跳出局部的最優(yōu)解。 隨機梯度下降(SGD)與梯度下降(GD)的關(guān)系可以這樣理解:隨機梯度下降方法以損失很小的一部分精確度和增加一定數(shù)量的迭代次數(shù)為代價,換取了總體的優(yōu)化效率的提升。增加的迭代次數(shù)遠(yuǎn)遠(yuǎn)小于樣本的數(shù)量。 由此可見,mini-batch的batchsize的選擇也就極為重要,盡可能在**內(nèi)存效率(時間)和內(nèi)存容量(空間)**之間尋找最佳平衡。
較大的batchsize會使得訓(xùn)練更快,但可能導(dǎo)致泛化能力下降,計算梯度估計的更精確,使其擁有更小的梯度噪聲,不足以將參數(shù)帶出一個尖銳極小值的吸引區(qū)域;較小的batchsize可以提供類似正則化效果的梯度噪聲,有更好的泛化能力,但對于多核架構(gòu)來講,太小的batch并不會相應(yīng)地減少計算時間(考慮到多核之間的同步開銷),同時帶來的極大的梯度估計值方差,導(dǎo)致其需要非常小的學(xué)習(xí)速率以維持穩(wěn)定性。 具體的算法為: 1.2 動量優(yōu)化算法
隨機梯度下降法四個主要缺點:高度敏感于參數(shù)空間的某些方向、目標(biāo)損失函數(shù)中局部最小值或鞍點會將卡住參數(shù)更新、產(chǎn)生隨機噪聲擾動、每個參數(shù)采取相同的學(xué)習(xí)率超參數(shù)進行更新… …為改進隨機梯度下降法的幾個缺陷,設(shè)計更適合神經(jīng)網(wǎng)絡(luò)的優(yōu)化方法,研究人員陸續(xù)提出了幾種SGD變體。動量優(yōu)化算法是SGD的一個廣泛使用的拓展。
動量優(yōu)化方法引入物理學(xué)中的動量思想,加速梯度下降,有Momentum和Nesterov兩種算法。當(dāng)我們將一個小球從山上滾下來,沒有阻力時,它的動量會越來越大,但是如果遇到了阻力,速度就會變小,動量優(yōu)化法就是借鑒此思想,使得梯度方向在不變的維度上,參數(shù)更新變快,梯度有所改變時,更新參數(shù)變慢,這樣就能夠加快收斂并且減少動蕩。動量優(yōu)化算法將動量定義為梯度的指數(shù)移動平均值(EMA),引入動量超參數(shù)β用于調(diào)節(jié)先前梯度的衰減效果,相對于學(xué)習(xí)率超參數(shù),動量超參數(shù)越大,歷史梯度對當(dāng)前方向的影響也越大。
1.2.1 Momentum(SGDM)
具有動量的隨機梯度下降法(SGD with Momentum,SGDM)是最早提出并且流行的將動量融入SGD中的里程碑式算法。
Momentum算法思想:參數(shù)更新時在一定程度上保留之前更新的方向,同時又利用當(dāng)前batch的梯度微調(diào)最終的更新方向,簡言之就是通過積累之前的動量來加速當(dāng)前的梯度。將某一時刻的實際采用的梯度稱為
M
n
Mn
Mn:
在沒有動量的情況下,某一時刻的梯度就是損失函數(shù)對
W
W
W求導(dǎo)的值
d
W
dW
dW,即:
M
n
=
d
W
n
Mn = dWn
Mn=dWn 然后權(quán)重更新的公式是非常標(biāo)準(zhǔn)的: 引入動量后,實際的梯度
M
n
Mn
Mn僅與此時刻的計算梯度
d
W
n
dWn
dWn有關(guān),還與上一時刻的實際梯度
M
n
?
1
Mn-1
Mn?1有關(guān),根據(jù)指數(shù)加權(quán)平均計算公式
M
n
Mn
Mn等于: 但是在實際中,為了簡便計算,
M
n
Mn
Mn直接由下式計算,即學(xué)習(xí)率乘以當(dāng)前計算梯度
d
W
n
dWn
dWn,加上前一次的實際梯度
M
n
?
1
Mn-1
Mn?1,
μ
μ
μ表示動量因子,通常取值0.9。即可以理解為,在當(dāng)前梯度
d
W
n
dWn
dWn的基礎(chǔ)上增加上一次的實際梯度
M
n
?
1
Mn-1
Mn?1。 之后有: 在梯度方向改變時,Momentum能夠降低參數(shù)更新速度,從而減少震蕩;在梯度方向相同時,Momentum可以加速參數(shù)更新, 從而加速收斂??偠灾琈omentum能夠加速SGD收斂,抑制震蕩。 形象圖示: 動量方法解決了SGD中梯度敏感于參數(shù)空間某些方向和易陷入局部最小值或鞍點的問題,并且加快了參數(shù)的學(xué)習(xí)和收斂: 1.2.2 Nesterov
2013 年,Sutskever 等人受到 Nesterov 動量的啟發(fā),提出了具有動量的隨機梯度下降法的另一個變體——NAG優(yōu)化器(Nesterov’s Accelerated Gradient)。
NAG和SGDM的差別在于:NAG先跟隨歷史累計梯度信息更新一步到臨時參數(shù)點,然后再計算臨時參數(shù)點處的梯度,將該梯度加入動量后更新到實際參數(shù)點;SGDM則不“先走一步”進行臨時更新,而是直接計算梯度和動量來更新參數(shù)。NAG比SGDM多應(yīng)用了一次梯度信息,對參數(shù)的當(dāng)前梯度方向進行了修正,得到了更為精確的更新梯度,進一步地提升了SGDM的算法穩(wěn)定性,并且加快收斂速度。 在平滑的凸函數(shù)的優(yōu)化中,對比批量梯度下降,NAG的收斂速度超出
1
/
k
1/k
1/k 到
1
/
(
k
2
)
1/(k^2)
1/(k2)。 1.3 自適應(yīng)學(xué)習(xí)率優(yōu)化算法
隨機梯度下降及其動量變體算法都使用固定的常數(shù)作為學(xué)習(xí)率,參數(shù)以相同的步長更新, 不考慮梯度行為,因此如何設(shè)定學(xué)習(xí)率的大小在實際應(yīng)用中十分重要。然而,學(xué)習(xí)率是一個難以設(shè)置的超參數(shù),它對模型性能有顯著的影響。近年來,深度網(wǎng)絡(luò)優(yōu)化的有效方法是為每個參數(shù)制定自適應(yīng)步長, 即在整個迭代過程中自動地調(diào)整學(xué)習(xí)率,該類算法被稱為自適應(yīng)學(xué)習(xí)率優(yōu)化算法。
自適應(yīng)學(xué)習(xí)率優(yōu)化算法(Adaptive Learning Rate Optimization Algorithm)是梯度下降算法的一種改進形式,旨在解決傳統(tǒng)梯度下降算法中需要手動調(diào)整學(xué)習(xí)率的問題。這些算法通過在訓(xùn)練過程中動態(tài)地調(diào)整學(xué)習(xí)率,使得每個參數(shù)都可以擁有不同的學(xué)習(xí)速率,從而更有效地更新模型參數(shù)。 目前,Adam算法在實踐中表現(xiàn)出色,并且通常被認(rèn)為是訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時的優(yōu)秀選擇之一。然而,對于不同的任務(wù)和數(shù)據(jù)集,其他自適應(yīng)學(xué)習(xí)率優(yōu)化算法(如Adagrad、RMSProp等)也可能更適合,因此在實際應(yīng)用中需要進行合理的選擇和調(diào)優(yōu)。
1.3.1 Adagrad
2011年,Duchi等人受到 Delta-bar-delta 算法訓(xùn)練早期時適應(yīng)參數(shù)的學(xué)習(xí)率的啟發(fā),提出了第一個經(jīng)典自適應(yīng)學(xué)習(xí)率優(yōu)化算法——AdaGrad。
Adagrad亦稱為自適應(yīng)梯度(adaptive gradient),允許學(xué)習(xí)率基于參數(shù)進行調(diào)整,而不需要在學(xué)習(xí)過程中人為調(diào)整學(xué)習(xí)率。Adagrad根據(jù)不常用的參數(shù)進行較大幅度的學(xué)習(xí)率更新,根據(jù)常用的參數(shù)進行較小幅度的學(xué)習(xí)率更新,根據(jù)前面所有輪迭代的歷史梯度值動態(tài)調(diào)整學(xué)習(xí)率,且優(yōu)化變量向量x的每一個分量都有自己的學(xué)習(xí)率。然而Adagrad的最大問題在于,在某些情況,學(xué)習(xí)率變得太小,學(xué)習(xí)率單調(diào)下降使得網(wǎng)絡(luò)停止學(xué)習(xí)過程。 AdaGrad算法采用參數(shù)的過去累計梯度平方和的平方根來劃分學(xué)習(xí)率,可以很好地處理稀疏數(shù)據(jù)。它對不頻繁的參數(shù)執(zhí)行較大的更新,使得步長較大,多學(xué)習(xí)一些知識;而對頻繁的參數(shù)執(zhí)行較小的更新,使得步長較小,學(xué)習(xí)過程更穩(wěn)定,不至于被單個樣本影響太多。AdaGrad減少了傳統(tǒng)SGD及其動量變體算法中需要手動調(diào)節(jié)學(xué)習(xí)率的需要,實現(xiàn)了學(xué)習(xí)率的動態(tài)調(diào)節(jié),提高了超參數(shù)的魯棒性。 參數(shù)更新公式為: 其中
α
α
α是學(xué)習(xí)率,
G
t
Gt
Gt是第
t
t
t次迭代時參數(shù)的梯度向量,下標(biāo)
i
i
i表示向量的分量。和標(biāo)準(zhǔn)梯度下降法唯一不同的是多了分母中的這一項,它是
i
i
i這個分量從第1輪到第
t
t
t輪梯度的平方和,即累積了到本次迭代為止梯度的歷史值信息用于生成梯度下降的系數(shù)值。 可以看到,此時實質(zhì)上的學(xué)習(xí)率由
α
α
α變成了,隨著迭代的增加,學(xué)習(xí)率是在逐漸變小的。這在“直觀上”是正確的:當(dāng)我們越接近最優(yōu)解時,函數(shù)的“坡度”會越平緩,我們也必須走的更慢來保證不會穿過最優(yōu)解。這個變小的幅度只跟當(dāng)前問題的函數(shù)梯度有關(guān),是
ε
ε
ε為了防止0除,一般取1e-7。 1.3.2 RMSProp
AdaGrad 的缺點是會不斷累積梯度的平方,在一段時間后分母過大,會大幅降低學(xué)習(xí)率甚至使其逐漸遞減至零,反而扼殺了學(xué)習(xí)過程,導(dǎo)致訓(xùn)練提前結(jié)束。為了改進 AdaGrad 算法的上述缺點,2012年 Adadelta 算法和 RMSProp 算法被提出。
RMSProp使用指數(shù)移動平均法計算累計梯度平方,替代了AdaGrad中直接計算梯度平方和的方法,主要是解決學(xué)習(xí)速率過快衰減的問題,避免了后期更新時更新幅度逐漸趨近于0。利用指數(shù)移動平均法的好處在于,計算二階動量時不累積全部歷史梯度,而只關(guān)注最近某一段時間窗內(nèi)的梯度信息,衰減率超參數(shù)
β
β
β用來控制時間窗長短。 RMSProp算法的偽代碼如下: 1.3.3 AdaDelta
RMSProp 和 AdaDelta 是不同研究者在同年提出的,都是對 Adagrad 的改進,從形式上來說,AdaDelta 是對 RMSProp 的分子作進一步的改進,去掉了對人工設(shè)置全局學(xué)習(xí)率的依賴。
AdaDelta算法是一種自適應(yīng)學(xué)習(xí)率優(yōu)化算法,旨在解決學(xué)習(xí)率衰減過快的問題,同時不需要手動設(shè)置全局學(xué)習(xí)率。它是由 Matthew D. Zeiler 提出的,被設(shè)計用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)。 AdaDelta算法的主要思想是基于RMSProp算法的改進,它通過在更新過程中使用歷史梯度的平均值來自適應(yīng)地調(diào)整學(xué)習(xí)率。與RMSProp不同的是,AdaDelta不需要手動設(shè)置全局學(xué)習(xí)率和衰減率。 RMSProp的計算公式上面已經(jīng)給出,這里將分母簡記為RMS,表示梯度平方和的平均數(shù)的均方根的意思 : 此外,還將學(xué)習(xí)率
η
η
η換成了 RMS[Δθ],這樣的話,我們甚至就不需要提前設(shè)定學(xué)習(xí)率了: 其中RMS[Δθ]的計算公式與RMS[g]計算公式類似,等于下式開根號,可以看出學(xué)習(xí)率是通過梯度的歷史值確定的: 參數(shù)更新的迭代公式為: 在計算前需要初始化兩個向量為0: AdaDelta算法可以完全自適應(yīng)全局學(xué)習(xí)率,加速效果好,但后期容易在小范圍內(nèi)產(chǎn)生震蕩。 AdaDelta算法的特點包括:
自適應(yīng)學(xué)習(xí)率:AdaDelta算法根據(jù)梯度的變化情況自適應(yīng)地調(diào)整學(xué)習(xí)率,不需要手動設(shè)置全局學(xué)習(xí)率。無需超參數(shù)調(diào)整:與其他自適應(yīng)學(xué)習(xí)率算法不同,AdaDelta算法不需要設(shè)置額外的超參數(shù),使得使用更為簡單。減少了學(xué)習(xí)率衰減的影響:通過動態(tài)地調(diào)整學(xué)習(xí)率,AdaDelta算法能夠減少學(xué)習(xí)率衰減對模型訓(xùn)練的影響,更好地應(yīng)對非平穩(wěn)目標(biāo)函數(shù)。 總的來說,AdaDelta算法是一種高效的自適應(yīng)學(xué)習(xí)率優(yōu)化算法,適用于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)和處理非平穩(wěn)目標(biāo)函數(shù)的優(yōu)化問題。
1.3.4 Adam
2014年,Adam算法被提出,它是現(xiàn)今最為廣泛使用的一種自適應(yīng)學(xué)習(xí)率優(yōu)化算法,在深度學(xué)習(xí) 相關(guān)的各種任務(wù)實踐上都很受歡迎。Adam算法可以看作是SGDM算法和RMSprop算法的結(jié)合,基于被 稱為一階矩和二階矩的兩個向量來自適應(yīng)地調(diào)節(jié)學(xué)習(xí)率。
Adam(Adaptive Moment Estimation)是深度學(xué)習(xí)領(lǐng)域中流行且廣泛使用的自適應(yīng)學(xué)習(xí)率優(yōu)化算法。它旨在改進傳統(tǒng)的梯度下降算法,通過在訓(xùn)練過程中動態(tài)調(diào)整每個參數(shù)的學(xué)習(xí)率,從而更有效地更新模型參數(shù),相當(dāng)于RMSprop + Momentum。 Adam算法為兩種隨機梯度下降的優(yōu)點集合:
**適應(yīng)性梯度算法(AdaGrad)**為每一個參數(shù)保留一個學(xué)習(xí)率以提升在稀疏梯度(即自然語言和計算機視覺問題)上的性能。**均方根傳播(RMSProp)**基于權(quán)重梯度最近量級的均值為每一個參數(shù)適應(yīng)性地保留學(xué)習(xí)率。這意味著算法在非穩(wěn)態(tài)和在線問題上有很有優(yōu)秀的性能。 Adam算法同時獲得了AdaGrad和RMSProp算法的優(yōu)點,像RMSprop一樣存儲了過去梯度平方和的指數(shù)衰減平均值 ,也像Momentum一樣保持了過去梯度
m
m
m的指數(shù)衰減平均值。算法用梯度構(gòu)造了兩個向量
m
m
m和
v
v
v,前者為動量項,后者累積了梯度的平方和,用于構(gòu)造自適應(yīng)學(xué)習(xí)率。 如果
M
t
Mt
Mt和
v
t
vt
vt被初始化為
0
0
0向量,那它們就會向
0
0
0偏置,所以做了偏差校正,通過計算偏差校正后的
M
t
Mt
Mt 和
V
t
Vt
Vt來抵消這些偏差: 參數(shù)的更新公式為: 可以看到,分母與RMSProp和AdaDelta一樣,只是分子引入了動量Momentum。如果我們把矩想象成是一個球滾下斜坡,Adam表現(xiàn)得像一個有摩擦的重球,因此可以更快速更準(zhǔn)確地朝著目標(biāo)曲面上的平坦極小值前進。 Adam算法的偽代碼流程:
二、最小二乘法
最小二乘法是一種經(jīng)典的數(shù)學(xué)方法,用于擬合數(shù)據(jù)并找到數(shù)據(jù)中的最佳擬合曲線或平面。它被廣泛應(yīng)用于統(tǒng)計學(xué)、機器學(xué)習(xí)和工程領(lǐng)域。
最小二乘法常用在機器學(xué)習(xí)回歸模型求解析解(對于復(fù)雜的深度神經(jīng)網(wǎng)絡(luò)無法通過這方法求解),其幾何意義是高維空間中的一個向量在低維子空間的投影(通俗一點將就是求導(dǎo))。
最小二乘法的基本思想是通過最小化數(shù)據(jù)觀測值與擬合值之間的殘差平方和來找到最佳擬合曲線或平面。在一維情況下,即擬合一條直線,最小二乘法的目標(biāo)是找到一條直線,使得數(shù)據(jù)點到該直線的距離之和最小。
如下以一元線性回歸用最小二乘法求解為例。
其損失函數(shù)mse為:
對損失函數(shù)求極小值,也就是一階導(dǎo)數(shù)為0。通過偏導(dǎo)可得關(guān)于參數(shù)
a
a
a及偏置
b
b
b的方程組:
代入數(shù)值求解上述線性方程組,可以求解出
a
a
a,
b
b
b的參數(shù)值。也就是求解出上圖擬合的那條直線
a
x
+
b
ax+b
ax+b。
三、遺傳算法
遺傳算法是一種基于生物進化原理的優(yōu)化算法,在機器學(xué)習(xí)中被廣泛應(yīng)用于參數(shù)優(yōu)化、特征選擇和模型構(gòu)建等領(lǐng)域。它模擬了生物進化過程中的自然選擇、交叉和變異等機制,通過對個體(解)的不斷迭代和演化,逐步優(yōu)化適應(yīng)度函數(shù),從而得到最優(yōu)解或近似最優(yōu)解。
遺傳算法(Genetic Algorithms,GA)是模擬自然界遺傳和生物進化論而成的一種并行隨機搜索最優(yōu)化方法。與自然界中“優(yōu)勝略汰,適者生存”的生物進化原理相似,遺傳算法就是在引入優(yōu)化參數(shù)形成的編碼串聯(lián)群體中,按照所選擇的適應(yīng)度函數(shù)并通過遺傳中的選擇、交叉和變異對個體進行篩選,使適應(yīng)度好的個體被保留,適應(yīng)度差的個體被淘汰,新的群體既繼承了上一代的信息,又優(yōu)于上一代。這樣反復(fù)循環(huán)迭代,直至滿足條件。
遺傳算法的主要步驟包括:
初始化種群:隨機生成一定數(shù)量的個體作為初始種群,每個個體代表一個可能的解。評估適應(yīng)度:對種群中的每個個體,根據(jù)問題定義的適應(yīng)度函數(shù)計算其適應(yīng)度值,評估其解的質(zhì)量。選擇操作:通過一定的選擇策略(如輪盤賭選擇、競標(biāo)賽選擇等),從種群中選擇適應(yīng)度較高的個體作為父代,用于產(chǎn)生下一代。交叉操作:對選出的父代個體,進行交叉操作(交配),產(chǎn)生新的個體。變異操作:對交叉后的個體進行變異操作,引入隨機性,增加種群的多樣性。更新種群:將新生成的個體加入到種群中,并根據(jù)一定的策略(如精英保留策略)更新種群。重復(fù)迭代:重復(fù)進行選擇、交叉和變異等操作,直到滿足停止條件(如達到最大迭代次數(shù)或解的收斂)。
遺傳算法的優(yōu)點包括:
全局搜索能力強:由于引入了隨機性和多樣性維護機制,遺傳算法能夠有效地進行全局搜索,找到問題的全局最優(yōu)解或較好的近似解。適應(yīng)于復(fù)雜問題:適用于解決復(fù)雜、高維、非線性和不可微的優(yōu)化問題,具有較強的魯棒性和通用性。并行化處理:算法的并行性強,易于并行化處理,加速求解過程。
然而,遺傳算法也存在一些缺點,如收斂速度較慢、參數(shù)調(diào)節(jié)困難等。在實際應(yīng)用中,需要根據(jù)具體問題的特點和要求,選擇合適的優(yōu)化算法和參數(shù)設(shè)置。實際上,神經(jīng)網(wǎng)絡(luò)優(yōu)化算法以梯度下降類算法較為高效,也是主流的算法。而遺傳算法、貪心算法、模擬退火等優(yōu)化算法用的相對較少。
四、牛頓法(二階優(yōu)化算法)
牛頓法(Newton’s method),也稱為牛頓-拉弗森方法(Newton-Raphson method),是一種用于尋找方程或函數(shù)的根的數(shù)值逼近方法。它是由英國科學(xué)家艾薩克·牛頓在17世紀(jì)提出的,后來由約瑟夫·拉弗森在18世紀(jì)進一步發(fā)展和推廣。
牛頓法(Newton’s Method),是一種用于求解方程根或函數(shù)的最小值的迭代優(yōu)化算法。它利用函數(shù)的二階導(dǎo)數(shù)信息(Hessian矩陣)來逼近函數(shù)的局部性質(zhì),能夠更快地收斂到最優(yōu)解。
牛頓法的基本思想是通過構(gòu)造函數(shù)的泰勒級數(shù)展開來近似原函數(shù),并使用近似函數(shù)的根或最小值來逐步逼近原函數(shù)的根或最小值。在每一次迭代中,牛頓法使用當(dāng)前點的切線來估計函數(shù)的根或最小值,并將切線與x軸的交點作為下一次迭代的點。這樣,通過不斷迭代,可以逐漸逼近函數(shù)的根或最小值。
牛頓法和梯度下降法相比,兩者都是迭代求解,不過梯度下降法是梯度求解(一階優(yōu)化),而牛頓法是用二階的海森矩陣的逆矩陣求解。相對而言,使用牛頓法收斂更快(迭代更少次數(shù)),但是每次迭代的時間比梯度下降法長(計算開銷更大,實際常用擬牛頓法替代)。
通俗來講,梯度下降法每次只從你當(dāng)前所處位置選一個坡度最大的方向走一步,牛頓法在選擇方向時,不僅會考慮坡度是否夠大,還會考慮你走了一步之后,后面坡度是否會變得更大。所以,可以說牛頓法比梯度下降法看得更遠(yuǎn)一點,能更快地走到最底部。但是,牛頓法對初始值有一定要求,在非凸優(yōu)化問題中(如神經(jīng)網(wǎng)絡(luò)訓(xùn)練),牛頓法很容易陷入鞍點(牛頓法步長會越來越?。荻认陆捣▌t更容易逃離鞍點(因此在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中一般使用梯度下降法,高維空間的神經(jīng)網(wǎng)絡(luò)中存在大量鞍點)。
牛頓法的基本思想:在現(xiàn)有的極小值估計值的附近對
f
(
x
)
f(x)
f(x)做二階泰勒展開,進而找到極小點的下一個估計值,反復(fù)迭代直到函數(shù)的一階導(dǎo)數(shù)小于某個接近0的閥值。最終求出極小點的估計值。
牛頓法實現(xiàn)的動圖如下所示:
優(yōu)劣比較
Reference:機器學(xué)習(xí)中優(yōu)化算法的比較
優(yōu)化算法優(yōu)點缺點適用情況梯度下降法 (Gradient Descent)簡單易實現(xiàn)。 對于凸函數(shù),能夠找到全局最優(yōu)解。對于非凸函數(shù),易陷入局部最優(yōu)解。 學(xué)習(xí)率的選取需要謹(jǐn)慎,影響收斂速度和穩(wěn)定性。收斂速度慢,需要用到全部數(shù)據(jù),內(nèi)存消耗大。不適用于大數(shù)據(jù)集,不能在線更新模型。隨機梯度下降法(SGD)計算速度快,適用于大規(guī)模數(shù)據(jù)集。避免冗余數(shù)據(jù)的干擾,收斂速度加快,能夠在線學(xué)習(xí)。對于稀疏數(shù)據(jù)或不平衡數(shù)據(jù),收斂速度可能較慢。 學(xué)習(xí)率的選取對收斂效果影響較大。更新值的方差較大,收斂過程會產(chǎn)生波動,可能落入極小值,選擇合適的學(xué)習(xí)率比較困難。適用于需要在線更新的模型,適用于大規(guī)模訓(xùn)練樣本情況。Momentum能夠在相關(guān)方向加速SGD,抑制振蕩,從而加快收斂。需要人工設(shè)定學(xué)習(xí)率??赡軙谀承┣闆r下導(dǎo)致“擺動”。適用于有可靠的初始化參數(shù)。Nesterov梯度在大的跳躍后,進行計算對當(dāng)前梯度進行校正。需要人工設(shè)定學(xué)習(xí)率。與動量法類似,但更快地收斂的優(yōu)化問題。AdaGrad自適應(yīng)調(diào)整學(xué)習(xí)率,對于稀疏數(shù)據(jù)和非平穩(wěn)目標(biāo)函數(shù)有較好的效果。仍依賴于人工設(shè)置一個全局學(xué)習(xí)率,學(xué)習(xí)率設(shè)置過大,對梯度的調(diào)節(jié)太大。中后期,梯度接近于0,使得訓(xùn)練提前結(jié)束。需要快速收斂,訓(xùn)練復(fù)雜網(wǎng)絡(luò)時;適合處理稀疏梯度。AdaDelta不需要預(yù)設(shè)一個默認(rèn)學(xué)習(xí)率,訓(xùn)練初中期,加速效果不錯,很快,可以避免參數(shù)更新時兩邊單位不統(tǒng)一的問題。訓(xùn)練后期,反復(fù)在局部最小值附近抖動。需要快速收斂,訓(xùn)練復(fù)雜網(wǎng)絡(luò)時。RMSProp解決 Adagrad 激進的學(xué)習(xí)率縮減問題。依然依賴于全局學(xué)習(xí)率。需要快速收斂,訓(xùn)練復(fù)雜網(wǎng)絡(luò)時;適合處理非平穩(wěn)目標(biāo),對于RNN效果很好。Adam結(jié)合了動量法和自適應(yīng)學(xué)習(xí)率的優(yōu)點,適用于不同類型的數(shù)據(jù)和目標(biāo)函數(shù)。收斂速度快,對于大規(guī)模數(shù)據(jù)和參數(shù)較多的情況表現(xiàn)較好。對內(nèi)存需求較小,為不同的參數(shù)計算不同的自適應(yīng)學(xué)習(xí)率。對于一些數(shù)據(jù)和問題,可能需要調(diào)整默認(rèn)參數(shù)。需要快速收斂,訓(xùn)練復(fù)雜網(wǎng)絡(luò)時;善于處理稀疏梯度和處理非平穩(wěn)目標(biāo)的優(yōu)點,也適用于大多非凸優(yōu)化。適用于大數(shù)據(jù)集和高維空間。最小二乘法 (Ordinary Least Squares, OLS)對線性模型求解簡潔高效,在一些特定問題中表現(xiàn)優(yōu)異。對異常值敏感,對非線性關(guān)系不適用。線性模型,對異常值較敏感但需快速求解的情況下的優(yōu)化。遺傳算法 (Genetic Algorithm)可以全局搜索解空間,適用于復(fù)雜的非線性優(yōu)化問題。需要大量的計算資源和時間。復(fù)雜的非線性優(yōu)化問題,對計算資源和時間要求不高的情況下的優(yōu)化。牛頓法 (Newton’s Method))收斂速度快,通常表現(xiàn)出色于凸函數(shù)的優(yōu)化。需要計算二階導(dǎo)數(shù),對于大規(guī)模數(shù)據(jù)和高維參數(shù)較為耗時。凸函數(shù)優(yōu)化,計算資源充足且不考慮二階導(dǎo)數(shù)計算開銷的情況下的優(yōu)化。
深度學(xué)習(xí)中的應(yīng)用
Reference:深度學(xué)習(xí)中的優(yōu)化算法研究——陳 爽、張長倫、黎銘亮
目前,在神經(jīng)網(wǎng)絡(luò)中,各種優(yōu)化算法被廣泛運用以提高模型的訓(xùn)練效率和性能。以下是一些常見優(yōu)化算法在神經(jīng)網(wǎng)絡(luò)中的應(yīng)用現(xiàn)狀:
梯度下降法及其變種:梯度下降法是神經(jīng)網(wǎng)絡(luò)中最基礎(chǔ)的優(yōu)化算法之一,在實際應(yīng)用中被廣泛使用。隨機梯度下降(SGD)和小批量梯度下降(Mini-Batch SGD)常用于大規(guī)模數(shù)據(jù)集的訓(xùn)練。此外,隨著對學(xué)習(xí)率的調(diào)整和動量的引入,梯度下降的進化版本如Momentum、Adam等也成為研究熱點。自適應(yīng)學(xué)習(xí)率算法:AdaGrad、RMSProp和Adam等自適應(yīng)學(xué)習(xí)率算法在神經(jīng)網(wǎng)絡(luò)中得到廣泛應(yīng)用。它們根據(jù)參數(shù)的歷史梯度信息動態(tài)調(diào)整學(xué)習(xí)率,適應(yīng)不同參數(shù)的更新速度,有助于加速訓(xùn)練過程并避免陷入局部最優(yōu)解。二階優(yōu)化算法:LBFGS和牛頓法等二階優(yōu)化算法盡管計算復(fù)雜度高,但在一些情況下能夠更快地收斂到全局最優(yōu)解。特別是在參數(shù)較少或者計算資源充足的情況下,這些算法通常可以取得更好的效果。加速梯度算法:Nesterov加速梯度(NAG)和其它加速梯度算法通過修正傳統(tǒng)梯度下降中的參數(shù)更新方式,在一定程度上提高了收斂速度和結(jié)果穩(wěn)定性。遺傳算法:雖然遺傳算法在神經(jīng)網(wǎng)絡(luò)中相對不常見,但在某些特定任務(wù)中,如網(wǎng)絡(luò)結(jié)構(gòu)搜索和超參數(shù)優(yōu)化,遺傳算法可以作為一種有效的優(yōu)化手段。
神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練離不開優(yōu)化算法的支持,不同的優(yōu)化算法適用于不同的問題和場景。研究人員在不斷改進現(xiàn)有算法、提出新的算法,以應(yīng)對神經(jīng)網(wǎng)絡(luò)模型越來越復(fù)雜的訓(xùn)練需求,提高訓(xùn)練效率和泛化能力。隨著深度學(xué)習(xí)領(lǐng)域的快速發(fā)展,優(yōu)化算法的研究和應(yīng)用將繼續(xù)是一個重要的研究方向。
梯度下降法在現(xiàn)今神經(jīng)網(wǎng)絡(luò)優(yōu)化算法中仍然占據(jù)重要地位,盡管出現(xiàn)了許多改進和新的優(yōu)化算法,但梯度下降法作為最基礎(chǔ)、最經(jīng)典的優(yōu)化方法之一,仍然被廣泛應(yīng)用并引起研究者的關(guān)注。
梯度下降法通過不斷沿著梯度的反方向更新參數(shù),使得損失函數(shù)逐漸減小,從而找到最優(yōu)解或局部最優(yōu)解。在神經(jīng)網(wǎng)絡(luò)中,梯度下降法的變種包括批量梯度下降(BGD)、隨機梯度下降(SGD)和小批量梯度下降(Mini-Batch SGD)等。
批量梯度下降(BGD):在每個訓(xùn)練周期中,使用整個訓(xùn)練集的數(shù)據(jù)計算梯度并更新參數(shù)。雖然計算準(zhǔn)確,但對于大規(guī)模數(shù)據(jù)集計算代價較高。隨機梯度下降(SGD):每次迭代隨機選擇一個樣本進行梯度計算和參數(shù)更新。雖然計算速度快,但由于隨機性可能導(dǎo)致更新不穩(wěn)定。小批量梯度下降(Mini-Batch SGD):將數(shù)據(jù)集劃分為小批量數(shù)據(jù)集,每次迭代計算小批量數(shù)據(jù)的梯度并更新參數(shù)。綜合了BGD和SGD的優(yōu)點,是目前神經(jīng)網(wǎng)絡(luò)優(yōu)化中應(yīng)用最廣泛的方法之一。
除了上述基本的梯度下降算法外,還有一些改進版的算法,如動量法(Momentum)、AdaGrad算法、RMSProp算法、Adam算法等,它們在梯度下降的基礎(chǔ)上引入了動態(tài)學(xué)習(xí)率或者加速因子等機制,能夠更快地收斂并避免陷入局部最優(yōu)解。
總的來說,在神經(jīng)網(wǎng)絡(luò)中,梯度下降法及其改進版仍然是最常用的優(yōu)化算法之一,對于大規(guī)模數(shù)據(jù)集和復(fù)雜神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練具有重要意義,并且研究人員也在不斷地改進和優(yōu)化這些算法,以應(yīng)對不同類型的神經(jīng)網(wǎng)絡(luò)模型和訓(xùn)練任務(wù)。
近年來,深度學(xué)習(xí)中的優(yōu)化算法層出不窮,但是在深度學(xué)習(xí)的實際任務(wù)中,選擇和設(shè)計合適的優(yōu)化器仍面臨著許多困難。探索影響優(yōu)化算法尋找目標(biāo)點的損失曲面的性質(zhì),提升優(yōu)化算法的收斂速度與泛化性能是具有挑戰(zhàn)和價值的研究方向。
損失曲面的性質(zhì) 深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的損失函數(shù)對優(yōu)化算法的參數(shù)更新方向和步長有著關(guān)鍵影響,損失平面的幾何特征與性質(zhì)指導(dǎo)著如何設(shè)計優(yōu)化算法。對于深度學(xué)習(xí)任務(wù)中非凸的目標(biāo)函數(shù),以及小批量會引起的隨機噪聲擾動,優(yōu)化算法如何體現(xiàn)深度神經(jīng)網(wǎng)絡(luò)參數(shù)的分布信息、正確找到目標(biāo)點是值得深入探索的問題。 收斂速度與泛化性能 盡管諸如Adam等自適應(yīng)學(xué)習(xí)率優(yōu)化算法在大多深度學(xué)習(xí)實踐任務(wù)中表現(xiàn)出優(yōu)秀的性能,但SGD還是經(jīng)常在任務(wù)訓(xùn)練后期時被使用。自適應(yīng)學(xué)習(xí)率優(yōu)化算法雖然在訓(xùn)練早期有著快速的收斂速度,但在測試時的泛化能力往往不如SGD優(yōu)秀。目前,實驗證實自適應(yīng)學(xué)習(xí)率優(yōu)化器更傾向于收斂到泛化性能效果差的尖銳極小值,而不是和SGD一樣,收斂到所期望的平坦極小值。因此,如何提高自適應(yīng)學(xué)習(xí)率優(yōu)化算法的泛化效果、同時保證快速收斂是一個具有價值的研究方向。
深度學(xué)習(xí)優(yōu)化算法的持續(xù)改進和探索,不僅能夠提升模型在訓(xùn)練階段的效率和性能,還能夠增強模型在實際應(yīng)用中的泛化能力和魯棒性。這些研究方向的探索有望為深度學(xué)習(xí)領(lǐng)域帶來新的突破和進展,推動人工智能技術(shù)的發(fā)展和應(yīng)用。期待更多更高效的優(yōu)化算法的誕生。
柚子快報激活碼778899分享:人工智能 神經(jīng)網(wǎng)絡(luò)——優(yōu)化算法
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。