女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PyTorch教程-3.6. 概括

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:38 ? 次閱讀

考慮兩個正在努力準備期末考試的大學生。通常,這種準備將包括通過參加前幾年的考試來練習和測試他們的能力。盡管如此,在過去的考試中取得好成績并不能保證他們在重要的時候會出類拔萃。例如,想象一個學生 Elephantine Ellie,她的準備工作完全包括記住前幾年考試問題的答案。即使艾莉被賦予了象象般的記憶力,因此可以完美地回憶起任何以前見過的問題的答案,但當她面對一個新的(以前沒見過的)問題時,她可能還是會僵住) 問題。相比之下,想象另一個學生,Inductive Irene,記憶能力相對較差,但有能力挑選模式。請注意,如果考試真的由前一年的重復問題組成,那么 Ellie 將輕松勝過 Irene。即使 Irene 的推斷模式產生了 90% 的準確預測,它們也永遠無法與 Ellie 的 100% 召回率相提并論。然而,即使考試完全由新題組成,艾琳也可能保持 90% 的平均分。

作為機器學習科學家,我們的目標是發現模式。但是我們如何確定我們真的發現了一個普遍的模式而不是簡單地記住了我們的數據呢?大多數時候,我們的預測只有在我們的模型發現這種模式時才有用。我們不想預測昨天的股價,而是明天的。我們不需要為以前見過的病人識別已經診斷出的疾病,而是需要識別以前沒見過的病人的以前未確診的疾病。這個問題——如何發現泛化的模式——是機器學習的根本問題,可以說是所有統計學的根本問題。我們可以把這個問題看作是一個涵蓋所有科學的更宏大問題的一部分:我們什么時候有理由從特定的觀察到更一般的陳述(波普爾,2005 年)?

在現實生活中,我們必須使用有限的數據集合來擬合模型。該數據的典型規模在不同領域差異很大。對于許多重要的醫學問題,我們只能訪問幾千個數據點。在研究罕見病時,我們可能幸運地接觸到數百種疾病。相比之下,由標記照片組成的最大公共數據集(例如,ImageNet (Deng等人,2009 年))包含數百萬張圖像。而一些未標記的圖像集合,例如 Flickr YFC100M 數據集可能更大,包含超過 1 億張圖像(Thomee等人,2016 年). 然而,即使在這種極端規模下,與 1 百萬像素分辨率下所有可能圖像的空間相比,可用數據點的數量仍然是無限小的。每當我們處理有限樣本時,我們必須牢記這樣的風險,即我們可能會擬合我們的訓練數據,卻發現我們未能發現可概括的模式。

擬合更接近我們的訓練數據而不是底層分布的現象稱為過度擬合,而對抗過度擬合的技術通常稱為正則化方法。雖然沒有什么可以替代對統計學習理論的適當介紹(參見Boucheron等人(2005 年)、Vapnik(1998 年)),但我們將為您提供足夠的直覺來開始學習。我們將在全書的許多章節中重新審視泛化,探索各種模型中泛化的基本原理的已知內容,以及已經發現的啟發式技術(根據經驗)可以對實際感興趣的任務產生改進的泛化。

3.6.1. 訓練誤差和泛化誤差

在標準的監督學習設置中,我們假設訓練數據和測試數據是獨立于相同 分布繪制的。這通常稱為IID 假設。雖然這個假設很強,但值得注意的是,如果沒有任何這樣的假設,我們就會死在水里。為什么我們應該相信從分布中采樣的訓練數據P(X,Y)應該告訴我們如何對不同分布生成的測試數據進行預測 Q(X,Y)?事實證明,實現這樣的飛躍需要強有力的假設P和Q有關系。稍后我們將討論一些允許分布變化的假設,但首先我們需要了解 IID 情況,其中 P(?)=Q(?).

首先,我們需要區分訓練誤差 Remp,這是在訓練數據集上計算的統計量,泛化誤差 R,這是 對基礎分布的期望。您可以將泛化錯誤視為將您的模型應用于從相同的基礎數據分布中提取的無限的附加數據示例流時您會看到的情況。形式上,訓練誤差表示為總和(在3.1 節中使用相同的符號 ):

(3.6.1)Remp[X,y,f]=1n∑i=1nl(x(i),y(i),f(x(i))),

而泛化誤差表示為一個積分:

(3.6.2)R[p,f]=E(x,y)~P[l(x,y,f(x))]=∫∫l(x,y,f(x))p(x,y)dxdy.

