调参经验 模型选择 通常我会使用一个简单的CNN模型(这个模型一般包含5个卷积层)将数据扔进去训练跑出一个baseline,这一步工作主要是为了验证数据集的质量。 超参数的选择 调参是项技术活,调得好CVPR,调不好下海搬砖。
10000000000000},{"path":"/data9/druid/var/druid/segment-cache","maxSize":10000000000000},{"path":"/data10
本篇主要讲解实际运用中Prophet调参的主要步骤以及一些本人实际经验。 二 参数调优实战 目前实际生产中,时序模型的训练往往是数量惊人,因此如果依靠以往的指标和经验调参以不大可行,所以只能采用机器寻参的方式。福布湿在这里给大家介绍下常用的网格寻参。 在调参之前,最重要的是要确定好模型的评价指标。Prophet中内置的评价指标有传统的mse、rmse、mae、mape、coverage。 网格寻参的参数可以是所有的参数,不仅仅是福布湿给出的这几个 changepoint_range = [i / 10 for i in range(3, 10)] seasonality_mode 因此如果想训练出一个好的模型,数据和调参很重要,但更重要的对算法原理的充分理解并根据实际情况改进算法,从而让模型效果达到一个新的台阶。
深度学习的训练方法可参见我之前的文章深度学习的训练,以下则是调参的手法及典型值。 两类需要调参的参数(parameters) 优化类的参数:学习率(learning rates)、mini batch、训练代数(epochs) 模型类的参数:隐含层数(hidden layers)、模型结构的参数 因为太大的模型会导致过拟合 可以增加Hidden Units数量直到validation error变差 通常来说3层的隐含层比2层的好,但是4,5,6层再深就没什么明显效果了 ,一个例外情况是CNN 二、RNN的调参
), #在0.1和1间线性的取10个值 10 cv=10, 11 n_jobs=1 ),将训练集大小划分为10个相等的区间,在0.1和1之间线性的取10个值。 绘制验证曲线得到超参和准确率关系 验证曲线是用来提高模型的性能,验证曲线和学习曲线很相近,不同的是这里画出的是不同参数下模型的准确率而不是不同训练集大小下的准确率: 1from sklearn.model_selection param_name='clf__C', 8 param_range=param_range, 9 cv=10 ) 10train_mean = np.mean(train_scores, axis=1) 11train_std = np.std(train_scores, axis=1) 12test_mean
本文结构: 什么是 LightGBM 怎么调参 和 xgboost 的代码比较 ---- 1. 高速,高效处理大数据,运行时需要更低的内存,支持 GPU 不要在少量数据上使用,会过拟合,建议 10,000+ 行记录时使用。 ---- 2. 怎么调参 下面几张表为重要参数的含义和如何应用 Control Parameters 含义 用法 max_depth 树的最大深度 当模型过拟合时,可以考虑首先降低 max_depth min_data_in_leaf categorical_features 类似,只不过不是将特定的列视为categorical,而是完全忽略 save_binary 这个参数为 true 时,则数据集被保存为二进制文件,下次读数据时速度会变快 ---- 调参 ,在大型数据集时就设置为数百或数千 max_depth 这个也是可以限制树的深度 下表对应了 Faster Speed ,better accuracy ,over-fitting 三种目的时,可以调的参数
为网络的输入大小,n_out为网络的输出大小,n为n_in或(n_in+n_out)*0.5 Xavier初始法论文: http://jmlr.org/proceedings/papers/v9/glorot10a /glorot10a.pdf He初始化论文: https://arxiv.org/abs/1502.01852 uniform均匀分布初始化: w = np.random.uniform(low=- ,如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15 dropout对小数据防止过拟合有很好的效果,值一般设为0.5,小数据上dropout+sgd在我的大部分实验中
干调参这种活也有两年时间了. 我的回答可能更多的还是侧重工业应用, 技术上只限制在CNN这块. 先说下我的观点, 调参就是trial-and-error. 没有其他捷径可以走. 唯一的区别是有些人盲目的尝试, 有些人思考后再尝试.快速尝试, 快速纠错这是调参的关键. ◆ 首先说下可视化 我个人的理解, 对于可视化, 更多的还是帮助人类以自己熟悉的方式来观察网络. 因为, 你是不可能边观察网络, 还边调参的. 你只是训练完成后(或者准确率到达一个阶段后), 才能可视化. 但是具体调参怎么调是没辙的. 第一, 你不可能告诉网络, 这层你得学个边界检测的功能出来. 就我们调参狗能遇到的问题, NN没法拟合的, 这概率是有多小★ 你可以不这么做, 但是等你数据准备了两天, 结果发现有问题要重新生成的时候, 你这周时间就酱油了. 2.
尝试了几款调参神器后,还是选择了一款微软出的一款调参神器NNI . 除了各方面性能都挺好之外,完备的官方文档也是一个值得选择的原因。另外,weight & bias 也是一款比较优秀的调参神器。 NNI (Neural Network Intelligence)是一个轻量但强大的工具包,帮助用户自动的进行特征工程,神经网络架构搜索,超参调优以及模型压缩。 "_type":"choice", "_value":[0.1, 0.2, 0.3, 0.4]}, "num_holes":{"_type":"choice", "_value":[4, 8,10,12 local # 本地 服务器 searchSpacePath: search_space.json #choice: true, false useAnnotation: false tuner: # 调参器 codeDir: . # gpuNum: 1 localConfig: useActiveGpu: true 注意各个文件路径 ---- 第三步:修改 Trial 代码来从 NNI 获取超参,
下面是一个普通的 convolutional 网络结构,我们全文会在这个结构上进行调优: ? 这是初级的代码: ? 先来看一下它的训练结果: ? 可以看到 accuracy 大约在 10% 徘徊: 原始的 data 是有很多噪音的,因为它只是随机抽样 smooth 之后可以看到清晰的 trend 还可以看到 cross entropy 的趋势, 现在发现 model 基本训练的不错了 Step 4: 选择最优模型 接下来 tf 还可以进行调参 可以看不同版本的 model 在 训练不同的 variable 时哪个更好。 总结 好了,上面基本把 TensorBoard 各板块上主要的功能简单介绍了一下,而且用了一个小例子,看如何借用各个板块的可视化结果来帮助我们调优模型: step 1: 查看 graph 结构 step 5: 用 embedding 进一步查看 error 出处 希望也可以帮到大家,据说后面 TensorFlow 会推出更炫的而且更专业的可视化功能,例如语音识别的,有了这种可视化的功能,最需要精力的调优环节也变得更有趣了
干调参这种活也有两年时间了. 我的回答可能更多的还是侧重工业应用, 技术上只限制在CNN这块. 先说下我的观点, 调参就是trial-and-error. 没有其他捷径可以走. 唯一的区别是有些人盲目的尝试, 有些人思考后再尝试.快速尝试, 快速纠错这是调参的关键. ◆ 首先说下可视化 我个人的理解, 对于可视化, 更多的还是帮助人类以自己熟悉的方式来观察网络. 因为, 你是不可能边观察网络, 还边调参的. 你只是训练完成后(或者准确率到达一个阶段后), 才能可视化. 但是具体调参怎么调是没辙的. 第一, 你不可能告诉网络, 这层你得学个边界检测的功能出来. 就我们调参狗能遇到的问题, NN没法拟合的, 这概率是有多小? ★ 你可以不这么做, 但是等你数据准备了两天, 结果发现有问题要重新生成的时候, 你这周时间就酱油了. ? 2.
文章目录 图文详解PID调参 一、什么是PID 1. 比例系数 2. 积分系数 3. 微分系数 二、PID调节方式 1.PI系统调节 2.PD系统调节 3.PID系统调节 图文详解PID调参 读完本篇文章你的收获: PID三个参数基本概念 了解如何调节PID 认识一个经常咕咕咕的博主 提高系统对未来变化反应能力 二、PID调节方式 通过上一小节的分析,我们对PID的三个项有了一个简单的理解,但文字上的描述还是太抽象了,我以一个小车调速系统来做进一步讲解,结合实际现象来分析PID三个参数的实际作用,以及如何调这三个参数 但大多数情况下PID三个参数并不是都使用上的,一般会其中两个来组合使用,比如PI组合用于追求稳定的系统,PD组合用于追求快速响应的系统,当然PID用于即追求稳定又追求快速响应的系统,但是实际上PID参数越多越难调, 调节的过大之后,反倒会放大系统趋势的影响,使系统出现震荡,难以稳定,如下D=5 3.PID系统调节 在讲了PI和PD系统的调节方式后,下面分享一下PID系统的调节方式,首先我们先按照PI系统进行调节,先调P在调I
,如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15 dropout对小数据防止过拟合有很好的效果,值一般设为0.5,小数据上dropout+sgd在我的大部分实验中
(贪心调参, GridSearchCV调参和贝叶斯调参) 绘制训练集曲线与验证集曲线(从曲线分析过拟合欠拟合的问题,以及如果发生了这些问题,我们应该怎么去尝试解决) 总结 1. 这样,各个模型的效果就一目了然了,从上图可以看出,随机森林和LGB的效果还是好一些的,后面可以基于这两个进行调参,当然xgboost的效果可能由于参数的原因表现不是那么理想,这里也作为了我们调参备选 那么调参究竟有没有影响呢 591,不调参713,所以调参还是很重要的。 所以更多的时候需要我们自己手动先排除掉一部分数值,然后使用GridSearch自动调参 模型调参有三种方式: 贪心调参 网格搜索调参 贝叶斯调参 这里给出一个模型可调参数及范围选取的参考: ? 详细的可以参考: 随机森林sklearn FandomForest,及其调参 机器学习各种算法怎么调参?
本周二(12月29日),三小时AI开发进阶迎来最后终极一课「工程师进阶课:模型调参与算法优化技巧实战」,百度高级研发工程师现身说法,带来基于全功能AI开发平台BML的算法优化技巧分享,还有现场调参实战与直播 Q&A,直播现场live coding带你实践脚本调参,模型精度直提超过10%! BML技术解析 实战演练:模型开发与调参技巧分享 部署应用:服务器端部署流程演示 课前技术点铺垫: 全功能AI开发平台BML介绍 周期管理。 BML官网:https://ai.baidu.com/bml/ 扫码添加BML小助手,备注「调参」,加入交流群一起看直播。 参与课程拿礼品 直播课程后,我们将设置一次实践作业,在BML上使用脚本调参功能完成模型效果优化,提交项目ID、模型名称、版本信息、模型效果等信息。
下面是一个普通的 convolutional 网络结构,我们全文会在这个结构上进行调优: ? 这是初级的代码: ? 先来看一下它的训练结果: ? 可以看到 accuracy 大约在 10% 徘徊: 原始的 data 是有很多噪音的,因为它只是随机抽样 smooth 之后可以看到清晰的 trend 还可以看到 cross entropy 的趋势, 现在发现 model 基本训练的不错了 ---- step 4: 选择最优模型 接下来 tf 还可以进行调参 可以看不同版本的 model 在 训练不同的 variable 时哪个更好。 ---- 好了,上面基本把 TensorBoard 各板块上主要的功能简单介绍了一下,而且用了一个小例子,看如何借用各个板块的可视化结果来帮助我们调优模型: step 1: 查看 graph 结构 step 5: 用 embedding 进一步查看 error 出处 希望也可以帮到大家,据说后面 TensorFlow 会推出更炫的而且更专业的可视化功能,例如语音识别的,有了这种可视化的功能,最需要精力的调优环节也变得更有趣了
典型的取值范围是[3-10]。 2.4 max-leaf-nodes 直观解释就是:树上最大的节点或叶子数。该参数的作用和2.3类似,因此可以替代参数2.3,因为它们都用于避免决策树的过拟合。
Grid Search:一种调参手段;穷举搜索:在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。(为什么叫网格搜索? Simple Grid Search:简单的网格搜索 以2个参数的调优过程为例: from sklearn.datasets import load_iris from sklearn.svm import (因为测试集在调参过程中,送到了模型里,而我们的目的是将训练模型应用在unseen data上); 解决方法: 对训练集再进行一次划分,分成训练集和验证集,这样划分的结果就是:原始数据划分为3份,分别为 } Best score on train set:0.98 Grid Search 调参方法存在的共性弊端就是:耗时;参数越多,候选值越多,耗费时间越长! 总而言之,言而总之 Grid Search:一种调优方法,在参数列表中进行穷举搜索,对每种情况进行训练,找到最优的参数;由此可知,这种方法的主要缺点是 比较耗时!
比率取值大约为10¯³。如果取值过小,那么学习会变得非常慢;如果取值过大,那么学习将会非常不稳定甚至失败。权值初始化。关注权值在学习开始时的随机初始化。 例如RNN和传统模型(10)、自动调参人工一直盯着实验,毕竟太累。自动调参当前也有不少研究。下面介绍几种比较实用的办法:Gird Search. 这个是最常见的。 具体原理可以参考这个论文: Practical Bayesian Optimization of Machine Learning Algorithms ,这里同时推荐两个实现了贝叶斯调参的Python fmfn/BayesianOptimization, 比较复杂,支持并行调参。正负样本比例: 这个是非常忽视,但是在很多分类问题上,又非常重要的参数。 (11)、RNN和LSTM的调参如果正在训练RNN或者LSTM,要对梯度(记得梯度已除以批量大小)范数使用一个硬约束。像15或者5这样的约束在我个人的实验中工作得很好。
ml-tuning.html 这一章节主要讲述如何通过使用MLlib的工具来调试模型算法和pipeline,内置的交叉验证和其他工具允许用户优化模型和pipeline中的超参数; 目录: 模型选择,也就是调参 ; 交叉验证; 训练集、验证集划分; 模型选择(调参) 机器学习的一个重要工作就是模型选择,或者说根据给定任务使用数据来发现最优的模型和参数,也叫做调试,既可以针对单个模型进行调试,也可以针对整个pipeline 2个不同的模型,在实际工作中,通常会设置更多的参数、更多的参数取值以及更多的fold,换句话说,CrossValidator本身就是十分奢侈的,无论如何,与手工调试相比,它依然是一种更加合理和自动化的调参手段 1.0), (7, "was mapreduce", 0.0), (8, "e spark program", 1.0), (9, "a e c l", 0.0), (10 HashingTF(inputCol=tokenizer.getOutputCol(), outputCol="features") lr = LogisticRegression(maxIter=10