深度学习导论(6)误差计算
深度學習導論(6)誤差計算
- 一. 再談?wù)`差計算
- 二. 神經(jīng)網(wǎng)絡(luò)類型
- 三. 模型的容量和泛化能力
- 四. 過擬合與欠擬合
- 1. 過擬合(Overfitting)
- 2. 欠擬合(Underfitting)
- 五. 劃分驗證集
- 六. 如何使用驗證集
- 七. 過擬合和欠擬合的解決辦法
- 八. 正則化
- 1. 定義
- 2. 正則化方式
- (1) L0正則化
- (2) L1正則化
- (3) L2正則化
- 3. 正則化效果
- 4. Dropout
一. 再談?wù)`差計算
常見誤差計算函數(shù)
(1) 均方差(Mean Squared Error,MSE)
- 常用于回歸問題。把輸出向量和真實向量映射到笛卡爾坐標系的兩個點上,通過計算這兩個點之間的歐式距離(準確地說是歐式距離的平方)來衡量兩個向量之間的差距。
MSE:=1dout∑i=1dout(yi?oi)2MSE:=\frac{1}{d_{out}}\sum^{d_{out}}_{i=1}{(y_i-o_i)^2}MSE:=dout?1?i=1∑dout??(yi??oi?)2
(2) 交叉熵(Cross Entropy) - 常用于分類問題。
- 用來衡量信息的不確定性。熵越大,代表不確定性越大。
- 某個分布(i)(i)(i)的熵定義為:
H(P):=?∑i=0P(i)log2P(i)H(P):=-\sum_{i=0}{P(i)log_2P(i)}H(P):=?i=0∑?P(i)log2?P(i)
例如,對于4分類問題,如果某個樣本的真實標簽是第4類,one-hot編碼為[0, 0, 0, 1],即對這張圖片的分類是唯一確定的,它屬于第4類的概率(yis4│x)=1(y\ is\ 4│x)=1(y?is?4│x)=1,不確定性為0,它的熵可以簡單的計算為:
?0?log20?0?log20?0?log20?1?log21=0-0*log_20-0*log_20-0*log_20-1*log_21=0?0?log2?0?0?log2?0?0?log2?0?1?log2?1=0
如果它預(yù)測的概率分布是[0.1, 0.1, 0.1, 0.7],它的熵可以計算為:
?0.1?log20.1?0.1?log20.1?0.1?log20.1?0.7?log20.7≈1.356-0.1*log_20.1-0.1*log_20.1-0.1*log_20.1-0.7*log_20.7\approx1.356?0.1?log2?0.1?0.1?log2?0.1?0.1?log2?0.1?0.7?log2?0.7≈1.356
(3) KL散度(Kullback-Leibler Divergence)
交叉熵 - H(p,q)??∑i=0p(i)log2q(i)H(p,q)?-\sum_{i=0}{p(i)log_2q(i)}H(p,q):=?i=0∑?p(i)log2?q(i)
- 通過變換,交叉熵可以分解為ppp的熵H(p)H(p)H(p)與ppp,qqq的KL散度(Kullback-Leibler Divergence)的和: H(p,q)=H(p)+DKL(p∣q)H(p,q)=H(p)+D_{KL} (p|q)H(p,q)=H(p)+DKL?(p∣q)
- 其中KL定義為:
DKL(p│q)=∑x∈Xp(x)log?(p(x)q(x))D_{KL}(p│q)=\sum_{x\in X}{p(x)log?(\frac{p(x)}{q(x)})}DKL?(p│q)=x∈X∑?p(x)log?(q(x)p(x)?)
KL散度是衡量兩個分部之間距離的指標,p=qp=qp=q時,DKL(p│q)D_{KL} (p│q)DKL?(p│q)取得最小值0。交叉熵可以很好地衡量2個分布之間的差別,特別地,當分類問題中y的編碼分布采用one-hot編碼時: H(y)=0H(y)=0H(y)=0,此時:
H(y,o)=DKL(y│o)=∑jyilog?(yioi)=1?log1oi+∑(j≠i)0?log?(ooj)=?logoiH(y,o)=D_{KL}(y│o)=\sum_j{y_ilog?(\frac{y_i}{o_i})}=1*log \frac{1}{o_i}+\sum_{(j≠i)}{0*log?(\frac{o}{o_j})}=-logo_iH(y,o)=DKL?(y│o)=j∑?yi?log?(oi?yi??)=1?logoi?1?+(j?=i)∑?0?log?(oj?o?)=?logoi?
其中i為one-hot編碼中為1的索引號,也是當前輸入的真實類別。可以看到,HHH只與真實類別iii上的概率oio_ioi?有關(guān)。
(4) Hinge Loss函數(shù)
二. 神經(jīng)網(wǎng)絡(luò)類型
(1) 全神經(jīng)網(wǎng)絡(luò)(DNN)
- 特征維度比較大時參數(shù)量大。
(2) 卷積神經(jīng)網(wǎng)絡(luò)(CNN) - 圖像、計算機視覺領(lǐng)域,1986年YannLecun提出。
(3) 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN) - 處理序列信號數(shù)據(jù)類型,如文本數(shù)據(jù)。其變種有LSTM、GRU、雙向RNN等。
(4) 注意力機制(Attention)網(wǎng)絡(luò) - 克服了RNN訓練不穩(wěn)定、難以并行化等缺陷,在自然語言處理和圖片生成等領(lǐng)域中逐漸嶄露頭角,逐漸開始用于NLP等領(lǐng)域。
(5) 圖神經(jīng)網(wǎng)絡(luò) - 2016年,Tomas Kipf等人基于前人在一階近似的譜卷積算法上提出了圖卷積(Graph Convolutional Network, GCN)網(wǎng)絡(luò)模型,擅長處理類似于社交網(wǎng)絡(luò)、通信網(wǎng)絡(luò),蛋白質(zhì)分子結(jié)構(gòu)等不規(guī)則的空間拓撲結(jié)構(gòu)的數(shù)據(jù)。
三. 模型的容量和泛化能力
(1) 泛化能力
- 從訓練集上學習到數(shù)據(jù)的真實模型,從而能夠在未見過的測試集上也能夠表現(xiàn)良好。
- 通常,訓練集和測試集都采樣自某個相同的數(shù)據(jù)分布p(x),采樣到的樣本是相互獨立的,但是又來自于相同的分布(獨立同分布假設(shè),Independent Identical Distribution assumption,i.i.d.)。
(2) 模型的容量 - 指模型的表達能力,即模型擬合復雜函數(shù)的能力。
- 一種體現(xiàn)模型容量的指標為模型的假設(shè)空間(Hypothesis Space)大小,即模型可以表示函數(shù)集的大小。假設(shè)空間越大越完備,從假設(shè)空間中搜索出逼近真實模型的函數(shù)也就越有可能; 反之,如果假設(shè)空間非常受限,就很難從中找到逼近真實模型的函數(shù)。
多項式模型容量示意圖:
函數(shù)的假設(shè)空間越大,就越有可能找到一個函數(shù)更逼近真實分布的函數(shù)模型,但是過大的假設(shè)空間會增加搜索難度和計算代價,在有限的計算資源的約束下,較大的假設(shè)空間并不一定能搜索出更好的函數(shù)模型。同時由于觀測誤差的存在,較大的假設(shè)空間中可能包含了大量表達能力過強的函數(shù),能夠?qū)⒂柧殬颖镜挠^測誤差也學習進來,從而影響了模型的泛化能力。
四. 過擬合與欠擬合
模型的容量和誤差之間的關(guān)系(Goodfellow,Bengio,&Courville,2016)
1. 過擬合(Overfitting)
- 當模型的容量過大時,網(wǎng)絡(luò)模型除了學習到訓練集數(shù)據(jù)的模態(tài)之外,還把額外的觀測誤差也學習進來,導致學習的模型在訓練集上面表現(xiàn)較好,但是在未見的樣本上表現(xiàn)不佳,也就是泛化能力偏弱。
- 深度學習中經(jīng)常容易出現(xiàn)過擬合問題。
2. 欠擬合(Underfitting)
- 當模型的容量過小時,模型不能夠很好地學習到訓練集數(shù)據(jù)的模態(tài),導致數(shù)據(jù)距離擬合曲線較遠,或指模型沒有很好地捕捉到數(shù)據(jù)特征,不能夠很好地擬合數(shù)據(jù)。
- 可以通過增加神經(jīng)網(wǎng)絡(luò)的層數(shù)、增大中間維度的大小等手段,比較好的解決欠擬合的問題。
五. 劃分驗證集
訓練集Dtrain\bold{D}_{train}Dtrain?用于訓練模型參數(shù),測試集Dtest\bold{D}_{test}Dtest?用于測試模型的泛化能力,測試集中的樣本不能參與模型的訓練,防止模型“記憶”住數(shù)據(jù)的特征,損害模型的泛化能力。訓練集和測試集都是采樣自相同的數(shù)據(jù)分布,比如MNIST手寫數(shù)字圖片集共有7萬張樣本圖片,其中6萬張圖片用作訓練集,余下的1萬張圖片用于測試集。
由于測試集的性能不能作為模型訓練的反饋,而我們需要在模型訓練時能夠挑選出較合適的模型超參數(shù),判斷模型是否過擬合等,因此需要將訓練集再次切分為訓練集Dtrain\bold{D}^{train}Dtrain和驗證集Dval\bold{D}^{val}Dval。驗證集用于選擇模型的超參數(shù)(稱為模型選擇,Model selection),它的功能包括:
(1) 根據(jù)驗證集的性能表現(xiàn)來調(diào)整學習率,訓練次數(shù)等;
(2) 根據(jù)驗證集的性能表現(xiàn)來重新調(diào)整網(wǎng)絡(luò)拓撲結(jié)構(gòu);
(3) 根據(jù)驗證集的性能表現(xiàn)判斷是否過擬合和欠擬合;
訓練集、驗證集和測試集可以按著自定義的比例來劃分,比如常見的60%-20%-20%的劃分。
六. 如何使用驗證集
- Step: 把對訓練集中的一個Batch運算更新一次叫做一個Step;
- Epoch: 對訓練集的所有樣本循環(huán)迭代一次叫做一個Epoch;
- 驗證集可以在數(shù)次Step或數(shù)次Epoch后使用。驗證的步驟過于頻繁,能夠精準地觀測模型的訓練狀況,但是也會引入額外的計算代價,一般建議幾個Epoch后進行一次驗證運算。
- 如果模型的訓練誤差較低,訓練準確率較高,但是驗證誤差較高,驗證準確率較低,那么可能出現(xiàn)了過擬合現(xiàn)象;
- 如果訓練集和驗證集上面的誤差都較高,準確率較低,那么可能出現(xiàn)了欠擬合現(xiàn)象。
七. 過擬合和欠擬合的解決辦法
- 以重新設(shè)計網(wǎng)絡(luò)模型的容量,如降低網(wǎng)絡(luò)的層數(shù)、降低網(wǎng)絡(luò)的參數(shù)量、添加假設(shè)空間的約束等,使得模型的容量降低;
- 可以通過稀疏化參數(shù)、添加正則化等手段降低模型的容量;
- 當發(fā)現(xiàn)驗證準確率連續(xù)P個Epoch沒有下降時,可以預(yù)測已經(jīng)達到了最合適的epoch附近,從而提前終止訓練。
- 可以嘗試增大網(wǎng)絡(luò)的容量,如加深網(wǎng)絡(luò)的層數(shù)、增加網(wǎng)絡(luò)的參數(shù)量,嘗試更復雜的網(wǎng)絡(luò)模型結(jié)構(gòu)。
八. 正則化
1. 定義
通過設(shè)計不同的層數(shù)、大小的網(wǎng)絡(luò)模型可以為優(yōu)化算法提供出事的函數(shù)假設(shè)空間,但是模型的實際容量可以隨著網(wǎng)絡(luò)參數(shù)的優(yōu)化而產(chǎn)生變化。以多項式函數(shù)為例:
y=β0+β1x+β2x2+β3x3+?+βnxn+?y=β_0+β_1 x+β_2 x^2+β_3 x^3+?+β_n x^n+?y=β0?+β1?x+β2?x2+β3?x3+?+βn?xn+?
上述模型的容量可以通過n簡單衡量,在訓練的過程中,如果網(wǎng)絡(luò)參數(shù)β(k+1),…,βn=0β_{(k+1)},…,β_n=0β(k+1)?,…,βn?=0,那么網(wǎng)絡(luò)的實際容量退化到kkk次多項式的函數(shù)容量。因此,通過限制網(wǎng)絡(luò)參數(shù)的稀疏性,可以來約束網(wǎng)絡(luò)的實際容量。
這種約束一般通過在損失函數(shù)上添加額外的參數(shù)稀疏性懲罰實現(xiàn),在未加約束之前的優(yōu)化目標是:
MinimizeL(fθ(x),y),(x,y)∈DtrainMinimizeL(f_θ (x),y), \quad(x,y)∈\bold{D}^{train}MinimizeL(fθ?(x),y),(x,y)∈Dtrain
對模型的參數(shù)添加額外的約束后,優(yōu)化的目標變?yōu)?
MinimizeL(fθ(x),y)+λ?Ω(θ),(x,y)∈DtrainMinimizeL(f_θ (x),y)+λ*Ω(θ) ,(x,y)∈\bold{D}^{train}MinimizeL(fθ?(x),y)+λ?Ω(θ),(x,y)∈Dtrain
其中Ω(θ)Ω(θ)Ω(θ)表示對網(wǎng)絡(luò)參數(shù)θ的稀疏性約束函數(shù)。一般地,參數(shù)θθθ的稀疏性約束通過約束參數(shù)θθθ的LLL范數(shù)實現(xiàn),即:
Ω(θ)=∑θi‖θi‖lΩ(θ)=∑_{θ_i}‖θ_i ‖_l Ω(θ)=θi?∑?‖θi?‖l?
新的優(yōu)化目標除了要最小化原來的損失函數(shù)L(x,y)L(x,y)L(x,y)之外,還需要網(wǎng)絡(luò)參數(shù)的稀疏性,優(yōu)化算法會在降低L(x,y)L(x,y)L(x,y)的同時,盡可能地迫使網(wǎng)絡(luò)參數(shù)θiθ_iθi?變得稀疏,他們之間的權(quán)重關(guān)系通過超參數(shù)λ來平衡,較大的λ意味著網(wǎng)絡(luò)的稀疏性更重要; 較小的λλλ則意味著網(wǎng)絡(luò)的訓練誤差更重要。通過選擇合適的λλλ超參數(shù)可以獲得較好的訓練性能,同時保證網(wǎng)絡(luò)的稀疏性,從而獲得不錯的泛化能力。常用的正則化方式有L0,L1,L2正則化。
2. 正則化方式
(1) L0正則化
采用L0范數(shù)作為稀疏性懲罰項Ω(θ)的正則化方式叫做L0正則化,即:
Ω(θ)=∑θi‖θi‖0Ω(θ)=∑_{θ_i}‖θ_i ‖_0 Ω(θ)=θi?∑?‖θi?‖0?
其中L0范數(shù)‖θi‖0‖θ_i ‖_0‖θi?‖0?定義為θiθ_iθi?中非零元素的個數(shù)。通過約束∑θi‖θi‖0∑_{θ_i}{‖θ_i ‖_0}∑θi??‖θi?‖0?的大小可以迫使網(wǎng)絡(luò)中的連接權(quán)值大部分為0,從而降低網(wǎng)絡(luò)的實際參數(shù)量和網(wǎng)絡(luò)容量。但是由于L0范數(shù)‖θi‖0‖θ_i ‖_0‖θi?‖0?并不可導,步能利用梯度下降算法進行優(yōu)化,在神經(jīng)網(wǎng)絡(luò)中使用的并不多。
(2) L1正則化
采用L1范數(shù)作為稀疏性懲罰項Ω(θ)的正則化方式叫做L1正則化,即:
Ω(θ)=∑θi‖θi‖1Ω(θ)=∑_{θ_i}‖θ_i ‖_1 Ω(θ)=θi?∑?‖θi?‖1?
其中L1范數(shù)‖θi‖1‖θ_i ‖_1‖θi?‖1?定義為張量θiθ_iθi?中所有元素的絕對值之和。L1正則化也叫Lasso Regularization,它是連續(xù)可導的,在神經(jīng)網(wǎng)絡(luò)中使用廣泛。
(3) L2正則化
采用L2范數(shù)作為稀疏性懲罰項Ω(θ)的正則化方式叫做L2正則化,即:
Ω(θ)=∑θi‖θi‖2Ω(θ)=∑_{θ_i}‖θ_i ‖_2 Ω(θ)=θi?∑?‖θi?‖2?
其中L2范數(shù)‖θi‖2‖θ_i ‖_2‖θi?‖2?定義為張量θiθ_iθi?中所有元素的平方和。L2正則化也叫做Ridge Regularization,它和L1正則化一樣,也是連續(xù)可導的,在神經(jīng)網(wǎng)絡(luò)中使用廣泛。
3. 正則化效果
- 可以看到,隨著正則化系數(shù)λ的增加,網(wǎng)絡(luò)對參數(shù)稀疏性的懲罰變大,從而迫使優(yōu)化算法搜索而網(wǎng)絡(luò)容量更小的模型。在λ=0.00001時,正則化的作用比較微弱,網(wǎng)絡(luò)出現(xiàn)了過擬合現(xiàn)象; 但是λ=0.1時,網(wǎng)絡(luò)已經(jīng)能夠優(yōu)化到合適的容量,并沒有出現(xiàn)明顯過擬合或者欠擬合現(xiàn)象。
- 在實際訓練時,一般先嘗試較小的正則化系數(shù)λ,觀測網(wǎng)絡(luò)是否出現(xiàn)過擬合現(xiàn)象。然后嘗試逐漸增大λ參數(shù)來正價網(wǎng)絡(luò)參數(shù)稀疏性,提高泛化能力。但是,過大的λ參數(shù)有可能導致網(wǎng)絡(luò)不收斂,需要根據(jù)實際任務(wù)調(diào)節(jié)。
4. Dropout
- 在2012年,Hiton等人在其論文《Improving neural networks by preventing co-adaptation of feature detectors》中使用了Dropout方法來提高模型性能。
- Dropout通過隨機斷開神經(jīng)網(wǎng)絡(luò)的連接,減少每次訓練時實際參與計算的模型的參數(shù)量; 但是在測試時,Dropout會恢復所有的連接,保證模型測試時獲得最好的性能。
- 每條連接是否斷開符合某種預(yù)設(shè)的概率分布,如斷開概率為p的伯努利分布。圖(b)顯示了某次具體的采樣結(jié)果,虛線代表了采樣結(jié)果為斷開的連接線,實際代表了采樣結(jié)果不斷開的連接線。
總結(jié)
以上是生活随笔為你收集整理的深度学习导论(6)误差计算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 京东仓储REIT在上交所上市 募集资金1
- 下一篇: 深度学习(1)深度学习初见