問題是,我們永遠無法計算泛化誤差 R確切地。沒有人告訴我們密度函數的精確形式p(x,y). 此外,我們無法對無限的數據點流進行采樣。因此,在實踐中,我們必須通過將我們的模型應用于由隨機選擇的示例組成的獨立測試集來估計 泛化誤差X′ 和標簽y′從我們的訓練集中保留下來的。這包括將與計算經驗訓練誤差相同的公式應用于測試集 X′,y′.

至關重要的是,當我們在測試集上評估我們的分類器時,我們使用的是固定分類器(它不依賴于測試集的樣本),因此估計其誤差只是均值估計的問題。然而,對于訓練集來說,情況并非如此。請注意,我們最終得到的模型明確取決于訓練集的選擇,因此訓練誤差通常是對基礎總體真實誤差的有偏估計。泛化的核心問題是我們何時應該期望我們的訓練誤差接近總體誤差(以及泛化誤差)。

3.6.1.1. 模型復雜度

在經典理論中,當我們擁有簡單的模型和豐富的數據時,訓練誤差和泛化誤差往往很接近。然而,當我們使用更復雜的模型和/或更少的示例時,我們預計訓練誤差會下降但泛化差距會擴大。這不足為奇。想象一個模型類如此富有表現力,以至于對于任何數據集n例如,我們可以找到一組可以完美匹配任意標簽的參數,即使是隨機分配的。在這種情況下,即使我們完美地擬合了我們的訓練數據,我們怎么能得出關于泛化誤差的任何結論呢?就我們所知,我們的泛化誤差可能并不比隨機猜測好多少。

一般來說,在我們的模型類別沒有任何限制的情況下,我們不能僅基于擬合訓練數據就得出我們的模型已經發現任何可概括模式的結論(Vapnik等人,1994 年)。另一方面,如果我們的模型類不能適應任意標簽,那么它一定發現了一種模式。關于模型復雜性的學習理論思想從卡爾波普爾的思想中獲得了一些靈感,卡爾波普爾是一位有影響力的科學哲學家,他形式化了可證偽性標準。根據波普爾的說法,可以解釋任何和所有觀察結果的理論根本不是科學理論!畢竟,如果它不排除任何可能性,它能告訴我們關于這個世界的什么呢?簡而言之,我們想要的是一個無法實現的假設 解釋我們可能做出的任何觀察,但恰好與我們實際上做出的觀察相一致。

現在,究竟是什么構成了模型復雜性的適當概念是一個復雜的問題。通常,具有更多參數的模型能夠適應更多數量的任意分配標簽。然而,這不一定是真的。例如,內核方法在具有無限數量參數的空間中運行,但它們的復雜性由其他方式控制(Scholkopf 和 Smola,2002 年)。一個經常被證明有用的復雜性概念是參數可以采用的值的范圍。在這里,允許參數取任意值的模型會更復雜。我們將在下一節介紹權重衰減時重新討論這個想法,您的第一個實用正則化技術。值得注意的是,比較本質上不同的模型類(例如,決策樹與神經網絡)的成員之間的復雜性可能很困難。

在這一點上,我們必須強調另一個重點,我們將在介紹深度神經網絡時重新討論這一點。當模型能夠擬合任意標簽時,低訓練誤差并不一定意味著低泛化誤差。但是,它也不一定意味著高泛化錯誤!我們只能自信地說,僅憑低訓練誤差不足以證明低泛化誤差。深度神經網絡就是這樣的模型:雖然它們在實踐中泛化得很好,但它們太強大了,無法讓我們僅根據訓練誤差得出很多結論。在這些情況下,我們必須更多地依賴我們的堅持數據來證明事后的概括。holdout 數據(即驗證集)上的錯誤稱為驗證錯誤。

3.6.2. 欠擬合還是過擬合?

當我們比較訓練和驗證錯誤時,我們要注意兩種常見情況。首先,我們要注意訓練誤差和驗證誤差都很大但它們之間有一點差距的情況。如果模型無法減少訓練誤差,則可能意味著我們的模型太簡單(即表達能力不足)而無法捕捉我們嘗試建模的模式。此外,由于泛化差距 (Remp?R) 在我們的訓練和泛化誤差之間很小,我們有理由相信我們可以擺脫更復雜的模型。這種現象稱為欠擬合。

另一方面,正如我們上面所討論的,我們要注意訓練誤差明顯低于驗證誤差的情況,這表明存在嚴重的過度擬合。請注意,過度擬合并不總是壞事。特別是在深度學習中,最好的預測模型在訓練數據上的表現通常比在保留數據上的表現要好得多。最終,我們通常關心降低泛化誤差,只關心差距,因為它會成為實現這一目標的障礙。請注意,如果訓練誤差為零,則泛化差距恰好等于泛化誤差,我們只能通過縮小差距來取得進步。

3.6.2.1. 多項式曲線擬合

