偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

神經(jīng)網(wǎng)絡(luò)的奧秘之優(yōu)化器的妙用

開發(fā) 開發(fā)工具
本文作者 Piotr Skalski 撰寫了一系列文章介紹神經(jīng)網(wǎng)絡(luò)的奧秘,本文就是其中一篇,介紹了神經(jīng)網(wǎng)絡(luò)訓練過程中的常見優(yōu)化策略,并進行了分析和對比,包括梯度下降、小批量梯度下降、動量梯度下降、RMSProp、Adam 等。

之前的文章介紹了,我可以只使用 Numpy 來創(chuàng)建神經(jīng)網(wǎng)絡(luò)。這項挑戰(zhàn)性工作極大地加深了我對神經(jīng)網(wǎng)絡(luò)內(nèi)部運行流程的理解,還使我意識到影響神經(jīng)網(wǎng)表現(xiàn)的因素有很多。精選的網(wǎng)絡(luò)架構(gòu)、合理的超參數(shù),甚至準確的參數(shù)初始化,都是其中一部分。本文將關(guān)注能夠顯著影響學習過程速度與預測準確率的決策──優(yōu)化策略的選擇。本文挑選了一些常用優(yōu)化器,研究其內(nèi)在工作機制并進行對比。

[[250426]]

注:由于我想覆蓋的學習材料范圍太大,因此文中未列出任何代碼段。不過,大家可以在 GitHub 上找到所有用于創(chuàng)建可視化的代碼。此外,我還準備了一些 notebook,幫助大家更好地理解本文所討論的問題。

代碼地址: https://github.com/SkalskiP/ILearnDeepLearning.py

優(yōu)化

優(yōu)化是不斷搜索參數(shù)以最小化或***化目標函數(shù)的過程。我們通常使用間接優(yōu)化方法訓練機器學習模型,選擇一個評價指標(如準確率、精度或召回率)表明模型求解給定問題的優(yōu)良程度。但是,我們一直在優(yōu)化不同的成本函數(shù) J(θ),希望最小化成本函數(shù)以改善評價指標。毫無疑問,成本函數(shù)的選擇通常與需要解決的具體問題相關(guān)。本質(zhì)上,這種「有意設(shè)計」表明我們與理想解決方案有多遠。正如大家所知,這個問題相當復雜,可以再另寫一篇主題文章。

沿途陷阱

結(jié)果證明,尋找非凸成本函數(shù)最小值通常不太容易,本文應(yīng)用高級優(yōu)化策略去定位最小值。如果你學過微積分,就一定知道局部極小值──優(yōu)化器極易落入的***陷阱之一。對于那些還不了解局部極小值之美的讀者,我只能說局部極小值是給定區(qū)域內(nèi)函數(shù)取最小值的點集。如上圖左半部分所示,優(yōu)化器定位的點并非是全局***解。

而「鞍點」問題則被人們認為更具挑戰(zhàn)性。當成本函數(shù)值幾乎不再變化時,就會形成平原(plateau),如上圖右半部分所示。在這些點上,任何方向的梯度都幾乎為零,使得函數(shù)無法逃離該區(qū)域。

有時候,尤其是在多層網(wǎng)絡(luò)中,我們必須處理成本函數(shù)的陡峭區(qū)域。陡峭區(qū)域中的梯度增長迅速(也就是梯度爆炸)會引起大步躍遷,通常會破壞先前的優(yōu)化結(jié)果。不過,該問題可以通過梯度裁剪輕松解決。

梯度下降

在學習高級算法前,我們先來了解一些基本策略。最直接有效的方法之一是向函數(shù)上當前點對應(yīng)梯度的反方向前進,公式如下:

超參數(shù) α 表示學習率,代表算法每次迭代過程的前進步長。學習率的選擇一定程度上代表了學習速度與結(jié)果準確率之間的權(quán)衡。選擇步長過小不利于算法求解,且增加迭代次數(shù)。反之,選擇步長過大則很難發(fā)現(xiàn)最小值。具體過程見圖 2,圖中展示了不穩(wěn)定的迭代過程。而選擇合適步長后,模型幾乎立即發(fā)現(xiàn)最小點。

圖 2

圖 2. 大、小學習率條件下梯度下降過程的可視化。為了易于觀察,圖中僅展示了*** 10 步的可視化情況。

此外,該算法很容易受鞍點問題的影響。因為后續(xù)迭代過程的步長與計算得到的梯度成比例,所以我們無法擺脫 plateau。

最重要的是,算法由于每次迭代過程中都需要使用整個訓練集而變得低效。這意味著,在每個 epoch 中我們都必須考慮所有樣本,以確保執(zhí)行下輪優(yōu)化。對于只有幾千個樣本的訓練集來說,這也許不是問題。但是,擁有數(shù)百萬樣本的神經(jīng)網(wǎng)絡(luò)才能表現(xiàn)***?;诖耍看蔚际褂萌繑?shù)據(jù)集令人難以想象,既浪費時間又占用內(nèi)存。上述原因致使純粹的梯度下降無法應(yīng)用于大部分情況。

