背景:目前各種神經(jīng)網(wǎng)絡相關(guān)算法巧号,在實驗和生產(chǎn)環(huán)境中都會大量被應用浓瞪。那么,如何應用神經(jīng)網(wǎng)絡以及如何優(yōu)化神經(jīng)網(wǎng)絡女轿,作為一項可以被系統(tǒng)化的工程箭启,流程化實現(xiàn)就顯得很有必要且很有價值。
目標:本文的目的是為了能夠?qū)⒁话銉?yōu)化神經(jīng)網(wǎng)絡的流程系統(tǒng)化梳理谈喳。對于customed情況下的優(yōu)化暫不在本文的討論范圍內(nèi)册烈。持續(xù)完善ing,淺談不足之處歡迎在評論區(qū)指正婿禽。
在...應用神經(jīng)網(wǎng)絡之前赏僧?
First of all, 需要明確定義模型需要優(yōu)化或者預測的指標。
所有的策略最終都是為了業(yè)務目標服務的扭倾,首先要將業(yè)務問題轉(zhuǎn)換為需要優(yōu)化的具體指標淀零,也就是轉(zhuǎn)換為機器學習可以優(yōu)化的問題。Secondly膛壹,從邏輯層面判斷模型能達到的效果驾中。
也就是從邏輯出發(fā)判斷算法能實現(xiàn)業(yè)務指標提升的可能性。如果邏輯上就否定了算法的必要性模聋,就完全沒有必要采用算法試驗肩民。Thirdly, 從技術(shù)角度確認是否需要使用神經(jīng)網(wǎng)絡算法。
任何一種技術(shù)都有其試用范圍链方,特別是在機器學習領(lǐng)域持痰,沒有絕對的Silver Bullet。
任何一種技術(shù)也都有其優(yōu)越性和缺陷祟蚀。代價永遠存在工窍。那就要考慮為了神經(jīng)網(wǎng)絡的優(yōu)勢,這樣的代價是否值得前酿。
比如在數(shù)據(jù)量很小的情況下患雏,神經(jīng)網(wǎng)絡強大的擬合能力就會成為項目效果的制擘,反而用簡單的決策樹效果會更好罢维⊙吐兀或者在要求高性能或是高解釋性的金融行業(yè),有時候簡單的邏輯回歸會是更優(yōu)的選擇言津。Fourth, 選用最簡單模型進行快速試驗模型能達到效果攻人。
當回答了以上所有的問題,答案指向都是可以也值得使用神經(jīng)網(wǎng)絡悬槽。那下一步就是搭建一個簡單的傳統(tǒng)機器學習模型來為該項業(yè)務指標設定一個指標下限,為神經(jīng)網(wǎng)絡的優(yōu)化提供一個參考基準瞬浓。Fifth初婆,初步搭建簡單有效的神經(jīng)網(wǎng)絡來實現(xiàn)效果。
前置準備工作中的最后一步,通過搭建一個同領(lǐng)域驗證有效的神經(jīng)網(wǎng)絡模型磅叛。在不調(diào)差和調(diào)整復雜網(wǎng)絡結(jié)構(gòu)的情況下屑咳,完全采用前人的有效參數(shù)和網(wǎng)絡結(jié)構(gòu),快速搭建一個神經(jīng)網(wǎng)絡弊琴,實現(xiàn)初步的效果兆龙。這一步的目標是走通整個流程,為之后的優(yōu)化神經(jīng)網(wǎng)絡提供流程上的支持敲董。
不智能的人工經(jīng)驗調(diào)參
在完成了上述神經(jīng)網(wǎng)絡建模的前置步驟之后紫皇,下面需要做的就是對神經(jīng)網(wǎng)絡的各種參數(shù)和結(jié)構(gòu)進行調(diào)整,目標是獲取更優(yōu)的指標效果腋寨。
P.S. 這里調(diào)參主要基于Keras/Tensorflow聪铺。
參數(shù)類型調(diào)整
-
epoch
通過validation樣本accuracy隨著epoch改變的曲線,來調(diào)整epoch的量級萄窜。(如果訓練過程較長的話铃剔,為了防止重復訓練,可以在模型訓練過程中設置checkpoint查刻。在Keras中键兜,可以通過回調(diào)函數(shù)callback來實現(xiàn)checkpoint的設置。)
更方便的穗泵,可以采用earlystopping的方式普气,對待監(jiān)測值進行監(jiān)測,如果待檢測值不再優(yōu)化火欧,則提前停止訓練棋电。這也是一種對epoch的數(shù)值進行選取的較好方案。 -
學習率和參數(shù)更新方式
- 回調(diào)參數(shù):通過在Keras中設置回調(diào)函數(shù)來進行參數(shù)更新方式和學習率的更新苇侵。
- adam:通過adam進行參數(shù)學習更新的方式赶盔。adam的全稱:adaptive moment estimation。
-
其他參數(shù)
神經(jīng)網(wǎng)絡參數(shù)貪婪的網(wǎng)格搜索進行調(diào)整陡鹃。比如dropout的比率烘浦。
模型正則化方式:
- 數(shù)據(jù)樣本角度:正負數(shù)據(jù)樣本數(shù)量的平均,防止在梯度下降過程中萍鲸,模型梯度方向嚴重偏差闷叉。
- L1或者L2正則化: 采用weight參數(shù)的L1或者L2對神經(jīng)網(wǎng)絡權(quán)重參數(shù)的大小進行控制。比如最大范數(shù)是5的正則項脊阴,就被證明可以提升結(jié)果握侧。本質(zhì)上蚯瞧,也是通過控制模型參數(shù)的擬合能力來進行正則控制。
- Early Stopping:也是一種正則化的方法品擎,可以用來減少對于訓練數(shù)據(jù)的過度擬合埋合。
- Batch normalization: 通過對特征進行normalization的方法,對參數(shù)空間的數(shù)值進行標準化萄传,防止擬合過程中不同特征參數(shù)步長不一致導致收斂到較差的局部最優(yōu)甚颂,而不易通用化到test data的參數(shù)空間中。
- 神經(jīng)網(wǎng)絡結(jié)構(gòu)控制:從神經(jīng)網(wǎng)絡的結(jié)構(gòu)上秀菱,減少結(jié)構(gòu)的復雜度振诬,減少參數(shù)空間的大小,對模型的VC維進行控制答朋。
-
Dropout:對神經(jīng)網(wǎng)絡連接在訓練的時候進行隨機斷連接贷揽。正則化的有效性由兩個方面保證:1. 減少神經(jīng)網(wǎng)絡的參數(shù),控制擬合能力梦碗。2. 通過融合模型的思想禽绪,降低模型的variance,來達到正則化目的洪规。
神經(jīng)網(wǎng)絡結(jié)構(gòu)調(diào)整
-
神經(jīng)網(wǎng)絡激活函數(shù)調(diào)整
Relu作為減少梯度消散的激活函數(shù)印屁,更加適用于深度神經(jīng)網(wǎng)絡。 -
有效神經(jīng)網(wǎng)絡結(jié)構(gòu)擴展
選擇或者增加被驗證有效的神經(jīng)網(wǎng)絡結(jié)構(gòu)斩例,來提升神經(jīng)網(wǎng)絡的效果雄人。比如,采用inception的方式對神經(jīng)網(wǎng)絡的特征更好的擬合念赶。 -
神經(jīng)網(wǎng)絡層數(shù)和結(jié)構(gòu)
在前人文章經(jīng)驗的基礎(chǔ)上础钠,嘗試不同層數(shù)和不同種類層的效果。貪婪的調(diào)整結(jié)構(gòu)叉谜。 -
集成學習
集成多個神經(jīng)網(wǎng)絡(皮爾遜不相關(guān))來融合學習旗吁。
P.S. 模型效果的可解釋性
主要可以采用LIME框架對模型可解釋性進行解釋和提升。不作為本文重點停局,后續(xù)再作討論很钓。
參考文章
關(guān)于模型可解釋性的深入思考:從哪里來,到哪里去董栽?
機器學習模型的“可解釋性”到底有多重要码倦?