為了說明關于過度擬合和模型復雜性的一些經典直覺,請考慮以下內容:給定由單個特征組成的訓練數據x和相應的實值標簽 y,我們嘗試找到次數的多項式d

(3.6.3)y^=∑i=0dxiwi

估計標簽y. 這只是一個線性回歸問題,我們的特征由x,模型的權重由下式給出wi, 偏差由下式給出 w0自從x0=1對全部x. 由于這只是一個線性回歸問題,我們可以使用平方誤差作為我們的損失函數。

高階多項式函數比低階多項式函數更復雜,因為高階多項式的參數更多,模型函數的選擇范圍更廣。固定訓練數據集,相對于低階多項式,高階多項式函數應始終實現較低(最壞情況下,相等)的訓練誤差。事實上,只要每個數據示例都有不同的值 x,一個次數等于數據樣本個數的多項式函數可以完美地擬合訓練集。我們在圖 3.6.1中可視化多項式次數(模型復雜性)與欠擬合與過擬合之間的關系。

pYYBAGR5VImASSZ4AAFOdX2tUz0689.svg

圖 3.6.1模型復雜度對欠擬合和過擬合的影響

3.6.2.2. 數據集大小

正如上面的界限已??經表明的那樣,要牢記的另一個重要考慮因素是數據集大小。修復我們的模型,訓練數據集中的樣本越少,我們就越有可能(也更嚴重)遇到過擬合。隨著我們增加訓練數據量,泛化誤差通常會降低。此外,一般來說,更多的數據永遠不會有壞處。對于固定的任務和數據分布,模型復雜度的增加不應超過數據量的增加速度。給定更多數據,我們可能會嘗試擬合更復雜的模型。沒有足夠的數據,更簡單的模型可能更難被擊敗。對于許多任務,只有在有數千個訓練示例可用時,深度學習才會優于線性模型。部分地,

3.6.3. 選型

通常,我們選擇最終模型,只是在評估了以各種方式(不同架構、訓練目標、所選特征、數據預處理、學習率等)不同的多個模型之后。在眾多模型中進行選擇被恰當地稱為模型選擇。

原則上,在我們選擇了所有超參數之前,我們不應該接觸我們的測試集。如果我們在模型選擇過程中使用測試數據,則存在我們可能過度擬合測試數據的風險。那我們就麻煩大了。如果我們過度擬合我們的訓練數據,總會有對測試數據的評估來保持我們的誠實。但是如果我們過度擬合測試數據,我們怎么知道呢?參見 Ong等人。( 2005 )例如,即使對于可以嚴格控制復雜性的模型,這也會導致荒謬的結果。

因此,我們永遠不應該依賴測試數據來選擇模型。然而,我們也不能僅僅依靠訓練數據來選擇模型,因為我們無法估計我們用來訓練模型的數據的泛化誤差。

在實際應用中,情況變得更加模糊。雖然理想情況下我們只會接觸測試數據一次,以評估最好的模型或將少數模型相互比較,但真實世界的測試數據很少在使用一次后就被丟棄。我們很少能為每一輪實驗提供新的測試集。事實上,幾十年來回收基準數據會對算法的發展產生重大影響,例如圖像分類 和光學字符識別。

解決測試集訓練問題的常見做法 是將我們的數據分成三種方式,除了訓練和測試數據集之外還包含一個驗證集。結果是一種模糊的做法,驗證和測試數據之間的界限令人擔憂地模棱兩可。除非另有明確說明,否則在本書的實驗中,我們實際上使用的是正確稱為訓練數據和驗證數據的數據,沒有真正的測試集。因此,本書每個實驗中報告的準確度實際上是驗證準確度,而不是真正的測試集準確度。

3.6.3.1. 交叉驗證

當訓練數據稀缺時,我們甚至可能無法提供足夠的數據來構成適當的驗證集。這個問題的一個流行的解決方案是使用K折疊交叉驗證。在這里,原始訓練數據被拆分為 K非重疊子集。然后執行模型訓練和驗證K次,每次訓練K?1子集并在不同的子集(該輪未用于訓練的子集)上進行驗證。最后,通過對來自K實驗。

3.6.4. 概括

本節探討了機器學習中泛化的一些基礎。當我們進入更深的模型時,其中一些想法變得復雜且違反直覺,在那里,模型能夠嚴重過度擬合數據,并且復雜性的相關概念可能既隱含又違反直覺(例如,具有更多參數的更大架構泛化更好)。我們留給您一些經驗法則:

使用驗證集(或K-折疊交叉驗證)用于模型選擇;

更復雜的模型通常需要更多的數據;

復雜性的相關概念包括參數的數量和允許取值的范圍;

在其他條件相同的情況下,更多的數據幾乎總能帶來更好的泛化能力;

