除錯神經網路的注意事項和技巧總結(一)

2021-08-11 06:47:32 字數 2946 閱讀 8573

最近在除錯神經網路的過程中,遇到了網路不收斂的情況,查閱了很多的相關的資料,根據相關的建議,作出了一些實驗,來進行除錯,下面這幾點是我遇到的幾個坑:

1.資料預處理

2. 資料規範化

3.正則化

4.batch size

5.使用了不適當的學習率

6.在最後一層使用了錯誤的啟用函式

7.網路含有不良梯度

8.嘗試不同的優化器

9.及時檢查結果

首先,對於乙個神經網路來說,我們在進行建模的時候,資料是十分重要的,通常情況下,我們在進行解決問題的時候,最開始拿到的資料一般會比較「髒」,這時候,我們需要做資料預處理的工作,否則,如果沒有好的資料集,很大的可能性會使我們的神經網路不work,而且,之後我們的設計網路以及調參的工作可能會白做。

1、對於資料來說,我們在做預處理的工作的時候,是主要分為資料清洗、資料整合、資料變換和資料規約這四個方面的。下面會分別進行介紹:

1)資料清洗

在進行資料清洗的時候,我們一般首先需要對我們的資料的總體的情況有一定的了解,而資料清洗又分為,有監督的清洗和無監督的清洗,我們在進行這項工作的時候,一般是先進行無監督的清洗,然後由領域專家來進行有監督的資料清洗,而資料清洗主要是包括資料分析,定義和執行清洗規則,清洗結果驗證等步驟;在下面的這個的部落格中,有詳細的介紹,大家可以進行參考:

參考文獻:

2)資料整合

相對來說是比較好理解的,它實際上就是將多個資料來源中的資料結合起來並統一儲存。

3)資料變換

在進行資料變換的時候,主要是包括規範化,歸一化以及標準化等。

4)資料規約(參考文獻:

(1)維歸約

刪除不相關的屬性(維)來減少資料量。

找出最小屬性集合,使得資料類的概率分布盡可能地接近使用所有屬性的原分布,一般可以通過貪心演算法,逐步向前選擇,逐步後向刪除,向前選擇和後向刪除相結合,判定樹歸納

(2)資料壓縮

主成分分析pca,lda,svd

小波變換:將資料向量d轉換成為數值上不同的小波係數的向量d』,對d』進行剪裁,保留小波係數最強的部分

(3)數值歸約

回歸和對數線形模型、線形回歸、對數線形模型、直方圖、等寬、等深、v-最優、maxdiff、聚類、多維索引樹 : 對於給定的資料集合,索引樹動態的劃分多維空間。

2、資料規範化

對於神經網路來說,我們在進行輸入資料的時候,一般是需要將資料進行規範到-1到1之間的,尤其是在處理的時候,是十分重要的,如果是沒有進行規範化,對於255的來說,這將會產生巨大的梯度,你的訓練誤差很可能會爆表。這時候也需要注意,在進行選擇啟用函式的時候,要選擇相同範圍的啟用函式來進行建模。

在進行規範到-1到1之間的時候,我們可以採取從資料中減去平均值,然後再除以標準差的操作。例如對於乙個255的來說,可以除以128然後減去1。

3、正則化

在進行正則化的時候,方法也是比較多的,我們最常用的方式就是使用dropout的方式來進行,這麼做的好處是,我們選擇一定的比例的神經元來進行建模,使網路的結構的複雜度降低,這時候,就可以減少果農和的情況的發生。

4、batch size

這裡主要是參考了知乎上的乙個回答,作者做了相關的實驗,得到了相關的實驗的結果,參考文獻:

leak relu是對relu的改進,當輸入值小於0時,輸出值為αx,其中α是乙個很小的常數。

7、網路有不良的梯度

使用relu啟用函式的深度神經網路通常可能遭受由不良梯度引起的所謂「死神經元」。這可能會對網路的效能產生負面影響,或者在某些情況下導致完全無法訓練。

如果發現在epoch到epoch之間,你的訓練誤差不會變化,就可能是由於relu啟用函式導致了所有的神經元已經死亡。

換乙個啟用函式試試,比如leaky relu或elu,看看是不是還會發生同樣的情況。

8、嘗試使用不同的優化器

優化器的選擇不應當妨礙網路的訓練,除非你選擇了乙個特別糟糕的引數。但是,為任務選擇乙個合適的優化器非常有助於在最短的時間內獲得最多的訓練。(參考文獻:《37 reasons why your neural network is not working》)

最常用的優化器有sgd、adam等幾十種,這兩種是我在訓練的時候最常用的,下面是做過的乙個實驗的對比,但是在進行選擇的時候,還是需要考慮具體的實際情況來進行確定使用什麼優化器

epoch 25 使用sgd

epoch 25 使用adam

9、及時檢查結果

敲黑板!這一點是十分重要的,在做相關的工作的時候,及時的視覺化和檢查結果是十分必要的,有助於幫助我們及時的檢查自己的結果是否在朝著好的方向發展,這時候,我們也可以借助loss、accuary、precission、混淆矩陣等方式來幫助我們進行檢查。

未完。。。待續~

前端面試技巧和注意事項

受疫情影響,很多hr面試越來越多從線下轉到線上。金三銀四 招聘旺季,線上面試一樣也可以抓住很多的人才。一 面試流程及問題解析 無論是程式設計師還是其他職業的面試,雖然都是提交簡歷 面試 面談 拿到offer等一系列過程,但是每一步都很重要!首先簡歷要精煉 漂亮 大方,盡量突出自己的優勢,避開自己的劣...

C 多執行緒除錯和測試的注意事項

在上次的帖子 聊了c 多執行緒的跨平台問題,後來感覺意猶未盡。今天順便說一下開發c 多執行緒應用程式時,有關除錯和測試的一些注意事項。下面這些注意事項主要是針對c 不過有些對於其它的語言也適用。關於設定斷點和單步執行 很多同學非常依賴於偵錯程式的斷點功能和單步功能。這在單執行緒情況下倒還好 不過有些...

C 多執行緒除錯和測試的注意事項

在上次的帖子 聊了c 多執行緒的跨平台問題,後來感覺意猶未盡。今天順便說一下開發c 多執行緒應用程式時,有關除錯和測試的一些注意事項。下面這些注意事項主要是針對c 不過有些對於其它的語言也適用。關於設定斷點和單步執行 很多同學非常依賴於偵錯程式的斷點功能和單步功能。這在單執行緒情況下倒還好 不過有些...