小批量梯度下降

 梯度下降與小批量梯度下降對比圖。

圖 3. 梯度下降與小批量梯度下降對比圖。

我們首先嘗試解決上一節(jié)提到的***一個問題──低效性。盡量向量化通過單次處理多個訓練樣本來加速計算,但在使用百萬量級的數(shù)據(jù)集時優(yōu)化過程還是需要花費很長時間。此處,我們試用一個簡單的方法──將完整數(shù)據(jù)集切分成許多小批量以完成后續(xù)訓練。小批量梯度下降的可視化動圖見圖 3。假設(shè)左圖的等高線象征需要優(yōu)化的成本函數(shù)。如圖所示,由于新算法的待處理數(shù)據(jù)較少,它能夠快速完成優(yōu)化。我們再看看兩個模型的移動軌跡對比。當噪音較少時,梯度下降采取較少步和相對較大的步長。另一方面,小批量梯度下降前進更頻繁,但由于數(shù)據(jù)集的多樣性,噪聲更多。甚至可能在某次迭代過程中,算法移動的方向與預計方向相反。不過,小批量梯度下降通常一直朝向最小值移動。

圖 4. 將數(shù)據(jù)集劃分為多個批量。

大家肯定想知道如何選擇批量大小?以深度學習為例,批量大小通常不是絕對的,應(yīng)參照具體情況。如果批量與整體數(shù)據(jù)集大小相等,那它就與普通梯度下降無異。另一方面,如果批量為 1,那么算法每次迭代僅適用數(shù)據(jù)集中的 1 個樣本,這也失去了向量化的意義,該方法有時被稱為隨機梯度下降。實際情況下,我們通常會選擇中間值──64 至 512 個樣本。

指數(shù)加權(quán)平均

指數(shù)加權(quán)平均應(yīng)用廣泛,如統(tǒng)計學、經(jīng)濟學,甚至深度學習。即便給定點的梯度為 0,指數(shù)加權(quán)平均仍能持續(xù)優(yōu)化,所以許多高級神經(jīng)網(wǎng)絡(luò)優(yōu)化算法都采用此概念。

圖 5. 不同 β值的指數(shù)加權(quán)平均(EWA)圖示。

指數(shù)加權(quán)平均本質(zhì)上是對之前的數(shù)值求平均值,避免局部波動,關(guān)注整體趨勢。指數(shù)加權(quán)平均的計算公式如上所示,其中參數(shù) β 控制待平均的數(shù)的范圍。后續(xù)迭代過程中,算法將使用 1/(1 - β) 個樣本。β 值越大,平均的樣本數(shù)越多,圖像越平滑。另一方面,圖像緩慢右移是因為,平均時間范圍較長會使指數(shù)加權(quán)平均適應(yīng)新趨勢較慢。如圖 5 所示,股票實際收盤價與另外 4 條曲線展示了不同 β 值條件下的指數(shù)加權(quán)平均值。

動量梯度下降

動量梯度下降利用指數(shù)加權(quán)平均,來避免成本函數(shù)的梯度趨近于零的問題。簡單說,允許算法獲得動量,這樣即使局部梯度為零,算法基于先前的計算值仍可以繼續(xù)前進。所以,動量梯度下降幾乎始終優(yōu)于純梯度下降。

如以往一樣,我們使用反向傳播計算網(wǎng)絡(luò)各層的 dW 和 db 值。然而,這次我們沒有直接使用計算梯度來更新神經(jīng)網(wǎng)絡(luò)參數(shù),我們首先計算 VdW 和 Vdb 的中間值。然后在梯度下降中使用 VdW 和 Vdb。值得注意的是,實現(xiàn)該方法需要記錄迭代過程中的指數(shù)加權(quán)平均值。大家可以在 Github 中看到全部過程。

圖 6. 動量梯度下降。

我們嘗試想象下指數(shù)加權(quán)平均對模型行為的影響,再想象下成本函數(shù)的等高線。上圖對比展示了標準梯度下降與動量梯度下降。我們可以看到成本函數(shù)圖的形態(tài)使得優(yōu)化非常緩慢。以股市價格為例,使用指數(shù)加權(quán)平均使得算法專注于未來走勢而非噪聲。最小值分量被放大,振蕩分量逐漸消失。此外,如果后續(xù)更新過程中所得梯度指向類似方向,則學習率將增加,進而實現(xiàn)更快收斂并減少振蕩。然而,動量梯度下降的不足之處在于,每當臨近最小點,動量就會增加。如果動量增加過大,算法將無法停在正確位置。

RMSProp

