<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

      深度學(xué)習(xí)AI面試問答必備50題

      0
      分享至

      文:城主

      (注:這不是面向初學(xué)者的文章。您需要一點基礎(chǔ)知識來理解本文內(nèi)容。)


      感謝粉絲的熱心推薦。本文對于任何想要準(zhǔn)備深度學(xué)習(xí)面試的人來說都是非常有幫助的。

      本文對應(yīng)視頻的中英完整版B站傳送門:

      【深度學(xué)習(xí)AI面試問答50題-嗶哩嗶哩】 https://b23.tv/m1osqBp

      =以下是基于視頻信息重寫的中文書面版=

      本文回答50個最常見的深度學(xué)習(xí)問題,這些問題是你在參加數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)工程、人工智能工程和研究科學(xué)家訪談時可能遇到的。

      深度學(xué)習(xí)是當(dāng)今最熱門的話題之一,它構(gòu)成了大型語言模型和生成式人工智能等主題的基礎(chǔ)。深度學(xué)習(xí)包含許多復(fù)雜的概念,結(jié)合了線性代數(shù)、數(shù)學(xué)、微分理論以及先進(jìn)的算法,它們共同構(gòu)成了人工智能的這個領(lǐng)域。因此,如果你想在大型語言模型或人工智能方面找到一份工作,那么一定要為此類面試做好準(zhǔn)備,因為深度學(xué)習(xí)將成為面試者測試你的一個重要概念。

      首先,本文將討論的前50個問題中的前10個是基本概念。從深度學(xué)習(xí)的基本概念開始,探討深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的區(qū)別,討論神經(jīng)網(wǎng)絡(luò)的概念,研究其架構(gòu),以及神經(jīng)元背后的概念。討論反向傳播的概念,它是如何工作的,與梯度下降(GD)有何不同,以及什么是GD。此外,介紹不同的優(yōu)化器和激活函數(shù),詳細(xì)解釋飽和度的概念,以及這是如何導(dǎo)致梯度消失問題的。涵蓋神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測試過程的各個方面。

      然后,這將是接下來的10個問題。更詳細(xì)地介紹反向傳播的概念、與梯度下降的關(guān)系,介紹梯度消失和爆炸問題。涵蓋您在面試過程中會被問到的各種具體問題和與深度學(xué)習(xí)模型相關(guān)的問題。介紹損失函數(shù)和各種類型的流行損失函數(shù),您在深度學(xué)習(xí)面試中可能會遇到這些問題。

      在接下來的10個問題中,介紹SGD算法,這是GD的更高級版本。介紹GD的不同版本和變體,這些內(nèi)容在深度學(xué)習(xí)面試中會一次又一次地出現(xiàn),例如批量GD、小批量GD和SGD。將探討它們之間的區(qū)別,以及批量大小的作用。介紹Hessian的概念,將Hessian用作不同優(yōu)化算法的一部分。以及介紹什么是RMS屬性以及什么是臭名昭著的Adam算法。

      接下來10個問題,討論一些更復(fù)雜的主題,介紹Adam W的概念,介紹批量歸一化。探討批量歸一化和層歸一化的區(qū)別,如何將層歸一化用作Transformer的一部分。討論什么是剩余連接,以及剩余連接的作用。討論梯度裁剪、cavier初始化,以及解決梯度消失問題和梯度爆炸問題的方法。介紹過度擬合的概念,這是您在深度學(xué)習(xí)面試中可能會遇到的問題。

      最后10個問題介紹神經(jīng)網(wǎng)絡(luò)中的dropout和去正則化的概念。探討過度擬合問題以及如何在神經(jīng)網(wǎng)絡(luò)中解決它。此外,討論dropout和隨機(jī)森林的區(qū)別。討論訓(xùn)練與測試的概念,以及退出時的調(diào)整。介紹L1正則化、L2正則化,它們之間的區(qū)別,以及它們對權(quán)重的影響、懲罰的影響以及它們對道德表現(xiàn)影響的嚴(yán)重程度。介紹維度準(zhǔn)確性的概念以及深度學(xué)習(xí)如何解決這個問題。然后將介紹生成模型的概念。

      1 什么是深度學(xué)習(xí)?

      在這個問題中,面試官想了解您是否了解深度學(xué)習(xí)與機(jī)器學(xué)習(xí)、人工智能相比的優(yōu)勢。您可以簡要提及神經(jīng)網(wǎng)絡(luò)的概念以及它與人腦的關(guān)系。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個子集,而機(jī)器學(xué)習(xí)又是人工智能的一個子集。這是人工智能的一個分支,涉及訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)在大量數(shù)據(jù)上,以識別和學(xué)習(xí)數(shù)據(jù)中的隱藏模式、非線性關(guān)系,這是傳統(tǒng)機(jī)器學(xué)習(xí)模型(如線性回歸或邏輯回歸或隨機(jī)森林和XGBoost)無法做到的。深度學(xué)習(xí)的核心是層的概念,因為人工神經(jīng)網(wǎng)絡(luò)和一般而言,深度學(xué)習(xí)試圖復(fù)制人類大腦的工作方式以及當(dāng)我們看到、聽到或聞到某些東西時攔截和獲取來自外界的輸入信號的方式。他們利用這些信息進(jìn)行學(xué)習(xí),并據(jù)此決定是否得出結(jié)論或采取行動。這正是深度學(xué)習(xí)試圖實現(xiàn)的目標(biāo)。深度學(xué)習(xí)嘗試采用神經(jīng)網(wǎng)絡(luò)的思想,神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)模型的一種,以便在輸入層中獲取輸入數(shù)據(jù),然后通過激活函數(shù)對其進(jìn)行轉(zhuǎn)換以激活這些神經(jīng)元,接著將其轉(zhuǎn)換為激活狀態(tài)。這一過程將在我們的隱藏層中進(jìn)行。深度學(xué)習(xí)模型的神奇之處在于,它能夠識別輸入數(shù)據(jù)中的非線性關(guān)系,然后產(chǎn)生輸出。這是一個非常高級的過程。

      面試官并不希望你解釋權(quán)重和參數(shù)的概念,這些我們稍后會講。但是,面試官希望了解你是否對深度學(xué)習(xí)有較高的理解,也許還希望你能提供深度學(xué)習(xí)模型的例子。在講述這些時,你肯定要提到人類大腦和神經(jīng)網(wǎng)絡(luò)之間的關(guān)系,以及輸入數(shù)據(jù)、輸入信號、激活和隱藏層的概念。不要過多討論神經(jīng)網(wǎng)絡(luò)架構(gòu)的細(xì)節(jié),而是簡要提及這些深度學(xué)習(xí)模型。深度學(xué)習(xí)模型的示例包括人工神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、長短期記憶網(wǎng)絡(luò)(LSTM)、以及更高級的架構(gòu),例如變分自動編碼器。這些模型都基于神經(jīng)網(wǎng)絡(luò)。

      因此,如果我要非常簡短地回答這個問題,我會說深度學(xué)習(xí)模型是人工智能分支上的機(jī)器學(xué)習(xí)模型的子集,它試圖學(xué)習(xí)復(fù)雜的數(shù)據(jù)和大量數(shù)據(jù),并發(fā)現(xiàn)隱藏的模式和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。這種模式的結(jié)構(gòu)適用于各種類型的任務(wù),包括計算機(jī)視覺,機(jī)器翻譯任務(wù),以及許多自然語言處理模型,如臭名昭著的ChatGPT,GPT模型或T5等大型語言模型,它們都是基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型。

      2 深度學(xué)習(xí)與傳統(tǒng)的機(jī)器學(xué)習(xí)模型有何不同?

      在這里,面試官希望了解你是否知道深度學(xué)習(xí)模型相對于機(jī)器學(xué)習(xí)模型的主要優(yōu)勢。因此,請先提及一些傳統(tǒng)機(jī)器學(xué)習(xí)模型的示例,然后再提及一些深度學(xué)習(xí)模型的示例,并嘗試將重點放在深度學(xué)習(xí)模型的一兩個優(yōu)點上。機(jī)器學(xué)習(xí)模型的一些例子包括線性回歸、邏輯回歸、支持向量機(jī)、樸素貝葉斯算法、k均值或聚類以及無監(jiān)督學(xué)習(xí)模型DBSCAN。還可以提到一些boosting算法,例如GBM、XGBoost,以及隨機(jī)森林,這在任務(wù)的進(jìn)展和分類類型中非常流行。

      然后,我們要提到深度學(xué)習(xí)模型,它與機(jī)器學(xué)習(xí)模型有根本的不同。并提及人工神經(jīng)網(wǎng)絡(luò)(ANN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、長短期記憶網(wǎng)絡(luò)(LSTM)、門控循環(huán)單元(GRU)和自動編碼器等示例,所有這些都基于神經(jīng)網(wǎng)絡(luò)。還要提到卷積神經(jīng)網(wǎng)絡(luò)(CNN),它在計算機(jī)視覺領(lǐng)域非常流行。然后指出,第一個最大的區(qū)別是傳統(tǒng)的機(jī)器學(xué)習(xí)模型依賴于手動特征提取,而在深度學(xué)習(xí)模型中,它們會自動執(zhí)行此操作,并自動按原樣獲取輸入數(shù)據(jù)。我們不需要執(zhí)行特征選擇,我們不需要擔(dān)心這一點,因為我們的模型由神經(jīng)網(wǎng)絡(luò)表示,特別是具有這些深層的模型,能夠識別所有這些數(shù)據(jù)中的這些模式,然后為自己提取描述我們的數(shù)據(jù)的最重要的特征,然后使用它對于不同類型的任務(wù),無論是回歸還是分類。它實際上表現(xiàn)非常好。

      因此,深度學(xué)習(xí)模型在大數(shù)據(jù)上表現(xiàn)得非常好,而我們已經(jīng)看到機(jī)器學(xué)習(xí)模型受到了影響。眾所周知,當(dāng)數(shù)據(jù)量增加時,機(jī)器學(xué)習(xí)模型的性能會變得更差。當(dāng)特征數(shù)量增加時,它們開始過度擬合,并且也開始變得不穩(wěn)定并且無法準(zhǔn)確預(yù)測輸出。當(dāng)我們增加數(shù)據(jù)中的觀察數(shù)量時,我們也會在數(shù)據(jù)中包含復(fù)雜的特征。這無疑有助于深度學(xué)習(xí)模型超越傳統(tǒng)的機(jī)器學(xué)習(xí)模型,特別是在計算機(jī)視覺或語音識別、機(jī)器翻譯和深度學(xué)習(xí)模型的思想等任務(wù)中。您可以通過觀察不同技術(shù)領(lǐng)域中最新的各種應(yīng)用程序,來理解為什么它們優(yōu)于機(jī)器學(xué)習(xí)模型。在這些應(yīng)用程序中,大多數(shù)都是基于神經(jīng)網(wǎng)絡(luò)的算法,而非機(jī)器學(xué)習(xí)模型。這主要歸因于深度學(xué)習(xí)模型的多種能力,包括處理大數(shù)據(jù)、處理復(fù)雜特征以及自我進(jìn)行特征提取,而不是在模型之外進(jìn)行,或者受到各種影響,如傳統(tǒng)機(jī)器學(xué)習(xí)模型所面臨的問題。

      3 什么是神經(jīng)網(wǎng)絡(luò)?


      在這里,面試官希望了解您對神經(jīng)網(wǎng)絡(luò)與人類學(xué)習(xí)方式之間的關(guān)系的理解,以及您是否了解這些組件以及組件如何運作。在訓(xùn)練過程中,您是否知道什么是權(quán)重和參數(shù)?您是否知道隱藏層是什么,以及它們是一個還是多個?您是否了解深度神經(jīng)網(wǎng)絡(luò)的概念,以及這種信息流如何發(fā)生,以及您是否提到了神經(jīng)網(wǎng)絡(luò)的所有這些元素?

      作為這個問題的回答,我想說,神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)領(lǐng)域和人工智能領(lǐng)域的基本概念。它是一個受生物人腦啟發(fā)的計算模型,試圖復(fù)制人類學(xué)習(xí)、解釋信息、獲取輸入數(shù)據(jù)并處理信息的方式。因此,神經(jīng)網(wǎng)絡(luò)對輸入數(shù)據(jù)進(jìn)行訓(xùn)練,并不斷更新這些信息,學(xué)習(xí)新的東西,添加新的信息,然后更新可能的結(jié)果。最終的目標(biāo)是最大限度地減少我們在學(xué)習(xí)過程中所犯的錯誤。

      神經(jīng)網(wǎng)絡(luò)的核心是由神經(jīng)元組成,就像我們?nèi)四X中的神經(jīng)元一樣。這些神經(jīng)元一起形成層,包括輸入層(代表我們的輸入數(shù)據(jù))和權(quán)重(展示了我們需要對不同輸入信號賦予多少重要性)。這些權(quán)重就是我們在模型中所說的參數(shù),我們在執(zhí)行訓(xùn)練和學(xué)習(xí)過程時需要不斷更新它們。這些層還包括一個或多個隱藏層,這是我們神經(jīng)網(wǎng)絡(luò)的中間部分。隱藏層可以幫助我們學(xué)習(xí)這些不同的模式,理解、激活某些神經(jīng)元并停用或激活較少的其他輸入神經(jīng)元,然后轉(zhuǎn)換這些信息。

      在隱藏層之后,我們可以有另一個隱藏層,它將接收來自前一個隱藏層的信息,然后繼續(xù)學(xué)習(xí)過程。反過來,它將能夠?qū)W習(xí)和理解先前的隱藏層信息。例如,在輸入中,我們有圖像的這些不同像素,我們想要學(xué)習(xí)這些圖像。為了讓神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),它應(yīng)該能夠首先學(xué)習(xí)輸入數(shù)據(jù)中的某種對象。因此,在第一個隱藏層中,它可能會發(fā)現(xiàn)某些信號、某些邊緣和某些信息。然后在下一個隱藏層,它將能夠識別特定的物體,比如說貓的耳朵,如果我們想要識別圖像是貓還是狗,然后把這個信息傳遞到下一層,傳遞到下一層,然后我們繼續(xù)到最后一層,當(dāng)我們產(chǎn)生輸出。

      假設(shè)您熟悉機(jī)器學(xué)習(xí),并且正在閱讀本教程,那么您應(yīng)該熟悉分類、回歸、監(jiān)督學(xué)習(xí)的概念。對于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),我們會產(chǎn)生輸出,例如,它可以識別概率,即 0 到 1 之間的值,比如說我們的分類任務(wù)。然后這個值應(yīng)該與實際的類進(jìn)行比較。例如,如果我們有概率,并將其轉(zhuǎn)換為類別,那么我們可以更新相應(yīng)的類別。因此,我們有每個時期神經(jīng)網(wǎng)絡(luò)的輸出,然后我們使用這些信息與監(jiān)督學(xué)習(xí)過程中的真實標(biāo)簽進(jìn)行比較,然后計算誤差。我們試圖了解我們的預(yù)測效果如何,然后使用這些信息來了解模型預(yù)測結(jié)果的準(zhǔn)確度。這就是我們所說的損失。然后,我們使用這個損失函數(shù)來了解我們需要改變權(quán)重多少,我們對神經(jīng)元的重視程度,我們需要更新這些權(quán)重以及模型中的其他參數(shù)多少,以便減少我們的模型所犯的錯誤量。神經(jīng)網(wǎng)絡(luò)的基本思想在于獲取輸入,將其放入隱藏層以從輸入數(shù)據(jù)中學(xué)習(xí)。這個過程涉及到激活神經(jīng)元,并可能包含一個或多個隱藏層。通過不斷激活這些神經(jīng)元,我們可以獲得輸出。我們需要了解模型造成的損失,以及總體成本函數(shù),然后計算我們所說的梯度。雖然我在這里簡單地提到了梯度的概念,但并沒有過多討論它的細(xì)節(jié)。然后,我們使用這些梯度來了解需要更新多少權(quán)重才能改進(jìn)模型參數(shù)。因為最終,我們關(guān)心的是這個模型,它具有參數(shù)、權(quán)重參數(shù)、偏差參數(shù),最終將為我們生成最準(zhǔn)確的預(yù)測。為了達(dá)到這個目標(biāo),我們需要不斷學(xué)習(xí),經(jīng)歷這個循環(huán),以便正確學(xué)習(xí),并生成一個誤差最小的模型,以便能夠正確地從輸入數(shù)據(jù)中學(xué)習(xí)。

      4 解釋深度學(xué)習(xí)中神經(jīng)元的概念

      在這個問題中,面試官想了解權(quán)重的概念,偏差因子的概念,如何使用它們來獲得所謂的 Z 分?jǐn)?shù),以及如何激活,激活函數(shù)用于獲取激活,以及這些權(quán)重和偏差因素以及與學(xué)習(xí)過程的關(guān)系的意義是什么。深度學(xué)習(xí)中的神經(jīng)元有時被稱為人工神經(jīng)元,它模仿人腦神經(jīng)元的功能,但以一種自動且簡單的方式實現(xiàn)。在神經(jīng)網(wǎng)絡(luò)中,模型獲得不同的輸入。這些輸入信號我們稱之為神經(jīng)元,它接受輸入數(shù)據(jù),我們將其表示為 x。我們用這個x來乘以權(quán)重,因為這些權(quán)重可以告訴我們這個神經(jīng)元應(yīng)該有多少重要性,我們需要對這個神經(jīng)元給予多少關(guān)注。然后這些權(quán)重乘以這個輸入數(shù)據(jù),你稱之為x,這些就是我們添加一個偏差因子,因為當(dāng)我們執(zhí)行學(xué)習(xí)過程時總是會引入偏差。權(quán)重乘以輸入數(shù)據(jù) x,然后在其上添加偏差因子,這將是我們的 Z 分?jǐn)?shù)。但在下一階段,在接近隱藏層之前,我們使用所謂的激活函數(shù)。激活函數(shù),比如 sigmoid 函數(shù)、整流線性單元或 Leaky ReLU,所有這些激活函數(shù),它們所做的就是在數(shù)學(xué)上將非線性引入到我們的神經(jīng)網(wǎng)絡(luò)中。這些激活函數(shù)基于權(quán)重、輸入數(shù)據(jù)和偏差因子應(yīng)用于所有這些不同的 Z 分?jǐn)?shù),以便了解每個神經(jīng)元應(yīng)該被激活多少。在某些情況下,我們可能希望在查看對象并嘗試根據(jù)像素了解該圖像中的對象是什么時,我們可能需要激活與該特定區(qū)域或該特定對象相關(guān)的某些神經(jīng)元,并且我們不應(yīng)該激活其他神經(jīng)元。這正是我們對這些神經(jīng)元的激活所做的事情。因此,在這里,我們使用這些激活為神經(jīng)網(wǎng)絡(luò)引入非線性,以學(xué)習(xí)輸入數(shù)據(jù)中的這些復(fù)雜結(jié)構(gòu)。

      5 用簡單的方式解釋神經(jīng)網(wǎng)絡(luò)的架構(gòu)

      鑒于我們已經(jīng)回答了前面的問題,都提到了神經(jīng)網(wǎng)絡(luò)的架構(gòu)和訓(xùn)練過程的某些部分,這個問題很容易回答,我將在這里使用一個簡單的可視化來表示簡單的神經(jīng)網(wǎng)絡(luò),該神經(jīng)網(wǎng)絡(luò)僅包含一個隱藏層只是總結(jié)我們在之前的面試問題中提到的所有內(nèi)容。神經(jīng)網(wǎng)絡(luò)就是這種多層結(jié)構(gòu)的模型,每一層都在一步一步地對輸入數(shù)據(jù)進(jìn)行變換。把它想象成一條裝配線。裝配線的每個階段都會比前一個階段增加更多的復(fù)雜性,而細(xì)節(jié)和復(fù)雜性會為模型執(zhí)行預(yù)測的能力增加更多的價值。一開始,模型有這些輸入層。正如您在這里所看到的,輸入層由 Z1、Z2、Z3 直到 Zn 表示。在這里,您可以將這個元素、這個輸入視為輸入層的一部分,作為描述數(shù)據(jù)的特征。例如,我們可能想使用神經(jīng)網(wǎng)絡(luò)來估計房屋的價格。我們需要具有某些特征來估算該價格。我們需要學(xué)習(xí)才能了解如何區(qū)分不同的房屋以及這些特征如何影響房價。例如,Z1 可以是這所房子的臥室數(shù)量。Z2可以是這所房子的層數(shù)。Z3可以是房子是否有游泳池。另一個可能的特征是房子是否已經(jīng)建成。這棟房子是在哪一年建造的?房子的年齡是多少?所有這些特征描述了房子的某個元素或某個特征。這將幫助我們,也將幫助模型從這個特征中學(xué)習(xí)并理解。這棟房子的準(zhǔn)確價格是多少?


      接著,我們就有了這些不同的權(quán)重。如你所見,我們有權(quán)重1,1,權(quán)重1,2,權(quán)重1,3。然后我們就有了第二個輸入對應(yīng)的權(quán)重,第三個特征對應(yīng)的權(quán)重,所以對應(yīng)于Z3,比如W3,1,W3,2,W3,3等。如你所見,這些權(quán)重顯示了一堆正在移動的箭頭,箭頭指向下一層,即我們的隱藏層。

      在這個簡單的架構(gòu)中,我們只有一個隱藏層,但也可以有更多隱藏層,這通常是傳統(tǒng)深度神經(jīng)網(wǎng)絡(luò)的情況,因此也被稱為“深度”。這些權(quán)重的作用是幫助我們理解這個輸入特征應(yīng)該對第一隱藏單元、第二隱藏單元和第三隱藏單元貢獻(xiàn)多少。

      如你所見,在我們的隱藏層中,我們有三個圓圈。這三個圓圈描述了隱藏層中的隱藏單元。我們有這個簡單的結(jié)構(gòu),所以我們只有三個隱藏單元。但這是你在訓(xùn)練模型時可以自己決定的事情。這也是我們所說的可以調(diào)整的超參數(shù)。

      在這里你可以看到 W1,1 從 Z1 到 H1。這是重要的權(quán)重,它告訴我們并告訴神經(jīng)網(wǎng)絡(luò)輸入層應(yīng)該得到多少關(guān)注,什么時候它應(yīng)該變得重要,什么時候它可以幫助你學(xué)習(xí)第一個隱藏單元。那么對于H1,我們需要在Z1上施加的權(quán)重是多少,所以我們的第一個特征。然后我們有 W1, 2,它描述了我們需要施加在第一個輸入特征上的權(quán)重,當(dāng)識別這一點時,當(dāng)學(xué)習(xí)并將信息放入我們的第二個隱藏單元 H2 時。

      這些權(quán)重和相應(yīng)的偏差因子以及輸入數(shù)據(jù)可以幫助我們計算我們所說的 Z 分?jǐn)?shù)。Z 分?jǐn)?shù)可以表示為權(quán)重(W)乘以前面的輸入數(shù)據(jù)(X),加上偏差因子(B)。

      一旦我們有了 Z 分?jǐn)?shù),我們就準(zhǔn)備添加非線性,即激活,這將幫助我們理解如何執(zhí)行聚合。當(dāng)涉及到第一個隱藏單元 H1 時,有四個不同的路徑,即箭頭指向 H1。分別是 W11、W21、W31 和 WN1。這基本上意味著我們有這些不同的輸入特征,并且每個輸入特征都有相應(yīng)的權(quán)重。這有助于我們了解當(dāng)我們獲得 H1 時,我們需要對這些不同的輸入特征給予多少關(guān)注,即我們的隱藏層,我們的第一個隱藏單元。

      我們可以根據(jù)不同的權(quán)重、不同的輸入信號聚合這些不同的 Z 分?jǐn)?shù),并且該激活函數(shù)可以顯著改變我們在 H1 中計算激活的方式。這正是激活的作用,所以激活函數(shù)起作用。

      一旦我們獲得了這些信息,我們就計算了激活,準(zhǔn)備好計算輸出,并且在計算 H1、H2 和 H3 后完成輸出。這些隱藏單元已經(jīng)根據(jù)權(quán)重、偏差因子和激活函數(shù)學(xué)習(xí)了上一層輸入數(shù)據(jù)中的信息。然后我們使用最終的權(quán)重,即 WH1、WH2、WH3,以便了解每個隱藏單元需要對輸出層做出多少貢獻(xiàn)。

      在這個輸出層中,我們所做的就是以所需的格式獲得輸出。所以可能我們在進(jìn)行分類時想要得到一個概率,因此我們需要得到一個0到1之間的值。然后在這個輸出層中,我們將得到這個值,我們將它轉(zhuǎn)換為一個類。我們將其與實際的標(biāo)簽(例如 0 和 1)進(jìn)行比較,以了解我們的簡單神經(jīng)網(wǎng)絡(luò)的執(zhí)行情況。

      6 什么是神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)?


      激活函數(shù)在神經(jīng)網(wǎng)絡(luò)中起著至關(guān)重要的作用,其選擇將決定神經(jīng)網(wǎng)絡(luò)的性能。到目前為止,我們已經(jīng)討論了很多關(guān)于權(quán)重的內(nèi)容,以及如何使用權(quán)重、輸入數(shù)據(jù)或前一層的輸入、前一層的輸出來計算Z分?jǐn)?shù)。我們添加偏差向量以獲得Z分?jǐn)?shù),然后我們需要應(yīng)用激活函數(shù)以獲得激活。這就是激活函數(shù)的作用,它決定了在計算下一層時,每個神經(jīng)元應(yīng)該被激活多少。

      在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)引入了非線性的概念。如果我們不使用特定類型的激活函數(shù),我們的模型將類似于線性回歸模型。我們將擁有一個簡單的線性類型的模型,它將能夠揭示線性模式,但無法發(fā)現(xiàn)數(shù)據(jù)中這些復(fù)雜的隱藏模式。我們已經(jīng)看到,在現(xiàn)實世界中,數(shù)據(jù)大多數(shù)時候都包含非線性關(guān)系。

      因此,我們引入激活函數(shù),這有助于我們將非線性引入神經(jīng)網(wǎng)絡(luò)。它們就像聚合函數(shù)一樣,幫助我們理解如何組合這些不同的輸入、這些不同神經(jīng)元相應(yīng)的Z分?jǐn)?shù),以獲得最終的單個激活量。如果你看這個圖,你可以看到我們正在使用x1、x2直到xn,它們是我們的輸入點。然后我們就有了相應(yīng)的權(quán)重,它告訴我們每個輸入需要激活多少。然后我們需要聚合這些值。我們需要獲得一個單一的激活,然后該激活將基于激活函數(shù)。它基本上定義了在計算我們之前看到的隱藏單元的體積時,我們需要添加多少與特定輸入相對應(yīng)的值。

      有不同種類的激活函數(shù)。我簡單提一下,四種流行的激活函數(shù)是sigmoid激活函數(shù)、雙曲Tang函數(shù),簡稱為Tang函數(shù)。另外,我肯定會提到整流器線性單元激活函數(shù),即ReLU。我還提到了Leaky ReLU,即整流器線性單元激活函數(shù)的Leaky版本。你也可以,如果你有時間,你也可以指定激活函數(shù),它們就像看門人一樣。因此,他們決定需要從該狀態(tài)使用多少信息才能傳遞到下一個狀態(tài)。這基本上就是激活函數(shù)背后的想法,它使神經(jīng)網(wǎng)絡(luò)能夠正確學(xué)習(xí)數(shù)據(jù)中的非線性關(guān)系。

      7 列出幾個流行的激活函數(shù)并描述它們



      我們在第六個問題中簡單討論了激活函數(shù)。因此,在這里我將更詳細(xì)地介紹這些不同的激活函數(shù),并且我們還將對它們進(jìn)行分類。當(dāng)你被問到這個問題時,你不需要給出所有這些不同類型的例子。僅舉這四個示例中的一個,然后提供此特定激活函數(shù)的詳細(xì)說明。但在這種情況下,我會做的是,我將為您提供業(yè)界廣泛使用的所有四種流行的激活函數(shù),然后由您決定以哪一種作為示例。

      所以我傾向于在這四個激活函數(shù)后面進(jìn)行這樣的分類。所以sigmoid激活函數(shù),Tang激活函數(shù),整流線性單元或短ReLU激活函數(shù),以及Leaky整流線性單元,ReLU激活函數(shù)。所以我傾向于說sigmoid函數(shù)和Tang函數(shù),它們可以形成一個單一的類別。然后修正的線性單元及其調(diào)整版本Leaky ReLU,它們可以形成第二類激活函數(shù)。我們很快就會明白原因。

      現(xiàn)在讓我們從sigmoid激活函數(shù)開始。如果您熟悉邏輯回歸,那么您很可能會認(rèn)識這個激活函數(shù),因為當(dāng)我們嘗試生成類似概率的值(即0到1之間的值)時,邏輯回歸中也會使用sigmoid函數(shù)。正如您所看到的,在sigmoid激活函數(shù)的情況下,當(dāng)涉及到描述激活函數(shù)的圖表時,我們會得到這條S形曲線。那么,激活函數(shù)包含哪些內(nèi)容呢?

      在計算過程中,我們首先計算出z分?jǐn)?shù),然后根據(jù)前一層的數(shù)據(jù)進(jìn)行輸出。例如,我們可以用x來表示這個過程。我們將x乘以權(quán)重(假設(shè)為w),然后添加偏差因子(假設(shè)為b),這樣就可以得到z分?jǐn)?shù)。接下來,我們需要將z分?jǐn)?shù)作為激活函數(shù)的輸入。這就是為什么我們需要將z分?jǐn)?shù)轉(zhuǎn)換為激活函數(shù)的原因。

      在這個例子中,我們使用的是sigmoid激活函數(shù)。sigmoid激活函數(shù)接受輸入(假設(shè)為z),然后將其轉(zhuǎn)換為一個值,這個值等于1除以1加上e的負(fù)z次方。這與我們在邏輯回歸中所做的非常相似。

      如你所見,這張圖代表的是一個sigmoid函數(shù),x軸代表所有的z分?jǐn)?shù),y軸代表相應(yīng)的激活。你可以看到,對于x的所有值(從負(fù)無窮大到正無窮大),相應(yīng)的z分?jǐn)?shù)(即y軸上的激活)的值都在0和1之間。所以最小值為0,最大值為1。你可以看到,曲線的拐點,也就是我們翻轉(zhuǎn)曲線時到達(dá)的點,是0.5。

      從這個激活函數(shù)中,你可以看到,每當(dāng)我們有負(fù)值時,相應(yīng)的激活就會在0到0.5之間。每當(dāng)我們有正的z分?jǐn)?shù)時,相應(yīng)的激活將在0.5到1之間。

      在回答面試問題時,需要記住和提及的一個重要問題是sigmoid函數(shù)可能會遭受我們所說的飽和問題。那么,什么是飽和度呢?當(dāng)我們采用非常大的負(fù)值或非常大的正值時,就會發(fā)生飽和,然后激活或值(在這種情況下是函數(shù))收斂到相應(yīng)函數(shù)的極值。這就是這里發(fā)生的情況。如果我們假設(shè)x等于負(fù)1,000,那么相應(yīng)的y值很可能非常接近0,即最小值,因此它是該激活函數(shù)的極值。如果我們將x視為一個非常大的正數(shù),例如加1,000,那么相應(yīng)的激活值將非常接近1,這就是該函數(shù)的全局最大值。這就是我們所說的飽和度。

      這意味著,如果我們?yōu)閦分?jǐn)?shù)取非常大的負(fù)數(shù)或非常大的正數(shù),那么該激活函數(shù)將為我們提供一個輸出,一個非常接近極值的值,即0和1的相應(yīng)激活函數(shù)。稍后,我們將討論如果我們使用此函數(shù)作為隱藏層激活的一部分,為什么會出現(xiàn)問題。但是,當(dāng)涉及到獲取一個值(0到1之間的輸出)時,sigmoid函數(shù)是首選的激活函數(shù)。

      接下來我們要講的激活函數(shù)是雙曲正切激活函數(shù),簡稱tanh函數(shù)。如你所見,雙曲正切函數(shù)的形狀與sigmoid激活函數(shù)非常相似。唯一的區(qū)別是,它將所有值轉(zhuǎn)換為-1和1之間的值,而不是像sigmoid函數(shù)那樣轉(zhuǎn)換為0和1。因此,正如其名稱所示,tang函數(shù)是基于幾何主題的概念。如果您對正弦、余弦、正切和余切的概念有所了解,那么您對tang函數(shù)也會有所了解,因為這個函數(shù)正是基于這些概念。tang函數(shù)的作用是將所有的z分?jǐn)?shù)轉(zhuǎn)換為-1到1之間的值。

      代表此激活函數(shù)的fz是一個等于的函數(shù),其分母是e的z次方減去e的負(fù)z次方,除以e的z次方加上e的負(fù)z次方。它的基本作用是進(jìn)行轉(zhuǎn)換,獲取z分?jǐn)?shù),如果z分?jǐn)?shù)為負(fù),則將其轉(zhuǎn)換為-1到0之間的值。然后,如果z分?jǐn)?shù)是從0到正無窮大的正數(shù),則相應(yīng)的激活將在0和1之間。與sigmoid函數(shù)一樣,tang函數(shù)也是S形的,只有膨脹點,所以它改變其模式的點,即圖形的行為方式,不是在0.5點,而是在0點。與sigmoid函數(shù)一樣,tang函數(shù)也存在飽和問題。因此,對于大負(fù)數(shù)和大正數(shù),相應(yīng)的激活將非常接近極值點,因此該函數(shù)的-1和+1可能會出現(xiàn)問題,就像sigmoid函數(shù)的情況一樣。因此,不建議將這兩個函數(shù)用于隱藏層,而是將它們用于輸出層。

      我們將這兩個函數(shù)用于輸出層,是因為我們可以非常方便地將從這兩個函數(shù)獲得的值轉(zhuǎn)換為相應(yīng)的值,無論是分類情況,因為如果我們獲得0和1之間的值,例如,在sigmoid激活函數(shù)的情況下,我們可以將其解釋為概率,然后可以使用該概率來獲取類別,例如類別0或1。然后,可以通過將模型與實際類別進(jìn)行比較來評估我們的模型,并計算交叉熵,或者可以基于此計算任何其他評估指標(biāo)。

      稍后,我們將討論為什么這兩個激活函數(shù)不應(yīng)該在層中實際使用,特別是對于具有許多隱藏層的深度神經(jīng)網(wǎng)絡(luò)。但現(xiàn)在,由于這超出了這個問題的范圍,我不想透露細(xì)節(jié),因為我們已經(jīng)涵蓋了很多內(nèi)容。所以在回答這個問題時你可以提到接下來的兩個激活函數(shù):整流器線性單元和漏整流器線性單元激活函數(shù)。兩者非常相似,尤其是在正z分?jǐn)?shù)方面,但在負(fù)z分?jǐn)?shù)方面卻有些不同。

      當(dāng)我們查看整流器線性單元時,實際上是激活函數(shù),您可以看到它看起來像這樣。所以它適用于z時的所有情況,所以激活,如果z分?jǐn)?shù)小于0,那么它是負(fù)數(shù),那么相應(yīng)的激活將為0。所以基本上,這個激活函數(shù)不會激活任何負(fù)神經(jīng)元。而對于z分?jǐn)?shù)為正的情況,則相應(yīng)的激活將完全等于z分?jǐn)?shù)。因此,名稱為線性。因此,如果您查看y等于x的線,并且可視化該線,您可以看到正數(shù)部分,因此對于x從0到無窮大為正數(shù)的部分,您可以看到y(tǒng)等于x線與我們這里的完全一樣。這就是“線性”這個詞的由來。它類似于線性函數(shù)的表示,但只適用于正數(shù)。對于正數(shù),我們將得到z分?jǐn)?shù),并根據(jù)其確切數(shù)量進(jìn)行激活。然而,如果z分?jǐn)?shù)為負(fù)或神經(jīng)元為負(fù),則相應(yīng)的激活不會發(fā)生,我們也不會激活這些負(fù)值。在所有這些情況下,激活函數(shù)會將激活值設(shè)置為0。因此,當(dāng)我們確實想要輸出、我們確實想要考慮這些負(fù)值、并且我們想要考慮這些負(fù)值并基于它們進(jìn)行預(yù)測時,這可能會出現(xiàn)問題。在這些情況下,我們需要調(diào)整這個ReLU,這樣我們就可以更好地使用我們所說的Leaky ReLU。

      Leaky ReLU激活函數(shù)的作用是,它不僅激活正分?jǐn)?shù),還激活負(fù)分?jǐn)?shù)。當(dāng)然,與z為正數(shù)的情況相比,它是在不太極端的情況下實現(xiàn)的。正如您從消極的一面看到的那樣,從我們圖表的第三季度來看,但它仍然如此。而且從函數(shù)本身也可以看出,因為Leaky ReLU對應(yīng)的激活函數(shù)可以用它的f-set來表示,f-set等于0.01。如果z小于0,則如果z大于或等于0,則等于z。因此,對于所有正數(shù),Leaky ReLU的行為與ReLU完全相同,如您在此處看到的,但對于負(fù)值,相應(yīng)的激活值只是等于0.01。所以你可以看到就是圖中的這一部分。因此,這兩個激活函數(shù)都不會受到飽和的影響,這與sigmoid和Tank函數(shù)相比絕對不同。這就是為什么推薦它,并且已經(jīng)證明,當(dāng)我們將這兩個激活函數(shù)用作隱藏層激活的一部分時,它們的性能要好得多,并且當(dāng)涉及到輸出層時,它們的使用并不多。因此,可以考慮將Leaky ReLU和ReLU用于隱藏層,但不要將它們用于輸出層,反之亦然,用于sigmoid函數(shù)和Tank函數(shù)。將它們用于輸出層,但不能用于隱藏層。

      8 如果在神經(jīng)網(wǎng)絡(luò)中不使用任何激活函數(shù)會發(fā)生什么?

      這個問題的答案可能很短,因為它非常明顯。缺乏激活函數(shù)會將神經(jīng)網(wǎng)絡(luò)簡化為常見的機(jī)器學(xué)習(xí)模型,例如線性回歸,這從一開始就消除了使用神經(jīng)網(wǎng)絡(luò)的整個想法。因此,為了能夠利用神經(jīng)網(wǎng)絡(luò)的架構(gòu)并能夠發(fā)現(xiàn)數(shù)據(jù)中的隱藏模式、非線性模式,我們可以使用激活函數(shù)和非線性激活函數(shù)。

      9 描述基本神經(jīng)網(wǎng)絡(luò)的訓(xùn)練如何工作


      在這種情況下,面試官想知道您是否了解前向傳播、后向傳播的概念,什么是反向傳播,這些過程如何相互連接,以及神經(jīng)網(wǎng)絡(luò)如何利用這些層來學(xué)習(xí)這些復(fù)雜的模式在你的數(shù)據(jù)中。

      你可以從描述神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程開始,一個非常基本的過程,通過我們所說的前向傳遞的過程。前向傳遞獲取輸入數(shù)據(jù)并通過我們之前看到的神經(jīng)元進(jìn)行處理,并使用此加權(quán)和和激活函數(shù)來產(chǎn)生輸出。我們獲取輸入數(shù)據(jù),將其乘以相應(yīng)的權(quán)重,然后添加偏差因子。這些就是我們的z分?jǐn)?shù)。然后,我們應(yīng)用激活函數(shù)來引入非線性,當(dāng)我們將信息傳遞到下一層時,就會使用這些激活值(即激活分?jǐn)?shù)),因為我們將使用它作為輸入。我們將其乘以相應(yīng)的權(quán)重。我們添加偏差因子,然后使用該隱藏層的激活函數(shù),以便從這些復(fù)雜性中學(xué)習(xí)。這個過程一直持續(xù)到我們到達(dá)計算輸出的輸出層。然后使用該輸出將其與我們的數(shù)據(jù)的真實值進(jìn)行比較。例如,我們在處理分類問題時,會觀察到的實際標(biāo)簽。接著,我們會計算所謂的損失函數(shù)或成本函數(shù)。例如,對于回歸類型的問題,我們可能會使用均方根誤差(RMSE)或均方誤差(MSE)。對于分類類型的問題,我們可能會使用交叉熵。然后,我們利用這個損失函數(shù)進(jìn)行所謂的反向傳播。

      反向傳播是計算梯度的過程,也就是損失函數(shù)相對于權(quán)重和偏差因子的一階導(dǎo)數(shù),以及我們希望改進(jìn)的模型參數(shù)的影響。一旦我們計算出這個梯度,它就會告訴我們,如果我們對權(quán)重和參數(shù)做出一定的改變,損失函數(shù)將會改變多少。然后,我們可以利用這個梯度來更新模型中的參數(shù)。我們通過反向傳播的過程來實現(xiàn)這一點,這與我們在前向傳播中所做的正好相反。

      在前向傳播中,我們從左到右直到模型末尾以獲得輸出。而在反向傳播中,我們做的是相反的事情,也就是說,我們正在倒退。我們通過反向傳播來識別梯度,然后利用這些梯度。我們將其作為優(yōu)化技術(shù)的輸入,這可以是隨機(jī)梯度下降(SGD)、梯度下降(GD)、帶動量的 SGD、均方根(RMS)、探針、Adam等。然后,我們使用這種方法逐層更新我們的權(quán)重和偏差因子。

      我們基本上要做的就是獲取梯度,然后采用我們將使用的優(yōu)化算法,例如 Adam,然后我們更新最后一層對應(yīng)的權(quán)重。我們已經(jīng)計算過了。然后我們繼續(xù)之前的下一層。這樣,我們從右邊,從很深層到左邊。因此,使用權(quán)重之間的乘法。通過這種方式,我們可以使用梯度,并更新權(quán)重和偏差因子,這樣我們就可以調(diào)整權(quán)重,然后減少損失函數(shù)。

      這一點非常重要,要向面試官展示你的理解,為什么我們要更新權(quán)重以及為什么我們要更新偏差因子。因為從數(shù)學(xué)上講,梯度顯示了當(dāng)我們將某個權(quán)重或某個偏置因子改變一定量時,損失函數(shù)會發(fā)生多大的變化。這就是我們正在使用的東西,梯度,為了更新之前的權(quán)重參數(shù)和偏差參數(shù),這樣我們就可以減少模型造成的損失。因為這意味著我們離擁有更準(zhǔn)確的模型又近了一步。我們犯的錯誤越小,損失就越小,神經(jīng)網(wǎng)絡(luò)的性能就越好。這就是神經(jīng)網(wǎng)絡(luò)訓(xùn)練背后的想法。

      這個過程一直持續(xù)下去。我們有前向傳播、反向傳播、后向傳播,等等,直到我們達(dá)到某種結(jié)束標(biāo)準(zhǔn),即停止標(biāo)準(zhǔn)。這可能是迭代次數(shù)、紀(jì)元數(shù)或其他一些停止標(biāo)準(zhǔn)。

      10 什么是梯度下降?


      梯度下降是我們在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中使用的一種優(yōu)化算法,目的是最小化模型的損失函數(shù)。這意味著我們正在迭代改進(jìn)模型參數(shù),以最小化成本函數(shù)并最終得到一組模型參數(shù),這將優(yōu)化我們的模型。該模型將產(chǎn)生高度準(zhǔn)確的預(yù)測。

      為了理解梯度下降,我們需要理解什么是損失函數(shù),什么是成本函數(shù),這是損失函數(shù)的另一種說法。我們還需要了解神經(jīng)網(wǎng)絡(luò)的流程、訓(xùn)練過程如何工作,我們已經(jīng)將其視為之前問題的一部分。然后我們需要理解迭代改進(jìn)模型的想法以及我們這樣做的原因。

      讓我們從頭開始。在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,我們首先進(jìn)行前向傳遞,這意味著我們正在迭代計算我們的激活。因此,我們獲取輸入數(shù)據(jù),然后將其與相應(yīng)的權(quán)重參數(shù)和偏差向量一起通過隱藏層傳遞,然后使用激活函數(shù)激活這些神經(jīng)元。然后我們將遍歷這些多個隱藏層,直到我們最終計算出該特定前向傳遞的輸出。

      一旦我們在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的最初迭代中執(zhí)行此操作,我們需要有一組模型參數(shù),我們可以首先開始訓(xùn)練過程。因此,我們需要在模型中初始化這些參數(shù)。我們在神經(jīng)網(wǎng)絡(luò)中特別有兩種類型的模型參數(shù)。正如我們在前面的討論中所提到的,我們需要考慮權(quán)重和偏差因素。那么,如果我們使用這組特定的權(quán)重和偏差向量,我們會犯多少錯誤?這些權(quán)重和偏差是我們可以調(diào)整的參數(shù),以提高模型的準(zhǔn)確性。

      再次提出問題,如果我們使用這個模型參數(shù)的初始版本,也就是權(quán)重和偏差向量,我們計算出的輸出(即 y 帽子),那么我們需要了解根據(jù)這組模型參數(shù)做出的模型有多少誤差。這就是我們所說的損失函數(shù),也被稱為成本函數(shù),它表示我們使用這些權(quán)重和偏差因子進(jìn)行預(yù)測時產(chǎn)生的平均誤差。

      在機(jī)器學(xué)習(xí)中,我們知道有回歸類型的任務(wù)和分類類型的任務(wù)。根據(jù)您要解決的問題,您可以選擇使用哪種損失函數(shù)來衡量模型的表現(xiàn)。神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基本思想是,您希望通過迭代改進(jìn)模型參數(shù),即權(quán)重和偏差向量,最終得到一組最佳和最優(yōu)的權(quán)重和偏差因子。這將使模型產(chǎn)生的誤差最小,這意味著您已經(jīng)找到了一種能夠產(chǎn)生高度準(zhǔn)確預(yù)測的算法和神經(jīng)網(wǎng)絡(luò),這是我們使用神經(jīng)網(wǎng)絡(luò)的整個目標(biāo)。

      因此,如果您正在處理分類類型的問題,損失函數(shù)可以是交叉熵,這通常是處理分類任務(wù)時的首選。但您也可以使用 F1 分?jǐn)?shù),即 F beta 分?jǐn)?shù)。您可以使用精確率、召回率。此外,如果您有回歸類型的任務(wù),您可以使用均方誤差(MSE)、RMSE 或 MAA。這些都是您在每次更改模型參數(shù)時可以用來衡量模型性能的方法。

      在神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程中,我們需要使用一種基本算法,我們稱之為反向傳播。我們使用它來了解當(dāng)我們對參數(shù)進(jìn)行微小更改時,損失函數(shù)會發(fā)生多少變化。這就是我們所說的梯度,它來自數(shù)學(xué)。在反向傳播的過程中,我們計算損失函數(shù)關(guān)于每個模型參數(shù)的一階偏導(dǎo)數(shù),以了解我們可以改變每個參數(shù)多少以減少損失函數(shù)。


      那么,梯度下降是如何執(zhí)行優(yōu)化的呢?在訓(xùn)練過程中,梯度下降在每次傳遞和迭代時都會使用全部的訓(xùn)練數(shù)據(jù)。因此,對于每次參數(shù)的更新,也就是每次更新權(quán)重因子和偏差因子時,它都會使用全部的訓(xùn)練數(shù)據(jù)。這意味著,在一次前向傳遞中,我們使用所有的訓(xùn)練觀察結(jié)果來計算預(yù)測,然后計算損失函數(shù),然后執(zhí)行反向傳播,計算損失函數(shù)相對于每個模型參數(shù)的一階導(dǎo)數(shù),然后使用這些導(dǎo)數(shù)來更新參數(shù)。

      梯度下降執(zhí)行優(yōu)化的方式是,更新模型參數(shù),獲取反向傳播的輸出,這是損失函數(shù)相對于模型參數(shù)的一階偏導(dǎo)數(shù),然后乘以學(xué)習(xí)率或步長,然后從原始模型參數(shù)和當(dāng)前模型參數(shù)中減去該量以獲得模型參數(shù)的更新版本。

      在這個過程中,我們從反向傳播中獲取梯度,然后我們使用這個 dv,它是損失函數(shù)相對于權(quán)重參數(shù)的一階梯度,然后將其乘以步長 eta,然后我們從 v 中減去這個,即當(dāng)前的權(quán)重參數(shù),從而得到新的更新后的權(quán)重參數(shù)。我們也對第二個參數(shù)(即偏差因子)執(zhí)行同樣的操作。

      值得注意的是,我們在這里使用的步長,即學(xué)習(xí)率,也可以被視為一個單獨的主題。我們可以深入探討這背后的細(xì)節(jié)。但現(xiàn)在,將學(xué)習(xí)率視為一個步長,它決定了我們執(zhí)行更新時步長的大小,因為我們確切地知道當(dāng)我們對參數(shù)進(jìn)行一定的更改時,損失函數(shù)將會發(fā)生多大的變化。所以我們知道梯度的大小。首先,我們需要了解我們需要應(yīng)用的更改的內(nèi)容有多少。我們是否希望實現(xiàn)一個大的跳躍,還是我們希望在迭代改進(jìn)模型參數(shù)時做出較小的跳躍?如果我們把學(xué)習(xí)率設(shè)定得很大,那就意味著我們將應(yīng)用更大的變化,這意味著算法在走向全局最優(yōu)時將邁出更大的一步。然而,我們也需要注意,當(dāng)我們進(jìn)行太大的跳躍時,尤其是如果這些跳躍不準(zhǔn)確時,可能會出現(xiàn)問題。


      因此,我們需要確保優(yōu)化這個學(xué)習(xí)參數(shù),這是一個超參數(shù)。我們可以對其進(jìn)行調(diào)整,以找到最佳學(xué)習(xí)率,從而最小化損失函數(shù)并優(yōu)化我們的神經(jīng)網(wǎng)絡(luò)。當(dāng)涉及到梯度下降時,這個算法的質(zhì)量非常高。它被認(rèn)為是一個很好的優(yōu)化器,因為它在執(zhí)行梯度時使用整個訓(xùn)練數(shù)據(jù),因此執(zhí)行反向傳播,然后利用它來更新模型參數(shù)。我們根據(jù)整個訓(xùn)練數(shù)據(jù)得到的梯度代表真實的梯度。所以我們不對其進(jìn)行估計,我們沒有犯錯誤。相反,我們在計算這些梯度時使用整個訓(xùn)練數(shù)據(jù),這意味著我們擁有一個優(yōu)秀的優(yōu)化器,能夠采取準(zhǔn)確的步驟來尋找全局最優(yōu)值。因此,梯度下降也被稱為良好的優(yōu)化器,它能夠以更高的可能性找到損失函數(shù)的全局最優(yōu)值。

      然而,梯度下降的問題是,當(dāng)它每次更新模型參數(shù)時都使用整個訓(xùn)練數(shù)據(jù),這在計算上可能不可行或者非常昂貴,因為訓(xùn)練了大量的觀察,使用整個訓(xùn)練數(shù)據(jù)對模型參數(shù)執(zhí)行一次更新,每次將大量數(shù)據(jù)存儲到內(nèi)存中,對這些大數(shù)據(jù)執(zhí)行這些迭代,這意味著當(dāng)你有非常大的數(shù)據(jù)時,使用此算法可能需要幾個小時才能優(yōu)化。在某些情況下,甚至可能需要幾天或幾年,特別是當(dāng)涉及使用非常大的數(shù)據(jù)或使用非常復(fù)雜的數(shù)據(jù)時。因此,雖然梯度下降被認(rèn)為是一個很好的優(yōu)化器,但在某些情況下,使用它是不可行的,因為它效率不高。

      11 優(yōu)化器在深度學(xué)習(xí)中的作用是什么?

      當(dāng)我們談到訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,我們想要找到什么是超參數(shù)集以及什么是參數(shù)集,我們可以將其用作模型的一部分,這最終會產(chǎn)生最少的錯誤。因為當(dāng)我們的算法產(chǎn)生最小的錯誤時,這意味著我們的預(yù)測很可能是準(zhǔn)確的。當(dāng)將其用于新的未見過的數(shù)據(jù)時,它也會以更好的方式表現(xiàn)。因此,這意味著我們可以依賴該算法,并且可以將其應(yīng)用于不同的應(yīng)用程序,而不必?fù)?dān)心它會產(chǎn)生太大的錯誤。

      為了執(zhí)行此優(yōu)化,我們正在利用不同的優(yōu)化算法。我們剛剛討論的梯度下降就是用于更新模型參數(shù)的算法之一,以盡量減少模型產(chǎn)生的誤差。在這種情況下,費用金額或模型通過最小化損失函數(shù)而產(chǎn)生的損失。因此,這基本上不僅是深度學(xué)習(xí)中優(yōu)化器的主要目標(biāo),而且也是機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型中的優(yōu)化器的主要目標(biāo)。

      我們的想法是,我們將迭代調(diào)整模型參數(shù),在這種情況下,我們模型中的權(quán)重參數(shù)和偏差參數(shù),為了最終得到場景和模型,其中算法產(chǎn)生的錯誤量最小。或者在某些情況下,它可以是目標(biāo)函數(shù)具有應(yīng)該最大化的性質(zhì),意味著我們需要提出一組模型參數(shù),這將使目標(biāo)函數(shù)最大化。所以取決于目標(biāo)的類型,作為算法的一部分,然后您需要決定如何應(yīng)用優(yōu)化算法。您需要最小化或最大化您的目標(biāo)函數(shù)。

      當(dāng)談到優(yōu)化算法時,我們有非常原始的優(yōu)化算法,但多年來也開發(fā)了許多其他梯度下降的變體,以克服梯度下降的一些缺點,但同時,也要嘗試復(fù)制梯度下降的好處。例如,除了梯度下降之外,我們還有隨機(jī)梯度下降(SGD)和小批量梯度下降。當(dāng)引入動量來改進(jìn)SGD等優(yōu)化算法時,我們還有帶動量的SGD。我們擁有基于自適應(yīng)學(xué)習(xí)的優(yōu)化技術(shù),例如 RMSProp、Adam、AdamW 和 AdaGrad。這些都是在深度學(xué)習(xí)中使用的不同類型的優(yōu)化算法,它們的目標(biāo)是優(yōu)化算法。因此,我們需要記住的另一個重要方面是,優(yōu)化算法的目標(biāo)是迭代地改進(jìn)模型參數(shù),以便我們最終找到全局最優(yōu)值。

      在解釋梯度下降和其他優(yōu)化器的方差時,我將繼續(xù)使用“全局最優(yōu)”這個術(shù)語。全局最優(yōu)是指我們用來衡量模型誤差的目標(biāo)函數(shù)的實際最小值或?qū)嶋H最大值。我們需要注意的是,我們可能會遇到局部最小值或局部最大值,而不是全局最小值或全局最大值。這意味著,在一個由許多值組成的區(qū)域中,可能會出現(xiàn)錯誤。在某些情況下,優(yōu)化算法可能會誤導(dǎo)我們,使我們找到局部最小值或局部最大值,而不是全局最小值或全局最大值。

      當(dāng)優(yōu)化算法正在移動以了解如何改進(jìn)其方向以識別最小值時,它可能會發(fā)現(xiàn),這就是我們正在尋找的最小值。因此,算法會收斂,并決定這是我們需要使用的一組超參數(shù)和參數(shù)以優(yōu)化我們的模型。但實際上,它可能混淆了全局最小值和局部最小值,并錯誤地宣稱算法已經(jīng)收斂并找到了實際的最小值。然而,這實際上是局部最小值,而不是全局最小值。局部最小值可能看起來像是損失函數(shù)的最小值,但實際上它只是一個值,它比周圍的值小得多,但并不是整組值中最小的一個。

      因此,我們的目標(biāo)是找到全局最小值而不是局部最小值。理想情況下,我們希望最終實現(xiàn)收斂,并找到所有權(quán)重和偏差因素的模型狀態(tài),它們導(dǎo)致?lián)p失函數(shù)的實際最小值,而不僅僅是對于特定一組值來說似乎是最小值的值。

      12 什么是反向傳播以及為什么它在深度學(xué)習(xí)中很重要?

      反向傳播是神經(jīng)網(wǎng)絡(luò)訓(xùn)練的基本組成部分。它可以幫助我們從模型在每次迭代中所犯的錯誤中學(xué)習(xí),以便理解模型的某些參數(shù)(例如權(quán)重因子和偏差因子)如何變化,從而導(dǎo)致?lián)p失函數(shù)發(fā)生變化。

      反向傳播算法是整個訓(xùn)練過程的中間部分。我們首先執(zhí)行前向傳播,將輸入數(shù)據(jù)輸入我們的網(wǎng)絡(luò)。然后基于這些轉(zhuǎn)換,我們最終得到最終的輸出層,然后我們就可以執(zhí)行我們的預(yù)測。我們計算預(yù)測值,一旦計算出預(yù)測值,我們就可以計算該特定迭代的損失函數(shù)。一旦我們有了損失函數(shù),我們就可以理解我們需要如何改變我們的權(quán)重和偏差因子,以便我們可以減少模型在當(dāng)前迭代中犯的錯誤。

      模型所產(chǎn)生的誤差,即平均誤差,我們通過損失函數(shù)來測量。下一步是該算法的一部分,就是為了獲得當(dāng)我們對權(quán)重參數(shù)和偏差參數(shù)進(jìn)行微小改變時,損失函數(shù)的具體變化量。這就是我們所說的梯度。計算這些梯度的整個過程稱為反向傳播。

      反向傳播基本上是指計算損失函數(shù)相對于我們每個模型參數(shù)(包括各種權(quán)重參數(shù)和偏差參數(shù))的一階偏導(dǎo)數(shù)的過程。這種反向傳播是基礎(chǔ),因為它有助于算法理解改變每個不同的權(quán)重參數(shù)會導(dǎo)致?lián)p失函數(shù)中的多少變化。這是我們需要將這些信息提供給優(yōu)化算法(例如 GADM)的方式。為了使優(yōu)化算法能夠更新模型參數(shù),我們需要利用反向傳播的輸出,這是梯度下降(GD)、隨機(jī)梯度下降(SGD)、Adam等優(yōu)化算法的輸入。以我們之前研究過的一個具體示例來看,這是一個非常簡單的神經(jīng)網(wǎng)絡(luò),它有少量的隱藏層和隱藏單元,只有幾個輸入信號。

      在前向傳播的過程中,我們執(zhí)行所有轉(zhuǎn)換,激活神經(jīng)元,然后得到預(yù)測的響應(yīng)變量,即y帽。一旦我們得到了y帽,我們也會緩存我們的最終結(jié)果,即z分?jǐn)?shù)值。z分?jǐn)?shù)等于輸入x乘以權(quán)重參數(shù),再加上偏置參數(shù)。有了這個之后,我們可以應(yīng)用各種微分規(guī)則,特別是鏈?zhǔn)椒▌t,同時我們也可以利用求和的微分規(guī)則和應(yīng)用于常數(shù)的微分規(guī)則,以更新?lián)p失函數(shù)相對于激活的梯度,即dA。

      然后我們可以利用dA來獲得損失函數(shù)相對于z的梯度。進(jìn)一步,我們可以利用dA和dZ來獲得損失函數(shù)相對于權(quán)重的梯度,即dV。最后,以類似的方式,我們可以利用dA和dZ來獲得損失函數(shù)相對于偏置的梯度,即我們的偏差因子。


      重要的是要記住,為了更新模型參數(shù),我們需要知道損失函數(shù)相對于權(quán)重參數(shù)dV的梯度,以及偏置因子的梯度,這是損失函數(shù)的一階偏導(dǎo)數(shù)。但為了計算dV和dB,我們還需要首先計算激活的梯度和z分?jǐn)?shù)的梯度,因為權(quán)重因素和偏差因素是z分?jǐn)?shù)的一部分。所以我們應(yīng)用了一系列變換,這意味著當(dāng)我們執(zhí)行微分時,我們還需要執(zhí)行這一微分鏈,以便能夠首先獲得權(quán)重的梯度和偏置因子的梯度。

      具體來說,z等于權(quán)重矩陣的轉(zhuǎn)置乘以激活矩陣,然后我們添加偏差因素,形成了我們的z。為了計算損失函數(shù)相對于權(quán)重的梯度,即dV,我們首先需要對損失函數(shù)J求偏導(dǎo)數(shù),關(guān)于z分?jǐn)?shù),然后我們需要乘以z分?jǐn)?shù)相對于權(quán)重矩陣的偏導(dǎo)數(shù),以便能夠計算這個偏導(dǎo)數(shù)dV。這簡單地等于dz乘以激活矩陣的轉(zhuǎn)置。我們也在執(zhí)行類似的操作來獲取偏差因子的梯度。


      我不會過多討論這些梯度的數(shù)學(xué)推導(dǎo)的細(xì)節(jié),因為您需要深入研究這些不同的偏導(dǎo)數(shù)。當(dāng)涉及到使用鏈?zhǔn)揭?guī)則時,我們還需要刷新我們的記憶,當(dāng)涉及到值的總和時,當(dāng)涉及到常數(shù)與目標(biāo)值相乘時,微分規(guī)則。當(dāng)您學(xué)習(xí)深度學(xué)習(xí)主題時,我肯定會建議您刷新這些內(nèi)容。但為了留在面試問題的范圍內(nèi),我只是想分享這個只是為了刷新你的記憶,在每次我們嘗試優(yōu)化算法時,我們都在執(zhí)行反向傳播。為了計算所有這些不同的梯度,我們首先需要計算相對于權(quán)重的梯度和相對于偏差因子的梯度。此外,我們還需要計算關(guān)于激活的梯度和關(guān)于z分?jǐn)?shù)的梯度。然后,我們使用這些計算結(jié)果來計算權(quán)重的梯度和偏置因子的梯度。最后,反向傳播就是計算損失函數(shù)相對于權(quán)重和偏置因子的偏導(dǎo)數(shù)的過程,以便將這些結(jié)果作為輸入提供給我們的優(yōu)化算法。這實際上引出了我們的下一個問題。

      13 反向傳播與梯度下降有何不同?

      在深度學(xué)習(xí)面試中,您可能會遇到有關(guān)反向傳播和梯度下降之間差異的問題。這通常是一個棘手的問題,因為描述訓(xùn)練過程并不總是直觀的。我們首先執(zhí)行前向傳播,然后計算損失函數(shù),以了解模型的訓(xùn)練效果以及平均誤差量。接著,我們計算梯度以了解當(dāng)我們改變各種參數(shù)時,損失函數(shù)會發(fā)生多大的變化。然后我們使用這些信息來不斷更新模型參數(shù),直到前面的層,以便最終得到一個表現(xiàn)更好的模型。這個過程是通過從較深層到較早的層進(jìn)行的。


      那么梯度下降與反向傳播有何不同?當(dāng)涉及到反向傳播和梯度下降時,具體有什么區(qū)別?這個問題的答案其實很簡單。在我看來,這只是一個欺騙受訪者的問題。反向傳播是計算梯度的實際過程,了解當(dāng)我們改變模型參數(shù)時損失函數(shù)有多大變化。然后反向傳播的輸出簡單地用作梯度下降或任何其他優(yōu)化算法的輸入,以便更新模型參數(shù)。所以梯度下降只是使用反向傳播的輸出作為輸入,因為它采用計算出的梯度來自反向傳播作為輸入,以便更新模型參數(shù)。所以反向傳播發(fā)生在中間,一旦我們完成前傳。然后反向傳播就完成了。然后我們執(zhí)行向后傳遞。因此,我們使用反向傳播,然后不斷迭代地將模型參數(shù)從較深層更新到較早層。這就是優(yōu)化算法所做的事情。

      14 描述什么是梯度消失問題及其對神經(jīng)網(wǎng)絡(luò)的影響

      當(dāng)網(wǎng)絡(luò)的梯度(即損失函數(shù))相對于模型參數(shù)(例如權(quán)重和偏差參數(shù))時,就會發(fā)生梯度消失,它們變得很小。在某些情況下,它們變得完全接近于零,這意味著它們開始消失,因為它們通過非常深的層傳播回較早的層。這種梯度消失的結(jié)果是網(wǎng)絡(luò)不再能夠有效地學(xué)習(xí)數(shù)據(jù)中的依賴關(guān)系。并且模型不再能夠有效地更新模型,這意味著算法最終不會被優(yōu)化。我們最終將得到一個無法也無法學(xué)習(xí)數(shù)據(jù)中實際依賴關(guān)系的模型。

      當(dāng)然,這是我們想要避免的事情。我們希望擁有適量的梯度,將其用作梯度下降等優(yōu)化算法的一部分,以獲得模型參數(shù),然后不斷迭代地執(zhí)行此操作,這樣我們最終將最小化我們的損失函數(shù)。我們的模型將處于提供高度準(zhǔn)確預(yù)測的狀態(tài)。那么我們?nèi)绾谓鉀Q梯度消失問題呢?其原因何在?

      作為神經(jīng)網(wǎng)絡(luò)訓(xùn)練的一部分,我們看到在每次訓(xùn)練迭代中,例如,作為梯度下降算法的一部分,我們將使用整個訓(xùn)練數(shù)據(jù)訓(xùn)練我們的網(wǎng)絡(luò),然后從最早期的層到最后的輸出層執(zhí)行這些不同的轉(zhuǎn)換,獲取激活值,然后將其與權(quán)重指標(biāo)相乘,然后添加偏差參數(shù),以這種方式計算z分?jǐn)?shù),然后應(yīng)用激活函數(shù)來激活這些神經(jīng)元。然后這一切完成之后,在該特定的隱藏層中,網(wǎng)絡(luò)能夠?qū)W習(xí)數(shù)據(jù)中的不同依賴關(guān)系,然后學(xué)習(xí)結(jié)構(gòu),然后進(jìn)入下一層,然后進(jìn)入下一層,直到到達(dá)輸出層。然后當(dāng)我們有了輸出層時,我們就可以計算我們的預(yù)測。因此,我們首先計算預(yù)測值 y hat,然后將其與真實標(biāo)簽或真實值進(jìn)行比較。接著,我們需要了解損失函數(shù)的性質(zhì),以及模型在使用這組參數(shù)時產(chǎn)生的平均誤差是多少。然后,我們執(zhí)行反向傳播來計算梯度,并將其提供給優(yōu)化算法,以便更新模型參數(shù)。優(yōu)化算法的工作方式與前向路徑相反。它計算并獲取梯度,計算相應(yīng)的更新,然后更新權(quán)重以及從深層到較早層的偏差因素。

      問題在于,我們正在執(zhí)行所有這些轉(zhuǎn)換,并且每次都將這些值相乘。這意味著什么呢?在某些情況下,特別是當(dāng)我們有深層網(wǎng)絡(luò),有很多隱藏層時,當(dāng)網(wǎng)絡(luò)從深層、中間層、然后更早的層接近時,許多這些權(quán)重相乘之后,這些梯度開始變得非常接近于零。當(dāng)梯度變得非常接近零時,這意味著我們除了更新權(quán)重之外別無他法,并更新我們的偏差參數(shù)。當(dāng)我們無法再更新模型中的權(quán)重時,這意味著網(wǎng)絡(luò)不再能夠正確學(xué)習(xí),尤其是當(dāng)梯度消失時從較早的層學(xué)習(xí)。

      這就是一個問題,因為我們希望我們的模型能夠不斷學(xué)習(xí)并不斷更新這些權(quán)重,這樣我們最終會得到權(quán)重和偏差因子的最佳參數(shù)集,以最小化損失函數(shù),然后提供高度準(zhǔn)確的預(yù)測。因此,理想情況下,我們希望確保這些梯度不會消失。所以我們要解決梯度消失問題,我們的網(wǎng)絡(luò)能夠正確學(xué)習(xí)并理解數(shù)據(jù)中的這些依賴關(guān)系,無論是在深層還是在較早的層中都是獨立的。

      因此,在描述這個問題時,請嘗試關(guān)注權(quán)重,因為當(dāng)權(quán)重的梯度開始消失時,這是最大的挑戰(zhàn),特別是對于深度神經(jīng)網(wǎng)絡(luò)中的早期層。這是我們想要避免的,因為模型會出現(xiàn)梯度消失問題,無法有效學(xué)習(xí)。作為答案的一部分,您可以提到的另一件重要的事情是,某些架構(gòu)本質(zhì)上都受到這個問題的影響。尤其是 RNN、遞歸神經(jīng)網(wǎng)絡(luò),以及 LSTM、GRU,它們本質(zhì)上都是深刻的,因為不像人工神經(jīng)網(wǎng)絡(luò)這樣原始的神經(jīng)網(wǎng)絡(luò)具有單個輸入層,它們提供輸入,然后神經(jīng)元被激活并提供單一輸出。和隱藏層,它們并不相互關(guān)聯(lián)。所以它們不像 RNN 那樣接受輸入,然后為每個輸入提供相應(yīng)的輸出。然后這個隱藏層,然后隱藏單元將被用作下一步和下一步的一部分。所以它們不像 RNN 那樣基于順序,那么它們比 RNN 更不容易出現(xiàn)梯度消失問題。

      由于 RNN 是另一種序列類型的神經(jīng)網(wǎng)絡(luò),因此它們本質(zhì)上很深,這意味著它們具有多層,基于他們擁有的時間步長,這使得這些算法更容易出現(xiàn)梯度消失問題。

      15 各種激活函數(shù)和梯度消失問題之間有什么聯(lián)系?

      因此,梯度消失問題與激活函數(shù)的選擇高度相關(guān),因為某些激活函數(shù)由于其固有的特性,會自動導(dǎo)致梯度消失問題。還有一些已知不會導(dǎo)致梯度消失問題的激活函數(shù)。當(dāng)然,我們希望了解這樣的激活函數(shù),然后當(dāng)我們意識到可能存在梯度消失問題時就不要使用它們。所以在這里我傾向于區(qū)分 sigmoid 激活函數(shù)和坦克激活函數(shù)與 ReLU,所以整流器線性單元,和 Leaky-ReLU 激活函數(shù)。其原因在于它們的固有屬性,即我們所說的飽和度。這意味著,例如,在 sigmoid 激活函數(shù)的情況下,當(dāng)激活 fz 等于 1 加 e 次方減 z 時,這意味著只要 z 或 z 分?jǐn)?shù)是一個非常大的負(fù)數(shù),比如說負(fù) 1000,然后進(jìn)行相應(yīng)的激活。然后,fz將非常接近零,正如您所看到的,這被認(rèn)為是sigmoid函數(shù)的最小值。當(dāng)z為本例中的z分?jǐn)?shù)時,x將是非常大的正數(shù),因此它將在1000左右。接下來是相應(yīng)的函數(shù),即激活函數(shù),其值約為1,非常接近1。正如您所看到的,在達(dá)到x的某個水平時,對于正值,無論x的大小如何,相應(yīng)的激活值將非常接近1。而到了某個時候,這個領(lǐng)域甚至不會發(fā)生任何變化。

      這就是我們所說的飽和度,意味著當(dāng)我們有非常大的負(fù)數(shù)或非常大的正數(shù)時,相應(yīng)的激活就不再有任何變化。我們最終將接近該函數(shù)的最大值或最小值。在這種情況下,對于非常大的正x,y將約為1,對于非常大的負(fù)數(shù),相應(yīng)的激活值將在0左右。因此,在sigmoid激活的情況下,我們說sigmoid激活函數(shù)遭遇飽和,并且容易造成梯度消失問題。所以它會導(dǎo)致梯度消失,特別是當(dāng)我們有非常大的z平方值時。所以它可以是大正值,也可以是大負(fù)值。

      實際上,同樣的情況也適用于tang激活函數(shù),因為就像你在這里看到的那樣,tang激活函數(shù)和sigmoid激活函數(shù)一樣,都是這種s形的激活函數(shù)。與sigmoid函數(shù)一樣,tang也存在飽和問題。在這里,你可以看到當(dāng)我們有x,這是一個非常大的正數(shù),比方說1,000,那么相應(yīng)的激活值將在1左右。如果我們改變這個x并將其設(shè)為2,000或3,000,同樣的情況也會成立。

      無論x這個大數(shù)增加多少,相應(yīng)的激活將是相同的。它將接近1,這是該函數(shù)的最大值。對于該激活函數(shù)的非常大的負(fù)數(shù)也是如此。假設(shè)x約為負(fù)1,000,那么相應(yīng)的激活值將在負(fù)1左右。但當(dāng)x約為負(fù)2,000或負(fù)10k時,同樣成立。

      所以這意味著在tang激活函數(shù)的情況下,就像在sigmoid激活函數(shù)的情況下一樣,當(dāng)我們有非常大的正值或非常大的負(fù)值時,我們想看看使用這個激活函數(shù)可以激活它們多少,那么相應(yīng)的激活值就在該函數(shù)的極值附近。所以在tang函數(shù)的情況下負(fù)1和1,以及sigmoid激活函數(shù)情況下的0和1。因此,就像sigmoid激活函數(shù)的情況一樣,我們說tang激活函數(shù)遇到了飽和。這意味著tang激活函數(shù)本質(zhì)上會導(dǎo)致梯度消失問題,因為它導(dǎo)致梯度消失。這是我們想要避免的事情。

      所以我們要記住的一件事是,當(dāng)涉及到輸出層時,sigmoid激活函數(shù)和tang激活函數(shù)非常有用,因為它們在某些范圍之間轉(zhuǎn)換值時具有這些很好的屬性。就像sigmoid函數(shù)一樣,它會轉(zhuǎn)換值,0到1之間的任何值,當(dāng)我們想要以概率形式輸出時,這非常有用。問題的分類非常適合。然而,當(dāng)我們談?wù)搶⒓せ詈瘮?shù)用于隱藏層時,這是我們想要避免的。因此,我建議使用 Sigmoid 激活函數(shù)或雙曲 Tang 激活函數(shù)于輸出層,但不要將其用于隱藏層,因為它們?nèi)菀壮霈F(xiàn)梯度消失問題。

      我們今天要討論的下一組激活函數(shù)是修正線性單元(ReLU)和泄漏修正線性單元(Leaky ReLU)。與 Sigmoid 激活函數(shù)和 Tang 激活函數(shù)不同,ReLU 或 Leaky ReLU 不會飽和,這意味著它們不會導(dǎo)致梯度消失問題,非常適合作為隱藏層的一部分。

      您可以看到,當(dāng)我們?nèi)》浅4蟮恼?x 值時,相應(yīng)的激活會發(fā)生變化。當(dāng)我們從 1000 到 2000,從 2000 到 10k,相應(yīng)的激活量也會有很大的變化,這意味著激活函數(shù)不會導(dǎo)致梯度非常接近于零,這就是我們所說的梯度消失。因此,ReLU 不會導(dǎo)致梯度消失問題,這是很棒的事情,特別是當(dāng)我們將它們用作隱藏層的一部分時。

      這同樣適用于 Leaky ReLU,我們可以在這里看到這一點,因為兩者非常相似。唯一的區(qū)別是,Leaky ReLU 在某種程度上確實考慮了負(fù)神經(jīng)元的激活,這意味著當(dāng) x 為負(fù)值時,從負(fù)無窮大到零,您可以看到相應(yīng)的激活不是零,而是等于 0.01。因此,與 Sigmoid 和 Tang 激活函數(shù)不同,這兩個函數(shù)沒有飽和,它們的激活值會改變,并且不會接近函數(shù)的同一個極值。當(dāng)我們提供非常大的正值或非常大的負(fù)值作為輸入時,這意味著它們非常適合用作隱藏層的一部分,使網(wǎng)絡(luò)能夠持續(xù)有效地學(xué)習(xí)數(shù)據(jù)中隱藏的依賴關(guān)系。因此,我們建議使用 ReLU 和 Leaky ReLU 作為隱藏層的一部分來激活這些神經(jīng)元,并且每當(dāng)接近輸出層時,對于輸出層,請使用 Sigmoid 函數(shù)或 Tang 激活函數(shù)。

      16 隱藏層中有一個神經(jīng)元總是會導(dǎo)致反向傳播產(chǎn)生很大的誤差,可能的原因是什么?

      作為神經(jīng)網(wǎng)絡(luò)反向傳播的一部分,可能有很多原因?qū)е略撎囟ㄉ窠?jīng)元或某些神經(jīng)元始終產(chǎn)生較大誤差。第一個可能的原因是權(quán)重初始化不當(dāng)。這意味著在開始訓(xùn)練過程時,我們需要初始化權(quán)重參數(shù)和偏差參數(shù),以便網(wǎng)絡(luò)可以采用這些初始值,然后執(zhí)行前向傳遞計算,然后將其用作梯度下降(GD)、隨機(jī)梯度下降(SGD)等優(yōu)化算法的輸入,以便迭代更新這些權(quán)重參數(shù)。但是,如果我們沒有以正確的方式初始化權(quán)重,這意味著我們沒有使用正確的分布從中隨機(jī)采樣,或者我們只是為此權(quán)重和偏差參數(shù)提供了錯誤或不正確的值,這將從一開始就改變那些特定神經(jīng)元的學(xué)習(xí)過程。

      如果我們從一開始就以不正確的方式進(jìn)行學(xué)習(xí)過程,我們正在扭曲那些學(xué)習(xí)過程,在每次迭代中,這意味著下一次迭代將基于從第一次傳遞錯誤開始的第一次迭代,它也會以錯誤的方式完成。然后下一次、下一次,這個過程每次都會繼續(xù)下去,在不正確的學(xué)習(xí)中,并在誤差較大時作為損失的一部分進(jìn)行計算然后反向傳播。

      另一個可能的原因是梯度消失或爆炸。如果梯度變得非常小,并且神經(jīng)元的權(quán)重,特別是在深層網(wǎng)絡(luò)中,不再開始更新那些不同的參數(shù),這意味著,我們可能會在特定神經(jīng)元中持續(xù)犯大錯誤,因為我們無法有效地學(xué)習(xí)模型中的依賴關(guān)系。這個特定神經(jīng)元將無法被正確激活,相應(yīng)的權(quán)重也無法得到更新,從而無法提高對這些特定神經(jīng)元預(yù)測的準(zhǔn)確性。同樣,這也適用于梯度爆炸問題。如果我們進(jìn)行過多的更新,而神經(jīng)元沒有被正確激活,那么相應(yīng)的權(quán)重也無法得到正確的更新,這將導(dǎo)致我們在這些神經(jīng)元上持續(xù)犯大錯誤。

      另一個可能導(dǎo)致這種情況的原因是學(xué)習(xí)率不適當(dāng)。如果我們的學(xué)習(xí)率過高或過低,我們可能會在訓(xùn)練過程中超出或低于最佳值,因此無法充分更新權(quán)重參數(shù)和偏差參數(shù)。因此,優(yōu)化模型中的這些超參數(shù)非常重要,以使模型能夠持續(xù)更新并改進(jìn)參數(shù),從而改善學(xué)習(xí)過程。

      另一個可能的原因是激活函數(shù)選擇不當(dāng),因為激活函數(shù)可以顯著影響學(xué)習(xí)過程。我們激活神經(jīng)元的方式將是一個決定性因素,它決定了神經(jīng)網(wǎng)絡(luò)是否能正確學(xué)習(xí)數(shù)據(jù)中的依賴關(guān)系,以及權(quán)重參數(shù)和偏差參數(shù)需要如何更新,以便優(yōu)化學(xué)習(xí)。

      17 你對計算圖的理解是什么



      計算圖是一種可視化復(fù)雜操作的方法,我們在訓(xùn)練模型的過程中使用它,作為各種類型的優(yōu)化過程的一部分。它是展示我們從非常簡單的變量或?qū)ο箝_始,應(yīng)用各種變換,然后得到非常復(fù)雜函數(shù)的好方法。我們使用計算圖的一種方式是可視化神經(jīng)網(wǎng)絡(luò)。

      在計算圖中,我們通常有代表對象或變量的節(jié)點,然后邊通常代表我們正在應(yīng)用的操作或轉(zhuǎn)換的類型。在這種情況下,你可以看到我們有輸入信號 x1、x2、x3,它們只是變量,這些是初始層的節(jié)點。然后我們展示我們正在應(yīng)用的邊緣,這些箭頭進(jìn)入我們的第一個隱藏層。

      在這個隱藏層中,你可以看到我們有每個隱藏單元的z分?jǐn)?shù),然后我們就有相應(yīng)的激活。所以z1, a1對應(yīng)于第一個隱藏層的第一個隱藏單元。然后我們就有了z2、a2,然后是z3、a3,z4、a4,因為我們有四個不同的隱藏單元作為單個隱藏層的一部分。然后我們應(yīng)用另一個變換,當(dāng)我們從第一個隱藏層到輸出層時。

      你可以看到,我們有這些箭頭展示了我們?nèi)绾螐膞1、x2、x3輸入數(shù)據(jù)到z分?jǐn)?shù),然后我們對z分?jǐn)?shù)應(yīng)用激活來計算我們的激活分?jǐn)?shù)。然后我們使用這個激活分?jǐn)?shù)從最后一層開始,為了繼續(xù)我們的預(yù)測,即y帽子。你可以看到我們正在使用最終輸出層來計算y帽。

      我們正在做的事情是為了可視化首先計算基于xi的z分?jǐn)?shù)的過程,輸入數(shù)據(jù)乘以權(quán)重矩陣w加b的轉(zhuǎn)置。然后y-hat就等于ai等于sigma zi。我們在這里所做的是計算z分?jǐn)?shù),然后在z分?jǐn)?shù)之后我們應(yīng)用這個西格瑪函數(shù),這是我們得到的激活函數(shù)。首先,我們將激活函數(shù)應(yīng)用于 z 分?jǐn)?shù),然后計算并獲取激活分?jǐn)?shù)。接著,我們使用這個激活分?jǐn)?shù)來計算我們的預(yù)測值 yi-hat。一旦我們得到了 yi-hat,我們將其與真實值 yi 進(jìn)行比較,然后計算損失,即模型產(chǎn)生的誤差量。

      你可以看到我們正在采取的步驟。當(dāng)我們的神經(jīng)網(wǎng)絡(luò)有更多的隱藏層時,不僅僅是一層,而是三層、四層或數(shù)十億層,我們最終將很難理解這些不同的步驟,更不用說將其可視化或展示我們有多少層了。每次我們都會使用不同的指數(shù),執(zhí)行相同的轉(zhuǎn)換,從輸入數(shù)據(jù)到 z 分?jǐn)?shù),然后到激活函數(shù),從激活函數(shù)之后我們得到激活分?jǐn)?shù)。

      因此,使用計算圖來展示所有這些計算會更簡單。我們不再使用所有這些復(fù)雜的變換和矩陣,而是使用計算圖來簡化過程并將其可視化,展示我們?nèi)绾螐妮斎胱兞砍霭l(fā),應(yīng)用所有這些轉(zhuǎn)換,然后得到預(yù)測。

      然而,通過展示故事的另一面,計算圖可能會變得更加復(fù)雜。我們首先獲得預(yù)測,然后應(yīng)用反向傳播,然后從反向傳播到實際的梯度計算,然后更新參數(shù)。但為了簡單起見,我想我會用一個簡單的神經(jīng)網(wǎng)絡(luò)來展示這一點。計算圖背后的想法不僅僅是展示前向傳遞,還展示整個網(wǎng)絡(luò),包括反向傳播,即梯度的計算。

      18 談?wù)勌荻炔眉艏捌鋵ι窠?jīng)網(wǎng)絡(luò)的影響

      我們剛剛看到了殘差連接,特別是對于深度神經(jīng)網(wǎng)絡(luò),特別是像 RNN、LSTM 這樣的情況,當(dāng)我們具有太多層的順序性質(zhì)時,我們可能會遇到梯度消失的問題,而殘差連接可以幫助解決這個問題。

      現(xiàn)在,梯度裁剪正在解決相反的問題,即梯度爆炸問題。每當(dāng)我們有某些深度神經(jīng)網(wǎng)絡(luò),如 RNN、LSTM,我們每次都使用這些變換,并且我們使用累積性質(zhì)并將所有這些權(quán)重相互相乘。通過這個過程,我們正在使用之前的隱藏狀態(tài)更新新的隱藏狀態(tài),因此下一個隱藏狀態(tài)和下一個隱藏狀態(tài)。這也意味著當(dāng)我們遍歷這些層時,在優(yōu)化過程中,反向傳播完成后,我們需要執(zhí)行所有這些轉(zhuǎn)換。當(dāng)我們完成前面的幾層時,我們可能會遇到梯度爆炸的問題。

      梯度爆炸意味著我們的神經(jīng)網(wǎng)絡(luò)不穩(wěn)定,這也意味著權(quán)重的更新會太大,這將導(dǎo)致神經(jīng)網(wǎng)絡(luò)表現(xiàn)不佳且訓(xùn)練不當(dāng)。為了避免所有這些問題,我們解決梯度爆炸問題的方法是使用梯度裁剪。梯度裁剪的作用是基本上裁剪梯度在一定水平上。所以有一個閾值,這是我們用于梯度裁剪的參數(shù),每當(dāng)梯度變得太大,高于閾值時,我們就會裁剪該梯度,以確保該梯度不會太大,并且我們不會過度更新權(quán)重參數(shù)或偏差因素。

      通過這種方式,我們正在穩(wěn)定我們的神經(jīng)網(wǎng)絡(luò),這對于 LSTM、RNN、GRU 等架構(gòu)尤其重要,其具有太多層的數(shù)據(jù)的順序性質(zhì)。通過這種方式,我們將確保我們不會出現(xiàn)這些不穩(wěn)定的跳躍,在我們的神經(jīng)網(wǎng)絡(luò)優(yōu)化過程中,我們最終將得到一個能夠正確學(xué)習(xí)相互依賴關(guān)系的穩(wěn)定網(wǎng)絡(luò)。

      19 什么是交叉熵?fù)p失函數(shù)

      交叉熵,也稱為對數(shù)損失,它衡量分類模型的性能。具有概率輸出的值介于0和1之間。因此,每當(dāng)你處理分類問題時,例如,你可能想要對圖像進(jìn)行分類,判斷它是否是貓,或者是狗,或者是房子,而房子又可以進(jìn)一步分類為新房子和舊房子。在所有這些情況下,當(dāng)你擁有這些標(biāo)簽并且想要模型提供一個概率,即每個觀察到的類別的概率,你就會得到模型的輸出。例如,房子A有50%的概率被分類為新的,50%的概率被分類為舊的,或者一張圖片有70%的概率是貓,30%的概率是狗。在處理這類問題時,你可以應(yīng)用交叉熵作為損失函數(shù)。


      交叉熵被測量為這個負(fù)值:y log p 加上 (1 - y) log (1 - p) 的總和,其中y是實際標(biāo)簽。例如,在二元分類中,這可以是1和0,而p是預(yù)測概率。所以在這種情況下,p將是0到1之間的值,而y就是對應(yīng)的標(biāo)簽。因此,當(dāng)你處理貓圖像時,假設(shè)標(biāo)簽為0;當(dāng)你處理狗圖像時,假設(shè)標(biāo)簽為1。這個公式背后的數(shù)學(xué)解釋超出了這個問題的范圍,所以我不會討論這個細(xì)節(jié)。但如果你對此感興趣,你可以查看邏輯回歸模型,這是我在機(jī)器學(xué)習(xí)基礎(chǔ)手冊中的一部分內(nèi)容。

      我們?nèi)绾螐膽?yīng)用對數(shù)函數(shù)后將乘積求和,這樣我們就得到了對數(shù)似然函數(shù),然后我們將它與負(fù)號相乘,因為這是負(fù)數(shù)。假設(shè)我們希望理想地最小化損失函數(shù),則計算似然函數(shù)。這與似然函數(shù)相反。在這種情況下,這表明我們最終會得到一個值,這表明模型在分類方面的表現(xiàn)如何。因此,交叉熵將告訴我們模型在將觀察結(jié)果分類到某個類別方面是否做得很好。

      20 為什么交叉熵優(yōu)先作為多類分類問題的代價函數(shù)

      當(dāng)我們處理多類分類時,我們可以應(yīng)用什么樣的損失函數(shù)呢?在處理多類分類時,我們可以使用多類交叉熵,這通常被稱為softmax函數(shù)。softmax損失函數(shù)是衡量模型性能的好方法,尤其是當(dāng)你想要將觀察結(jié)果分類為多個類別之一時。這意味著我們不再處理二元分類,而是處理多類分類。例如,當(dāng)我們想要將圖像分類為夏季主題,春季主題,或冬季主題時。鑒于我們有三個不同的可能類別,我們需要有一種適當(dāng)?shù)姆椒▉砗饬繄?zhí)行此分類的模型的性能,而softmax正是這樣做的。

      因此,我們不會將配對觀測值設(shè)置為不同的值,這會說明該觀測值屬于第一類或第二類的概率是多少,而是我們將擁有一個更大的向量,取決于你將要處理的類別數(shù)量。在這個具體示例中,我們最終將得到三個不同的值,因此一個向量具有三個不同的條目,說明這張圖片來自冬季主題的概率是多少,來自夏季主題的概率是多少,以及來自春季主題的概率是多少。然后我們將得到具有相應(yīng)概率的所有類別。在交叉熵的情況下,當(dāng)我們的softmax值很小時,這意味著該模型在將觀察結(jié)果分類為不同類別方面表現(xiàn)出色,我們得到的類別分離度也很好。

      需要記住的一點是,當(dāng)我們比較交叉熵和多類交叉熵或softmax時,這些都是在我們有超過兩個類別的情況下使用的。您可能還記得在論文“Attention is All You Need”中介紹的Transformer模型,其中作為Transformer架構(gòu)的一部分,還應(yīng)用了softmax層,作為多類分類的一部分。因此,當(dāng)我們計算激活分?jǐn)?shù)時,最后,當(dāng)我們想要將我們的輸出轉(zhuǎn)換為一個有意義的值并測量Transformer的性能時,我們會使用這些方法。

      21 什么是隨機(jī)梯度下降(SGD)?為什么我們要用它來訓(xùn)練神經(jīng)網(wǎng)絡(luò)?

      SGD,就像梯度下降(GD)一樣,是深度學(xué)習(xí)中使用的一種優(yōu)化算法,其目的是優(yōu)化深度學(xué)習(xí)模型的性能,并找到一組可以最小化損失函數(shù)的模型參數(shù)。通過迭代改進(jìn)模型的參數(shù),包括權(quán)重參數(shù)和偏差參數(shù)。SGD的執(zhí)行方式是通過使用隨機(jī)選擇的單個或幾個訓(xùn)練觀察值來更新模型參數(shù)。這與GD不同,GD在一次迭代中使用了整個訓(xùn)練數(shù)據(jù)來更新模型參數(shù),而SGD僅使用單個或幾個隨機(jī)選擇的訓(xùn)練觀察來執(zhí)行更新。

      這基本上意味著,SGD在每次訓(xùn)練觀察中進(jìn)行模型參數(shù)的更新,而不是使用整個訓(xùn)練數(shù)據(jù)進(jìn)行每次更新。這個隨機(jī)成分在算法中也很重要,因此該算法中的隨機(jī)元素也被稱為隨機(jī)梯度下降。因為SGD是從訓(xùn)練觀察中隨機(jī)采樣單個或幾個訓(xùn)練數(shù)據(jù)點,然后使用它來執(zhí)行前向傳遞。它計算z分?jǐn)?shù),然后在應(yīng)用激活函數(shù)后計算激活分?jǐn)?shù),然后到達(dá)前向傳播和網(wǎng)絡(luò)的末端,計算輸出,即y帽,然后計算損失。然后我們僅對這幾個數(shù)據(jù)點執(zhí)行反向傳播。

      在SGD中,考慮到我們正在使用僅隨機(jī)選擇的幾個數(shù)據(jù)點或單個數(shù)據(jù)點,而不是實際的梯度,我們正在估計這些真實梯度,因為真實梯度基于整個訓(xùn)練數(shù)據(jù)。對于此優(yōu)化,我們僅使用很少的數(shù)據(jù)點。這意味著作為反向傳播的一部分,我們對這些梯度的估計不完美,這意味著梯度將包含這種噪聲。

      這樣做的結(jié)果是我們使優(yōu)化過程更加高效,因為我們僅使用幾個數(shù)據(jù)點就可以基于傳遞非常快速地更新這些參數(shù)。僅在幾個數(shù)據(jù)點上訓(xùn)練神經(jīng)網(wǎng)絡(luò)要快得多,并且比使用整個訓(xùn)練數(shù)據(jù)進(jìn)行一次更新更容易。但這是以犧牲SGD的質(zhì)量為代價的,因為當(dāng)我們只使用幾個數(shù)據(jù)點來訓(xùn)練模型,然后計算梯度,這是真實梯度的估計,那么這些梯度將會非常嘈雜。他們將是不完美的,并且很可能遠(yuǎn)離實際梯度,這也意味著我們將對模型參數(shù)進(jìn)行不太準(zhǔn)確的更新。

      這意味著每次優(yōu)化算法試圖找到全局最優(yōu)值并在每次迭代中進(jìn)行這些移動時,向最佳狀態(tài)更近一步,大多數(shù)時候,它最終會做出錯誤的決定,并且會選擇錯誤的方向,因為梯度是它需要采取的方向選擇的來源。每次它都會產(chǎn)生這些振蕩,這會非常不穩(wěn)定,大多數(shù)時候它最終會發(fā)現(xiàn)局部最優(yōu)而不是全局最優(yōu),因為每次它只使用訓(xùn)練數(shù)據(jù)的一小部分,它正在估計梯度,這些都是有噪音的,這意味著它所采取的方向很可能也是錯誤的。當(dāng)你每次都做出錯誤的方向和錯誤的舉動時,你會開始搖擺不定。這正是SGD正在做的事情。在討論優(yōu)化方向時,該算法可能會做出錯誤的決策選擇,最終找到的是局部最優(yōu)而非全局最優(yōu)。因此,隨機(jī)梯度下降(SGD)有時被認(rèn)為是一個不佳的優(yōu)化器。然而,它在收斂時間上表現(xiàn)出色,且在內(nèi)存使用上也相當(dāng)有效,因為存儲模型基于非常小的數(shù)據(jù),并將這些小數(shù)據(jù)存儲在內(nèi)存中,計算量并不大。然而,這是以優(yōu)化器的質(zhì)量為代價的。在接下來的討論中,我們將學(xué)習(xí)如何調(diào)整 SGD 算法以提高優(yōu)化技術(shù)的質(zhì)量。

      22 為什么隨機(jī)梯度下降(即 SGD)會向局部最小值振蕩?

      造成這種振蕩的原因有幾個。首先,我們需要明確什么是振蕩。振蕩是我們在尋找全局最優(yōu)值時所發(fā)生的運動。當(dāng)我們嘗試使用 GD、SGD、RMSProp、Adam 等優(yōu)化方法來優(yōu)化算法時,我們正在嘗試最小化損失函數(shù)。理想情況下,我們希望迭代地改變我們的模型參數(shù),以便我們最終得到一組參數(shù),從而得到損失函數(shù)的全局最小值,而不僅僅是局部最小值。局部最小值可能看起來像是損失函數(shù)的最小值,但它僅適用于特定區(qū)域。而全局最優(yōu)值實際上是損失函數(shù)的平均值,即實際最小值。這正是我們正在努力追逐的。

      當(dāng)我們有太多的振蕩(即過多的運動)時,這可能會成為問題,因為我們每次都會做太多的動作。如果我們做出相反的動作或者方向錯誤,那么這最終將導(dǎo)致發(fā)現(xiàn)局部最優(yōu)而不是全局最優(yōu)。這正是我們試圖避免的。與 GD 相比,SGD 中的振蕩發(fā)生得更頻繁。因為在 GD 的情況下,我們使用整個訓(xùn)練數(shù)據(jù)來計算梯度,需要計算損失函數(shù)相對于模型參數(shù)的偏導(dǎo)數(shù)。而在 SGD 的情況下,我們了解到我們僅使用隨機(jī)采樣的單個或幾個訓(xùn)練數(shù)據(jù)點來更新梯度并使用這些梯度來更新模型參數(shù)。這會導(dǎo)致出現(xiàn)過多的振蕩,因為我們使用的隨機(jī)子集比訓(xùn)練數(shù)據(jù)小得多,它們不包含訓(xùn)練數(shù)據(jù)中的所有信息。這意味著我們正在計算的梯度在每個步驟中,當(dāng)我們使用完全不同且非常小的數(shù)據(jù)時,可能會有很大差異。這種巨大的差異,這種方向上的變化可能會導(dǎo)致這些振蕩過于頻繁。

      在 SGD 中,導(dǎo)致過多振蕩的第二個原因是步長。步長,或者說學(xué)習(xí)率,可以定義我們需要更新多少權(quán)重或偏置參數(shù)。而這個更新的幅度是由這個學(xué)習(xí)率決定的,然后它也發(fā)揮了作用,決定了這些運動會有多大的不同以及在我們觀察振蕩時,會出現(xiàn)多大的跳躍。

      第三個原因是 SGD 會遭受太多的振蕩,這是一件壞事,因為這會導(dǎo)致太多次找到局部最優(yōu)而不是全局最優(yōu),這是由于不完美的估計。當(dāng)我們計算損失函數(shù)相對于權(quán)重參數(shù)或偏差因子的梯度時,如果這是在訓(xùn)練數(shù)據(jù)的小樣本上完成的,那么梯度就會有噪音。然而,如果我們使用包含有關(guān)特征之間關(guān)系的所有信息并且僅在數(shù)據(jù)中一般性的整個訓(xùn)練數(shù)據(jù),那么梯度的噪聲就會少得多。他們的預(yù)測將會更加精確。我們正在使用基于小數(shù)據(jù)集的梯度作為實際梯度的估計,這是基于整個訓(xùn)練數(shù)據(jù)的。這種做法會引入噪聲,因此在估計真實梯度時會存在缺陷。這種缺陷可能會導(dǎo)致更新并不總是直接指向全局最優(yōu)值,從而導(dǎo)致隨機(jī)梯度下降(SGD)出現(xiàn)振蕩。在更高的層面上,我認(rèn)為SGD出現(xiàn)過多振蕩的原因有三個:第一個是隨機(jī)子集,第二個是步長,第三個是梯度的不完美估計。

      23 梯度下降(GD)與隨機(jī)梯度下降(SGD)有何不同?

      到目前為止,我們已經(jīng)詳細(xì)討論了SGD,我將從更高的層次總結(jié)兩者的差異。對于這個問題,我將利用四個不同因素來解釋GD和SGD之間的差異:第一個是數(shù)據(jù)使用情況,第二個是更新頻率,第三個是計算效率,第四個是收斂模式。讓我們一一探討這些因素。


      梯度下降在訓(xùn)練模型和計算梯度時使用整個訓(xùn)練數(shù)據(jù),并將該梯度用作反向傳播過程的一部分來更新模型參數(shù)。然而,SGD與GD不同,它在執(zhí)行訓(xùn)練過程和更新模型參數(shù)時并不一次性使用整個訓(xùn)練數(shù)據(jù)。相反,SGD僅使用隨機(jī)采樣的單個或兩個訓(xùn)練數(shù)據(jù)點來執(zhí)行訓(xùn)練,以及使用基于這兩點的梯度來更新模型參數(shù)。這就是SGD與GD在數(shù)據(jù)使用量和數(shù)據(jù)使用方式上的區(qū)別。

      第二個區(qū)別是更新頻率。考慮到GD每次都會根據(jù)整個訓(xùn)練數(shù)據(jù)來更新模型參數(shù),與SGD相比,它的更新要少得多。因為SGD每次都會頻繁地對單個數(shù)據(jù)點或兩個訓(xùn)練數(shù)據(jù)點進(jìn)行模型參數(shù)的更新。與GD不同,GD必須使用整個訓(xùn)練數(shù)據(jù)來進(jìn)行一組更新。這會導(dǎo)致SGD在使用非常小的數(shù)據(jù)時更頻繁地進(jìn)行更新,這就是更新頻率方面的差異。

      另一個區(qū)別是計算效率。GD的計算效率低于SGD,因為GD必須使用整個訓(xùn)練數(shù)據(jù)進(jìn)行計算或反向傳播,然后根據(jù)整個訓(xùn)練數(shù)據(jù)更新模型參數(shù)。這可能會導(dǎo)致計算量很大,尤其是在處理非常大的數(shù)據(jù)以及非常復(fù)雜的數(shù)據(jù)時。與GD不同,SGD效率更高且速度非常快,因為它使用非常少量的數(shù)據(jù)來執(zhí)行更新。這意味著它需要較少的內(nèi)存來對使用小數(shù)據(jù)的數(shù)據(jù)進(jìn)行排序,然后花費的時間就會少得多找到全局最優(yōu)值,或者至少它認(rèn)為它找到了全局最優(yōu)值。因此,與GD相比,SGD的收斂速度要快得多,這使得它比GD更有效率。

      最后一個我要在這個問題中提到的因素是收斂模式。眾所周知,GD的收斂過程比較平滑,作為優(yōu)化算法,其質(zhì)量比SGD更高。SGD是一個效率高但質(zhì)量較差的優(yōu)化器,其原因是SGD的效率是以犧牲其質(zhì)量為代價的,尋找全局最優(yōu)值。SGD會產(chǎn)生大量的振蕩,因為在估計真實梯度時它只使用了訓(xùn)練數(shù)據(jù)的一小部分。與SGD不同,GD使用整個訓(xùn)練數(shù)據(jù),因此不需要估計梯度。它能夠確定精確的梯度,這會在SGD的情況下導(dǎo)致大量振蕩。對于梯度下降(GD),我們并不需要進(jìn)行所有的振蕩。因此,算法所做的運動量要小得多。這就是為什么隨機(jī)梯度下降(SGD)找到全局最優(yōu)值所需的時間要少得多。然而,不幸的是,大多數(shù)時候,SGD會將全局最優(yōu)值與局部最優(yōu)值混淆。因此,SGD經(jīng)過多次迭代后,最終可能只找到局部最優(yōu),并將其誤認(rèn)為全局最優(yōu),這顯然是我們不希望看到的。

      我們的目標(biāo)是找到真正的全局最優(yōu)值,因此,我們需要最小化并找到使損失函數(shù)最小的參數(shù)集。這與SGD的做法恰恰相反,因為SGD使用的是真實梯度,大多數(shù)時候,它能夠識別出真正的全局最優(yōu)值。

      24 如何改進(jìn)梯度下降等優(yōu)化方法?動量項的作用是什么?

      每當(dāng)你聽到“動量”和“GD”這兩個詞,你應(yīng)該自動將注意力轉(zhuǎn)向帶有動量的SGD,因為帶有動量的SGD基本上是SGD的改進(jìn)版本。如果你理解了SGD和GD之間的區(qū)別,你就能更容易地解釋什么是帶有動量的SGD。


      我們剛剛討論了GD受到振蕩影響的問題,這種過多的運動會導(dǎo)致我們使用少量的訓(xùn)練數(shù)據(jù)來估計真實的梯度,從而導(dǎo)致具有完全不同的梯度的權(quán)重中有太多不同類型的更新。這是我們想要避免的,因為我們已經(jīng)看到并解釋了過多的這些運動最終會導(dǎo)致優(yōu)化算法錯誤地混淆全局最優(yōu)和局部最優(yōu)。因此,它會選擇局部最優(yōu),誤認(rèn)為這是全局最優(yōu),但事實并非如此。

      為了解決這個問題,我們提出了帶有動量的SGD算法。帶有動量的SGD算法利用了SGD的優(yōu)點,并嘗試解決SGD的最大缺點,即過多的振蕩。帶有動量的SGD引入了動量的概念,利用這種動量來尋找優(yōu)化算法并將其推向更好的方向,從而減少振蕩。

      動量的作用是嘗試添加我們之前對模型參數(shù)進(jìn)行的更新的一小部分,然后我們假設(shè)這將很好地指示該特定時間步長中更準(zhǔn)確的方向。假設(shè)我們處于時間步t,并且我們需要進(jìn)行更新,那么動量的作用就是查看之前的所有更新,并更頻繁地使用最近的更新。與非常舊的更新相比,最近的更新很可能會更好地代表我們需要采取的方向。這在優(yōu)化過程中更新模型參數(shù)時,當(dāng)我們考慮到這些是最近的情況時,我們就可以有更好、更準(zhǔn)確的方法。

      帶有動量的SGD試圖加速這個轉(zhuǎn)換過程,并且不是有太多朝向不同方向的運動,也不是有兩個不同的經(jīng)常梯度和更新,而是試圖穩(wěn)定這個過程,并且有更多的持續(xù)更新。在這里你可以看到,作為動量的一部分,我們獲得了這個動量項,它等于vt加一,用于時間步長t加一的更新。它的作用是需要這個伽瑪乘以vt,加上學(xué)習(xí)率eta,然后是梯度。你可以看到這個膨脹的三角形,然后在theta下方,然后j theta t只是表示損失函數(shù)相對于參數(shù)theta的梯度。它基本上所做的是它說我們正在計算這個動量項,t的時間步長加一,基于之前的更新。通過將 gamma 乘以 VT 并加上我們之前看到的隨機(jī)梯度下降(SGD)的常用術(shù)語,對于梯度下降(GD)來說,基本操作是使用 eta 學(xué)習(xí)率乘以損失函數(shù)相對于參數(shù) theta 的一階偏導(dǎo)數(shù)。因此,我們使用這個動量項簡單地從我們的當(dāng)前參數(shù) theta t 獲取新版本,更新版本為 theta t 加一,其中 theta 只是模型參數(shù)。

      通過這種方式,我們正在做的是,以更一致的方式執(zhí)行更多的更新,從而在方向中引入一致性。通過更重視近期的調(diào)整,我們增強(qiáng)了動量,因此稱為動量。動量增加了朝這個方向的速度,使得在更一致的梯度中找到全局最優(yōu)值,增強(qiáng)了向全局最優(yōu)的運動,從而使損失函數(shù)達(dá)到全局最小值。這當(dāng)然會提高優(yōu)化算法的質(zhì)量,我們最終會發(fā)現(xiàn)全局最優(yōu)而不是局部最優(yōu)。

      總結(jié)一下,帶有動量的 SGD 的作用是,它基本上采用 SGD 算法,因此在執(zhí)行模型參數(shù)更新時再次使用少量訓(xùn)練數(shù)據(jù)。但與 SGD 不同,帶動量的 SGD 的作用是,在尋找實際的全局最優(yōu)值時,它試圖復(fù)制 GD 的質(zhì)量,而它的實現(xiàn)方式是引入動量項。這還有助于引入更新的一致性并減少算法產(chǎn)生的振蕩,通過更平滑的路徑來發(fā)現(xiàn)損失函數(shù)的實際全局最優(yōu)值。

      25 比較批量梯度下降和小批量梯度下降,以及隨機(jī)梯度下降

      這里我們有梯度下降算法的三個不同版本:傳統(tǒng)的批量梯度下降(通常簡稱為 GD)、小批量梯度下降和 SGD 或隨機(jī)梯度下降。這三種算法彼此非常接近,它們在執(zhí)行每個模型訓(xùn)練和模型參數(shù)更新時的效率和使用的數(shù)據(jù)量方面確實有所不同。


      批量梯度下降是原始的 GD,該方法涉及使用整個訓(xùn)練數(shù)據(jù)的傳統(tǒng)方法。對于計算梯度時的每次迭代,進(jìn)行反向傳播,然后將這些梯度作為優(yōu)化算法的輸入,以對這些模型參數(shù)執(zhí)行單次更新。然后再次使用整個訓(xùn)練數(shù)據(jù)進(jìn)行下一次迭代,計算梯度并更新模型參數(shù)。在批量梯度下降中,我們不是在估計兩個梯度,而是實際上在計算梯度,因為我們擁有完整的訓(xùn)練數(shù)據(jù)。由于使用整個訓(xùn)練數(shù)據(jù)的這種質(zhì)量,批量梯度下降具有非常高的質(zhì)量,因此非常穩(wěn)定,能夠識別實際的全局最優(yōu)值。然而,這是以效率為代價的,因為批量梯度下降使用每次都需要將整個訓(xùn)練數(shù)據(jù)放入內(nèi)存中的整個訓(xùn)練數(shù)據(jù),并且在執(zhí)行優(yōu)化時非常慢,特別是在處理大型和復(fù)雜的數(shù)據(jù)集時。

      接下來我們有批量梯度下降的另一個極端,即 SGD。SGD 與 GD 不同,我們之前在討論 SGD 隨機(jī)使用的先前面試問題時看到了這一點,因此隨機(jī)采樣單個或少數(shù)訓(xùn)練觀察結(jié)果,為了執(zhí)行訓(xùn)練,計算執(zhí)行反向傳播的梯度,然后使用優(yōu)化來更新每次迭代中的模型參數(shù)。這意味著我們實際上并不計算實際的梯度,但我們實際上正在估計真實的梯度,因為我們只使用了訓(xùn)練數(shù)據(jù)的一小部分。這當(dāng)然是以算法質(zhì)量為代價的,盡管僅使用小樣本是有效的,從進(jìn)行反向傳播時的訓(xùn)練數(shù)據(jù)中我們不需要存儲訓(xùn)練,將整個訓(xùn)練數(shù)據(jù)放入內(nèi)存中,但只是其中的一小部分,我們快速執(zhí)行模型更新,然后我們更快地找到所謂的最佳值。但這是以算法質(zhì)量為代價的,因為這樣它就會開始產(chǎn)生太多的振蕩。由于噪聲梯度的存在,全局最優(yōu)值和局部最優(yōu)值往往會被混淆。這引出了我們的第三種優(yōu)化算法,即小批量梯度下降。小批量梯度下降基本上是批量梯度下降和原始隨機(jī)梯度下降(SGD)之間的一種折衷方案。小批量梯度下降的工作方式是試圖在傳統(tǒng)的梯度下降(GD)和SGD之間取得平衡。


      小批量梯度下降試圖利用SGD在效率方面的優(yōu)勢,并將其與GD在更新的穩(wěn)定性和一致性以及尋找實際全局最優(yōu)方面的優(yōu)勢結(jié)合起來。它的實現(xiàn)方式是將訓(xùn)練觀察結(jié)果隨機(jī)抽樣到批次中,其中批次比SGD大得多,然后使用這些較小部分的訓(xùn)練數(shù)據(jù)在每次迭代中進(jìn)行反向傳播,然后更新模型參數(shù)。因此,當(dāng)我們將訓(xùn)練數(shù)據(jù)采樣到這k個不同的折疊(在本例中是批次)時,可以將其視為k折交叉驗證,然后我們使用它來訓(xùn)練模型,然后在神經(jīng)網(wǎng)絡(luò)的情況下使用小批量梯度下降更新模型參數(shù),例如權(quán)重和偏差向量。

      雖然這三種方法有很多相似之處,但也有不同之處。在這個面試問題中,面試官試圖測試你是否理解這三種方法的優(yōu)點以及小批量梯度下降的目的。

      26 如何在考慮小尺寸和大尺寸的情況下決定深度學(xué)習(xí)中的批量大小

      這個問題是一個非常重要的問題,面試官試圖測試你是否理解批量大小的影響,以及它如何影響整個算法的質(zhì)量。

      在這里,你的面試官想知道你對批量大小對梯度噪聲、模型的偏差、模型的方差、模型的泛化、模型的收斂性、效率,尤其是內(nèi)存使用情況的理解。我們已經(jīng)討論并比較了傳統(tǒng)批量梯度下降、小批量梯度下降和SGD。我們已經(jīng)談到了...

      特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關(guān)推薦
      熱點推薦
      研究發(fā)現(xiàn)早起的一杯咖啡,可能開啟壞的一天:攝入增加竟讓老年人更痛

      研究發(fā)現(xiàn)早起的一杯咖啡,可能開啟壞的一天:攝入增加竟讓老年人更痛

      紅星新聞
      2025-12-08 13:47:24
      茅臺價格,繼續(xù)下跌

      茅臺價格,繼續(xù)下跌

      都市快報橙柿互動
      2025-12-08 10:42:34
      比黃巖島更狠!駐守338天擠走對手,這塊"長出來"的陸地到底多重要

      比黃巖島更狠!駐守338天擠走對手,這塊"長出來"的陸地到底多重要

      科普100克克
      2025-12-08 14:21:29
      泰國出動F-16戰(zhàn)機(jī)打擊柬埔寨軍事目標(biāo)

      泰國出動F-16戰(zhàn)機(jī)打擊柬埔寨軍事目標(biāo)

      環(huán)球網(wǎng)資訊
      2025-12-08 12:00:29
      已啟動!陜西適齡男子都要登記 →

      已啟動!陜西適齡男子都要登記 →

      西安觀察
      2025-12-07 23:01:14
      曾被中央通報違規(guī)聚餐飲酒致人死亡,魏栓師被開除黨籍和公職

      曾被中央通報違規(guī)聚餐飲酒致人死亡,魏栓師被開除黨籍和公職

      南方都市報
      2025-12-08 13:50:08
      雷軍:明明是人,偏要裝神

      雷軍:明明是人,偏要裝神

      麥大人
      2025-12-08 15:29:12
      為啥混混不去大公司收保護(hù)費?網(wǎng)友:大公司背后勢力他們?nèi)遣黄?>
    </a>
        <h3>
      <a href=帶你感受人間冷暖
      2025-11-16 00:15:05
      蕭敬騰和老婆一起練琴,像媽媽陪孩子,52歲林有慧年齡感很重。

      蕭敬騰和老婆一起練琴,像媽媽陪孩子,52歲林有慧年齡感很重。

      TVB的四小花
      2025-12-06 14:01:02
      日本咬住不撒口?甩出崇禎皇帝圣旨:琉球是中國藩屬國

      日本咬住不撒口?甩出崇禎皇帝圣旨:琉球是中國藩屬國

      文史微鑒
      2025-12-04 22:28:04
      全國最好的醫(yī)院排名,建議收藏!

      全國最好的醫(yī)院排名,建議收藏!

      霹靂炮
      2025-11-24 22:55:34
      朱孝天現(xiàn)身機(jī)場,網(wǎng)友對他說哈嘍老師!卻換來朱孝天的不滿和白眼

      朱孝天現(xiàn)身機(jī)場,網(wǎng)友對他說哈嘍老師!卻換來朱孝天的不滿和白眼

      樂悠悠娛樂
      2025-12-08 15:21:38
      雙胞胎認(rèn)親反目后續(xù):爸爸簽永不尋找保證書,哥哥棄房退親但原諒

      雙胞胎認(rèn)親反目后續(xù):爸爸簽永不尋找保證書,哥哥棄房退親但原諒

      鋭娛之樂
      2025-12-08 08:19:16
      錯失主力,媒體評火箭簽下史密斯略顯著急,老鷹沃克或是更好人選

      錯失主力,媒體評火箭簽下史密斯略顯著急,老鷹沃克或是更好人選

      拾叁懂球
      2025-12-08 01:19:33
      廣州房票“買爆”全城,黃埔拆遷戶半月買了600套,房票中介也做起倒賣生意

      廣州房票“買爆”全城,黃埔拆遷戶半月買了600套,房票中介也做起倒賣生意

      時代財經(jīng)
      2025-12-08 07:03:19
      泡泡瑪特股價大跌8%:Labubu稀缺性消失 4個月市值蒸發(fā)1870億港元

      泡泡瑪特股價大跌8%:Labubu稀缺性消失 4個月市值蒸發(fā)1870億港元

      雷遞
      2025-12-08 16:51:05
      不許中國賺錢,剛回法國,馬克龍威脅中方解決逆差,否則就加稅

      不許中國賺錢,剛回法國,馬克龍威脅中方解決逆差,否則就加稅

      歷史有些冷
      2025-12-08 20:10:04
      法媒:今天的中國竟然如此恐怖!法國圍繞中國展開了一場熱烈討論

      法媒:今天的中國竟然如此恐怖!法國圍繞中國展開了一場熱烈討論

      陳博世財經(jīng)
      2025-12-08 10:35:57
      26款帕拉梅拉狂降40萬!保時捷低頭,豪車信仰崩了?

      26款帕拉梅拉狂降40萬!保時捷低頭,豪車信仰崩了?

      趣味萌寵的日常
      2025-12-08 10:20:31
      摩根大通黃金交易部門,傳于上月底緊急遷至新加坡,50多名交易員及家屬在一周內(nèi)搬家

      摩根大通黃金交易部門,傳于上月底緊急遷至新加坡,50多名交易員及家屬在一周內(nèi)搬家

      新浪財經(jīng)
      2025-12-08 14:07:18
      2025-12-08 20:51:00
      Web3天空之城 incentive-icons
      Web3天空之城
      美好,有趣的,值得銘記的
      96文章數(shù) 83關(guān)注度
      往期回顧 全部

      科技要聞

      外面有人挖,家里有人跑:蘋果亂成了一鍋粥

      頭條要聞

      中方戰(zhàn)機(jī)持續(xù)雷達(dá)照射日本戰(zhàn)機(jī)目的是什么 外交部回應(yīng)

      頭條要聞

      中方戰(zhàn)機(jī)持續(xù)雷達(dá)照射日本戰(zhàn)機(jī)目的是什么 外交部回應(yīng)

      體育要聞

      一位大學(xué)美術(shù)生,如何用4年成為頂級跑者?

      娛樂要聞

      章子怡被說拜高踩低 主動和卡梅隆熱聊

      財經(jīng)要聞

      重磅!政治局會議定調(diào)明年經(jīng)濟(jì)工作

      汽車要聞

      純電全尺寸大六座 凱迪拉克"小凱雷德"申報圖曝光

      態(tài)度原創(chuàng)

      手機(jī)
      親子
      教育
      數(shù)碼
      游戲

      手機(jī)要聞

      小米17 Pro系列背屏功能上新:電子寵物、動態(tài)/視頻壁紙來了

      親子要聞

      小滿第一次看到大雪 今年韓國的第一場雪

      教育要聞

      小學(xué)必考易錯題,聽說很多大學(xué)生都做錯了

      數(shù)碼要聞

      預(yù)算卡死6K-8K?別慌!雙12“甜點級”游戲本終極選購清單

      《刺客信條:影》副總監(jiān):將重拾跑酷元素 會深挖雙主角設(shè)計

      無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 婷婷开心中文字幕| 亚洲av免费在线观看| 亚洲精品国产AV| 国产 另类 在线 欧美日韩 | 国产传媒AV| 亚洲欧美日韩综合久久| 日本熟女视频| 亚洲精品蜜桃久久久久久| 亚洲一区自拍| 91探花视频在线观看| 在线a人片免费观看| 男人猛躁进女人免费播放| 久久久久免费看黄a片app| 国内av网站| 伊人久久人妻| 九九精品在线看| 超碰在线91| 人妻窝窝WWW聚色窝| 最新中文字幕免费观看| 99亚洲精品| 亚洲女同精品久久女同| 无码国模国产在线观看免费| 久久天天躁狠狠躁夜夜av| 一本久道中文无码字幕av| 无码人妻一区二区三区四区不卡| 国产一级AAAAA片免费| 亚洲中文字幕无码av永久| 国产av无码国产av毛片| 97香蕉碰碰人妻国产欧美| 欧美黑人又粗又大久久久| 少妇熟女视频一区二区三区| 痉挛高潮喷水av无码免费| 亚洲乱熟女av| 成人小说一区二区中文在线| 亚洲色av天天天天天天| 欧美成人精品三级网站| 91人人妻| 亚洲精品一区二区三区在线观看| 性欧美长视频免费观看不卡 | 亚洲高清中文字幕在线看不卡| 97大香|