本文的主要目標(biāo)是讓您對(duì)深度學(xué)習(xí)領(lǐng)域有一個(gè)整體了解,并幫助您了解每種特定情況下應(yīng)使用的算法。
神經(jīng)網(wǎng)絡(luò):基礎(chǔ)
神經(jīng)網(wǎng)絡(luò)是一個(gè)具有相互連接的節(jié)點(diǎn)的計(jì)算系統(tǒng),其節(jié)點(diǎn)的工作方式更像是人腦中的神經(jīng)元。這些神經(jīng)元在它們之間進(jìn)行處理并傳遞信息。每個(gè)神經(jīng)網(wǎng)絡(luò)都是一系列的算法,這些算法試圖通過(guò)一個(gè)模擬人類大腦運(yùn)作的過(guò)程來(lái)識(shí)別一組數(shù)據(jù)中的潛在關(guān)系。
深度學(xué)習(xí)算法和經(jīng)典神經(jīng)網(wǎng)絡(luò)之間有什么區(qū)別呢?最明顯的區(qū)別是:深度學(xué)習(xí)中使用的神經(jīng)網(wǎng)絡(luò)具有更多隱藏層。這些層位于神經(jīng)元的第一層(即輸入層)和最后一層(即輸出層)之間。另外,沒(méi)有必要將不同層的所有神經(jīng)元連接起來(lái)。
您應(yīng)該知道的9種深度學(xué)習(xí)算法
#1反向傳播
反向傳播算法是一種非常流行的用于訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)的監(jiān)督學(xué)習(xí)算法。本質(zhì)上,反向傳播計(jì)算成本函數(shù)的導(dǎo)數(shù)的表達(dá)式,它是每一層之間從左到右的導(dǎo)數(shù)乘積,而每一層之間的權(quán)重梯度是對(duì)部分乘積的簡(jiǎn)單修改(“反向傳播誤差”)。
我們向網(wǎng)絡(luò)提供數(shù)據(jù),它產(chǎn)生一個(gè)輸出,我們將輸出與期望的輸出進(jìn)行比較(使用損失函數(shù)),然后根據(jù)差異重新調(diào)整權(quán)重。然后重復(fù)此過(guò)程。權(quán)重的調(diào)整是通過(guò)一種稱為隨機(jī)梯度下降的非線性優(yōu)化技術(shù)來(lái)實(shí)現(xiàn)的。
假設(shè)由于某種原因,我們想識(shí)別圖像中的樹。我們向網(wǎng)絡(luò)提供任何種類的圖像,并產(chǎn)生輸出。由于我們知道圖像是否實(shí)際上有一棵樹,因此我們可以將輸出與真實(shí)情況進(jìn)行比較并調(diào)整網(wǎng)絡(luò)。隨著我們傳遞越來(lái)越多的圖像,網(wǎng)絡(luò)的錯(cuò)誤就會(huì)越來(lái)越少。現(xiàn)在我們可以給它提供一個(gè)未知的圖像,它將告訴我們?cè)搱D像是否包含樹。
#2前饋神經(jīng)網(wǎng)絡(luò)(FNN)
前饋神經(jīng)網(wǎng)絡(luò)通常是全連接,這意味著層中的每個(gè)神經(jīng)元都與下一層中的所有其他神經(jīng)元相連。所描述的結(jié)構(gòu)稱為“多層感知器”,起源于1958年。單層感知器只能學(xué)習(xí)線性可分離的模式,而多層感知器則可以學(xué)習(xí)數(shù)據(jù)之間的非線性的關(guān)系。
前饋網(wǎng)絡(luò)的目標(biāo)是近似某個(gè)函數(shù)f。例如對(duì)于分類,=(x)將輸入x映射到類別y。前饋網(wǎng)絡(luò)定義了一個(gè)映射y = f(x;θ),并學(xué)習(xí)了導(dǎo)致最佳函數(shù)逼近的參數(shù)θ的值。
這些模型之所以稱為前饋,是因?yàn)閺膞到定義f的中間計(jì)算,最后到輸出y,沒(méi)有反饋連接。沒(méi)有將模型的輸出反饋到自身的反饋連接。當(dāng)前饋神經(jīng)網(wǎng)絡(luò)擴(kuò)展為包括反饋連接時(shí),它們稱為循環(huán)神經(jīng)網(wǎng)絡(luò)。
#3卷積神經(jīng)網(wǎng)絡(luò)(CNN)
卷積神經(jīng)網(wǎng)絡(luò)除了為機(jī)器人和自動(dòng)駕駛汽車的視覺(jué)提供幫助外,還成功的應(yīng)用于人臉識(shí)別,對(duì)象監(jiān)測(cè)和交通標(biāo)志識(shí)別等領(lǐng)域。
在數(shù)學(xué)中,卷積是一個(gè)函數(shù)越過(guò)另一個(gè)函數(shù)時(shí)兩個(gè)函數(shù)重疊多少的積分度量。
綠色曲線表示藍(lán)色和紅色曲線的卷積,它是t的函數(shù),位置由垂直的綠色線表示。灰色區(qū)域表示乘積g(tau)f(t-tau)作為t的函數(shù),所以它的面積作為t的函數(shù)就是卷積。
這兩個(gè)函數(shù)在x軸上每一點(diǎn)的重疊的乘積就是它們的卷積。
在某種程度上,他們嘗試對(duì)前饋網(wǎng)絡(luò)進(jìn)行正則化,以避免過(guò)度擬合(當(dāng)模型只學(xué)習(xí)預(yù)先看到的數(shù)據(jù)而不能泛化時(shí)),這使得他們能夠很好地識(shí)別數(shù)據(jù)之間的空間關(guān)系。
#4循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
循環(huán)神經(jīng)網(wǎng)絡(luò)在許多NLP任務(wù)中都非常成功。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,可以理解所有輸入和輸出都是獨(dú)立的。但是,對(duì)于許多任務(wù),這是不合適的。如果要預(yù)測(cè)句子中的下一個(gè)單詞,最好考慮一下它前面的單詞。
RNN之所以稱為循環(huán),是因?yàn)樗鼈儗?duì)序列的每個(gè)元素執(zhí)行相同的任務(wù),并且輸出取決于先前的計(jì)算。RNN的另一種解釋:這些網(wǎng)絡(luò)具有“記憶”,考慮了先前的信息。
例如,如果序列是5個(gè)單詞的句子,則由5層組成,每個(gè)單詞一層。
在RNN中定義計(jì)算的公式如下:
- x_t-在時(shí)間步t輸入。例如,x_1可以是與句子的第二個(gè)單詞相對(duì)應(yīng)的one-hot向量。
- s_t是步驟t中的隱藏狀態(tài)。這是網(wǎng)絡(luò)的“內(nèi)存”。s_t作為函數(shù)取決于先前的狀態(tài)和當(dāng)前輸入x_t:s_t = f(Ux_t + Ws_ {t-1})。函數(shù)f通常是非線性的,例如tanh或ReLU。計(jì)算第一個(gè)隱藏狀態(tài)所需的s _ {-1}通常初始化為零(零向量)。
- o_t-在步驟t退出。例如,如果我們要預(yù)測(cè)句子中的單詞,則輸出可能是字典中的概率向量。o_t = softmax(Vs_t)
圖像描述的生成
與卷積神經(jīng)網(wǎng)絡(luò)一起,RNN被用作模型的一部分,以生成未標(biāo)記圖像的描述。組合模型將生成的單詞與圖像中的特征相結(jié)合:
最常用的RNN類型是LSTM,它比RNN更好地捕獲(存儲(chǔ))長(zhǎng)期依賴關(guān)系。LSTM與RNN本質(zhì)上相同,只是它們具有不同的計(jì)算隱藏狀態(tài)的方式。
LSTM中的memory稱為cells,您可以將其視為接受先前狀態(tài)h_ {t-1}和當(dāng)前輸入?yún)?shù)x_t作為輸入的黑盒。在內(nèi)部,這些cells決定保存和刪除哪些memory。然后,它們將先前的狀態(tài),當(dāng)前memory和輸入?yún)?shù)組合在一起。
這些類型的單元在捕獲(存儲(chǔ))長(zhǎng)期依賴關(guān)系方面非常有效。
#5遞歸神經(jīng)網(wǎng)絡(luò)
遞歸神經(jīng)網(wǎng)絡(luò)是循環(huán)網(wǎng)絡(luò)的另一種形式,不同之處在于它們是樹形結(jié)構(gòu)。因此,它們可以在訓(xùn)練數(shù)據(jù)集中建模層次結(jié)構(gòu)。
由于其與二叉樹、上下文和基于自然語(yǔ)言的解析器的關(guān)系,它們通常用于音頻到文本轉(zhuǎn)錄和情緒分析等NLP應(yīng)用程序中。然而,它們往往比遞歸網(wǎng)絡(luò)慢得多
#6自編碼器
自編碼器可在輸出處恢復(fù)輸入信號(hào)。它們內(nèi)部有一個(gè)隱藏層。自編碼器設(shè)計(jì)為無(wú)法將輸入準(zhǔn)確復(fù)制到輸出,但是為了使誤差最小化,網(wǎng)絡(luò)被迫學(xué)習(xí)選擇最重要的特征。
自編碼器可用于預(yù)訓(xùn)練,例如,當(dāng)有分類任務(wù)且標(biāo)記對(duì)太少時(shí)。或降低數(shù)據(jù)中的維度以供以后可視化。或者,當(dāng)您只需要學(xué)習(xí)區(qū)分輸入信號(hào)的有用屬性時(shí)。
#7深度信念網(wǎng)絡(luò)和受限玻爾茲曼機(jī)器
受限玻爾茲曼機(jī)是一個(gè)隨機(jī)神經(jīng)網(wǎng)絡(luò)(神經(jīng)網(wǎng)絡(luò),意味著我們有類似神經(jīng)元的單元,其binary激活取決于它們所連接的相鄰單元;隨機(jī)意味著這些激活具有概率性元素),它包括:
- 可見(jiàn)單元層
- 隱藏單元層
- 偏差單元
此外,每個(gè)可見(jiàn)單元連接到所有的隱藏單元(這種連接是無(wú)向的,所以每個(gè)隱藏單元也連接到所有的可見(jiàn)單元),而偏差單元連接到所有的可見(jiàn)單元和所有的隱藏單元。
為了使學(xué)習(xí)更容易,我們對(duì)網(wǎng)絡(luò)進(jìn)行了限制,使任何可見(jiàn)單元都不連接到任何其他可見(jiàn)單元,任何隱藏單元都不連接到任何其他隱藏單元。
多個(gè)RBM可以疊加形成一個(gè)深度信念網(wǎng)絡(luò)。它們看起來(lái)完全像全連接層,但但是它們的訓(xùn)練方式不同。
#8生成對(duì)抗網(wǎng)絡(luò)(GAN)
GAN正在成為一種流行的在線零售機(jī)器學(xué)習(xí)模型,因?yàn)樗鼈兡軌蛞栽絹?lái)越高的準(zhǔn)確度理解和重建視覺(jué)內(nèi)容。用例包括:
- 從輪廓填充圖像。
- 從文本生成逼真的圖像。
- 制作產(chǎn)品原型的真實(shí)感描述。
- 將黑白圖像轉(zhuǎn)換為彩色圖像。
在視頻制作中,GAN可用于:
- 在框架內(nèi)模擬人類行為和運(yùn)動(dòng)的模式。
- 預(yù)測(cè)后續(xù)的視頻幀。
- 創(chuàng)建deepfake
生成對(duì)抗網(wǎng)絡(luò)(GAN)有兩個(gè)部分:
- 生成器學(xué)習(xí)生成可信的數(shù)據(jù)。生成的實(shí)例成為判別器的負(fù)面訓(xùn)練實(shí)例。
- 判別器學(xué)會(huì)從數(shù)據(jù)中分辨出生成器的假數(shù)據(jù)。判別器對(duì)產(chǎn)生不可信結(jié)果的發(fā)生器進(jìn)行懲罰。
建立GAN的第一步是識(shí)別所需的最終輸出,并根據(jù)這些參數(shù)收集初始訓(xùn)練數(shù)據(jù)集。然后將這些數(shù)據(jù)隨機(jī)化并輸入到生成器中,直到獲得生成輸出的基本精度為止。
然后,將生成的圖像與原始概念的實(shí)際數(shù)據(jù)點(diǎn)一起饋入判別器。判別器對(duì)信息進(jìn)行過(guò)濾,并返回0到1之間的概率來(lái)表示每個(gè)圖像的真實(shí)性(1與真相關(guān),0與假相關(guān))。然后檢查這些值是否成功,并不斷重復(fù),直到達(dá)到預(yù)期的結(jié)果。
#9Transformers
Transformers也很新,它們主要用于語(yǔ)言應(yīng)用。它它們基于一個(gè)叫做注意力的概念,這個(gè)概念被用來(lái)迫使網(wǎng)絡(luò)將注意力集中在特定的數(shù)據(jù)點(diǎn)上。
由于LSTM單元過(guò)于復(fù)雜,因此可以使用注意力機(jī)制根據(jù)其重要性對(duì)輸入的不同部分進(jìn)行權(quán)衡。注意力機(jī)制只不過(guò)是另一個(gè)具有權(quán)重的層,它的唯一目的是調(diào)整權(quán)重,使輸入的部分優(yōu)先化,同時(shí)排除其他部分。
實(shí)際上,Transformers由多個(gè)堆疊的編碼器(形成編碼器層),多個(gè)堆疊的解碼器(解碼器層)和一堆a(bǔ)ttention層(self- attentions和encoder-decoder attentions)組成
Transformers設(shè)計(jì)用于處理諸如機(jī)器翻譯和文本摘要之類的各種任務(wù)的有序數(shù)據(jù)序列,例如自然語(yǔ)言。如今,BERT和GPT-2是兩個(gè)最著名的經(jīng)過(guò)預(yù)先訓(xùn)練的自然語(yǔ)言系統(tǒng),用于各種NLP任務(wù)中,它們都基于Transformers。
#10圖神經(jīng)網(wǎng)絡(luò)
一般來(lái)說(shuō),非結(jié)構(gòu)化數(shù)據(jù)并不適合深度學(xué)習(xí)。在許多實(shí)際應(yīng)用中,數(shù)據(jù)是非結(jié)構(gòu)化的,例如社交網(wǎng)絡(luò),化合物,知識(shí)圖,空間數(shù)據(jù)等。
圖神經(jīng)網(wǎng)絡(luò)的目的是對(duì)圖數(shù)據(jù)進(jìn)行建模,這意味著它們識(shí)別圖中節(jié)點(diǎn)之間的關(guān)系,并對(duì)其進(jìn)行數(shù)值表示。它們以后可以在任何其他機(jī)器學(xué)習(xí)模型中用于各種任務(wù),例如聚類,分類等。