梳理數(shù)百個(gè)問題后,我總結(jié)出10個(gè)數(shù)據(jù)科學(xué)面試必掌握概念……
深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)并不簡單,但好在面試官能測試的數(shù)量有限。在梳理了數(shù)百個(gè)數(shù)據(jù)科學(xué)面試問題之后,本文總結(jié)出了10個(gè)最常出現(xiàn)的深度學(xué)習(xí)概念。話不多說,讓我們開始吧!
1.激活函數(shù)(Activation Functions)
如果你對神經(jīng)網(wǎng)絡(luò)及其結(jié)構(gòu)的還沒有基本了解,那么建議閱讀Terence Shin的文章《神經(jīng)網(wǎng)絡(luò)初學(xué)者指南》(“A Beginner-Friendly Explanation of How Neural Networks Work”)。
對神經(jīng)元或節(jié)點(diǎn)有基本了解之后,你就會發(fā)現(xiàn)激活函數(shù)像電燈開關(guān)一樣,能夠決定是否激活神經(jīng)元。
激活函數(shù)有幾種類型,但是最流行的激活函數(shù)是整流線性單元函數(shù),也稱為ReLU函數(shù)。ReLU函數(shù)優(yōu)于S型函數(shù)和雙曲正切函數(shù)函數(shù),因?yàn)樗鼒?zhí)行梯度下降的速度更快。
請注意,在圖像中,當(dāng)x(或z)很大時(shí),斜率非常小,這會顯著減緩梯度下降,但這種情況不會出現(xiàn)在ReLU函數(shù)中。
2.代價(jià)函數(shù)(Cost Function)
神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù)類似于其他機(jī)器學(xué)習(xí)模型的成本函數(shù)。它衡量的是神經(jīng)網(wǎng)絡(luò)的預(yù)測值與實(shí)際值相比有多“好”。代價(jià)函數(shù)與模型的質(zhì)量成反比——模型質(zhì)量越高,代價(jià)函數(shù)越低,反之亦然。
代價(jià)函數(shù)是最優(yōu)化值。通過縮小神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù),可以獲得模型的最佳權(quán)重和參數(shù),從而最大程度地發(fā)揮模型的性能。
有幾種常用的代價(jià)函數(shù),包括二次方代價(jià)(quadratic cost)、交叉熵成本(cross-entropy cost)、指數(shù)成本(exponential cost)、Hellinger distance、Kullback-Leibler散度等。
3.反向傳播算法(Backpropagation)
反向傳播算法是一種與成本函數(shù)密切相關(guān)的算法。具體來說,它是一種用于計(jì)算成本函數(shù)梯度的算法。與其他算法相比,反向傳播速度快、效率高,因而備受歡迎。
在這個(gè)算法中,梯度的計(jì)算從權(quán)重的最后一層的梯度開始,然后反向傳播到權(quán)重的第一層梯度。因此,第k層的誤差取決于k + 1層。“反向傳播”也因此得名。
通常,反向傳播的工作原理如下:
- 計(jì)算每個(gè)輸入-輸出對正向階段的損失函數(shù)
- 計(jì)算每對反向階段的損失函數(shù)
- 結(jié)合各個(gè)權(quán)重的梯度值
- 根據(jù)學(xué)習(xí)率和總梯度更新權(quán)重
4.卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks)
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種神經(jīng)網(wǎng)絡(luò),它提取輸入信息(通常是圖像),按照重要程度將圖像的不同特征進(jìn)行分類,然后輸出預(yù)測。CNN優(yōu)于前饋神經(jīng)網(wǎng)絡(luò)的原因在于,它可以更好地捕獲整個(gè)圖像的空間(像素)依賴性,這意味著它可以更好地理解圖像的組成。
CNN使用一種稱為“卷積”的數(shù)學(xué)運(yùn)算。維基百科這樣定義卷積:對兩個(gè)函數(shù)的數(shù)學(xué)運(yùn)算產(chǎn)生了第三個(gè)函數(shù),該函數(shù)表示一個(gè)函數(shù)的形狀如何被另一個(gè)函數(shù)修改。因此,CNN在其至少一層中使用卷積代替通用矩陣乘法。
5.循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是另一種神經(jīng)網(wǎng)絡(luò),能夠攝取各種大小的輸入信息,因此可與序列數(shù)據(jù)配合使用,效果極佳。RNN既考慮當(dāng)前輸入也考慮先前給定的輸入,這意味著相同的輸入在技術(shù)上可以基于先前的給定輸入產(chǎn)生不同的輸出。
從技術(shù)上講,RNN是一種神經(jīng)網(wǎng)絡(luò),其中節(jié)點(diǎn)之間的連接沿時(shí)間序列形成有向圖,從而使它們可以使用其內(nèi)部存儲器來處理可變長度的輸入序列。
6.長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory Networks)
長短期記憶網(wǎng)絡(luò)(LSTM)是一種遞歸神經(jīng)網(wǎng)絡(luò),可彌補(bǔ)常規(guī)RNN的一大劣勢:短期記憶。
具體來說,如果序列太長,即滯后時(shí)間大于5-10個(gè)步長,則RNN傾向于忽略先前步驟中提供的信息。例如,如果我們將一個(gè)段落輸入RNN,則它可能會忽略該段落開頭提供的信息。為了解決這個(gè)問題,LSTM誕生了。
7.權(quán)重初始化(Weight Initialization)
權(quán)重初始化的要點(diǎn)是保證神經(jīng)網(wǎng)絡(luò)不會收斂到無效解。如果權(quán)重全部初始化為相同的值(例如零),則每個(gè)單元將獲得完全相同的信號,并且每一層的輸出都是一樣的。
因此,你要隨機(jī)初始化權(quán)重,使其接近零,但不等于零。用于訓(xùn)練模型的隨機(jī)優(yōu)化算法就要達(dá)到這樣效果。
8.批量梯度下降和隨機(jī)梯度下降(Batch vs. Stochastic Gradient Descent)
批量梯度下降和隨機(jī)梯度下降是用于計(jì)算梯度的兩種不同方法。
批量梯度下降僅使用整個(gè)數(shù)據(jù)集計(jì)算梯度。特別是對于較大的數(shù)據(jù)集,它要慢得多,但對于凸或平滑誤差流形來說效果更好。
在隨機(jī)梯度下降的情況下,一次使用單個(gè)訓(xùn)練樣本來計(jì)算梯度。因此,它的計(jì)算速度更快且成本更低。然而,在這種情況下達(dá)到全局最優(yōu)值時(shí),它趨向于反彈。這會產(chǎn)生好的解決方案,但不是最優(yōu)解決方案。
9.超參數(shù)(Hyper-parameters)
超參數(shù)既是調(diào)節(jié)網(wǎng)絡(luò)結(jié)構(gòu)的變量,也是控制網(wǎng)絡(luò)訓(xùn)練方式的變量。常見的超參數(shù)包括:
- 模型架構(gòu)參數(shù),例如層數(shù),隱藏單元數(shù)等…
- 學(xué)習(xí)率(alpha)
- 網(wǎng)絡(luò)權(quán)重初始化
- 時(shí)期數(shù)(定義為整個(gè)訓(xùn)練數(shù)據(jù)集中的一個(gè)周期)
- 批量
- 其他
10.學(xué)習(xí)率(Learning Rate)
學(xué)習(xí)率是神經(jīng)網(wǎng)絡(luò)中使用的超參數(shù),每次更新模型權(quán)重時(shí),神經(jīng)網(wǎng)絡(luò)都會控制該模型響應(yīng)估計(jì)的誤差調(diào)整模型的數(shù)量。
如果學(xué)習(xí)率太低,則模型訓(xùn)練將進(jìn)行得非常緩慢,因?yàn)槊看蔚袑?quán)重進(jìn)行的更新最少。因此,在達(dá)到最低點(diǎn)之前需要進(jìn)行多次更新。如果將學(xué)習(xí)率設(shè)置得太高,則由于權(quán)重的急劇更新,會對損失函數(shù)造成不良的發(fā)散行為,并且可能無法收斂。
以上就是深度學(xué)習(xí)中最常出現(xiàn)的10個(gè)概念。認(rèn)真學(xué)習(xí)這10個(gè)概念,將有助于你在深度學(xué)習(xí)領(lǐng)域奠定堅(jiān)實(shí)的基礎(chǔ)。希望這對你的面試有所幫助。
本文轉(zhuǎn)載自微信公眾號「讀芯術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系讀芯術(shù)公眾號。
