整個關于泛化的討論都是基于 IID 假設。如果我們放松這個假設,允許分布在訓練和測試階段之間移動,那么我們就不能說沒有進一步(也許更溫和)假設的泛化。

3.6.5. 練習

你什么時候能準確地解決多項式回歸問題?

至少給出五個例子,其中依賴隨機變量使得將問題作為 IID 數據處理是不可取的。

你能期望看到零訓練錯誤嗎?在什么情況下你會看到零泛化錯誤?

為什么是K-折疊交叉驗證的計算成本非常高?

為什么是K-折疊交叉驗證錯誤估計有偏差?

VC維定義為可以用任意標簽分類的最大點數{±1}通過一類函數的函數。為什么這不是衡量函數類復雜程度的好主意?提示:函數的大小如何?

您的經理給您提供了一個困難的數據集,您當前的算法在該數據集上表現不佳。您如何向他證明您需要更多數據?提示:您不能增加數據,但可以減少它。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8490

    瀏覽量

    134080
  • pytorch
    +關注

    關注

    2

    文章

    809

    瀏覽量

    13760
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    VCO原理 設計知識總結概括

    VCO原理 設計知識總結概括
    發表于 07-28 17:11

    Pytorch模型訓練實用PDF教程【中文】

    ?模型部分?還是優化器?只有這樣不斷的通過可視化診斷你的模型,不斷的對癥下藥,才能訓練出一個較滿意的模型。本教程內容及結構:本教程內容主要為在 PyTorch 中訓練一個模型所可能涉及到的方法及函數,并且
    發表于 12-21 09:18

    Pytorch自動求導示例

    Pytorch自動微分的幾個例子
    發表于 08-09 11:56

    Pytorch入門之的基本操作

    Pytorch入門之基本操作
    發表于 05-22 17:15

    PyTorch如何入門

    PyTorch 入門實戰(一)——Tensor
    發表于 06-01 09:58

    PyTorch10的基礎教程

    PyTorch 10 基礎教程(4):訓練分類器
    發表于 06-05 17:42

    Pytorch AI語音助手

    想做一個Pytorch AI語音助手,有沒有好的思路呀?
    發表于 03-06 13:00

    如何安裝TensorFlow2 Pytorch

    如何安裝TensorFlow2 Pytorch
    發表于 03-07 07:32

    如何往星光2板子里裝pytorch

    如題,想先gpu版本的pytorch只安裝cpu版本的pytorch,pytorch官網提供了基于conda和pip兩種安裝方式。因為咱是risc架構沒對應的conda,而使用pip安裝提示也沒有
    發表于 09-12 06:30

    PyTorch官方在GitHub發布0.4.0版本,最重要的改進是支持Windows系統

    PyTorch現在正式支持Windows!我們為Python 3.5和3.6提供預編譯的Conda二進制文件和pip wheels。Windows上的PyTorch不支持分布式訓練,可能比Linux / OSX慢一點,因為Vis
    的頭像 發表于 04-26 15:15 ?6420次閱讀
    <b class='flag-5'>PyTorch</b>官方在GitHub發布0.4.0版本,最重要的改進是支持Windows系統

    基于PyTorch的深度學習入門教程之PyTorch簡單知識

    本文參考PyTorch官網的教程,分為五個基本模塊來介紹PyTorch。為了避免文章過長,這五個模塊分別在五篇博文中介紹。 Part1:PyTorch簡單知識 Part2:PyTorch
    的頭像 發表于 02-16 15:20 ?2460次閱讀

    PyTorch教程3.6概括

    電子發燒友網站提供《PyTorch教程3.6概括.pdf》資料免費下載
    發表于 06-05 15:45 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>3.6</b>之<b class='flag-5'>概括</b>

    tensorflow和pytorch哪個更簡單?

    PyTorch更簡單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要一個易于使用、靈活且具有強大社區支持的框架,PyTorch可能是一個更好的選擇。如果您需要一個在
    的頭像 發表于 07-05 09:45 ?1346次閱讀

    pycharm如何調用pytorch

    與PyCharm結合使用,可以提高開發效率和代碼質量。 安裝PyTorch 2.1 檢查Python版本 在安裝PyTorch之前,請確保您的Python版本為3.6或更高。可以通過以下命令檢查
    的頭像 發表于 08-01 15:41 ?1055次閱讀

    pytorch怎么在pycharm中運行

    第一部分:PyTorch和PyCharm的安裝 1.1 安裝PyTorch PyTorch是一個開源的機器學習庫,用于構建和訓練神經網絡。要在PyCharm中使用PyTorch,首先需
    的頭像 發表于 08-01 16:22 ?2303次閱讀