RMSProp(Root Mean Squared Propagation)是另一種改善梯度下降性能的策略,是最常用的優(yōu)化器。該算法也使用指數(shù)加權(quán)平均。而且,它具備自適應(yīng)性──其允許單獨調(diào)整模型各參數(shù)的學習率。后續(xù)參數(shù)值基于為特定參數(shù)計算的之前梯度值。

運用圖 6 及上述公式,大家來思考下該策略背后的邏輯。顧名思義,每次迭代我們都要計算特定參數(shù)的成本函數(shù)的導數(shù)平方。此外,使用指數(shù)加權(quán)平均對近期迭代獲取值求平均。最終,在更新網(wǎng)絡(luò)參數(shù)之前,相應(yīng)的梯度除以平方和的平方根。這表示梯度越大,參數(shù)學習率下降越快;梯度越小,參數(shù)學習率下降越慢。該算法用這種方式減少振蕩,避免支配信號而產(chǎn)生的噪聲。為了避免遇到零數(shù)相除的情況(數(shù)值穩(wěn)定性),我們給分母添加了極小值 ɛ。

必須承認,在本篇文章的寫作過程中,我有兩次異常興奮的時刻──本文所提及優(yōu)化器的快速革新讓我震驚不已。***次是當我發(fā)現(xiàn)標準梯度下降和小批量梯度下降訓練時間的差異。第二次就是現(xiàn)在,比較 RMSprop 與我知道的所有優(yōu)化器。然而,RMSprop 也有缺點。由于每次迭代過程中公式的分母都會變大,學習率會逐漸變小,最終可能會使模型完全停止。

圖 7. 優(yōu)化器對比。

Adam

***,我再說說 ADAM。與 RMSProp 類似,ADAM 應(yīng)用廣泛且表現(xiàn)不俗。它利用了 RMSProp 的***優(yōu)點,且與動量優(yōu)化思想相結(jié)合,形成快速高效的優(yōu)化策略。上圖展示了本文討論的幾類優(yōu)化器在處理函數(shù)困難部分的優(yōu)化過程。Adam 的優(yōu)異表現(xiàn)一目了然。

不幸的是,隨著優(yōu)化方法有效性的提高,計算復雜度也會增加。上面列了 10 個描述優(yōu)化過程單次迭代的矩陣公式。我知道那些數(shù)學基礎(chǔ)薄弱的讀者情緒肯定不高。但是不要擔心,它們并不是什么新內(nèi)容。這里的公式和前文給出的動量梯度下降和 RMSProp 一樣。不過這里我們需要一次性運用這兩個策略的思路。

總結(jié)

希望本文能夠深入淺出地解釋所有難點。在這篇文章的寫作過程中,我明白了選擇合適優(yōu)化器的重要性。理解上述算法才能自如地運用優(yōu)化器,理解每個超參數(shù)如何改變整個模型的性能。

原文鏈接:

https://towardsdatascience.com/how-to-train-neural-network-faster-with-optimizers-d297730b3713

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄加強對神經(jīng)網(wǎng)絡(luò)內(nèi)部運行流程的理解有助于研
相關(guān)推薦

2022-04-07 09:01:52

神經(jīng)網(wǎng)絡(luò)人工智能

2020-08-03 11:43:01

神經(jīng)網(wǎng)絡(luò)優(yōu)化機器學習

2020-08-06 10:11:13

神經(jīng)網(wǎng)絡(luò)機器學習算法

2021-12-28 08:48:54

PyTorch神經(jīng)網(wǎng)絡(luò)人工智能

2025-02-25 14:13:31

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2017-05-23 18:54:18

深度學習人工智能

2023-06-18 23:00:39

神經(jīng)網(wǎng)絡(luò)損失函數(shù)隨機變量

2020-03-25 09:48:10

AI芯片神經(jīng)網(wǎng)絡(luò)

2019-04-19 08:18:37

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)圖形

2025-03-05 08:00:00

2017-03-21 08:52:20

神經(jīng)網(wǎng)絡(luò)聲譽

2017-11-30 18:05:18

2023-11-14 16:29:14

深度學習

2021-01-18 14:38:53

神經(jīng)網(wǎng)絡(luò)人工智能神經(jīng)元

2022-09-26 00:00:00

神經(jīng)網(wǎng)絡(luò)激活函數(shù)sigmoid

2018-03-22 13:34:59

TensorFlow神經(jīng)網(wǎng)絡(luò)

2010-08-26 10:45:33

死鎖SQL Server

2016-03-30 10:29:25

神經(jīng)網(wǎng)絡(luò)處理器神經(jīng)網(wǎng)絡(luò)DianNaoYu

2025-02-19 15:12:17

神經(jīng)網(wǎng)絡(luò)PyTorch大模型
點贊
收藏

51CTO技術(shù)棧公眾號