tensorflow超參數優化_機器學習模型的超參數優化

4e126559aac80895fda5d04cc41e273e.png

引言

模型優化是機器學習算法實現中最困難的挑戰之一。機器學習和深度學習理論的所有分支都致力于模型的優化。

機器學習中的超參數優化旨在尋找使得機器學習算法在驗證數據集上表現性能最佳的超參數。超參數與一般模型參數不同,超參數是在訓練前提前設置的。舉例來說,隨機森林算法中樹的數量就是一個超參數,而神經網絡中的權值則不是超參數。

其它超參數有:

  • 神經網絡訓練中的學習率
  • 支持向量機中的 參數和 參數
  • k 近鄰算法中的 參數
    ……

超參數優化找到一組超參數,這些超參數返回一個優化模型,該模型減少了預定義的損失函數,進而提高了給定獨立數據的預測或者分類精度。

4f9eabb37ebfcc28481adcf7d84c1999.png

分類算法中的超參數

超參數優化方法

超參數的設置對于模型性能有著直接影響,其重要性不言而喻。為了最大化模型性能,了解如何優化超參數至關重要。接下來介紹了幾種常用的超參數優化方法。

1.手動調參

很多情況下,工程師們依靠試錯法手動對超參數進行調參優化,有經驗的工程師能夠很大程度上判斷超參數如何進行設置能夠獲得更高的模型準確性。但是,這一方法依賴大量的經驗,并且比較耗時,因此發展出了許多自動化超參數優化方法。

2. 網格化尋優(Grid Search)

網格化尋優可以說是最基本的超參數優化方法。使用這種技術,我們只需為所有超參數的可能構建獨立的模型,評估每個模型的性能,并選擇產生最佳結果的模型和超參數。

b5f749a70eb3431f2376b83ce922e282.png

網格化尋優方法

以一個典型的核函數為 RBF 的 SVM 分類模型為例,其至少有兩個超參數需要優化——正則化常數 和 核函數參數 。這兩個超參數都是連續的,需要執行網格化尋優為每個超參數選擇合理取值。假設 。那么網格化尋優方法將對每一對( ,)賦值后的 SVM 模型進行訓練,并在驗證集上分別評估它們的性能(或者在訓練集內進行 cross-validation)。最終,網格化尋優方法返回在評估過程中得分最高的模型及其超參數。

通過以下代碼,可以實現上述方法:

首先,通過 sklearn 庫調用 GridSearchCV 。

from sklearn.datasets import load_iris
from sklearn.svm import SVC
iris = load_iris()
svc = SVR()
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVR
grid = GridSearchCV(estimator=SVR(kernel='rbf'),param_grid={'C': [0.1, 1, 100, 1000],'epsilon': [0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10],'gamma': [0.0001, 0.001, 0.005, 0.1, 1, 3, 5]},cv=5, scoring='neg_mean_squared_error', verbose=0, n_jobs=-1)

然后擬合網格。

grid.fit(X,y)

輸出結果。

#print the best score throughout the grid search
print grid.best_score_
#print the best parameter used for the highest score of the model.
print grid.best_param_

網格化尋優的一個缺點是,當涉及到多個超參數時,計算數量呈指數增長。并且這一方法并不能保證搜索會找到完美的超參數值。

隨機尋優(Random Search)

通常并不是所有的超參數都有同樣的重要性,某些超參數可能作用更顯著。 而隨機尋優方法相對于網格化尋優方法能夠更準確地確定某些重要的超參數的最佳值。

0406b7fe3236bc8fd6c05293f7803fd5.png

<br>隨機尋優方法

隨機尋優方法在超參數網格的基礎上選擇隨機的組合來進行模型訓練。 可以控制組合的數量,基于時間和計算資源的情況,選擇合理的計算次數。 這一方法可以通過調用 sklearn 庫中的 randomizedSearchCV 函數來實現。

盡管 RandomizedSearchCV 的結果可能不如GridSearchCV準確,但它令人意外地經常選擇出最好的結果,而且只花費GridSearchCV所需時間的一小部分。給定相同的資源,RandomizedSearchCV甚至可以優于的結果可能不如GridSearchCV準確。當使用連續參數時,兩者的差別如下圖所示。

432049bd989799284b64881fe52ec4dc.png

網格化尋優 VS 隨機尋優

隨機尋優方法找到最優參數的機會相對更高,但是這一方法適用于低維數據的情況,可以在較少迭代次數的情況下找到正確的參數集合,并且花費的時間較少。

