吳恩達deeplearning.ai:學習曲線決定下一步怎么做

以下內容有任何不理解可以翻看我之前的博客哦:吳恩達deeplearning.ai專欄
學習曲線是一種圖形表示方法,用于展示模型在訓練過程中的學習表現,即模型的訓練集和驗證集上的性能如何隨著訓練時間的增加而變化。可以幫助我們了解模型的學習進度。

文章目錄

  • 學習曲線
    • 線性回歸方程為例
      • 一個理想的學習曲線
      • 高偏差時的學習曲線
      • 高方差時的學習曲線
  • 決定下一步做什么
  • 大型神經網絡帶來對于偏方差的新解決方法
    • 解決神經網絡過大問題
    • 代碼實現


學習曲線

線性回歸方程為例

我們以以下方程為例:
f w , b ( x ) = w 1 x + w 2 x 2 + b f_{w,b}(x)=w_1x+w_2x^2+b fw,b?(x)=w1?x+w2?x2+b

一個理想的學習曲線

然后我們可以繪制其學習曲線,橫坐標為訓練集的大小(也可以理解為epoch的次數),縱坐標為training set以及validation set的價值函數值,你擬合出來的圖像很有可能是這樣子的:
在這里插入圖片描述
可以看出,隨著training set的增大, J t r a i n J_{train} Jtrain?逐漸上升,而 J c v J_{cv} Jcv?逐漸減小,這其實是容易理解的。當數據的量很少時,我們的擬合曲線很容易通過所有的點,此時training set上的損失值就比較小甚至為0,但是此時模型的泛化程度就肯定很低了,因此在cv set上的損失就會很大。而隨著數據量的增加,擬合曲線就很難通過所有的點了,因此此時的 J t r a i n J_{train} Jtrain?
必然就會上升,而因為模型接受的數據多了, J c v J_{cv} Jcv?便漸漸減小,直到數據量足夠多時二者就都趨于穩定并且比較接近。
在這里插入圖片描述

高偏差時的學習曲線

如果在你的算法的擬合下,最后的結果是高偏差的,那么它的學習曲線會具有一定的特點:
在這里插入圖片描述
J c v J_cv Jc?v J t r a i n J_train Jt?rain二者的關系是不太變化的,但是于之前不同的是你的代價函數值會明顯高于你的預期值(如圖所示),而且隨著數據量的增加,最后的代價函數值仍然處于一個穩定的范圍,并不會隨著數據量的增加而使得模型的效果變好。因此,如果你的模型出現了高偏差的情況,不要著急著去增加數據量,此時更好的選擇應該是優化你的算法。

高方差時的學習曲線

如果在定義你的代價函數的時候, λ \lambda λ設置得過小,那么此時容易出現過擬合的現象,此時容易出現的情況就是低偏差高方差,難以泛化:
在這里插入圖片描述
在這種情形之下,一開始的 J t r a i n J_{train} Jtrain?會極小(過擬合),甚至比人類表現的代價還要小。而模型的泛化能力極弱,最終會導致 J c v J_{cv} Jcv?很大,但這種情況有個好處,就是隨著數據量的增大,最后 J c v J_{cv} Jcv?會降低到合適的水平,接近于人類水平,雖然 J t r a i n J_{train} Jtrain?上升但是也不會超過人類水平很多。


總之,在訓練神經模型的時候,繪制其學習曲線能夠很好地幫助你直到下一步該如何調整模型,但是缺點就是你如果實驗多個模型,對算力是個很大的考驗,可能會非常昂貴。但即使你無法真實地繪制出這個曲線,你也可以利用這種思想在腦海中形成一個虛擬圖像,幫助你提高模型效果。


決定下一步做什么

在了解了以上這些概念之后,我們在模型遇到困難時應該了解了一些努力的方向了。現在我們還是用以前的例子,看看如何綜合利用之前的方法:
在這里插入圖片描述
你已經完成了一個關于房價預測的線性回歸模型,代價函數如上圖,但是預測的時候出現了一些錯誤的預測,你下一步該做什么呢?
以下是一些常見的選擇:
——獲得更多的訓練數據
——嘗試使用更少的特征
——嘗試獲得更多的特征
——添加多項式特征
——嘗試增大 λ \lambda λ
——嘗試減小 λ \lambda λ
事實上,以上的六個方法都有可能減少偏差和方差,這取決于你具體的應用場景,我們來依次分析。
對于第一個方法:如果你的算法具有高方差,比如算法對于過小的數據集過度擬合,那么確實可以通過添加更多訓練數據對模型提供很大的幫助,但是如果是高偏差,那么這個方法幫助就很小了。
對于第二個方法:如果你的算法具有很多的特征,那么這將賦予算法很高的靈活性,從而無法適應更加復雜的模型。如果你懷疑你的算法具有很多意義不明的特征或者冗余的特征,可以嘗試采用這種方法。從而可以降低過擬合的發生(用于解決高方差的發生)。
對于第三個方法:這個就比較明顯了,可以用于解決高偏差的問題。
對于第四個方法:如果你是線性函數,三線可以很好地擬合訓練集,那么添加額外的多項式特征可以幫助你在訓練集做得更好,用于解決高偏差問題。
對于第五個方法:以前的博客詳細介紹過,用于解決高偏差問題。
對于第六個方法:同理,解決高方差問題。
總結如下:
在這里插入圖片描述

