全文共1878字,預計學習時長4分鐘微信
圖片來源:unsplash.com/@mlightbody網絡
Dropout是一種用於解決訓練模型時過分擬合問題的有趣方法。即使Dropout背後的概念很是簡單,在培訓模型時帶來的改進也不可小覷。本文儘可能以最簡潔精煉的語言爲你解釋Dropout。學習
除了敘述Dropout背後的客觀現實以外,還包括如何應用於神經網絡,以及在Keras上的應用。3d
什麼是過分擬合?對象
訓練神經網絡是一大棘手難題。應該注意,其模型已足夠完備,能夠從現有數據中學習,並推廣到未知數據。缺少歸納模型主要是由名爲過分擬合的問題所引發。blog
簡言之,過分擬合指模型在初始訓練數據上達到極高準確度,但在新的未知數據上準確度卻極低。這就如同當老師總出一樣的考題時,學生更容易得到高分,由於對學生而言,他們只需簡單地記住答案。所以,高分在這裏並不能做爲很好的指標。所致使的危險後果是學生們將不會費心學習該門課程。遊戲
針對過分擬合這一問題衍生了許多技術,Dropout就是其中之一。事件
Dropout背後的客觀事實圖片
圖片來源:unsplash.com/@sammcgheeio
假設一臺電視節目須要有一位參賽者,一位主持人,及一組觀衆。該節目流程以下:
1. 在遊戲開始時,主持人隨機選擇未知電影做爲遊戲主題。
2. 主持人在每一階段,只播放所選電影的一個片斷。
3. 接着針對目前已播片斷,提出與電影中事件相關的一個問題。
4.由每位觀衆做答。
5.再由參賽者從觀衆中選擇一個做爲最終答案。
6.若是回答正確,參賽者和該觀衆各將得到50美圓。
7.若是回答錯誤,兩人各需付100美圓。
假設參與者注意到其中一個觀衆老是回答正確。隨着遊戲深刻,參賽者將會對該名觀衆創建信任,並忽略其餘觀衆給出的答案。
這一策略也存在一些問題。備受參賽者信賴的觀衆可能在遊戲的初級階段答題表現較好,而在遊戲後期正確率降低。若是老是隻選擇一我的(或一小組),那麼其它觀衆會以爲不受重視,且再也不關注所播放的電影片斷。
在遊戲後期,受信任的人也不會發揮做用,而且因爲其它觀衆也由於再也不投入所播片斷,而混淆事件順序致使做答失敗。所以,依賴一我的是不可行的,必然會一敗塗地。
怎樣才能解決這一問題呢?明智的策略是始終讓他人保有發言權。經過這種方式,參賽者會了解每一個人的長處,並根據問題類別知道該詢問誰。此外,這一方式也會讓每位觀衆意識到本身的責任,以爲有義務投入到遊戲中。
神經網絡中的Dropout
你可能會問Dropout與神經網絡之間有何關係?那麼,請看如下網絡:
神經網絡簡易示例
將輸入層(綠色)視爲支持人所提的問題,隱藏層中的每一個神經元(藍色)視爲觀衆中的某我的,輸出層(紅色)視爲被選觀衆所給出的答案。若是輸出層發現特定神經元老是給出最佳答案,則可能忽略其餘神經元並只注意該神經元。
根據以前的分析,選擇禁止一些神經元回答並將機會給予其餘神經元,這一方式將實現平衡並迫使全部神經元學習。這就是Dropout的概念。從技術層面,它的工做原理以下:
1. 指定一個Dropout率,它表示不參與神經元的百分比(例如20%的神經元)。
2. 每一個階段,根據預設百分比移除隨機神經元。
3. 根據剩餘神經元的結果組合計算最終輸出。
使用這種技術,全部神經元都有機會投票,並須要正確做答以減小模型損失。
如下是使用Dropout先後神經網絡的變化示例:
圖片來源:Deep Learning for Computer Vision
Dropout在Keras中的應用
在Keras應用Dropout比想象的更爲簡單。只需導入並建立一個新的Dropout圖層對象,而後將其添加到網絡結構的相關位置。
from keras import models, layers
model = models.Sequential()
model.add(layers.Dense(32))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1))
一般,在輸出dropout率=0.5(50%)以前,徹底鏈接的Dense層以後添加Dropout layer。最近也採用其餘的方法,如應用於卷積層激活功能或循環Dropout率= 0.2(20%)以後。
留言 點贊 關注
咱們一塊兒分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 「讀芯術」
添加小編微信:dxsxbb
便可進入微信交流羣