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.mzph.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;其代码中也会包…