搜尋
首頁後端開發Python教學優化你的神經網絡

優化你的神經網絡

Oct 13, 2024 am 06:15 AM

上週我發布了一篇關於如何建立簡單神經網絡,特別是多層感知器的文章。本文將深入探討神經網路的細節,討論如何透過調整神經網路的配置來最大限度地提高神經網路的效能。

訓練模型多長時間

訓練模型時,您可能會認為如果模型訓練得夠多,模型就會變得完美無缺。這可能是真的,但這只適用於它所訓練的資料集。事實上,如果你給它另一組值不同的數據,模型可能會輸出完全錯誤的預測。

為了進一步理解這一點,假設您每天都在不移動方向盤的情況下直線駕駛來練習駕駛考試。 (請不要這樣做。)雖然您可能會在直線加速賽中表現出色,但如果在實際考試中被告知要左轉,您最終可能會變成停車標誌。

這種現象稱為過度擬合。您的模型可以學習其訓練資料的所有方面和模式,但如果它學習的模式與訓練資料集過於緊密地結合,那麼當給定新資料集時,您的模型將表現不佳。同時,如果您沒有充分訓練模型,那麼您的模型將無法正確識別其他資料集中的模式。在這種情況下,您將欠擬合

Optimizing Your Neural Networks


過度擬合的範例。驗證損失(以橙色線表示)逐漸增加,而訓練損失(以藍色線表示)逐漸減少。

在上面的範例中,當驗證損失達到最小值時,停止訓練模型的最佳位置是正確的。可以透過提前停止來做到這一點,一旦在任意數量的訓練週期(時期)後驗證損失沒有改善,它就會停止訓練。

訓練模型就是在過度擬合和欠擬合之間找到平衡,同時在必要時利用提前停止。這就是為什麼您的訓練資料集應該盡可能代表總體人群,以便您的模型可以更準確地對其未見過的資料進行預測。

損失函數

也許可以調整的最重要的訓練配置之一是損失函數,它是模型的預測與其實際值之間的「不準確性」。 「不準確度」可以用多種不同的數學方式來表示,最常見的一種是均方誤差(MSE)

MSE=ΣΣi=1n(((iˉyy 🎜>)2ntext{MSE} = frac{sum_{i=1}^n (條{y_i} - y_i)^2}{n} MSE=Σnyiiˉˉˉˉˉˉˉ
ˉˉ蠶🎜>−yii >)22 >

哪裡 yiˉiˉˉˉˉ>欄{y_i} yˉ 是模型的預測, yi >yi

是真正的價值。有一個類似的變體,稱為平均絕對誤差(MAE)
MAE=Σi=1nyiˉyy 🎜>∣n文字{MAE} = frac{sum_{i=1}^n |bar{y_i} - y_i|}{n} MAE=Σnyiiˉˉˉˉˉˉ
ˉˉˉ蠶🎜>−yii >∣

這兩個有什麼差別,哪個比較好?真正的答案是這取決於多種因素。讓我們考慮一個簡單的二維線性迴歸範例。

在許多情況下,可能存在異常值的資料點,即遠離其他資料點的點。就線性迴歸而言,這意味著有幾個點 xyxy xy

Optimizing Your Neural Networks

- 距離其他飛機較遠的飛機。如果您還記得統計課上的內容,那麼像這樣的點會顯著影響計算的線性迴歸線。 一個簡單的圖表,其中的點位於 (1, 1)、(2, 2)、(3, 3) 和 (4, 4) 如果你想想一條可以穿過所有四個點的線,那麼 y=xy = x xy = x

y=Optimizing Your Neural Networks
x 將是一個不錯的選擇,因為這條線會穿過所有點。 一個簡單的圖形,其中包含 (1, 1)、(2, 2)、(3, 3) 和 (4, 4) 上的點以及直線 y=xy = x xy = x
y=

x 經歷它 但是,假設我決定再增加一點 (5,11(5, 1) (5,1) 。現在迴歸線應該是什麼?好吧,事實證明這是完全不同的: y=0.2x0.2x

Optimizing Your Neural Networks


🎜>1.6

y = 0.2x 1.6

y=0.2x 🎜> 一個簡單圖形,其點位於(1, 1)、(2, 2)、(3, 3)、(4, 4) 和(5,1 ) ),並有一條線性迴歸線穿過它。 鑑於先前的數據點,該線預計的值 yy yy > 什麼時候

x=5x = 5 5x = 5 x = 5 x = 5 x=5 是 5,但由於異常值及其 MSE,迴歸線顯著「向下拉」。 這只是一個簡單的例子,但這提出了一個問題,作為機器學習開發人員,您需要停下來思考:我的模型對異常值應該有多敏感? 如果您想要如果模型對異常值更加敏感,那麼您會選擇像MSE 這樣的指標,因為在這種情況下,由於平方,涉及異常值的錯誤會更加明顯,並且您的模型會自行調整以最大限度地減少這種情況。否則,您會選擇像 MAE 這樣的指標,它不太關心異常值。

最佳化器

在我之前的文章中,我還討論了反向傳播、梯度下降的概念,以及它們如何最小化模型的損失。 梯度是一個指向最大變化方向的向量。梯度下降演算法將計算該向量並向完全相反的方向移動,使其最終達到最小值。

大多數最佳化器都有特定的學習率,通常表示為 αalpha αα

他們所堅持的。本質上,這表示演算法每次計算梯度時將向最小值移動多少。
小心學習率設定太大!您的演算法可能永遠不會達到最小值,因為它需要很大的步驟,可能會反覆跳過最小值。 Optimizing Your Neural Networks

[Tensorflow 的神經網路遊樂場](https://playground.tensorflow.org) 展示瞭如果將學習率設定得太大會發生什麼。請注意測試和訓練損失都是“NaN”。

回到梯度下降,雖然它可以有效地最小化損失,但這可能會顯著減慢訓練過程,因為損失函數是在整個資料集上計算的。梯度下降有幾種更有效的替代方案,但也有各自的缺點。

隨機梯度下降

標準梯度下​​降最受歡迎的替代方案之一是稱為

隨機梯度下降(SGD)

的變體。與梯度下降一樣,SGD 具有固定的學習率。但 SGD 不是像梯度下降那樣遍歷整個資料集,而是隨機選擇一個小樣本,並根據樣本更新神經網路的權重。最終,參數值收斂到近似(但不完全)最小化損失函數的點。這是 SGD 的缺點之一,因為它並不總是達到精確的最小值。此外,與梯度下降類似,它仍然對您設定的學習率敏感。

Adam 優化器 Adam 這個名字源自於自適應矩估計。它本質上結合了 SGD 的兩種變體,根據每次訓練迭代期間更新的頻率來調整每個輸入參數的學習率(自適應學習率

)。同時,它還追蹤過去的梯度計算作為移動平均值以平滑更新(

動量

)。然而,由於其動量特性,它有時會比其他演算法需要更長的時間才能收斂。

把它們放在一起

現在舉個例​​子!
我在 Google Colab 上建立了一個範例演練,它使用 PyTorch 建立一個學習簡單線性關係的神經網路。

如果您對 Python 有點陌生,別擔心!我添加了一些解釋來討論每個部分中發生的事情。

反射 雖然這顯然沒有涵蓋有關優化神經網路的所有內容,但我想至少涵蓋一些您在訓練自己的模型時可以利用的最重要的概念。希望您本週學到了一些東西,感謝您的閱讀!

以上是優化你的神經網絡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python和時間:充分利用您的學習時間Python和時間:充分利用您的學習時間Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)