通過以下代碼,可以實現上述方法:

首先,通過 sklearn 庫調用 RandomizedSearchCV 。

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestRegressor
iris = load_iris()
rf = RandomForestRegressor(random_state = 42)
from sklearn.model_selection import RandomizedSearchCV
random_grid = {'n_estimators': n_estimators,'max_features': max_features,'max_depth': max_depth,'min_samples_split': min_samples_split,'min_samples_leaf': min_samples_leaf,'bootstrap': bootstrap}
rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, n_iter = 100, cv = 3, verbose=2, random_state=42, n_jobs = -1)# Fit the random search model

然后進行計算。

rf_random.fit(X,y)

輸出結果。

#print the best score throughout the grid search
print rf_random.best_score_
#print the best parameter used for the highest score of the model.
print rf_random.best_param_Output:
{'bootstrap': True,'max_depth': 70,'max_features': 'auto','min_samples_leaf': 4,'min_samples_split': 10,'n_estimators': 400}

貝葉斯優化方法(Bayesian Optimization)

前面兩種方法能夠針對單獨超參數組合模型進行訓練,并評估各自的性能。每個模型都是獨立的,因此很易于進行并行計算。但是每個模型都是獨立的,也導致模型之間不具有指導意義,前一模型的計算結果并不能影響后一模型的超參數選擇。 而貝葉斯優化方法(順序優化方法的一種,sequential model-besed optimization, SMBO)則可以借鑒已有的結果進而影響后續的模型超參數選擇。

這也限制了模型訓練評估的計算次數,因為只有有望提高模型性能的超參數組合才會被進行計算。

貝葉斯優化是通過構造一個函數的后驗分布(高斯過程)來工作的,該后驗分布最好地描述了要優化的函數。隨著觀測次數的增加,后驗分布得到改善,算法更加確定參數空間中哪些區域值得探索,哪些區域不值得探索。

6fa89b1fcf2e46d1d99c46399189aea9.png

當反復迭代時,算法會在考慮到它對目標函數的了解的情況下,平衡它的探索和開發需求。在每個步驟中,高斯過程被擬合到已知的樣本(先前探索的點),后驗分布與探索策略(例如UCB(上置信限,upper confidence bound)或EI(預期改善, expected improvement))被用于確定下一個應該探索的點。

通過貝葉斯優化方法,可以更高效得探索超參數變量空間,降低優化時間。

基于梯度的優化方法(Gradient-based Optimization)

基于梯度的優化方法經常被用于神經網絡模型中,主要計算超參數的梯度,并且通過梯度下降算法進行優化。

ee10110010e35bcf53d14da6fe5095d4.png

這一方法的應用場景并不廣泛,其局限性主要在于:

  1. 超參數優化通常不是一個平滑的過程
  2. 超參數優化往往具有非凸的性質

進化尋優(Evolutionary Optimization)

進化尋優方法的思想來源于生物學概念,由于自然進化是不斷變化的環境中發生的一個動態過程,因此適用于超參數尋優問題,因為超參數尋優也是一個動態過程。

a52d8c0f0e8784ee3061e1d223d32931.png

進化算法經常被用來尋找其他技術不易求解的近似解。優化問題往往沒有一個精確的解決方案,因為它可能太耗時并且計算資源占用很大。在這種情況下,進化算法通常可以用來尋找一個足夠的近似最優解。 進化算法的一個優點是,它們可以產生出不受人類誤解或偏見影響的解決方案。

作為一個一般性的經驗法則,任何時候想要優化調整超參數,優先考慮網格化尋優方法和隨機尋優方法!

總結

在本文中,我們了解到為超參數找到正確的值可能是一項令人沮喪的任務,并可能導致機器學習模型的欠擬合或過擬合。我們看到了如何通過使用網格化尋優、隨機尋優和其他算法來克服這一障礙。

作者:Nagesh Singh Chauhan

deephub翻譯組:Oliver Lee

關注公眾號 "deep-imba" 獲取更多人工智能干貨

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529595.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

南充一中計算機機房被盜,四川省CCF CSP-JS第一輪認證考試在南充一中成功舉行...

10月11日&#xff0c;參加四川省青少年信息技術非專業級軟件能力認證(CSP-JS)第一輪認證考試的來自遂寧市、南充市、達州市的220名參與認證的選手齊聚南充一中。軟件能力認證(Certified Software Professional&#xff0c;簡稱CSP)&#xff0c;是由中國計算機學會舉辦&#xff…

