每當(dāng)我們訓(xùn)練自己的神經(jīng)網(wǎng)絡(luò)時(shí),我們都需要注意稱為神經(jīng)網(wǎng)絡(luò)的泛化的問題。從本質(zhì)上講,這意味著我們的模型在從給定數(shù)據(jù)中學(xué)習(xí)以及將所學(xué)信息應(yīng)用到其他方面有多出色。
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),將有一些數(shù)據(jù)在神經(jīng)網(wǎng)絡(luò)上進(jìn)行訓(xùn)練,并且還將保留一些數(shù)據(jù)以檢查神經(jīng)網(wǎng)絡(luò)的性能。如果神經(jīng)網(wǎng)絡(luò)在尚未訓(xùn)練的數(shù)據(jù)上表現(xiàn)良好,那么可以說它在給定數(shù)據(jù)上的推理效果很好。讓我們通過一個(gè)例子來理解這一點(diǎn)。
假設(shè)我們正在訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),該神經(jīng)網(wǎng)絡(luò)應(yīng)該告訴我們給定圖像是否有狗。假設(shè)我們有幾只狗的圖片,每只狗屬于某個(gè)品種,并且這些圖片中總共有12個(gè)品種。我將保留10個(gè)品種的狗的所有圖像進(jìn)行訓(xùn)練,而這2個(gè)品種的其余圖像將暫時(shí)保留。
現(xiàn)在,在進(jìn)入深度學(xué)習(xí)之前,讓我們從人類的角度來看待這一點(diǎn)。讓我們考慮一個(gè)一生中從未見過狗的人(僅舉一個(gè)例子)?,F(xiàn)在,我們將向人類展示10種狗,并告訴他們這是狗。此后,如果我們向他們展示其他2個(gè)品種,他們是否能夠說出它們也是狗?希望他們能做到,十個(gè)品種應(yīng)該足以理解和識別狗的獨(dú)特特征。從某些數(shù)據(jù)學(xué)習(xí)并將獲得的知識正確應(yīng)用于其他數(shù)據(jù)的這種概念稱為generalization(泛化)。
回到深度學(xué)習(xí),我們的目標(biāo)是使神經(jīng)網(wǎng)絡(luò)從給定的數(shù)據(jù)中盡可能有效地學(xué)習(xí)。如果我們成功地使神經(jīng)網(wǎng)絡(luò)了解到,其他2個(gè)品種都還狗,那么我們已經(jīng)培養(yǎng)了非常general(一般的)神經(jīng)網(wǎng)絡(luò),它會在現(xiàn)實(shí)世界中執(zhí)行得很好。
這實(shí)際上說起來容易做起來難,而訓(xùn)練通用神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)從業(yè)人員最令人沮喪的任務(wù)之一。這是由于神經(jīng)網(wǎng)絡(luò)中的一種現(xiàn)象,即過度擬合。如果神經(jīng)網(wǎng)絡(luò)對10種犬進(jìn)行訓(xùn)練,并且拒絕將其他2種犬歸為狗,那么該神經(jīng)網(wǎng)絡(luò)就過度適合了訓(xùn)練數(shù)據(jù)。這意味著神經(jīng)網(wǎng)絡(luò)已經(jīng)記住了那10種狗,并且只將它們視為狗。因此,它無法形成對狗長什么樣的普遍了解。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的同時(shí)解決這個(gè)問題是我們在本文中要探討的。
現(xiàn)在,我們實(shí)際上沒有自由在像“繁殖”這樣的基礎(chǔ)上劃分所有數(shù)據(jù)。相反,我們將簡單地拆分所有數(shù)據(jù)。數(shù)據(jù)的一部分,通常是較大部分(大約80–90%)將用于訓(xùn)練模型,其余部分將用于測試模型。我們的目標(biāo)是確保測試數(shù)據(jù)的性能與訓(xùn)練數(shù)據(jù)的性能大致相同。我們使用諸如損失和準(zhǔn)確性之類的指標(biāo)來衡量這一績效。
我們可以控制神經(jīng)網(wǎng)絡(luò)的某些方面,以防止過度擬合。讓我們一一介紹。首先是參數(shù)的數(shù)量。
參數(shù)數(shù)量
在神經(jīng)網(wǎng)絡(luò)中,參數(shù)的數(shù)量本質(zhì)上是指權(quán)重的數(shù)量。這將與層數(shù)和每一層中神經(jīng)元的數(shù)目成正比。參數(shù)和過度擬合的數(shù)量之間的關(guān)系如下:越多的參數(shù),越容易導(dǎo)致過擬合。
我們需要根據(jù)復(fù)雜性來定義問題。一個(gè)非常復(fù)雜的數(shù)據(jù)集將需要一個(gè)非常復(fù)雜的函數(shù)來成功理解和表示它。從數(shù)學(xué)上講,我們可以將復(fù)雜度與非線性相關(guān)聯(lián)。讓我們回想一下神經(jīng)網(wǎng)絡(luò)公式。
在此,W1,W2和W3是此神經(jīng)網(wǎng)絡(luò)的權(quán)重矩陣?,F(xiàn)在,我們需要注意的是方程中的激活函數(shù),該函數(shù)適用于每一層。由于具有這些激活功能,因此每一層都與下一層非線性連接。
第一層的輸出為f(W/_1 * X)(設(shè)L1),第二層的輸出為f(W/_2 * L1)。如您所見,由于激活函數(shù)(f),第二層的輸出與第一層具有非線性關(guān)系。因此,在神經(jīng)網(wǎng)絡(luò)的末端,最終值Y相對于輸入X具有一定程度的非線性,具體取決于神經(jīng)網(wǎng)絡(luò)中的層數(shù)。
層的數(shù)量越多,越多的激活函數(shù)擾亂層之間的線性度,并且因此更加非線性。
由于這種關(guān)系,我們可以說,如果神經(jīng)網(wǎng)絡(luò)在每一層中具有更多的層和更多的節(jié)點(diǎn),它將變得更加復(fù)雜。因此,我們需要根據(jù)數(shù)據(jù)的復(fù)雜性來調(diào)整參數(shù)。除了重復(fù)實(shí)驗(yàn)和比較結(jié)果外,沒有確定的方法。
在給定的實(shí)驗(yàn)中,如果測試指標(biāo)遠(yuǎn)低于訓(xùn)練指標(biāo),則模型具有過擬合,這意味著神經(jīng)網(wǎng)絡(luò)對于給定的數(shù)據(jù)具有太多的參數(shù)。這基本上意味著神經(jīng)網(wǎng)絡(luò)對于給定的數(shù)據(jù)來說太復(fù)雜了,需要簡化。如果測試分?jǐn)?shù)與訓(xùn)練分?jǐn)?shù)大致相同,則該模型已經(jīng)generalized,但這并不意味著我們已經(jīng)達(dá)到了神經(jīng)網(wǎng)絡(luò)的最大潛力。如果我們增加參數(shù),性能將會提高,但也可能會過擬合。因此,我們需要繼續(xù)嘗試通過平衡性能和泛化來優(yōu)化參數(shù)數(shù)量。
我們需要將神經(jīng)網(wǎng)絡(luò)的復(fù)雜度與數(shù)據(jù)復(fù)雜度相匹配。如果神經(jīng)網(wǎng)絡(luò)太復(fù)雜,它將開始記憶訓(xùn)練數(shù)據(jù),而不是對數(shù)據(jù)有一般的了解,從而導(dǎo)致過擬合。
通常,深度學(xué)習(xí)從業(yè)人員如何做到這一點(diǎn)是首先訓(xùn)練具有足夠大量參數(shù)的神經(jīng)網(wǎng)絡(luò),以使模型過擬合。因此,最初,我們嘗試獲得一個(gè)非常適合訓(xùn)練數(shù)據(jù)的模型。接下來,我們嘗試迭代地減少參數(shù)的數(shù)量,直到模型停止過度擬合為止,這可以視為一種最佳的神經(jīng)網(wǎng)絡(luò)。我們可以用來防止過度擬合的另一種技術(shù)是使用dropout神經(jīng)元。
dropout神經(jīng)元
在神經(jīng)網(wǎng)絡(luò)中,添加dropout神經(jīng)元是減少神經(jīng)網(wǎng)絡(luò)過度擬合的最流行,最有效的方法之一?;旧暇W(wǎng)絡(luò)中的每個(gè)神經(jīng)元都有一定的概率從網(wǎng)絡(luò)中完全退出。這意味著在特定時(shí)刻,某些神經(jīng)元將不會連接到網(wǎng)絡(luò)中的任何其他神經(jīng)元。這是一個(gè)視覺示例:
在訓(xùn)練過程中的每一個(gè)瞬間,一組不同的神經(jīng)元將以隨機(jī)的方式掉落。因此,我們可以說在每個(gè)時(shí)刻,我們都在有效地訓(xùn)練某個(gè)神經(jīng)網(wǎng)絡(luò)比原始神經(jīng)網(wǎng)絡(luò)少的某個(gè)子集神經(jīng)網(wǎng)絡(luò)。由于輟學(xué)神經(jīng)元的隨機(jī)性質(zhì),該子神經(jīng)網(wǎng)絡(luò)每次都會改變。
實(shí)際上,這里發(fā)生的是,當(dāng)我們訓(xùn)練帶有缺失神經(jīng)元的神經(jīng)網(wǎng)絡(luò)時(shí),我們基本上是在訓(xùn)練許多較小的子集神經(jīng)網(wǎng)絡(luò),并且由于權(quán)重是原始神經(jīng)網(wǎng)絡(luò)的一部分,因此神經(jīng)網(wǎng)絡(luò)的最終權(quán)重可以視為所有相應(yīng)子集神經(jīng)網(wǎng)絡(luò)權(quán)重的平均值。這是正在發(fā)生的事情的基本可視化:
這就是dropout神經(jīng)元在神經(jīng)網(wǎng)絡(luò)中的工作方式,但是為什么dropout會阻止過度擬合?這有兩個(gè)主要原因。
第一個(gè)原因是dropout的神經(jīng)元促進(jìn)神經(jīng)元獨(dú)立。由于在特定瞬間可能存在或不存在圍繞特定神經(jīng)元的神經(jīng)元這一事實(shí),因此該神經(jīng)元不能依賴于圍繞其的那些神經(jīng)元。因此,它會被迫成為更獨(dú)立,同時(shí)訓(xùn)練。
第二個(gè)原因是由于dropout,我們實(shí)質(zhì)上是一次訓(xùn)練多個(gè)較小的神經(jīng)網(wǎng)絡(luò)。通常,如果我們訓(xùn)練多個(gè)模型并求平均權(quán)重,則由于每個(gè)神經(jīng)網(wǎng)絡(luò)的獨(dú)立學(xué)習(xí)的積累,性能通常會提高。但是,這是一個(gè)昂貴的過程,因?yàn)槲覀冃枰x多個(gè)神經(jīng)網(wǎng)絡(luò)并分別進(jìn)行訓(xùn)練。但是,在輟學(xué)的情況下,這也做同樣的事情,而我們只需要一個(gè)神經(jīng)網(wǎng)絡(luò),就可以從中訓(xùn)練子神經(jīng)網(wǎng)絡(luò)的多種可能配置。
訓(xùn)練多個(gè)神經(jīng)網(wǎng)絡(luò)并匯總其學(xué)習(xí)知識稱為“集合”,通??梢蕴岣咝阅堋J褂胐ropout本質(zhì)上是在只有1個(gè)神經(jīng)網(wǎng)絡(luò)的情況下實(shí)現(xiàn)的。
減少過度擬合的下一種技術(shù)是權(quán)重正則化。
權(quán)重正則化
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),某些權(quán)重的值可能會變得非常大。發(fā)生這種情況是因?yàn)檫@些權(quán)重集中在訓(xùn)練數(shù)據(jù)中的某些特征上,這導(dǎo)致它們在整個(gè)訓(xùn)練過程中價(jià)值不斷增加。因此,網(wǎng)絡(luò)過度適合訓(xùn)練數(shù)據(jù)。
我們不需要不斷增加權(quán)重來捕獲特定模式。相反,如果它們的值相對于其他權(quán)重較高,則很好。但是,在訓(xùn)練過程中,當(dāng)神經(jīng)網(wǎng)絡(luò)通過多次迭代對數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),權(quán)重值可能會不斷增加,直到權(quán)重變大為止,這是不必要的。
為什么權(quán)重過大對神經(jīng)網(wǎng)絡(luò)不利的其他原因之一是由于增加的輸入輸出差異?;旧?,當(dāng)出現(xiàn)網(wǎng)絡(luò)中的巨大權(quán)重,這是非常容易對小的變化的輸入,但神經(jīng)網(wǎng)絡(luò)應(yīng)該基本輸出同樣的事情了類似的投入。當(dāng)我們擁有巨大的權(quán)重時(shí),即使我們保留兩個(gè)非常相似的單獨(dú)的數(shù)據(jù)輸入,它們的輸出也可能有很大的不同。這會導(dǎo)致在測試數(shù)據(jù)上發(fā)生許多錯(cuò)誤的預(yù)測,從而降低了神經(jīng)網(wǎng)絡(luò)的通用性。
神經(jīng)網(wǎng)絡(luò)中權(quán)重的一般規(guī)則是,神經(jīng)網(wǎng)絡(luò)中的權(quán)重越高,神經(jīng)網(wǎng)絡(luò)越復(fù)雜。因此,具有較高權(quán)重的神經(jīng)網(wǎng)絡(luò)通常趨于過擬合。
因此,基本上,我們需要限制權(quán)重的增長,以使權(quán)重不會增長太多,但是我們到底該如何做呢?神經(jīng)網(wǎng)絡(luò)嘗試將訓(xùn)練時(shí)的損失降到最低,因此我們可以嘗試在該損失函數(shù)中包括權(quán)重的一部分,以便在訓(xùn)練時(shí)權(quán)重也被最小化,但是當(dāng)然要優(yōu)先考慮減少損失。
有兩種執(zhí)行此操作的方法,稱為L1和L2正則化。在L1中,我們只占網(wǎng)絡(luò)中所有權(quán)重絕對值之和的一小部分。在L2中,我們在網(wǎng)絡(luò)中權(quán)重的所有平方值的總和中占一小部分。我們只是將此表達(dá)式添加到神經(jīng)網(wǎng)絡(luò)的整體損失函數(shù)中。公式如下:
在這里,lambda是一個(gè)允許我們改變權(quán)重變化程度的值。我們基本上只是將L1或L2項(xiàng)添加到神經(jīng)網(wǎng)絡(luò)的損失函數(shù)中,以便網(wǎng)絡(luò)也將嘗試最小化這些項(xiàng)。通過添加L1或L2正則化,網(wǎng)絡(luò)將限制其權(quán)重的增長,因?yàn)闄?quán)重的大小是損失函數(shù)的一部分,并且網(wǎng)絡(luò)始終嘗試使損失函數(shù)最小化。讓我們重點(diǎn)介紹L1和L2之間的一些區(qū)別。
使用L1正則化時(shí),雖然權(quán)重因正則化而減小,但L1嘗試將其完全降低到零。因此,對神經(jīng)網(wǎng)絡(luò)貢獻(xiàn)不大的不重要權(quán)重最終將變?yōu)榱?。但是,在L2的情況下,由于平方函數(shù)對于小于1的值成反比例,因此權(quán)重不會被推為零,而是被推為較小的值。因此,不重要的權(quán)重比其他權(quán)重要低得多。
這涵蓋了防止過度擬合的重要方法。在深度學(xué)習(xí)中,我們通常混合使用這些方法來改善神經(jīng)網(wǎng)絡(luò)的性能并改善模型的泛化性。
審核編輯 黃昊宇
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4777瀏覽量
100976 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8430瀏覽量
132859 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5511瀏覽量
121360
發(fā)布評論請先 登錄
相關(guān)推薦
評論