最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Dropout?正則化對抗?過擬合

 更新時間:2023年03月31日 11:42:12   作者:冷凍工廠  
這篇文章主要為大家介紹了?Dropout?正則化對抗?過擬合重要性及應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

1. 簡介

過擬合是我們大多數(shù)人在訓練和使用機器學習模型時已經(jīng)或最終會遇到的常見挑戰(zhàn)。自機器學習誕生以來,研究人員一直在努力對抗過擬合。他們提出的一種技術(shù)是 dropout 正則化,其中模型中的神經(jīng)元被隨機移除。在本文中,我們將探討 dropout 正則化的工作原理、如何在您自己的模型中實施它,以及與其他方法相比它的優(yōu)缺點。

1.1. 什么是過擬合

過擬合是指模型在其訓練數(shù)據(jù)上過度訓練,導致它在新數(shù)據(jù)上表現(xiàn)不佳。從本質(zhì)上講,在模型力求盡可能準確的過程中,它過分關(guān)注訓練數(shù)據(jù)集中的細節(jié)和噪聲。這些屬性通常不存在于真實世界的數(shù)據(jù)中,因此模型往往表現(xiàn)不佳。當模型的參數(shù)相對于數(shù)據(jù)量而言太多時,就會發(fā)生過擬合。這可能導致模型過度關(guān)注與模型必須開發(fā)的一般模式無關(guān)的較小細節(jié)。例如,假設(shè)訓練了一個復(fù)雜模型(許多參數(shù))來識別圖片中是否有馬。在這種情況下,它可能會開始關(guān)注天空或環(huán)境的細節(jié),而不是馬本身。這可能發(fā)生在:

  • 該模型太復(fù)雜(具有太多參數(shù))而不利于其自身。
  • 模型訓練時間過長。
  • 訓練模型的數(shù)據(jù)集太小。
  • 該模型在相同的數(shù)據(jù)上進行訓練和測試。
  • 訓練模型的數(shù)據(jù)集具有重復(fù)的特征,使其容易過擬合。

1.2. 重要性

過擬合不僅僅是一個簡單的煩惱——它會破壞整個模型。它給人一種模型表現(xiàn)良好的錯覺,即使它無法對所提供的數(shù)據(jù)進行適當?shù)母爬ā?/p>

過擬合會產(chǎn)生極其嚴重的后果,尤其是在人工智能越來越普及的醫(yī)療保健等領(lǐng)域。由于過擬合而未經(jīng)過適當訓練或測試的 AI 可能導致錯誤診斷。

2. 什么是Dropout

  • Dropout 是一種正則化技術(shù)

理想情況下,對抗過擬合的最佳方法是在同一數(shù)據(jù)集上訓練大量不同架構(gòu)的模型,然后對它們的輸出進行平均。這種方法的問題在于它非常耗費資源和時間。雖然相對較小的模型可能負擔得起,但可能需要大量時間來訓練的大型模型很容易壓垮任何人的資源。

Dropout 的工作原理是從輸入層或隱藏層中“丟棄”一個神經(jīng)元。多個神經(jīng)元從網(wǎng)絡(luò)中移除,這意味著它們實際上不存在——它們的傳入和傳出連接也被破壞。這人為地創(chuàng)建了許多更小、更不復(fù)雜的網(wǎng)絡(luò)。這迫使模型不再完全依賴于一個神經(jīng)元,這意味著它必須使其方法多樣化并開發(fā)多種方法來實現(xiàn)相同的結(jié)果。例如,回到馬的例子,如果一個神經(jīng)元主要負責馬的樹部分,它的被丟棄將迫使模型更多地關(guān)注圖像的其他特征。 Dropout 也可以直接應(yīng)用于輸入神經(jīng)元,這意味著整個特征都從模型中消失了。

  • 將 Dropout 應(yīng)用于神經(jīng)網(wǎng)絡(luò)

通過在每一層(包括輸入層)中隨機丟棄神經(jīng)元,將 Dropout 應(yīng)用于神經(jīng)網(wǎng)絡(luò)。預(yù)定義的丟棄率決定了每個神經(jīng)元被丟棄的機會。例如,dropout rate 為 0.25 意味著神經(jīng)元有 25% 的幾率被丟棄。在模型訓練期間的每個時期都會應(yīng)用 Dropout。

