本文為下篇,閱讀上篇,請點擊:從神經(jīng)網(wǎng)絡(luò)說起:深度學(xué)習(xí)初學(xué)者不可不知的25個術(shù)語和概念(上)
學(xué)習(xí)速率指每次迭代中對成本函數(shù)的最小化次數(shù)。簡單來說,我們把下降到成本函數(shù)最小值的速率稱為學(xué)習(xí)率。選擇學(xué)習(xí)率時,我們必須非常小心,學(xué)習(xí)速率既不應(yīng)過大——會錯過最優(yōu)解,也不應(yīng)過小——使網(wǎng)絡(luò)收斂將需要很多很多步、甚至永不可能。
在定義一個神經(jīng)網(wǎng)絡(luò)的過程中,每個節(jié)點會被隨機地分配權(quán)重和偏置。
一次迭代后,我們可以根據(jù)產(chǎn)生的結(jié)果計算出整個網(wǎng)絡(luò)的偏差,然后用偏差結(jié)合成本函數(shù)的梯度,對權(quán)重因子進行相應(yīng)的調(diào)整,使得下次迭代的過程中偏差變小。
這樣一個結(jié)合成本函數(shù)的梯度來調(diào)整權(quán)重因子的過程就叫做反向傳播。在反向傳播中,信號的傳遞方向是朝后的,誤差連同成本函數(shù)的梯度從輸出層沿著隱藏層傳播,同時伴隨著對權(quán)重因子的調(diào)整。
當(dāng)我們訓(xùn)練一個神經(jīng)網(wǎng)路時,我們不應(yīng)一次性發(fā)送全部輸入信號,而應(yīng)把輸入信號隨機分成幾個大小相同的數(shù)據(jù)塊發(fā)送。
與將全部數(shù)據(jù)一次性送入網(wǎng)絡(luò)相比,在訓(xùn)練時將數(shù)據(jù)分批發(fā)送,建立的模型會更具有一般性。
一個周期表示對所有的數(shù)據(jù)批次都進行了一次迭代,包括一次正向傳播和一次反向傳播,所以一個周期就意味著對所有的輸入數(shù)據(jù)分別進行一次正向傳播和反向傳播。
訓(xùn)練網(wǎng)絡(luò)周期的次數(shù)是可以選擇的,往往周期數(shù)越高,模型的準(zhǔn)確性就越高,但是,耗時往往就越長。同樣你還需要考慮如果周期 / 紀(jì)元的次數(shù)過高,那么可能會出現(xiàn)過擬合的情況。
Dropout 是一個可以阻止網(wǎng)絡(luò)過擬合的規(guī)則化方法。就像它的名字那樣,在訓(xùn)練過程中隱藏的某些特定神經(jīng)元會被忽略掉(drop)。
這意味著網(wǎng)絡(luò)的訓(xùn)練是在幾個不同的結(jié)構(gòu)上完成的。這種 Dropout 的方式就像是一場合奏,多個不同結(jié)構(gòu)網(wǎng)絡(luò)的輸出組合產(chǎn)生最終的輸出結(jié)果。
分批標(biāo)準(zhǔn)化就像是人們在河流中用以監(jiān)測水位的監(jiān)察站一樣。
這是為了保證下一層網(wǎng)絡(luò)得到的數(shù)據(jù)擁有合適的分布。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程中,每一次梯度下降后權(quán)重因子都會得到改變,從而會改變相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。
但是下一層網(wǎng)絡(luò)希望能夠得到與之前分布相似的數(shù)據(jù),因此在每一次數(shù)據(jù)傳遞前都需要對數(shù)據(jù)進行一次正則化處理。
CNN 中的濾波器,具體是指將一個權(quán)重矩陣乘以輸入圖像的一個部分,產(chǎn)生相應(yīng)的卷積輸出。
比方說,對于一個 28×28 的圖片而言,將一個 3×3 的濾波器與圖片中 3×3 的矩陣依次相乘,從而得到相應(yīng)的卷積輸出。
濾波器的尺寸通常比原始圖片要小,與權(quán)重相似,在最小化成本的反向傳播中,濾波器也會被更新。就像下面這張圖片一樣,通過一個過濾器,依次乘以圖片中每個 3×3 的分塊,從而產(chǎn)生卷積的結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)通常用來處理圖像數(shù)據(jù),假設(shè)輸入數(shù)據(jù)的形狀為 28×28×3(28pixels × 28pixels × RGBValue),那么對于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)來說就會有 2352(28×28×3)個變量。隨著圖像尺寸的增加,那么變量的數(shù)量就會急劇增加。
通過對圖片進行卷積,可以減少變量的數(shù)目(已在過濾器的概念中提及)。隨著過濾器沿著圖像上寬和高的兩個方向滑動,就會產(chǎn)生一個相應(yīng)的 2 維激活映射,最后再沿縱向?qū)⑺械募せ钣成涠询B在一起,就產(chǎn)生了最后的輸出。
可以參照下面這個示意圖。
為進一步減少變量的數(shù)目同時防止過擬合,一種常見的做法是在卷積層中引入池化層(Pooling Layer)。
最常用的池化層的操作是將原始圖片中每個 4×4 分塊取最大值形成一個新的矩陣,這叫做最大值池化(Max Pooling)。
也有人嘗試諸如平均池化(Average Pooling)之類的方式,但在實際情況中最大化池化擁有更好的效果。
補白(Padding)通常是指給圖像的邊緣增加額外的空白,從而使得卷積后輸出的圖像跟輸入圖像在尺寸上一致,這也被稱作相同補白(Same Padding)。
如應(yīng)用過濾器,在相同補白的情況下,卷積后的圖像大小等于實際圖像的大小。
有效補白(Valid Padding)指的是保持圖片上每個真實的像素點,不增加空白,因此在經(jīng)歷卷積后數(shù)據(jù)的尺寸會不斷變小。
數(shù)據(jù)增強指的是從已有數(shù)據(jù)中創(chuàng)造出新的數(shù)據(jù),通過增加訓(xùn)練量以期望能夠提高預(yù)測的準(zhǔn)確率。
比如,在數(shù)字識別中,我們遇到的數(shù)字9可能是傾斜或旋轉(zhuǎn)的,因此如果將訓(xùn)練的圖片進行適度的旋轉(zhuǎn),增大訓(xùn)練量,那么模型的準(zhǔn)確性就可能會得到提高。
通過「旋轉(zhuǎn)」「照亮」的操作,訓(xùn)練數(shù)據(jù)的品質(zhì)得到了提升,這種過程被稱作數(shù)據(jù)增強。
對于遞歸神經(jīng)元來說,經(jīng)由它自己處理過的數(shù)據(jù)會變成自身下一次的輸入,這個過程總共會進行 t 次。
如下圖所示,將遞歸神經(jīng)元展開就相當(dāng)于 t 個不同的神經(jīng)元串聯(lián)起來,這種神經(jīng)元的長處是能夠產(chǎn)生一個更全面的輸出結(jié)果。
遞歸神經(jīng)網(wǎng)絡(luò)通常被用于處理序列化的數(shù)據(jù),即前一項的輸出是用來預(yù)測下一項的輸入。
遞歸神經(jīng)網(wǎng)絡(luò)通常被用于處理序列化的數(shù)據(jù),即前一項的輸出是用來預(yù)測下一項的輸入。遞歸神經(jīng)網(wǎng)絡(luò)中存在環(huán)的結(jié)構(gòu),這些神經(jīng)元上的環(huán)狀結(jié)構(gòu)使得它們能夠存儲之前的數(shù)據(jù)一段時間,從而使得能夠預(yù)測輸出。
與遞歸神經(jīng)元相似,在 RNN 中隱含層的輸出會作為下一次的輸入,如此往復(fù)經(jīng)歷 t 次,再將輸出的結(jié)果傳遞到下一層網(wǎng)絡(luò)中。這樣,最終輸出的結(jié)果會更全面,而且之前訓(xùn)練的信息被保持的時間會更久。
隱藏層將反向傳遞錯誤以更新權(quán)重。這被稱為 backpropagation through time(BPTT)。
當(dāng)激活函數(shù)的梯度非常小時,會出現(xiàn)梯度消失問題。在反向傳播過程中,權(quán)重因子會被多次乘以這些小的梯度,因此會越變越小。隨著遞歸的深入趨于「消失」,神經(jīng)網(wǎng)絡(luò)失去了長程可靠性。這在遞歸神經(jīng)網(wǎng)絡(luò)中是一個較普遍的問題,對于遞歸神經(jīng)網(wǎng)絡(luò)而言,長程可靠性尤為重要。
這一問題可通過采用 ReLu 等沒有小梯度的激活函數(shù)來有效避免。
梯度爆炸問題與梯度消失問題正好相反,梯度爆炸問題中,激活函數(shù)的梯度過大。
在反向傳播過程中,部分節(jié)點的大梯度使得他們的權(quán)重變得非常大,從而削弱了其他節(jié)點對于結(jié)果的影響,這個問題可以通過截斷(即設(shè)置一個梯度允許的最大值)的方式來有效避免。
本文對深度學(xué)習(xí)的基本概念做出了高度的概括,希望各位在閱讀這篇文章后,可以對這些概念有初步的了解。
希望你們喜歡這篇文章。
聯(lián)系客服