<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 13 -- Hazard of Overfitting 上節課我們主要介紹了非線性分類模型,通過非線性變換,將非線性模型映射到另一個空間,轉換為線性模型,再來進行分類,分析了非線性變換可能會使計算復雜度增加。本節課介紹這種模型復雜度增加帶來機器學習中一個很重要的問題:過擬合(overfitting)。 ### **一、What is Overfitting?** 首先,我們通過一個例子來介紹什么bad generalization。假設平面上有5個點,目標函數f(x)是2階多項式,如果hypothesis是二階多項式加上一些小的noise的話,那么這5個點很靠近這個hypothesis,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)很小。如果hypothesis是4階多項式,那么這5點會完全落在hypothesis上,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)。雖然4階hypothesis的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)比2階hypothesis的要好很多,但是它的![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)很大。因為根據VC Bound理論,階數越大,即VC Dimension越大,就會讓模型復雜度更高,![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)更大。我們把這種![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)很小,![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)很大的情況稱之為bad generation,即泛化能力差。 ![這里寫圖片描述](https://img.kancloud.cn/ea/60/ea6044847e9358edb3a8c350c1e757c3_566x281.jpg) 我們回過頭來看一下VC曲線: ![這里寫圖片描述](https://img.kancloud.cn/36/e2/36e26899c3b3d51fff21e97bffaa9b8d_282x228.jpg) hypothesis的階數越高,表示VC Dimension越大。隨著VC Dimension增大,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)是一直減小的,而![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)先減小后增大。在![](https://img.kancloud.cn/fb/cd/fbcd73c6cad304fab6e547d9f653be5e_14x12.jpg)位置,![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)取得最小值。在![](https://img.kancloud.cn/c7/8f/c78f720618e98d4764aceca7dabc44e3_27x16.jpg)右側,隨著VC Dimension越來越大,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)越來越小,接近于0,![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)越來越大。即當VC Dimension很大的時候,這種對訓練樣本擬合過分好的情況稱之為過擬合(overfitting)。另一方面,在![](https://img.kancloud.cn/c7/8f/c78f720618e98d4764aceca7dabc44e3_27x16.jpg)左側,隨著VC Dimension越來越小,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)都越來越大,這種情況稱之為欠擬合(underfitting),即模型對訓練樣本的擬合度太差,VC Dimension太小了。 ![這里寫圖片描述](https://img.kancloud.cn/fc/29/fc29a3bb5e54c9d1612c8f93e2ad3295_420x265.jpg) bad generation和overfitting的關系可以理解為:overfitting是VC Dimension過大的一個過程,bad generation是overfitting的結果。 ![這里寫圖片描述](https://img.kancloud.cn/62/19/621920892189d531edeeec2c095e685b_463x62.jpg) 一個好的fit,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)都比較小,盡管![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)沒有足夠接近零;而對overfitting來說,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg),但是![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)很大。那么,overfitting的原因有哪些呢? 我們舉個開車的例子,把發生車禍比作成overfitting,那么造成車禍的原因包括: * **車速太快(VC Dimension太大);** * **道路崎嶇(noise);** * **對路況的了解程度(訓練樣本數量N不夠);** 也就是說,VC Dimension、noise、N這三個因素是影響過擬合現象的關鍵。 ![這里寫圖片描述](https://img.kancloud.cn/8b/76/8b76bfa2cc9be00b0228587d7e7c4e8c_566x319.jpg) ### **二、The Role of Noise and Data Size** 為了盡可能詳細地解釋overfitting,我們進行這樣一個實驗,試驗中的數據集不是很大。首先,在二維平面上,一個模型的分布由目標函數f(x)(x的10階多項式)加上一些noise構成,下圖中,離散的圓圈是數據集,目標函數是藍色的曲線。數據沒有完全落在曲線上,是因為加入了noise。 ![這里寫圖片描述](https://img.kancloud.cn/9a/08/9a082ee38e47f9e1124e5a05e788eafa_272x315.jpg) 然后,同樣在二維平面上,另一個模型的分布由目標函數f(x)(x的50階多項式)構成,沒有加入noise。下圖中,離散的圓圈是數據集,目標函數是藍色的曲線。可以看出由于沒有noise,數據集完全落在曲線上。 ![這里寫圖片描述](https://img.kancloud.cn/18/7f/187f6d4280835bf89bb50e60eaadc511_272x315.jpg) 現在,有兩個學習模型,一個是2階多項式,另一個是10階多項式,分別對上面兩個問題進行建模。首先,對于第一個目標函數是10階多項式包含noise的問題,這兩個學習模型的效果如下圖所示: ![這里寫圖片描述](https://img.kancloud.cn/f9/df/f9dfe0b158c06e485c73f1c5d9a3eafa_273x316.jpg) 由上圖可知,2階多項式的學習模型![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg),![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg);10階多項式的學習模型![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg),![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)。雖然10階模型的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)比2階的小,但是其![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)要比2階的大得多,而2階的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)相差不大,很明顯用10階的模型發生了過擬合。 然后,對于第二個目標函數是50階多項式沒有noise的問題,這兩個學習模型的效果如下圖所示: ![這里寫圖片描述](https://img.kancloud.cn/4e/02/4e02b2d8ef789e0d2d8129ecabe8bf0d_270x315.jpg) 由上圖可知,2階多項式的學習模型![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg),![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg);10階多項式的學習模型![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg),![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)。雖然10階模型的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)比2階的小,但是其![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)要比2階的大得多的多,而2階的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)相差不大,很明顯用10階的模型仍然發生了明顯的過擬合。 上面兩個問題中,10階模型都發生了過擬合,反而2階的模型卻表現得相對不錯。這好像違背了我們的第一感覺,比如對于目標函數是10階多項式,加上noise的模型,按道理來說應該是10階的模型更能接近于目標函數,因為它們階數相同。但是,事實卻是2階模型泛化能力更強。這種現象產生的原因,從哲學上來說,就是“以退為進”。有時候,簡單的學習模型反而能表現的更好。 下面從learning curve來分析一下具體的原因,learning curve描述的是![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)隨著數據量N的變化趨勢。下圖中左邊是2階學習模型的learning curve,右邊是10階學習模型的learning curve。 ![這里寫圖片描述](https://img.kancloud.cn/6d/66/6d66531f64b588ae1f832ecc74525727_560x335.jpg) 我們的第9次課的筆記 [NTU林軒田機器學習基石課程學習筆記9 – Linear Regression](http://blog.csdn.net/red_stone1/article/details/71599034)已經介紹過了learning curve。在learning curve中,橫軸是樣本數量N,縱軸是Error。![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)可表示為: 其中d為模型階次,左圖中d=2,右圖中d=10。 本節的實驗問題中,數據量N不大,即對應于上圖中的灰色區域。左圖的灰色區域中,因為d=2,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)相對來說比較接近;右圖中的灰色區域中,d=10,根據![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)的表達式,![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)很小,而![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)很大。這就解釋了之前2階多項式模型的![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)更接近![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg),泛化能力更好。 值得一提的是,如果數據量N很大的時候,上面兩圖中![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)和![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)都比較接近,但是對于高階模型,z域中的特征很多的時候,需要的樣本數量N很大,且容易發生維度災難。關于維度災難的詳細生動解釋,請參考我另一篇博文: [機器學習中的維度災難](http://blog.csdn.net/red_stone1/article/details/71692444) 另一個例子中,目標函數是50階多項式,且沒有加入noise。這種情況下,我們發現仍然是2階的模型擬合的效果更好一些,明明沒有noise,為什么是這樣的結果呢? 實際上,我們忽略了一個問題:這種情況真的沒有noise嗎?其實,當模型很復雜的時候,即50階多項式的目標函數,無論是2階模型還是10階模型,都不能學習的很好,這種復雜度本身就會引入一種‘noise’。所以,這種高階無noise的問題,也可以類似于10階多項式的目標函數加上noise的情況,只是二者的noise有些許不同,下面一部分將會詳細解釋。 ### **三、Deterministic Noise** 下面我們介紹一個更細節的實驗來說明 什么時候小心overfit會發生。假設我們產生的數據分布由兩部分組成:第一部分是目標函數f(x),![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)階多項式;第二部分是噪聲![](https://img.kancloud.cn/7b/0c/7b0cf84156a1f54329998fc4b798125b_7x7.jpg),服從Gaussian分布。接下來我們分析的是noise強度不同對overfitting有什么樣的影響。總共的數據量是N。 ![這里寫圖片描述](https://img.kancloud.cn/46/fc/46fc8cca7163158ecfe06f7e118270da_566x273.jpg) 那么下面我們分析不同的![](https://img.kancloud.cn/8e/e0/8ee0f7a49d2e0d545a423640d042c12a_47x18.jpg)和![](https://img.kancloud.cn/04/c3/04c3505b913559b351a3ed677e9051e7_51x19.jpg)對overfit的影響。overfit可以量化為![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)。結果如下: ![這里寫圖片描述](https://img.kancloud.cn/8d/d1/8dd1a73fd01cc81e8cca528a1adc116e_566x262.jpg) 上圖中,紅色越深,代表overfit程度越高,藍色越深,代表overfit程度越低。先看左邊的圖,左圖中階數![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)固定為20,橫坐標代表樣本數量N,縱坐標代表噪聲水平![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg)。紅色區域集中在N很小或者![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg)很大的時候,也就是說N越大,![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg)越小,越不容易發生overfit。右邊圖中![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg),橫坐標代表樣本數量N,縱坐標代表目標函數階數![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)。紅色區域集中在N很小或者![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)很大的時候,也就是說N越大,![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)越小,越不容易發生overfit。上面兩圖基本相似。 從上面的分析,我們發現![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg)對overfit是有很大的影響的,我們把這種noise稱之為stochastic noise。同樣地,![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)即模型復雜度也對overfit有很大影響,而且二者影響是相似的,所以我們把這種稱之為deterministic noise。之所以把它稱為noise,是因為模型高復雜度帶來的影響。 總結一下,有四個因素會導致發生overfitting: * **data size N ![](https://img.kancloud.cn/46/36/4636bf8d95d13b79a1a2fc0665ab2969_9x16.jpg)** * **stochastic noise ![](https://img.kancloud.cn/b0/2b/b02b3ce9c00212dea5af58f2ef0e7fab_16x14.jpg)** * **deterministic noise ![](https://img.kancloud.cn/19/77/19770e6ef46d10c17b1ffbd8ca1b51ae_20x16.jpg)** * **excessive power ![](https://img.kancloud.cn/42/7a/427ada9ea8ecc83e7ba9fafb38605834_9x16.jpg)** 我們剛才解釋了如果目標函數f(x)的復雜度很高的時候,那么跟有noise也沒有什么兩樣。因為目標函數很復雜,那么再好的hypothesis都會跟它有一些差距,我們把這種差距稱之為deterministic noise。deterministic noise與stochastic noise不同,但是效果一樣。其實deterministic noise類似于一個偽隨機數發生器,它不會產生真正的隨機數,而只產生偽隨機數。它的值與hypothesis有關,且固定點x的deterministic noise值是固定的。 ### **四、Dealing with Overfitting** 現在我們知道了什么是overfitting,和overfitting產生的原因,那么如何避免overfitting呢?避免overfitting的方法主要包括: * **start from simple model** * **data cleaning/pruning** * **data hinting** * **regularization** * **validataion** 這幾種方法類比于之前舉的開車的例子,對應如下: ![這里寫圖片描述](https://img.kancloud.cn/c2/df/c2df8557f7c5c6bacfec5afcfb2c891b_566x246.jpg) regularization和validation我們之后的課程再介紹,本節課主要介紹簡單的data cleaning/pruning和data hinting兩種方法。 data cleaning/pruning就是對訓練數據集里label明顯錯誤的樣本進行修正(data cleaning),或者對錯誤的樣本看成是noise,進行剔除(data pruning)。data cleaning/pruning關鍵在于如何準確尋找label錯誤的點或者是noise的點,而且如果這些點相比訓練樣本N很小的話,這種處理效果不太明顯。 data hinting是針對N不夠大的情況,如果沒有辦法獲得更多的訓練集,那么data hinting就可以對已知的樣本進行簡單的處理、變換,從而獲得更多的樣本。舉個例子,數字分類問題,可以對已知的數字圖片進行輕微的平移或者旋轉,從而讓N豐富起來,達到擴大訓練集的目的。這種額外獲得的例子稱之為virtual examples。但是要注意一點的就是,新獲取的virtual examples可能不再是iid某個distribution。所以新構建的virtual examples要盡量合理,且是獨立同分布的。 ### **五、總結** 本節課主要介紹了overfitting的概念,即當![](https://img.kancloud.cn/5b/cf/5bcf9eebe555c8380ea4c84aea710839_23x14.jpg)很小,![](https://img.kancloud.cn/dd/0f/dd0f9962b91f91dfa644b8d9c6d853d2_29x14.jpg)很大的時候,會出現overfitting。詳細介紹了overfitting發生的四個常見原因data size N、stochastic noise、deterministic noise和excessive power。解決overfitting的方法有很多,本節課主要介紹了data cleaning/pruning和data hinting兩種簡單的方法,之后的課程將會詳細介紹regularization和validataion兩種更重要的方法。 **_注明:_** 文章中所有的圖片均來自臺灣大學林軒田《機器學習基石》課程
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看