3. 應(yīng)用

3.1. 數(shù)據(jù)集

讓我們從一個可能容易過擬合的數(shù)據(jù)集開始:

# Columns: has tail, has face, has green grass, tree in background, has blue sky, 3 columns of noise | is a horse image (1) or not (0)
survey = np.array([
 [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree, blue sky | is a horse image
 [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree blue sky | is a horse image
 [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image
 [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image
])

此數(shù)據(jù)與我們的馬及其環(huán)境示例相關(guān)。我們將圖像的特性抽象為一種易于理解的簡單格式??梢郧宄乜吹?,數(shù)據(jù)并不理想,因為其中有馬的圖像也恰好包含樹木、綠草或藍天——它們可能在同一張照片中,但一個不影響另一個。

3.2. 模型

讓我們使用 Keras 快速創(chuàng)建一個簡單的 MLP:

# Imports
from keras.models import Sequential
from keras.layers import Dense, Dropout
import numpy as np
# Columns: has tail, has face, has green grass, tree in background, has blue sky, 3 columns of noise | is a horse image (1) or not (0)
survey = np.array([
 [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree, blue sky | is a horse image
 [1, 1, 1, 1, 1, 1], # tail, face, green grass, tree blue sky | is a horse image
 [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image
 [0, 0, 0, 0, 0, 0], # no tail, no face, no green grass, no tree, no blue sky | is not a horse image
])
# Define the model
model = Sequential([
    Dense(16, input_dim=5, activation='relu'),
    Dense(8, activation='relu'),
    Dense(1, activation='sigmoid')
])
# Compile the model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Train the model
X = survey[:, :-1]
y = survey[:, -1]
model.fit(X, y, epochs=1000, batch_size=1)
# Test the model on a new example
test_example = np.array([[1, 1, 0, 0, 0]])
prediction = model.predict(test_example)
print(prediction)

我強烈建議使用 Python notebook(例如 Jupyter Notebook)來組織代碼,這樣您就可以快速重新運行單元而無需重新訓練模型。沿每個注釋拆分代碼。

讓我們進一步分析我們正在測試模型的數(shù)據(jù):

test_example = np.array([[1, 1, 0, 0, 0]])

本質(zhì)上,我們有一張包含馬的所有屬性的圖像,但沒有包含在數(shù)據(jù)中的任何環(huán)境因素(綠草、藍天、樹木等)。模型輸出:

0.02694458

即使模型有臉和尾巴——我們用它來識別馬——也只有 2.7% 的概率確定圖像是馬。

3.3. Dropout

Keras 使實施 dropout 以及其他防止過擬合的方法變得非常簡單。我們只需要返回到包含模型層的列表:

# Define the model
model = Sequential([
    Dense(16, input_dim=5, activation='relu'),
    Dense(8, activation='relu'),
    Dense(1, activation='sigmoid')
])

并添加一些 dropout 層!

# Define the model
model = Sequential([
    Dense(16, input_dim=5, activation='relu'),
    Dropout(0.5),
    Dense(8, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

現(xiàn)在模型輸出:

0.98883545

馬圖像即使不包含環(huán)境變量,也有 99% 的把握是馬!

Dropout(0.5) 表示上層中的任何神經(jīng)元都有 50% 的機會被“丟棄”或從存在中移除。通過實施 dropout,我們基本上以資源高效的方式在數(shù)百個模型上訓練了 MLP。

3.4. Dropout Rate

為你的模型找到理想的 Dropout 率的最好方法是通過反復(fù)試驗——沒有萬能的方法。從 0.1 或 0.2 左右的低丟失率開始,然后慢慢增加,直到達到所需的精度。使用我們的馬 MLP,0.05 的 dropout 導致模型有 16.5% 的置信度圖像是馬的圖像。另一方面,0.95 的 dropout 只是丟棄了太多神經(jīng)元以使模型無法運行——但仍然達到了 54.1% 的置信度。這些值不適用于此模型,但這確實意味著它們可能適合其他模型。

4. 總結(jié)

dropout 是機器學習中用于防止過擬合和整體提高模型性能的一種強大技術(shù)。它通過從輸入層和隱藏層的模型中隨機“丟棄”神經(jīng)元來實現(xiàn)這一點。這允許分類器在一次訓練中訓練成百上千個獨特的模型,防止它過度關(guān)注某些特征。

以上就是 Dropout 正則化對抗 過擬合的詳細內(nèi)容,更多關(guān)于 Dropout 正則化對抗 過擬合的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 自定義Django_rest_framework_jwt登陸錯誤返回的解決

    自定義Django_rest_framework_jwt登陸錯誤返回的解決

    這篇文章主要介紹了自定義Django_rest_framework_jwt登陸錯誤返回的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Python讀取xlsx數(shù)據(jù)生成圖標代碼實例

    Python讀取xlsx數(shù)據(jù)生成圖標代碼實例

    這篇文章主要介紹了Python讀取xlsx數(shù)據(jù)生成圖標代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python的Pandas時序數(shù)據(jù)詳解

    Python的Pandas時序數(shù)據(jù)詳解

    這篇文章主要為大家詳細介紹了Pandas時序數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python神器之Pampy模式匹配庫的用法詳解

    Python神器之Pampy模式匹配庫的用法詳解

    Pampy是Python的一個模式匹配類庫,一個只有150行的類庫,該庫優(yōu)雅、高效值得廣大Python的碼農(nóng)加入自己基本開發(fā)棧中。本文就來講講Pampy的用法,需要的可以參考一下
    2022-07-07
  • Python pymongo模塊常用操作分析

    Python pymongo模塊常用操作分析

    這篇文章主要介紹了Python pymongo模塊常用操作,結(jié)合實例形式分析了pymongo模塊的導入、連接MongoDB數(shù)據(jù)以及插入、更新、刪除、查詢等操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-09-09
  • Python動態(tài)演示旋轉(zhuǎn)矩陣的作用詳解

    Python動態(tài)演示旋轉(zhuǎn)矩陣的作用詳解

    一個矩陣我們想讓它通過編程,實現(xiàn)各種花樣的變化怎么辦呢?下面這篇文章主要給大家介紹了關(guān)于Python動態(tài)演示旋轉(zhuǎn)矩陣的作用,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Python日期時間模塊datetime詳解與Python 日期時間的比較,計算實例代碼

    Python日期時間模塊datetime詳解與Python 日期時間的比較,計算實例代碼

    python中的datetime模塊提供了操作日期和時間功能,本文為大家講解了datetime模塊的使用方法及與其相關(guān)的日期比較,計算實例
    2018-09-09
  • Python單元測試unittest模塊使用終極指南

    Python單元測試unittest模塊使用終極指南

    本文將詳細介紹unittest模塊的各個方面,包括測試用例、斷言、測試套件、setUp和tearDown方法、跳過和期望異常、測試覆蓋率、持續(xù)集成等內(nèi)容,我們將提供豐富的示例代碼,以便讀者更好地理解如何使用unittest進行單元測試
    2023-12-12
  • 深入解析Python中的集合類型操作符

    深入解析Python中的集合類型操作符

    這篇文章主要介紹了深入解析Python中的集合類型操作符,是Python入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • celery異步定時任務(wù)訂單定時回滾

    celery異步定時任務(wù)訂單定時回滾

    這篇文章主要為大家介紹了celery異步定時任務(wù)訂單定時回滾的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04

最新評論

安阳市| 马龙县| 安顺市| 瓦房店市| 张家界市| 曲麻莱县| 建湖县| 长泰县| 黑水县| 罗定市| 迭部县| 马边| 通州市| 大同县| 怀宁县| 德兴市| 咸宁市| 田阳县| 蓝山县| 旺苍县| 怀宁县| 和田县| 保康县| 新余市| 育儿| 雅安市| 奉贤区| 土默特右旗| 衡水市| 佛学| 上杭县| 壤塘县| 巴马| 长宁区| 东方市| 特克斯县| 临潭县| 梁山县| 通江县| 瑞丽市| 阳谷县|