天天看點

辦法不在多,有用就行!用Dropout解決過度拟合問題

全文共1878字,預計學習時長4分鐘

辦法不在多,有用就行!用Dropout解決過度拟合問題

Dropout是一種用于解決訓練模型時過度拟合問題的有趣方法。即便Dropout背後的概念非常簡單,在教育訓練模型時帶來的改進也不可小觑。本文盡量以最簡潔精煉的語言為你解釋Dropout。

除了叙述Dropout背後的客觀現實之外,還包括如何應用于神經網絡,以及在Keras上的應用。

辦法不在多,有用就行!用Dropout解決過度拟合問題

什麼是過度拟合?

訓練神經網絡是一大棘手難題。應該注意,其模型已足夠完備,可以從現有資料中學習,并推廣到未知資料。缺乏概括模型主要是由名為過度拟合的問題所引起。

簡言之,過度拟合指模型在初始訓練資料上達到極高準确度,但在新的未知資料上準确度卻極低。這就如同當老師總出同樣的考題時,學生更容易獲得高分,因為對學生而言,他們隻需簡單地記住答案。是以,高分在這裡并不能作為很好的名額。所導緻的危險後果是學生們将不會費心學習該門課程。

針對過度拟合這一問題衍生了許多技術,Dropout就是其中之一。

辦法不在多,有用就行!用Dropout解決過度拟合問題

Dropout背後的客觀事實

辦法不在多,有用就行!用Dropout解決過度拟合問題

圖檔來源:unsplash.com/@sammcghee

假設一台電視節目需要有一位參賽者,一位主持人,及一組觀衆。該節目流程如下:

  1. 在遊戲開始時,主持人随機選擇未知電影作為遊戲主題。
  2. 主持人在每一階段,隻播放所選電影的一個片段。
  3. 接着針對目前已播片段,提出與電影中事件相關的一個問題。

4.由每位觀衆作答。

5.再由參賽者從觀衆中選擇一個作為最終答案。

6.如果回答正确,參賽者和該觀衆各将獲得50美元。

7.如果回答錯誤,兩人各需付100美元。

假設參與者注意到其中一個觀衆總是回答正确。随着遊戲深入,參賽者将會對該名觀衆建立信任,并忽略其他觀衆給出的答案。

這一政策也存在一些問題。備受參賽者信賴的觀衆可能在遊戲的初級階段答題表現較好,而在遊戲後期正确率下降。如果總是隻選擇一個人(或一小組),那麼其它觀衆會覺得不受重視,且不再關注所播放的電影片段。

在遊戲後期,受信任的人也不會發揮作用,并且由于其它觀衆也因為不再投入所播片段,而混淆事件順序導緻作答失敗。是以,依賴一個人是不可行的,必然會一敗塗地。

怎樣才能解決這一問題呢?明智的政策是始終讓他人保有發言權。通過這種方式,參賽者會了解每個人的長處,并根據問題類别知道該詢問誰。此外,這一方式也會讓每位觀衆意識到自己的責任,覺得有義務投入到遊戲中。

辦法不在多,有用就行!用Dropout解決過度拟合問題

神經網絡中的Dropout

你可能會問Dropout與神經網絡之間有何關系?那麼,請看以下網絡:

辦法不在多,有用就行!用Dropout解決過度拟合問題

神經網絡簡易示例

将輸入層(綠色)視為支援人所提的問題,隐藏層中的每個神經元(藍色)視為觀衆中的某個人,輸出層(紅色)視為被選觀衆所給出的答案。如果輸出層發現特定神經元總是給出最佳答案,則可能忽略其他神經元并隻注意該神經元。

根據之前的分析,選擇禁止一些神經元回答并将機會給予其他神經元,這一方式将實作平衡并迫使所有神經元學習。這就是Dropout的概念。從技術層面,它的工作原理如下:

  1. 指定一個Dropout率,它表示不參與神經元的百分比(例如20%的神經元)。
  2. 每個階段,根據預設百分比移除随機神經元。
  3. 根據剩餘神經元的結果組合計算最終輸出。

使用這種技術,所有神經元都有機會投票,并需要正确作答以減少模型損失。

以下是使用Dropout前後神經網絡的變化示例:

辦法不在多,有用就行!用Dropout解決過度拟合問題

圖檔來源:Deep Learning for Computer Vision

辦法不在多,有用就行!用Dropout解決過度拟合問題

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%)之後。

辦法不在多,有用就行!用Dropout解決過度拟合問題

留言 點贊 關注

我們一起分享AI學習與發展的幹貨

歡迎關注全平台AI垂類自媒體 “讀芯術”

添加小編微信:dxsxbb

即可進入微信交流群

繼續閱讀