java游戲猿人時代_猿人時代增值版_JAVA游戲免費版下載_7723手機游戲[www.7723.cn]

快速搜索機型:諾基亞 N70系列(176208)7610 3230 6600 6260 6620 6630 6670 6680 6681 6682 N70 N72 ;松下: X700 X800 ;聯想: P930諾基亞 N73系列(240320)N73 5320 5320XM 5320di_XM 5630XM 5700 5700XM 5710XM 5730XM 6110 6110N 6120 6120C 6120ci 6121 6122C 6124C 6210S 62…

軟件測試瀏覽器的上傳功能,關于瀏覽器上傳控件的識別 - asoqa的個人空間 - 51Testing軟件測試網 51Testing軟件測試網-軟件測試人的精神家園...

1&#xff1a;基本的上傳控件(圖1、圖2)圖1&#xff1a;MSN上傳照片圖2&#xff1a;ogame論壇上傳圖片這種基本的上傳控件QTP腳本在處理時有兩種方式&#xff1a;1.1 識別Windows選擇框對象Dialog和WinListView&#xff0c;有點繁瑣&#xff0c;但是能精確的定位用戶操作。Brow…

串燈控制盒去掉怎么接_單雙向可控硅好壞怎么判斷

大功率可控硅好壞判斷單向可控硅的工作原理&#xff1a; 可控硅導通條件&#xff1a;一是可控硅陽極與陰極間必須加正向電壓&#xff0c;二是控制極也要加正向電壓。以上兩個條件 單向可控硅的工作原理圖&#xff3b;1&#xff3d;必須同時具備&#xff0c;可控硅才會處于導通狀…

江西小學計算機說課稿,2019江西教師招聘面試-小學數學-說課稿

教師招聘面試-小學數學-說課稿——《分數的基本性質》尊敬的各位考官大家好&#xff0c;我是今天的X號考生&#xff0c;今天我說課的題目是《分數的基本性質》新課標指出&#xff1a;數學課程要面向全體學生&#xff0c;適應學生個性發展的需要&#xff0c;使得人人都能獲得良好…

oppo計算機的夜間模式,oppo夜間模式如何打開

手機型號&#xff1a;OPPO R9 1、打開手機&#xff0c;在手機桌面找到設置選項&#xff0c;點擊進入。 2、在設置界面中&#xff0c;找到顯示與亮度選項&#xff0c;點擊進入。 3、在現實與亮度界面中&#xff0c;找到夜間護眼選項&#xff0c;點擊進入。 4、在夜間護眼界面中&…

python異步框架twisted_Python學習八十七天:使用異步的twisted框架寫入數據

1.twisted框架介紹Twisted是用Python實現的基于事件驅動的網絡引擎框架&#xff1b;Twisted支持許多常見的傳輸及應用層協議&#xff0c;包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一樣&#xff0c;Twisted也具有“內置池”(batteries-included)的特點。…

無光驅如何修復W7計算機,Win7電腦沒有光驅怎么裝系統?

現在很多人買臺式電腦不會再配置光驅了&#xff0c;可是這就讓人有疑問了&#xff0c;如果沒有光驅怎么裝系統呢&#xff1f;其實方法很簡單&#xff0c;我們可以用U盤&#xff0c;但是要想使用U盤必須先制作啟動盤&#xff0c;如果你不懂怎么制作啟動盤的話&#xff0c;那就趕…

python矩陣函數_NumPy 矩陣庫函數

NumPy包含一個矩陣庫NumPy.matlib&#xff0c;這個模塊的函數用于處理矩陣而不是ndarray對象。NumPy中&#xff0c;ndarray數組可以是n維的&#xff0c;與此不同&#xff0c;矩陣總是二維的&#xff0c;但這兩種對象可以相互轉換。matlib.empty()empty()函數返回一個新的矩陣&a…

apache服務器工作原理,Apache服務器的原理簡介

Apache是由模塊組成的&#xff0c;除了內核模塊以外&#xff0c;其他的模塊都可以看作是Apache的一個補丁。http__core.c是最基本的&#xff0c;出足它惟一的內核模塊&#xff0c;一個最小的Apache編譯只包含這個模塊&#xff0c;其他的動態模塊是需要在配制文件中定義的二在Re…

安卓手機qq怎么看密友值_qq親密關系分數值是什么在哪看 怎么查情侶值或閨蜜值方法...