大型神經網絡帶來對于偏方差的新解決方法

在上面我們提到了解決偏差與方差的一般方法,但是大型神經網絡與大數據為解決此類問題提供了新的思路。
在神經網絡出現之前,機器學習工程師經常需要考慮的問題就是偏差方差權衡,因為模型簡單,就會導致高偏差,而模型復雜,就會導致高方差,兩者是矛盾的,因此常常需要在二者之中找到一個平衡點:
在這里插入圖片描述
但是,神經網絡和大數據的出現改變了這種情況。
事實證明,在小中規模的數據集上訓練大型神經網絡是低偏差機器,即只要你的神經網絡足夠大,那么就一定可以很好地擬合數據,因此我們可以根據需要來增加或減小偏差方差(水多加面面多加水法):
在這里插入圖片描述
即你先訓練了一個神經網絡,如果在訓練集表現不佳,那么就構建更大的神經網絡,如果在cv表現不佳,那么就加更多的數據,直到達到你需要的平衡。這種方法的缺點就是對算力的要求很高,因此隨著近些年硬件的發展,神經網絡才能獲得足夠的算力從而長足發展。

解決神經網絡過大問題

如果你感覺你的神經網絡過大了,擔心會不會導致過度擬合,怎么辦勒。
事實證明,精心選擇的大型正則化網絡往往與較小的神經網絡一樣好甚至更好。因此如果模型大了,那就好好正則化吧,這樣也能夠達到你想要的效果。另一種說法是,只要你好好正則化,大型的神經網絡幾乎不會比小模型差。當然大型神經網絡要求的算力必然很高,會拖慢運算速度。

代碼實現

之前我們創建神經網絡的代碼是這樣的:

layer_1 = Dense(units=25, activation='relu')
layer_2 = Dense(units=15, activation='relu')
layer_1 = Dense(units=1, activation='sigmoid')
model = Sequential([layer_1, layer_2, layer_3])

如果要添加正則化項:

layer_1 = Dense(units=25, activation='relu', kernel_regularizer=L2(0.01))
layer_2 = Dense(units=15, activation='relu', kernel_regularizer=L2(0.01))
layer_1 = Dense(units=1, activation='sigmoid', kernel_regularizer=L2(0.01))
model = Sequential([layer_1, layer_2, layer_3])

為了給讀者你造成不必要的麻煩,博主的所有視頻都沒開僅粉絲可見,如果想要閱讀我的其他博客,可以點個小小的關注哦。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717997.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Orbit 使用指南 01| 創建空白場景 | Isaac Sim | Omniverse

如是我聞: 在使用指南01中 演示如何使用獨立的Python腳本啟動和控制Isaac Sim模擬器。介紹Orbit框架中兩個最常用的類app.AppLauncher和sim.SimulationContext。實踐在Oribit中設置一個空場景 代碼 本指南對應于orbit/source/standalone/tutorials/00_sim目錄中的…

制作耳機殼的UV樹脂和塑料材質哪一個成本更高一些?

總體來說,制作耳機殼的UV樹脂的成本可能會略高于塑料材質。 原材料成本:UV樹脂通常是通過復雜的合成過程制成的。這些過程不僅需要大量的能源投入,還需要較高水平的技術和設備支持,因此原材料成本較高。相比之下,塑料…

04-prometheus服務的動態發現

一、概述 目前,我們每增加一個被監控的節點,就需要修改prometheus的配置文件,然后重新加載prometheus服務,這種方式比較繁瑣,每次新增、刪除被監控節點都需要重新操作一遍,不適合生產環境的大規模監控架構&…

Go-zero中分布式事務的實現(DTM分布式事務管理器,在一個APi中如何調用兩個不同服務的rpc層,并保證兩個不同服務之間的業務邏輯同時成功)

涉及到的相關技術 1.DTM分布式事務管理器,解決跨數據庫、跨服務、跨語言棧更新數據的一致性問題。 2.SAGA事務模式,SAGA事務模式是DTM中常用的一種模式,簡單易上手.(當然還有其它更多的事務模式,這里采用的SAGA只不過是其中一種較為簡單的方法) 3.Go-zero框架,ETCD服務注冊... …

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)https://www.cnblogs.com/xuegqcto/articles/7521483.html 在windows server 2012上安裝nginx,同時配置開機自啟動服務(推薦使用“Windows Service Wrapper”工具&…

leetcode 740.刪除并活得點數

這道題和打家劫舍得思路很像。 思路:首先我們看到題目的意思,就是說我們如果選擇了一個數,那么它相鄰的數就會不得選入,也就是刪除。這就是上一個題那個相鄰的家不能偷的問題唄! 我們從那個地方轉換一下,…

