中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何根據訓練及驗證損失曲線診斷我們的CNN

發布時間:2021-12-21 18:15:38 來源:億速云 閱讀:256 作者:柒染 欄目:大數據

如何根據訓練及驗證損失曲線診斷我們的CNN,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

如何Debug

讓我們先談點簡單的,如果不考慮debug,采取什么方式可以提升我們的訓練精度呢?

吳恩達曾提出了這幾點:

  • 尋找更多的數據

  • 讓網絡層數更深一些

  • 在神經網絡中采取一些新的方法

  • 訓練的時間更長點(更多的迭代次數)

  • 改變batch-size

  • 嘗試使用正則化技術(權重衰減)

  • 權衡結果的偏置和方差(bias and variance)

  • 使用更多的GPU

以上這些方法和之前的提到的訓練神經網絡的關于訓練神經網路的諸多技巧Tricks(完全總結版)的方法是類似的,是無關乎神經網絡本身的通用的方法,而具體細化到自己所在的任務時,我們需要對我們此刻所做的任務進行單獨的Debug,來尋找問題所在。

那么我們如何Debug呢?和編寫程序類似,神經網絡中的超參數相當于我們的代碼,而神經網絡的輸出信息相當于代碼執行的結果。

 

超參數

超參數是訓練神經網絡必不可少的變量,常見的超參數有:

  • 學習速率(如何設置學習率)

  • batchsize

  • 權重衰減系數

  • dropout系數

  • 選擇適用的優化器

  • 是否使用batch-normalization

  • 神經網絡設計的結構(比如神經網絡的層數,卷積的大小等等)

那么如何去調整這些參數呢?當然是通過觀察神經網絡的輸出信息來做出相應的修改了,而觀察神經網絡輸出信息的利器就是可視化。

 

可視化

觀察訓練過程中各種參數的變化是非常重要的,首先最重要的當屬損失曲線(loss curves)。

如何根據訓練及驗證損失曲線診斷我們的CNN

上圖所示是一個比較“完美”的損失曲線變化圖,在訓練開始階段損失值下降幅度很大,說明學習率合適且進行梯度下降過程,在學習到一定階段后,損失曲線趨于平穩,損失變化沒有一開始那么明顯。曲線中的毛刺是因為batch-size的關系,batch-size設置越大,毛刺越小,畢竟買個batch-size的數據相當于不同的個體。

如何根據訓練及驗證損失曲線診斷我們的CNN

上圖也是一個正確的損失曲線,雖然看到變化趨勢并不是很明顯,但仍然可以看出曲線在慢慢下降,這個過程其實是一個fune-turning的階段。承接于尚一夫圖的損失曲線,這幅圖的損失值已經很小了,雖然毛刺很多,但是總體趨勢是對的。

那么什么才是有問題的去曲線呢?借用CS231n中的PPT:

如何根據訓練及驗證損失曲線診斷我們的CNN

上圖中,左上角的圖像是顯然的學習不到任何東西(可能這樣看起來比較困難,可以適當smooth一下),而第二個則是典型的過擬合現象;第三個是更嚴重的過擬合;第四個損失值沒有趨于平穩,很有可能是沒有訓練夠;第五個經歷了比較長的iterate才慢慢收斂,顯然是初始化權重太小了;而最后一個越學習損失值越大,很有可能是“梯度向上”了。

如何根據訓練及驗證損失曲線診斷我們的CNN  

上圖則展示了更多的錯誤:左上一和二:沒有對數據集進行洗牌,也就是每次訓練都是采用同一個順序對數據集進行讀取;右上一:訓練的過程中突然發現曲線消失了,為什么?因為遇到了nan值(在圖中是顯示不出來的),但我們要意識到這個問題,這個問題很有可能是模型設置的緣故;最后一個圖顯示較小比例的val集設置會導致統計不準確,比較好的val設置比例是0.2。

如何根據訓練及驗證損失曲線診斷我們的CNN  

上圖左邊的曲線圖可以明顯看到,一共訓練了五次(五條曲線),但是在訓練過程中卻發現“很難”收斂,也就是神經網絡學地比較困難。為什么呢?原因很簡單,很有可能使我們在softmax層之前加入了非線性激活函數(比如RELU),本來softmax函數希望我們輸入負數或者正數(負數輸入時Softmax期望輸出比較小,而輸入正數時softmax其實輸出比較大),但是relu只有0和1,那么輸入到softmax會造成信息的丟失,造成學習異常困難。

總結下,如果你認為你的神經網絡設計沒有明顯錯誤的,但損失曲線顯示仍然很奇怪,那么很有可能:

  • 損失函數采用的有問題

  • 訓練的數據的載入方式可能有問題

  • 優化器(optimizer)可能有問題

  • 一些其他的超參數設置可能有問題

總而言之,損失曲線是觀察神經網絡是否有問題的一大利器,我們在訓練過程中非常有必要去觀察我們的損失曲線的變化,越及時越好!

 

正則化

除了損失函數曲線,準確率曲線也是我們觀察的重點,準確率曲線不僅可以觀察到我們的神經網絡是否往正確方向前進,更主要的是:觀察損失和準確率的關系。因為我們在衡量一個任務的時候使用的評價標準(metric)和使用的損失函數往往是不相同的,比較典型的例子是:

圖像分割中的IOU評價標準DICE損失函數

"Dice" is a a metric for model evaluation equal to intersection(A,B)/(A+B). Similar to IoU (IoU = intersection(A,B)/union(A,B)), it is used to assess a quality of image segmentation models. "Accuracy" is not really good for this task. For example, in this competition, you can quite easily get 99.9% accuracy of predicted pixels, but the performance of the models may be not as great as you think. Meanwhile, such metrics as dice or IoU can describe your models reasonably well, therefore they are most often used to asses publicly available models. The implementation of the metric used for score evaluation in this competition takes some time and requires additional post-processing, such as mask splitting. Therefore, it is not so common for quick model evaluation. Also, sometimes "soft dice" (dice with multiplication instead of intersection) is used as a loss function during training of image segmentation models.

當然,還有隨機失活和權重衰減兩個比較重要的超參數,這兩個參數通過觀察損失曲線觀察是不明顯滴,只有通過特定的評價標準曲線,設置好標準再進行比較,才可以判斷出是否需要添加dropout或者weight decay如何根據訓練及驗證損失曲線診斷我們的CNN

 

標準化和批標準化

標準化可能已經是訓練神經網絡的一個標準流程了,不論是在數據中進行標準化處理還是在網絡中添加批標準化層,都是一種標準化的方法(兩種使用一種即可)。

但是標準化技術通常只用于分類(以及衍生的一些應用),但并不適合與那種對輸入圖像大小比較敏感以及風格遷移生成類的任務,不要問為什么,結果會給你答案..

關于如何根據訓練及驗證損失曲線診斷我們的CNN問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

cnn
AI

洛宁县| 平凉市| 贵南县| 莆田市| 南皮县| 铅山县| 铜梁县| 通江县| 平凉市| 丽江市| 青神县| 嘉鱼县| 民权县| 丰城市| 锡林浩特市| 肃南| 静海县| 津南区| 麻栗坡县| 广元市| 五常市| 雅江县| 濮阳县| 城步| 武隆县| 泾源县| 扶沟县| 台南市| 诏安县| 大渡口区| 阿勒泰市| 舞阳县| 宁津县| 呈贡县| 榆中县| 武平县| 界首市| 淮北市| 威海市| 福清市| 蛟河市|