深度學(xué)習(xí)基礎(chǔ)
1 深度學(xué)習(xí)基本概念
監(jiān)督學(xué)習(xí):所有輸入數(shù)據(jù)都有確定的對應(yīng)輸出數(shù)據(jù),在各種網(wǎng)絡(luò)架構(gòu)中,輸入數(shù)據(jù)和輸出數(shù)據(jù)的節(jié)點層都位于網(wǎng)絡(luò)的兩端,訓(xùn)練過程就是不斷地調(diào)整它們之間的網(wǎng)絡(luò)連接權(quán)重。
左上:列出了各種不同網(wǎng)絡(luò)架構(gòu)的監(jiān)督學(xué)習(xí),比如標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)(NN)可用于訓(xùn)練房子特征和房價之間的函數(shù),卷積神經(jīng)網(wǎng)絡(luò)(CNN)可用于訓(xùn)練圖像和類別之間的函數(shù),循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)可用于訓(xùn)練語音和文本之間的函數(shù)。
左下:分別展示了 NN、CNN 和 RNN 的簡化架構(gòu)。這三種架構(gòu)的前向過程各不相同,NN 使用的是權(quán)重矩陣(連接)和節(jié)點值相乘并陸續(xù)傳播至下一層節(jié)點的方式;CNN 使用矩形卷積核在圖像輸入上依次進行卷積操作、滑動,得到下一層輸入的方式;RNN 記憶或遺忘先前時間步的信息以為當(dāng)前計算過程提供長期記憶。
右上:NN 可以處理結(jié)構(gòu)化數(shù)據(jù)(表格、數(shù)據(jù)庫等)和非結(jié)構(gòu)化數(shù)據(jù)(圖像、音頻等)。
右下:深度學(xué)習(xí)能發(fā)展起來主要是由于大數(shù)據(jù)的出現(xiàn),神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要大量的數(shù)據(jù);而大數(shù)據(jù)本身也反過來促進了更大型網(wǎng)絡(luò)的出現(xiàn)。深度學(xué)習(xí)研究的一大突破是新型激活函數(shù)的出現(xiàn),用 ReLU 函數(shù)替換 sigmoid 函數(shù)可以在反向傳播中保持快速的梯度下降過程,sigmoid 函數(shù)在正無窮處和負無窮處會出現(xiàn)趨于零的導(dǎo)數(shù),這正是梯度消失導(dǎo)致訓(xùn)練緩慢甚至失敗的主要原因。要研究深度學(xué)習(xí),需要學(xué)會「idea—代碼—實驗—idea」的良性循環(huán)。
2 logistic 回歸
左上:logistic 回歸主要用于二分類問題,如圖中所示,logistic 回歸可以求解一張圖像是不是貓的問題,其中圖像是輸入(x),貓(1)或非貓(0)是輸出。我們可以將 logistic 回歸看成將兩組數(shù)據(jù)點分離的問題,如果僅有線性回歸(激活函數(shù)為線性),則對于非線性邊界的數(shù)據(jù)點(例如,一組數(shù)據(jù)點被另一組包圍)是無法有效分離的,因此在這里需要用非線性激活函數(shù)替換線性激活函數(shù)。在這個案例中,我們使用的是 sigmoid 激活函數(shù),它是值域為(0, 1)的平滑函數(shù),可以使神經(jīng)網(wǎng)絡(luò)的輸出得到連續(xù)、歸一(概率值)的結(jié)果,例如當(dāng)輸出節(jié)點為(0.2, 0.8)時,判定該圖像是非貓(0)。
左下:神經(jīng)網(wǎng)絡(luò)的訓(xùn)練目標(biāo)是確定最合適的權(quán)重 w 和偏置項 b,那這個過程是怎么樣的呢?
這個分類其實就是一個優(yōu)化問題,優(yōu)化過程的目的是使預(yù)測值 y hat 和真實值 y 之間的差距最小,形式上可以通過尋找目標(biāo)函數(shù)的最小值來實現(xiàn)。所以我們首先確定目標(biāo)函數(shù)(損失函數(shù)、代價函數(shù))的形式,然后用梯度下降逐步更新 w、b,當(dāng)損失函數(shù)達到最小值或者足夠小時,我們就能獲得很好的預(yù)測結(jié)果。
右上:損失函數(shù)值在參數(shù)曲面上變化的簡圖,使用梯度可以找到最快的下降路徑,學(xué)習(xí)率的大小可以決定收斂的速度和最終結(jié)果。學(xué)習(xí)率較大時,初期收斂很快,不易停留在局部極小值,但后期難以收斂到穩(wěn)定的值;學(xué)習(xí)率較小時,情況剛好相反。一般而言,我們希望訓(xùn)練初期學(xué)習(xí)率較大,后期學(xué)習(xí)率較小,之后會介紹變化學(xué)習(xí)率的訓(xùn)練方法。
右下:總結(jié)整個訓(xùn)練過程,從輸入節(jié)點 x 開始,通過前向傳播得到預(yù)測輸出 y hat,用 y hat 和 y 得到損失函數(shù)值,開始執(zhí)行反向傳播,更新 w 和 b,重復(fù)迭代該過程,直到收斂。
3 淺層網(wǎng)絡(luò)的特點
左上:淺層網(wǎng)絡(luò)即隱藏層數(shù)較少,如圖所示,這里僅有一個隱藏層。
左下:這里介紹了不同激活函數(shù)的特點:
sigmoid:sigmoid 函數(shù)常用于二分分類問題,或者多分類問題的最后一層,主要是由于其歸一化特性。sigmoid 函數(shù)在兩側(cè)會出現(xiàn)梯度趨于零的情況,會導(dǎo)致訓(xùn)練緩慢。
tanh:相對于 sigmoid,tanh 函數(shù)的優(yōu)點是梯度值更大,可以使訓(xùn)練速度變快。
ReLU:可以理解為閾值激活(spiking model 的特例,類似生物神經(jīng)的工作方式),該函數(shù)很常用,基本是默認選擇的激活函數(shù),優(yōu)點是不會導(dǎo)致訓(xùn)練緩慢的問題,并且由于激活值為零的節(jié)點不會參與反向傳播,該函數(shù)還有稀疏化網(wǎng)絡(luò)的效果。
Leaky ReLU:避免了零激活值的結(jié)果,使得反向傳播過程始終執(zhí)行,但在實踐中很少用。
右上:為什么要使用激活函數(shù)呢?更準(zhǔn)確地說是,為什么要使用非線性激活函數(shù)呢?
上圖中的實例可以看出,沒有激活函數(shù)的神經(jīng)網(wǎng)絡(luò)經(jīng)過兩層的傳播,最終得到的結(jié)果和單層的線性運算是一樣的,也就是說,沒有使用非線性激活函數(shù)的話,無論多少層的神經(jīng)網(wǎng)絡(luò)都等價于單層神經(jīng)網(wǎng)絡(luò)(不包含輸入層)。
右下:如何初始化參數(shù) w、b 的值?
當(dāng)將所有參數(shù)初始化為零的時候,會使所有的節(jié)點變得相同,在訓(xùn)練過程中只能學(xué)到相同的特征,而無法學(xué)到多層級、多樣化的特征。解決辦法是隨機初始化所有參數(shù),但僅需少量的方差就行,因此使用 Rand(0.01)進行初始化,其中 0.01 也是超參數(shù)之一。
4 深度神經(jīng)網(wǎng)絡(luò)的特點
左上:神經(jīng)網(wǎng)絡(luò)的參數(shù)化容量隨層數(shù)增加而指數(shù)式地增長,即某些深度神經(jīng)網(wǎng)絡(luò)能解決的問題,淺層神經(jīng)網(wǎng)絡(luò)需要相對的指數(shù)量級的計算才能解決。
左下:CNN 的深度網(wǎng)絡(luò)可以將底層的簡單特征逐層組合成越來越復(fù)雜的特征,深度越大,其能分類的圖像的復(fù)雜度和多樣性就越大。RNN 的深度網(wǎng)絡(luò)也是同樣的道理,可以將語音分解為音素,再逐漸組合成字母、單詞、句子,執(zhí)行復(fù)雜的語音到文本任務(wù)。
右邊:深度網(wǎng)絡(luò)的特點是需要大量的訓(xùn)練數(shù)據(jù)和計算資源,其中涉及大量的矩陣運算,可以在 GPU 上并行執(zhí)行,還包含了大量的超參數(shù),例如學(xué)習(xí)率、迭代次數(shù)、隱藏層數(shù)、激活函數(shù)選擇、學(xué)習(xí)率調(diào)整方案、批尺寸大小、正則化方法等。
5 偏差與方差
那么部署你的機器學(xué)習(xí)模型需要注意些什么?下圖展示了構(gòu)建 ML 應(yīng)用所需要的數(shù)據(jù)集分割、偏差與方差等問題。
如上所示,經(jīng)典機器學(xué)習(xí)和深度學(xué)習(xí)模型所需要的樣本數(shù)有非常大的差別,深度學(xué)習(xí)的樣本數(shù)是經(jīng)典 ML 的成千上萬倍。因此訓(xùn)練集、開發(fā)集和測試集的分配也有很大的區(qū)別,當(dāng)然我們假設(shè)這些不同的數(shù)據(jù)集都服從同分布。
偏差與方差問題同樣是機器學(xué)習(xí)模型中常見的挑戰(zhàn),上圖依次展示了由高偏差帶來的欠擬合和由高方差帶來的過擬合。一般而言,解決高偏差的問題是選擇更復(fù)雜的網(wǎng)絡(luò)或不同的神經(jīng)網(wǎng)絡(luò)架構(gòu),而解決高方差的問題可以添加正則化、減少模型冗余或使用更多的數(shù)據(jù)進行訓(xùn)練。
當(dāng)然,機器學(xué)習(xí)模型需要注意的問題遠不止這些,但在配置我們的 ML 應(yīng)用中,它們是最基礎(chǔ)和最重要的部分。其它如數(shù)據(jù)預(yù)處理、數(shù)據(jù)歸一化、超參數(shù)的選擇等都在后面的信息圖中有所體現(xiàn)。
6 正則化
正則化是解決高方差或模型過擬合的主要手段,過去數(shù)年,研究者提出和開發(fā)了多種適合機器學(xué)習(xí)算法的正則化方法,如數(shù)據(jù)增強、L2 正則化(權(quán)重衰減)、L1 正則化、Dropout、Drop Connect、隨機池化和提前終止等。
如上圖左列所示,L1 和 L2 正則化也是是機器學(xué)習(xí)中使用最廣泛的正則化方法。L1 正則化向目標(biāo)函數(shù)添加正則化項,以減少參數(shù)的絕對值總和;而 L2 正則化中,添加正則化項的目的在于減少參數(shù)平方的總和。根據(jù)之前的研究,L1 正則化中的很多參數(shù)向量是稀疏向量,因為很多模型導(dǎo)致參數(shù)趨近于 0,因此它常用于特征選擇設(shè)置中。此外,參數(shù)范數(shù)懲罰 L2 正則化能讓深度學(xué)習(xí)算法「感知」到具有較高方差的輸入 x,因此與輸出目標(biāo)的協(xié)方差較小(相對增加方差)的特征權(quán)重將會收縮。
在中間列中,上圖展示了 Dropout 技術(shù),即暫時丟棄一部分神經(jīng)元及其連接的方法。隨機丟棄神經(jīng)元可以防止過擬合,同時指數(shù)級、高效地連接不同網(wǎng)絡(luò)架構(gòu)。一般使用了 Dropout 技術(shù)的神經(jīng)網(wǎng)絡(luò)會設(shè)定一個保留率 p,然后每一個神經(jīng)元在一個批量的訓(xùn)練中以概率 1-p 隨機選擇是否去掉。在最后進行推斷時所有神經(jīng)元都需要保留,因而有更高的準(zhǔn)確度。
Bagging 是通過結(jié)合多個模型降低泛化誤差的技術(shù),主要的做法是分別訓(xùn)練幾個不同的模型,然后讓所有模型表決測試樣例的輸出。而 Dropout 可以被認為是集成了大量深層神經(jīng)網(wǎng)絡(luò)的 Bagging 方法,因此它提供了一種廉價的 Bagging 集成近似方法,能夠訓(xùn)練和評估值數(shù)據(jù)數(shù)量的神經(jīng)網(wǎng)絡(luò)。
最后,上圖還描述了數(shù)據(jù)增強與提前終止等正則化方法。數(shù)據(jù)增強通過向訓(xùn)練數(shù)據(jù)添加轉(zhuǎn)換或擾動來人工增加訓(xùn)練數(shù)據(jù)集。數(shù)據(jù)增強技術(shù)如水平或垂直翻轉(zhuǎn)圖像、裁剪、色彩變換、擴展和旋轉(zhuǎn)通常應(yīng)用在視覺表象和圖像分類中。而提前終止通常用于防止訓(xùn)練中過度表達的模型泛化性能差。如果迭代次數(shù)太少,算法容易欠擬合(方差較小,偏差較大),而迭代次數(shù)太多,算法容易過擬合(方差較大,偏差較小)。因此,提前終止通過確定迭代次數(shù)解決這個問題。
7 最優(yōu)化
最優(yōu)化是機器學(xué)習(xí)模型中非常非常重要的模塊,它不僅主導(dǎo)了整個訓(xùn)練過程,同時還決定了最后模型性能的好壞和收斂需要的時長。以下兩張信息圖都展示了最優(yōu)化方法需要關(guān)注的知識點,包括最優(yōu)化的預(yù)備和具體的最優(yōu)化方法。
以上展示了最優(yōu)化常常出現(xiàn)的問題和所需要的操作。首先在執(zhí)行最優(yōu)化前,我們需要歸一化輸入數(shù)據(jù),而且開發(fā)集與測試集歸一化的常數(shù)(均值與方差)與訓(xùn)練集是相同的。上圖也展示了歸一化的原因,因為如果特征之間的量級相差太大,那么損失函數(shù)的表面就是一張狹長的橢圓形,而梯度下降或最速下降法會因為「鋸齒」現(xiàn)象而很難收斂,因此歸一化為圓形有助于減少下降方向的震蕩。
后面的梯度消失與梯度爆炸問題也是十分常見的現(xiàn)象。「梯度消失」指的是隨著網(wǎng)絡(luò)深度增加,參數(shù)的梯度范數(shù)指數(shù)式減小的現(xiàn)象。梯度很小,意味著參數(shù)的變化很緩慢,從而使得學(xué)習(xí)過程停滯。梯度爆炸指神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中大的誤差梯度不斷累積,導(dǎo)致模型權(quán)重出現(xiàn)很大的更新,在極端情況下,權(quán)重的值變得非常大以至于出現(xiàn) NaN 值。
梯度檢驗現(xiàn)在可能用的比較少,因為我們在 TensorFlow 或其它框架上執(zhí)行最優(yōu)化算法只需要調(diào)用優(yōu)化器就行。梯度檢驗一般是使用數(shù)值的方法計算近似的導(dǎo)數(shù)并傳播,因此它能檢驗我們基于解析式算出來的梯度是否正確。
下面就是具體的最優(yōu)化算法了,包括最基本的小批量隨機梯度下降、帶動量的隨機梯度下降和 RMSProp 等適應(yīng)性學(xué)習(xí)率算法。
小批量隨機梯度下降(通常 SGD 指的就是這種)使用一個批量的數(shù)據(jù)更新參數(shù),因此大大降低了一次迭代所需的計算量。這種方法降低了更新參數(shù)的方差,使得收斂過程更為穩(wěn)定;它也能利用流行深度學(xué)習(xí)框架中高度優(yōu)化的矩陣運算器,從而高效地求出每個小批數(shù)據(jù)的梯度。通常一個小批數(shù)據(jù)含有的樣本數(shù)量在 50 至 256 之間,但對于不同的用途也會有所變化。
動量策略旨在加速 SGD 的學(xué)習(xí)過程,特別是在具有較高曲率的情況下。一般而言,動量算法利用先前梯度的指數(shù)衰減滑動平均值在該方向上進行修正,從而更好地利用歷史梯度的信息。該算法引入了變量 v 作為參數(shù)在參數(shù)空間中持續(xù)移動的速度向量,速度一般可以設(shè)置為負梯度的指數(shù)衰減滑動平均值。
上圖后面所述的 RMSProp 和 Adam 等適應(yīng)性學(xué)習(xí)率算法是目前我們最常用的最優(yōu)化方法。RMSProp 算法(Hinton,2012)修改 AdaGrad 以在非凸情況下表現(xiàn)更好,它改變梯度累積為指數(shù)加權(quán)的移動平均值,從而丟棄距離較遠的歷史梯度信息。RMSProp 是 Hinton 在公開課上提出的最優(yōu)化算法,其實它可以視為 AdaDelta 的特例。但實踐證明 RMSProp 有非常好的性能,它目前在深度學(xué)習(xí)中有非常廣泛的應(yīng)用。
Adam 算法同時獲得了 AdaGrad 和 RMSProp 算法的優(yōu)點。Adam 不僅如 RMSProp 算法那樣基于一階矩均值計算適應(yīng)性參數(shù)學(xué)習(xí)率,它同時還充分利用了梯度的二階矩均值(即有偏方差/uncentered variance)。
8 超參數(shù)
以下是介紹超參數(shù)的信息圖,它在神經(jīng)網(wǎng)絡(luò)中占據(jù)了重要的作用,因為它們可以直接提升模型的性能。
眾所周知學(xué)習(xí)率、神經(jīng)網(wǎng)絡(luò)隱藏單元數(shù)、批量大小、層級數(shù)和正則化系數(shù)等超參數(shù)可以直接影響模型的性能,而怎么調(diào)就顯得非常重要。目前最常見的還是手動調(diào)參,開發(fā)者會根據(jù)自身建模經(jīng)驗選擇「合理」的超參數(shù),然后再根據(jù)模型性能做一些小的調(diào)整。而自動化調(diào)參如隨機過程或貝葉斯優(yōu)化等仍需要非常大的計算量,且效率比較低。不過近來關(guān)于使用強化學(xué)習(xí)、遺傳算法和神經(jīng)網(wǎng)絡(luò)等方法搜索超參數(shù)有很大的進步,研究者都在尋找一種高效而準(zhǔn)確的方法。
目前的超參數(shù)搜索方法有:
依靠經(jīng)驗:聆聽自己的直覺,設(shè)置感覺上應(yīng)該對的參數(shù)然后看看它是否工作,不斷嘗試直到累趴。
網(wǎng)格搜索:讓計算機嘗試一些在一定范圍內(nèi)均勻分布的數(shù)值。
隨機搜索:讓計算機嘗試一些隨機值,看看它們是否好用。
貝葉斯優(yōu)化:使用類似 MATLAB bayesopt 的工具自動選取最佳參數(shù)——結(jié)果發(fā)現(xiàn)貝葉斯優(yōu)化的超參數(shù)比你自己的機器學(xué)習(xí)算法還要多,累覺不愛,回到依靠經(jīng)驗和網(wǎng)格搜索方法上去。
因為篇幅有限,后面的展示將只簡要介紹信息圖,相信它們對各位讀者都十分有幫助。
9 結(jié)構(gòu)化機器學(xué)習(xí)過程
我們需要按過程或結(jié)構(gòu)來設(shè)定我們的機器學(xué)習(xí)系統(tǒng),首先需要設(shè)定模型要達到的目標(biāo),例如它的預(yù)期性能是多少、度量方法是什么等。然后分割訓(xùn)練、開發(fā)和測試集,并預(yù)期可能到達的優(yōu)化水平。隨后再構(gòu)建模型并訓(xùn)練,在開發(fā)集和測試集完成驗證后就可以用于推斷了。
10 誤差分析
在完成訓(xùn)練后,我們可以分析誤差的來源而改進性能,包括發(fā)現(xiàn)錯誤的標(biāo)注、不正確的損失函數(shù)等。
11 訓(xùn)練集、開發(fā)集與測試集
上圖展示了三個分割數(shù)據(jù)集及其表現(xiàn)所需要注意的地方,也就是說如果它們間有不同的正確率,那么我們該如何修正這些「差別」。例如訓(xùn)練集的正確率明顯高于驗證集與測試集表明模型過擬合,三個數(shù)據(jù)集的正確率都明顯低于可接受水平可能是因為欠擬合。
12 其它學(xué)習(xí)方法
機器學(xué)習(xí)和深度學(xué)習(xí)當(dāng)然不止監(jiān)督學(xué)習(xí)方法,還有如遷移學(xué)習(xí)、多任務(wù)學(xué)習(xí)和端到端的學(xué)習(xí)等。
卷積網(wǎng)絡(luò)
13 卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
計算機視覺任務(wù)涉及的數(shù)據(jù)體量是特別大的,一張圖像就有上千個數(shù)據(jù)點,更別提高分辨率圖像和視頻了。這時用全連接網(wǎng)絡(luò)的話,參數(shù)數(shù)量太大,因而改用卷積神經(jīng)網(wǎng)絡(luò)(CNN),參數(shù)數(shù)量可以極大地減小。CNN 的工作原理就像用檢測特定特征的過濾器掃描整張圖像,進行特征提取,并逐層組合成越來越復(fù)雜的特征。這種「掃描」的工作方式使其有很好的參數(shù)共享特性,從而能檢測不同位置的相同目標(biāo)(平移對稱)。
卷積核對應(yīng)的檢測特征可以從其參數(shù)分布簡單地判斷,例如,權(quán)重從左到右變小的卷積核可以檢測到黑白豎條紋的邊界,并顯示為中間亮,兩邊暗的特征圖,具體的相對亮暗結(jié)果取決于圖像像素分布和卷積核的相對關(guān)系。卷積核權(quán)重可以直接硬編碼,但為了讓相同的架構(gòu)適應(yīng)不同的任務(wù),通過訓(xùn)練得到卷積核權(quán)重是更好的辦法。
卷積運算的主要參數(shù):
padding:直接的卷積運算會使得到的特征圖越來越小,padding 操作會在圖像周圍添加 0 像素值的邊緣,使卷積后得到的特征圖大小和原圖像(長寬,不包括通道數(shù))相同。
常用的兩個選項是:『VALID』,不執(zhí)行 padding;『SAME』,使輸出特征圖的長寬和原圖像相同。
stride:兩次卷積操作之間的步長大小。
一個卷積層上可以有多個卷積核,每個卷積核運算得到的結(jié)果是一個通道,每個通道的特征圖的長寬相同,可以堆疊起來構(gòu)成多通道特征圖,作為下一個卷積層的輸入。
深度卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu):
深度卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)主要以卷積層、池化層的多級堆疊,最后是全連接層執(zhí)行分類。池化層的主要作用是減少特征圖尺寸,進而減少參數(shù)數(shù)量,加速運算,使其目標(biāo)檢測表現(xiàn)更加魯棒。
14 經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)
LeNet·5:手寫識別分類網(wǎng)絡(luò),這是第一個卷積神經(jīng)網(wǎng)絡(luò),由 Yann LeCun 提出。
AlexNet:圖像分類網(wǎng)絡(luò),首次在 CNN 引入 ReLU 激活函數(shù)。
VGG-16:圖像分類網(wǎng)絡(luò),深度較大。
15 特殊卷積神經(jīng)網(wǎng)絡(luò)
ResNet:引入殘差連接,緩解梯度消失和梯度爆炸問題,可以訓(xùn)練非常深的網(wǎng)絡(luò)。
Network in Network:使用 1x1 卷積核,可以將卷積運算變成類似于全連接網(wǎng)絡(luò)的形式,還可以減少特征圖的通道數(shù),從而減少參數(shù)數(shù)量。
Inception Network:使用了多種尺寸卷積核的并行操作,再堆疊成多個通道,可以捕捉多種規(guī)模的特征,但缺點是計算量太大,可以通過 1x1 卷積減少通道數(shù)。
16 實踐建議
使用開源實現(xiàn):從零開始實現(xiàn)時非常困難的,利用別人的實現(xiàn)可以快速探索更復(fù)雜有趣的任務(wù)。
數(shù)據(jù)增強:通過對原圖像進行鏡像、隨機裁剪、旋轉(zhuǎn)、顏色變化等操作,增加訓(xùn)練數(shù)據(jù)量和多樣性。
遷移學(xué)習(xí):針對當(dāng)前任務(wù)的訓(xùn)練數(shù)據(jù)太少時,可以將充分訓(xùn)練過的模型用少量數(shù)據(jù)微調(diào)獲得足夠好的性能。
基準(zhǔn)測試和競賽中表現(xiàn)良好的訣竅:使用模型集成,使用多模型輸出的平均結(jié)果;在測試階段,將圖像裁剪成多個副本分別測試,并將測試結(jié)果取平均。
17 目標(biāo)檢測算法
目標(biāo)檢測即使用邊界框檢測圖像中物體的位置,F(xiàn)aster R-CNN、R-FCN 和 SSD 是三種目前最優(yōu)且應(yīng)用最廣泛的目標(biāo)檢測模型,上圖也展示了 YOLO 的基本過程。
18 人臉識別
人臉識別有兩大類應(yīng)用:人臉驗證(二分分類)和人臉識別(多人分類)。
當(dāng)樣本量不足時,或者不斷有新樣本加入時,需要使用 one-shot learning,解決辦法是學(xué)習(xí)相似性函數(shù),即確定兩張圖像的相似性。比如在 Siamese Network 中學(xué)習(xí)人臉識別時,就是利用兩個網(wǎng)絡(luò)的輸出,減少同一個人的兩個輸出的差別,增大不同人的兩個輸出之間的差別。
19 風(fēng)格遷移
風(fēng)格遷移是一個熱門話題,它會在視覺上給人耳目一新的感覺。例如你有一副圖,然后將另一幅圖的風(fēng)格特征應(yīng)用到這幅圖上,比如用一位著名畫家或某一副名畫的風(fēng)格來修改你的圖像,因此我們可以獲得獨特風(fēng)格的作品。
循環(huán)網(wǎng)絡(luò)
20 循環(huán)神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
如上所示,命名實體識別等序列問題在現(xiàn)實生活中占了很大的比例,而隱馬爾可夫鏈等傳統(tǒng)機器學(xué)習(xí)算法只能作出很強的假設(shè)而處理部分序列問題。但近來循環(huán)神經(jīng)網(wǎng)絡(luò)在這些問題上有非常大的突破,RNN 隱藏狀態(tài)的結(jié)構(gòu)以循環(huán)形的形式成記憶,每一時刻的隱藏層的狀態(tài)取決于它的過去狀態(tài),這種結(jié)構(gòu)使得 RNN 可以保存、記住和處理長時期的過去復(fù)雜信號。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)能夠從序列和時序數(shù)據(jù)中學(xué)習(xí)特征和長期依賴關(guān)系。RNN 具備非線性單元的堆疊,其中單元之間至少有一個連接形成有向循環(huán)。訓(xùn)練好的 RNN 可以建模任何動態(tài)系統(tǒng);但是,訓(xùn)練 RNN 主要受到學(xué)習(xí)長期依賴性問題的影響。
以下展示了 RNN 的應(yīng)用、問題以及變體等:
循環(huán)神經(jīng)網(wǎng)絡(luò)在語言建模等序列問題上有非常強大的力量,但同時它也存在很嚴(yán)重的梯度消失問題。因此像 LSTM 和 GRU 等基于門控的 RNN 有非常大的潛力,它們使用門控機制保留或遺忘前面時間步的信息,并形成記憶以提供給當(dāng)前的計算過程。
21 NLP 中的詞表征
詞嵌入在自然語言處理中非常重要,因為不論執(zhí)行怎樣的任務(wù),將詞表征出來都是必須的。上圖展示了詞嵌入的方法,我們可以將詞匯庫映射到一個 200 或 300 維的向量,從而大大減少表征詞的空間。此外,這種詞表征的方法還能表示詞的語義,因為詞義相近的詞在嵌入空間中距離相近。
除了以上所述的 Skip Grams,以下還展示了學(xué)習(xí)詞嵌入的常見方法:
GloVe 詞向量是很常見的詞向量學(xué)習(xí)方法,它學(xué)到的詞表征可進一步用于語句分類等任務(wù)。
22 序列到序列
序列到序列的方法使用最多的就是編碼器解碼器框架,其它還有束搜索等模塊的介紹。
編碼器解碼器架構(gòu)加上注意力機制可以解決非常多的自然語言處理問題,以下介紹了 BLEU 分值和注意力機制。它們在機器翻譯的架構(gòu)和評估中都是不能缺少的部分。
以上是所有關(guān)于吳恩達深度學(xué)習(xí)專項課程的信息圖,由于它們包含的信息較多,我們只介紹了一部分,還有很多內(nèi)容只是簡單的一筆帶過。所以各位讀者最好可以下載該信息圖,并在后面的學(xué)習(xí)過程中慢慢理解與優(yōu)化。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4779瀏覽量
101044 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5512瀏覽量
121410
原文標(biāo)題:這是一份優(yōu)美的信息圖,吳恩達點贊的deeplearning.ai課程總結(jié)
文章出處:【微信號:CAAI-1981,微信公眾號:中國人工智能學(xué)會】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論