【Linux】線程概念|線程理解|線程控制

文章目錄 線程概念Linux中線程是否存在的討論線程創建和線程控制線程的終止和等待(三種終止方式 pthread_join()的void**retval) 線程概念 線程就是進程內部的一個執行流,線程在進程內運行,線程在進程的地址空間內運行&#xff0…

LeetCode-第14題-最長公共前綴

1.題目描述 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 ""。 2.樣例描述 3.思路描述 按字符串數組每個數組的長度,將字符串數組從小到大排序;他們的公共前綴一定小于或等于最長元素長度…

(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法

文章目錄 阿里云人工智能工程師ACP認證考試知識點輔助閱讀(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法視覺智能建模流程圖像預處理技術圖像特征提取算法深度學習模型 阿里云人工智能工程師ACP認證考試知識點輔助閱讀 &#…

2024年智能駕駛年度策略:自動駕駛開始由創造型行業轉向工程型行業

感知模塊技術路徑已趨于收斂,自動駕駛從創造型行業邁向工程型行業。在特斯拉的引領下,國內主機廠2022年以來紛紛跟隨特斯拉相繼提出“重感知、輕地圖”技術方案,全球自動駕駛行業感知模塊技術路徑從百花齊放開始走向收斂。我們認為主機廠智能…

2023.3.3周報

目錄 摘要 一、文獻閱讀 1、題目 2、摘要 3、模型架構 4、文獻解讀 一、Introduction 二、實驗 三、結論 二、PINN 一、PINN比傳統數值方法有哪些優勢 二、PINN方法 三、正問題與反問題 三、PINN實驗 一、數學方程 二、模型搭建 總結 摘要 本周我閱讀了一篇…

Postman上傳文件的操作方法

前言 調用某個接口,測試上傳文件功能。一時間不知如何上傳文件,本文做個操作記錄,期望與你有益。 步驟一、設置Headers key:Content-Type value:multipart/form-data 步驟二、設置Body 選擇form-data key:file下拉框選擇file類型value&…

STM32(8)NVIC編程

中斷源由部分片上外設產生 在misc.h中找,雜項 配置NVIC GPIO和AFIO不能產生中斷源,但能通過EXTI,由EXTI產生中斷源 NVIC不需要開啟時鐘,因為NVIC模塊位于內核內部,芯片一上電就能工作。 中斷響應函數 中斷向量表在啟…

Java:JVM基礎

文章目錄 參考JVM內存區域程序計數器虛擬機棧本地方法棧堆方法區符號引用與直接引用運行時常量池字符串常量池直接內存 參考 JavaGuide JVM內存區域 程序計數器 程序計數器是一塊較小的內存空間,可以看做是當前線程所執行的字節碼的行號指示器,各線程…

Unity 常用的4種燈光、制作鏡子、燈光的調用修改數值、

創建燈光時,一般用4種:定向光、點光源、聚光、區域光、 定向光:太陽 點光源:燈泡 聚光燈:手電筒 區域光:烘焙-貼圖 燈光選擇已烘焙 需要先選擇被烘焙的物體,然后再選擇Contribute GI 等待進…

java中的set

Set Set集合概述和特點 不可以存儲重復元素 沒有索引,不能使用普通for循環遍歷 哈希值 哈希值簡介 是JDK根據對象的地址或者字符串或者數字算出來的int類型的數值 如何獲取哈希值 Object類中的public int hashCode():返回對象的哈希碼值。 哈希值的特點 同一個…

分布式ID生成算法|雪花算法 Snowflake | Go實現

寫在前面 在分布式領域中,不可避免的需要生成一個全局唯一ID。而在近幾年的發展中有許多分布式ID生成算法,比較經典的就是 Twitter 的雪花算法(Snowflake Algorithm)。當然國內也有美團的基于snowflake改進的Leaf算法。那么今天我們就來介紹一下雪花算法…

計算機視覺基礎知識(二)---數字圖像

像素 像素是分辨率的單位;構成位圖圖像的最基本單元;每個像素都有自己的顏色; 圖像分辨率 單位英寸內的像素點數;單位為PPI(Pixels Per Inch),為像素每英寸;PPI表示每英寸對角線上所擁有的像素數目:,x:長度像素數目,y:寬度像素數目,Z:屏幕大小;屏幕尺寸(大小)指的是對角線長…

GO語言學習筆記(與Java的比較學習)(八)

接口與反射 接口是什么 Go 語言不是一種 “傳統” 的面向對象編程語言:它里面沒有類和繼承的概念。 但是 Go 語言里有非常靈活的 接口 概念,通過它可以實現很多面向對象的特性。接口提供了一種方式來 說明 對象的行為:如果誰能搞定這件事&…

springer模板參考文獻不顯示

Spring期刊模板網站,我的問題是23年12月的版本 https://www.springernature.com/gp/authors/campaigns/latex-author-support/see-where-our-services-will-take-you/18782940 參考文獻顯示問好,在sn-article.tex文件中,這個sn-mathphys-num…