qq親密關系分為三種&#xff0c;有情侶關系、閨蜜關系和基友關系。而現在手機QQ8.1.5版本中有上線了情侶值和閨蜜值&#xff0c;而親密關系值怎么看呢&#xff1f;一起來了解下。qq親密關系分值什么前段時間親密關系上線后&#xff0c;很多情侶之間或者是閨蜜、基友之間都綁定了…

cos大亂斗服務器維護,《COS大亂斗》服務器數據互通公告

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓各位親愛的COSer&#xff1a;為了給大家提供更加優質的游戲環境&#xff0c;增加游戲樂趣&#xff0c;提高游戲互動性&#xff0c;我們將會在2016年11月7日對COS大亂斗混服【S4-261】區&#xff0c;APP【1-79】區&#xff0c;騰訊專…

verilog 給數組集體賦值_Verilog中如何對數組賦值(存儲器memory詳解)

http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html存儲器是一個寄存器數組。存儲器使用如下方式說明&#xff1a;reg [ msb: 1sb] memory1 [ upper1: lower1],memory2 [upper2: lower2],. . . &#xff1b;例如&#xff1a;reg [0:3 ] MyMem [0:63]//MyMem為64個4位寄存器…

ajax排行頁面,ajax簡單頁面

簡單的注冊頁面運用ajax主頁面無標題文檔//首先引用jquery文件登錄頁面用戶名&#xff1a;密碼&#xff1a;$("#btn").click(function(){//1.取內容var uid $("#uid").val();var pwd $("#pwd").val();//2.拿內容去數據庫驗證$.ajax({url:"…

云函數查詢_速覽 | 京東云5月重要產品與功能更新

新增產品高可用組 正式發布產品概述&#xff1a;高可用組是京東云提供的云主機邏輯集合&#xff0c;高可用組內的云主機分散部署在相互隔離的物理資源上&#xff0c;當出現硬件故障或定時維護時只會影響部分云主機&#xff0c;客戶業務仍為可用狀態&#xff0c;本服務免費。流水…

服務器文件夾同步到手機,本機文件夾同步到云服務器

本機文件夾同步到云服務器 內容精選換一換華為云幫助中心&#xff0c;為用戶提供產品簡介、價格說明、購買指南、用戶指南、API參考、最佳實踐、常見問題、視頻幫助等技術文檔&#xff0c;幫助您快速上手使用華為云服務。本節操作介紹本地MacOS系統主機通過安裝“Microsoft Rem…

centos7恢復mysql數據庫_mysql數據庫恢復過程記錄

月初某晚朋友說數據庫誤刪了&#xff0c;沒有備份能不能恢復&#xff0c;我一愣&#xff0c;突然想到之前我們遇到過的問題&#xff0c;便問他是否開啟了binlog。show variables like log_bin; //查看命令如果現實log_bin是ON&#xff0c;就說明打開了。值得慶幸&#xff0c;他…

絕地求生6月28日服務器維護,絕地求生6月28日更新到幾點 吃雞6月28日更新內容一覽...

絕地求生6月28日更新到幾點? 絕地求生6月28日更新內容一覽。下面跟著小編一起來看看吧!絕地求生6.28維護時間上午10點開始(預計3個小時)下午1點開服絕地求生6月28日維護內容介紹通行證: 薩諾調整了通行證系統的機制- 每日最多獲取XP 限制 80 改為120- 完成任務最少游戲時間&am…

in ms sql 集合參數傳遞_神奇的 SQL → 為什么 GROUP BY 之后不能直接引用原表中的列?...

GROUP BY 后 SELECT 列的限制標準 SQL 規定&#xff0c;在對表進行聚合查詢的時候&#xff0c;只能在 SELECT 子句中寫下面 3 種內容&#xff1a;通過 GROUP BY 子句指定的聚合鍵、聚合函數(SUM 、AVG 等)、常量。我們來看個例子&#xff1a;我們有 學生班級表(tbl_student_cla…

服務器日志文件中包含堆棧跟蹤,日志框架 Logback 官方手冊(第三章:Configuration)...

以下內容翻譯整理自logback官方手冊&#xff0c;地址&#xff1a;logback官方手冊logback 配置將日志請求插入應用程序代碼需要相當多的計劃和工作。觀察表明&#xff0c;大約有4%的代碼用于日志記錄。因此&#xff0c;即使是一個中等大小的應用程序&#xff0c;其代碼中也會包…