日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习导论(6)误差计算

發布時間:2023/12/15 pytorch 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习导论(6)误差计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深度學習導論(6)誤差計算

  • 一. 再談誤差計算
  • 二. 神經網絡類型
  • 三. 模型的容量和泛化能力
  • 四. 過擬合與欠擬合
    • 1. 過擬合(Overfitting)
    • 2. 欠擬合(Underfitting)
  • 五. 劃分驗證集
  • 六. 如何使用驗證集
  • 七. 過擬合和欠擬合的解決辦法
  • 八. 正則化
    • 1. 定義
    • 2. 正則化方式
      • (1) L0正則化
      • (2) L1正則化
      • (3) L2正則化
    • 3. 正則化效果
    • 4. Dropout

一. 再談誤差計算

常見誤差計算函數
(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=1dout??(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?4x)=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
    如果它預測的概率分布是[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.71.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)pppqqq的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?(pq)
  • 其中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?(pq)=xX?p(x)log?(q(x)p(x)?)
    KL散度是衡量兩個分部之間距離的指標,p=qp=qp=q時,DKL(p│q)D_{KL} (p│q)DKL?(pq)取得最小值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?(yo)=j?yi?log?(oi?yi??)=1?logoi?1?+(j?=i)?0?log?(oj?o?)=?logoi?
    其中i為one-hot編碼中為1的索引號,也是當前輸入的真實類別。可以看到,HHH只與真實類別iii上的概率oio_ioi?有關。
    (4) Hinge Loss函數

二. 神經網絡類型

(1) 全神經網絡(DNN)

  • 特征維度比較大時參數量大。
    (2) 卷積神經網絡(CNN)
  • 圖像、計算機視覺領域,1986年YannLecun提出。
    (3) 循環神經網絡(RNN)
  • 處理序列信號數據類型,如文本數據。其變種有LSTM、GRU、雙向RNN等。
    (4) 注意力機制(Attention)網絡
  • 克服了RNN訓練不穩定、難以并行化等缺陷,在自然語言處理和圖片生成等領域中逐漸嶄露頭角,逐漸開始用于NLP等領域。
    (5) 圖神經網絡
  • 2016年,Tomas Kipf等人基于前人在一階近似的譜卷積算法上提出了圖卷積(Graph Convolutional Network, GCN)網絡模型,擅長處理類似于社交網絡、通信網絡,蛋白質分子結構等不規則的空間拓撲結構的數據。

三. 模型的容量和泛化能力

(1) 泛化能力

  • 從訓練集上學習到數據的真實模型,從而能夠在未見過的測試集上也能夠表現良好。
  • 通常,訓練集和測試集都采樣自某個相同的數據分布p(x),采樣到的樣本是相互獨立的,但是又來自于相同的分布(獨立同分布假設,Independent Identical Distribution assumption,i.i.d.)。
    (2) 模型的容量
  • 指模型的表達能力,即模型擬合復雜函數的能力。
  • 一種體現模型容量的指標為模型的假設空間(Hypothesis Space)大小,即模型可以表示函數集的大小。假設空間越大越完備,從假設空間中搜索出逼近真實模型的函數也就越有可能; 反之,如果假設空間非常受限,就很難從中找到逼近真實模型的函數。

多項式模型容量示意圖:

函數的假設空間越大,就越有可能找到一個函數更逼近真實分布的函數模型,但是過大的假設空間會增加搜索難度和計算代價,在有限的計算資源的約束下,較大的假設空間并不一定能搜索出更好的函數模型。同時由于觀測誤差的存在,較大的假設空間中可能包含了大量表達能力過強的函數,能夠將訓練樣本的觀測誤差也學習進來,從而影響了模型的泛化能力。

四. 過擬合與欠擬合

模型的容量和誤差之間的關系(Goodfellow,Bengio,&Courville,2016)

1. 過擬合(Overfitting)

  • 當模型的容量過大時,網絡模型除了學習到訓練集數據的模態之外,還把額外的觀測誤差也學習進來,導致學習的模型在訓練集上面表現較好,但是在未見的樣本上表現不佳,也就是泛化能力偏弱。
  • 深度學習中經常容易出現過擬合問題。

2. 欠擬合(Underfitting)

  • 當模型的容量過小時,模型不能夠很好地學習到訓練集數據的模態,導致數據距離擬合曲線較遠,或指模型沒有很好地捕捉到數據特征,不能夠很好地擬合數據。
  • 可以通過增加神經網絡的層數、增大中間維度的大小等手段,比較好的解決欠擬合的問題。

五. 劃分驗證集

訓練集Dtrain\bold{D}_{train}Dtrain?用于訓練模型參數,測試集Dtest\bold{D}_{test}Dtest?用于測試模型的泛化能力,測試集中的樣本不能參與模型的訓練,防止模型“記憶”住數據的特征,損害模型的泛化能力。訓練集和測試集都是采樣自相同的數據分布,比如MNIST手寫數字圖片集共有7萬張樣本圖片,其中6萬張圖片用作訓練集,余下的1萬張圖片用于測試集。
由于測試集的性能不能作為模型訓練的反饋,而我們需要在模型訓練時能夠挑選出較合適的模型超參數,判斷模型是否過擬合等,因此需要將訓練集再次切分為訓練集Dtrain\bold{D}^{train}Dtrain和驗證集Dval\bold{D}^{val}Dval。驗證集用于選擇模型的超參數(稱為模型選擇,Model selection),它的功能包括:
(1) 根據驗證集的性能表現來調整學習率,訓練次數等;
(2) 根據驗證集的性能表現來重新調整網絡拓撲結構;
(3) 根據驗證集的性能表現判斷是否過擬合和欠擬合;
訓練集、驗證集和測試集可以按著自定義的比例來劃分,比如常見的60%-20%-20%的劃分。

六. 如何使用驗證集

  • 驗證集使用時機:
    • Step: 把對訓練集中的一個Batch運算更新一次叫做一個Step;
    • Epoch: 對訓練集的所有樣本循環迭代一次叫做一個Epoch;
    • 驗證集可以在數次Step或數次Epoch后使用。驗證的步驟過于頻繁,能夠精準地觀測模型的訓練狀況,但是也會引入額外的計算代價,一般建議幾個Epoch后進行一次驗證運算。
  • 通過觀測訓練準確率和驗證準確率可以大致推斷模型是否過擬合和欠擬合
    • 如果模型的訓練誤差較低,訓練準確率較高,但是驗證誤差較高,驗證準確率較低,那么可能出現了過擬合現象;
    • 如果訓練集和驗證集上面的誤差都較高,準確率較低,那么可能出現了欠擬合現象。

    七. 過擬合和欠擬合的解決辦法

  • 通過驗證集可以判斷網絡模型是否過擬合或者欠擬合。
  • 過擬合
    • 以重新設計網絡模型的容量,如降低網絡的層數、降低網絡的參數量、添加假設空間的約束等,使得模型的容量降低;
    • 可以通過稀疏化參數、添加正則化等手段降低模型的容量;
    • 當發現驗證準確率連續P個Epoch沒有下降時,可以預測已經達到了最合適的epoch附近,從而提前終止訓練。
  • 欠擬合
    • 可以嘗試增大網絡的容量,如加深網絡的層數、增加網絡的參數量,嘗試更復雜的網絡模型結構。

    八. 正則化

    1. 定義

    通過設計不同的層數、大小的網絡模型可以為優化算法提供出事的函數假設空間,但是模型的實際容量可以隨著網絡參數的優化而產生變化。以多項式函數為例:
    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簡單衡量,在訓練的過程中,如果網絡參數β(k+1),…,βn=0β_{(k+1)},…,β_n=0β(k+1)?,,βn?=0,那么網絡的實際容量退化到kkk次多項式的函數容量。因此,通過限制網絡參數的稀疏性,可以來約束網絡的實際容量。
    這種約束一般通過在損失函數上添加額外的參數稀疏性懲罰實現,在未加約束之前的優化目標是:
    MinimizeL(fθ(x),y),(x,y)∈DtrainMinimizeL(f_θ (x),y), \quad(x,y)∈\bold{D}^{train}MinimizeL(fθ?(x),y),(x,y)Dtrain
    對模型的參數添加額外的約束后,優化的目標變為:
    MinimizeL(fθ(x),y)+λ?Ω(θ),(x,y)∈DtrainMinimizeL(f_θ (x),y)+λ*Ω(θ) ,(x,y)∈\bold{D}^{train}MinimizeL(fθ?(x),y)+λ?Ω(θ),(x,y)Dtrain
    其中Ω(θ)Ω(θ)Ω(θ)表示對網絡參數θ的稀疏性約束函數。一般地,參數θθθ的稀疏性約束通過約束參數θθθLLL范數實現,即:
    Ω(θ)=∑θi‖θi‖lΩ(θ)=∑_{θ_i}‖θ_i ‖_l Ω(θ)=θi??θi?l?
    新的優化目標除了要最小化原來的損失函數L(x,y)L(x,y)L(x,y)之外,還需要網絡參數的稀疏性,優化算法會在降低L(x,y)L(x,y)L(x,y)的同時,盡可能地迫使網絡參數θiθ_iθi?變得稀疏,他們之間的權重關系通過超參數λ來平衡,較大的λ意味著網絡的稀疏性更重要; 較小的λλλ則意味著網絡的訓練誤差更重要。通過選擇合適的λλλ超參數可以獲得較好的訓練性能,同時保證網絡的稀疏性,從而獲得不錯的泛化能力。常用的正則化方式有L0,L1,L2正則化。

    2. 正則化方式

    (1) L0正則化

    采用L0范數作為稀疏性懲罰項Ω(θ)的正則化方式叫做L0正則化,即:
    Ω(θ)=∑θi‖θi‖0Ω(θ)=∑_{θ_i}‖θ_i ‖_0 Ω(θ)=θi??θi?0?
    其中L0范數‖θi‖0‖θ_i ‖_0θi?0?定義為θiθ_iθi?中非零元素的個數。通過約束∑θi‖θi‖0∑_{θ_i}{‖θ_i ‖_0}θi??θi?0?的大小可以迫使網絡中的連接權值大部分為0,從而降低網絡的實際參數量和網絡容量。但是由于L0范數‖θi‖0‖θ_i ‖_0θi?0?并不可導,步能利用梯度下降算法進行優化,在神經網絡中使用的并不多。

    (2) L1正則化

    采用L1范數作為稀疏性懲罰項Ω(θ)的正則化方式叫做L1正則化,即:
    Ω(θ)=∑θi‖θi‖1Ω(θ)=∑_{θ_i}‖θ_i ‖_1 Ω(θ)=θi??θi?1?
    其中L1范數‖θi‖1‖θ_i ‖_1θi?1?定義為張量θiθ_iθi?中所有元素的絕對值之和。L1正則化也叫Lasso Regularization,它是連續可導的,在神經網絡中使用廣泛。

    (3) L2正則化

    采用L2范數作為稀疏性懲罰項Ω(θ)的正則化方式叫做L2正則化,即:
    Ω(θ)=∑θi‖θi‖2Ω(θ)=∑_{θ_i}‖θ_i ‖_2 Ω(θ)=θi??θi?2?
    其中L2范數‖θi‖2‖θ_i ‖_2θi?2?定義為張量θiθ_iθi?中所有元素的平方和。L2正則化也叫做Ridge Regularization,它和L1正則化一樣,也是連續可導的,在神經網絡中使用廣泛。

    3. 正則化效果

    • 可以看到,隨著正則化系數λ的增加,網絡對參數稀疏性的懲罰變大,從而迫使優化算法搜索而網絡容量更小的模型。在λ=0.00001時,正則化的作用比較微弱,網絡出現了過擬合現象; 但是λ=0.1時,網絡已經能夠優化到合適的容量,并沒有出現明顯過擬合或者欠擬合現象。
    • 在實際訓練時,一般先嘗試較小的正則化系數λ,觀測網絡是否出現過擬合現象。然后嘗試逐漸增大λ參數來正價網絡參數稀疏性,提高泛化能力。但是,過大的λ參數有可能導致網絡不收斂,需要根據實際任務調節。

    4. Dropout

    • 在2012年,Hiton等人在其論文《Improving neural networks by preventing co-adaptation of feature detectors》中使用了Dropout方法來提高模型性能。
    • Dropout通過隨機斷開神經網絡的連接,減少每次訓練時實際參與計算的模型的參數量; 但是在測試時,Dropout會恢復所有的連接,保證模型測試時獲得最好的性能。
    • 每條連接是否斷開符合某種預設的概率分布,如斷開概率為p的伯努利分布。圖(b)顯示了某次具體的采樣結果,虛線代表了采樣結果為斷開的連接線,實際代表了采樣結果不斷開的連接線。

    總結

    以上是生活随笔為你收集整理的深度学习导论(6)误差计算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。