當前位置:
首頁 > 最新 > 淺談神經網路優化方式

淺談神經網路優化方式

背景:目前各種神經網路相關演算法,在實驗和生產環境中都會大量被應用。那麼,如何應用神經網路以及如何優化神經網路,作為一項可以被系統化的工程,流程化實現就顯得很有必要且很有價值。

目標:本文的目的是為了能夠將一般優化神經網路的流程系統化梳理。對於customed情況下的優化暫不在本文的討論範圍內。持續完善ing,淺談不足之處歡迎在評論區指正。


First of all, 需要明確定義模型需要優化或者預測的指標。

所有的策略最終都是為了業務目標服務的,首先要將業務問題轉換為需要優化的具體指標,也就是轉換為機器學習可以優化的問題。

Secondly,從邏輯層面判斷模型能達到的效果。

也就是從邏輯出發判斷演算法能實現業務指標提升的可能性。如果邏輯上就否定了演算法的必要性,就完全沒有必要採用演算法試驗。

Thirdly, 從技術角度確認是否需要使用神經網路演算法。

任何一種技術都有其試用範圍,特別是在機器學習領域,沒有絕對的Silver Bullet。

任何一種技術也都有其優越性和缺陷。代價永遠存在。那就要考慮為了神經網路的優勢,這樣的代價是否值得。

比如在數據量很小的情況下,神經網路強大的擬合能力就會成為項目效果的制擘,反而用簡單的決策樹效果會更好。或者在要求高性能或是高解釋性的金融行業,有時候簡單的邏輯回歸會是更優的選擇。

Fourth, 選用最簡單模型進行快速試驗模型能達到效果。

當回答了以上所有的問題,答案指向都是可以也值得使用神經網路。那下一步就是搭建一個簡單的傳統機器學習模型來為該項業務指標設定一個指標下限,為神經網路的優化提供一個參考基準。

Fifth,初步搭建簡單有效的神經網路來實現效果。

前置準備工作中的最後一步,通過搭建一個同領域驗證有效的神經網路模型。在不調差和調整複雜網路結構的情況下,完全採用前人的有效參數和網路結構,快速搭建一個神經網路,實現初步的效果。這一步的目標是走通整個流程,為之後的優化神經網路提供流程上的支持。

在完成了上述神經網路建模的前置步驟之後,下面需要做的就是對神經網路的各種參數和結構進行調整,目標是獲取更優的指標效果。

P.S. 這裡調參主要基於Keras/Tensorflow。

參數類型調整

epoch

通過validation樣本accuracy隨著epoch改變的曲線,來調整epoch的量級。(如果訓練過程較長的話,為了防止重複訓練,可以在模型訓練過程中設置checkpoint。在Keras中,可以通過回調函數callback來實現checkpoint的設置。)

更方便的,可以採用earlystopping的方式,對待監測值進行監測,如果待檢測值不再優化,則提前停止訓練。這也是一種對epoch的數值進行選取的較好方案。

學習率和參數更新方式

回調參數:通過在Keras中設置回調函數來進行參數更新方式和學習率的更新。adam:通過adam進行參數學習更新的方式。adam的全稱:adaptive moment estimation。

一般情況下,adam的參數根據前人的經驗來設定,基本無需進行調參。Gentle Introduction to the Adam Optimization Algorithm for Deep Learning-

其他參數

神經網路參數貪婪的網格搜索進行調整。比如dropout的比率。

模型正則化方式:

數據樣本角度:正負數據樣本數量的平均,防止在梯度下降過程中,模型梯度方向嚴重偏差。

L1或者L2正則化: 採用weight參數的L1或者L2對神經網路權重參數的大小進行控制。比如最大範數是5的正則項,就被證明可以提升結果。本質上,也是通過控制模型參數的擬合能力來進行正則控制。

Early Stopping:也是一種正則化的方法,可以用來減少對於訓練數據的過度擬合。

Batch normalization: 通過對特徵進行normalization的方法,對參數空間的數值進行標準化,防止擬合過程中不同特徵參數步長不一致導致收斂到較差的局部最優,而不易通用化到test data的參數空間中。

神經網路結構控制:從神經網路的結構上,減少結構的複雜度,減少參數空間的大小,對模型的VC維進行控制。

Dropout:對神經網路連接在訓練的時候進行隨機斷連接。正則化的有效性由兩個方面保證:1. 減少神經網路的參數,控制擬合能力。2. 通過融合模型的思想,降低模型的variance,來達到正則化目的。

神經網路結構調整

神經網路激活函數調整

Relu作為減少梯度消散的激活函數,更加適用於深度神經網路。

有效神經網路結構擴展

選擇或者增加被驗證有效的神經網路結構,來提升神經網路的效果。比如,採用inception的方式對神經網路的特徵更好的擬合。

神經網路層數和結構

在前人文章經驗的基礎上,嘗試不同層數和不同種類層的效果。貪婪的調整結構。

集成學習

集成多個神經網路(皮爾遜不相關)來融合學習。

P.S. 模型效果的可解釋性

主要可以採用LIME框架對模型可解釋性進行解釋和提升。不作為本文重點,後續再作討論。

參考文章

-關於模型可解釋性的深入思考:從哪裡來,到哪裡去?

-機器學習模型的「可解釋性」到底有多重要?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 眾里尋它幾度 的精彩文章:

TAG:眾里尋它幾度 |