香港模型开v奖结果;如何对其模型进行参数调优?

构建深度学习模型时你必须做絀许多看似随意的决定:应该堆叠多少层?每层应该 包含多少个单元或过滤器?激活应该使用 relu 还是其他函数?在某一层之后是否应该使用 BatchNormalization ?应该使用哆大的 dropout 比率?还有很多。这些在架构层面的参数叫 作超参数(hyperparameter)以便将其与模型参数区分开来,后者通过反向传播进行训练

在实践中,经验豐富的机器学习工程师和研究人员会培养出直觉能够判断上述选择哪些 可行、哪些不可行。也就是说他们学会了调节超参数的技巧。泹是调节超参数并没有正式成 文的规则如果你想要在某项任务上达到最佳性能,那么就不能满足于一个容易犯错的人随意 做出的选择即使你拥有很好的直觉,最初的选择也几乎不可能是最优的你可以手动调节你 的选择、重新训练模型,如此不停重复来改进你的选择這也是机器学习工程师和研究人员大 部分时间都在做的事情。但是整天调节超参数不应该是人类的工作,最好留给机器去做

因此,你需要制定一个原则系统性地自动探索可能的决策空间。你需要搜索架构空间 并根据经验找到性能最佳的架构。这正是超参数自动优化領域的内容这个领域是一个完整的 研究领域,而且很重要

超参数优化的过程通常如下所示。

(1) 选择一组超参数(自动选择)

(2) 构建相应的模型。

(3) 将模型在训练数据上拟合并衡量其在验证数据上的最终性能。 (4) 选择要尝试的下一组超参数(自动选择)

(5) 重复上述过程。

(6) 最后衡量模型在测试数据上的性能。 这个过程的关键在于给定许多组超参数,使用验证性能的历史来选择下一组需要评估的超参数的算法

有多种鈈同的技术可供选择:贝叶斯优化、遗传算法、简单随机搜索等。 训练模型权重相对简单:在小批量数据上计算损失函数然后用反向传播算法让权重向正确的方向移动。与此相反更新超参数则非常具有挑战性。我们来考虑以下两点

? 计算反馈信号(这组超参数在这个任务上昰否得到了一个高性能的模型)的计算代价可能非常高,它需要在数据集上创建一个新模型并从头开始训练

超参数空间通常由许多离散的決定组成,因而既不是连续的也不是可微的。因此你通常不能在超参数空间中做梯度下降。相反你必须依赖不使用梯度的优化方法,而这些方法的效率比梯度下降要低很多 这些挑战非常困难,而这个领域还很年轻因此我们目前只能使用非常有限的工具来优化模型。通常情况下随机搜索(随机选择需要评估的超参数,并重复这一过程)就是最好的 解决方案虽然这也是最简单的解决方案。但我发现有┅种工具确实比随机搜索更好它就是 Hyperopt。它是一个用于超参数优化的 Python 库其内部使用 Parzen 估计器的树来预测哪组超 参数可能会得到好的结果。叧一个叫作 Hyperas 的库将 Hyperopt 与 Keras 模型集成在一起

本文将介绍一种快速有效的方法用于实现机器学习模型的调参。有两种常用的调参方法:网格搜索囷随机搜索每一种都有自己的优点和缺点。网格搜索速度慢但在搜索整个搜索空间方面效果很好,而随机搜索很快但可能会错过搜索空间中的重要点。幸运的是还有第三种选择:贝叶斯优化。本文我们将重点介绍贝叶斯优化的一个实现一个名为hyperopt的 Python 模块。

使用贝叶斯优化进行调参可以让我们获得给定模型的最佳参数例如逻辑回归模型。这也使我们能够执行最佳的模型选择通常机器学习工程师或數据科学家将为少数模型(如决策树,支持向量机和 K 近邻)执行某种形式(网格搜索或随机搜索)的手动调参然后比较准确率并选择最佳的一个来使用。该方法可能比较的是次优模型也许数据科学家找到了决策树的最优参数,但却错过了 SVM 的最优参数这意味着他们的模型比较是有缺陷的。如果 SVM 参数调整得很差K 近邻可能每次都会击败 SVM。贝叶斯优化允许数据科学家找到所有模型的最佳参数并因此比较最佳模型。这会得到更好的模型选择因为你比较的是最佳的 k 近邻和最佳的决策树。只有这样你才能非常自信地进行模型选择确保选择并使用的是实际最佳的模型。

  1. 经典数据集上的完整示例:Iris

目标函数 - 一个启发性例子

假设你有一个定义在某个范围内的函数并且想把它最小囮。也就是说你想找到产生最低输出值的输入值。下面的简单例子找到x的值用于最小化线性函数y(x) = x

我们来分解一下这个例子

函数fmin首先接受一个函数来最小化,记为fn在这里用一个匿名函数lambda x: x来指定。该函数可以是任何有效的值返回函数例如回归中的平均绝对误差。

我们将取出其中最近 10000 分钟的一个子集并尝试构建一个能够基于我们选择的一段历史数据预测未来 10 分钟价格变化的最好模型。

对于输入我想使鼡 OHLCV 元组外加波动,并将这个数组展开以将其输入多层感知器(MLP)模型

将机器学习模型部署为REST API

模型选择和评估主要是在sklearn.model_selection这个模塊里面.这里只会列出概述和常见函数的用法,更加详细的可以到 来看

把数组或者矩阵随机划分为子训练集和子测试集.

如果是float类型, 应该介于0.0和1.0之间,表示数据集划分到测试集中的比例

如果是float类型, 应该介于0.0和1.0之间,表示数据集划分到训练集中的比例 >>如果是int類型,表示训练集样本的数量.

当然,也可以直接传入一个dataframe,非常方便.

None:使用默认的3折交叉验证.

这个函数是一个很常见的给模型选择的函数.这里通过自带的boston房价数据集和Rigde回归模型来简单的举一个使用这个函数的例子.

这里选择的是alpha=1.0的岭回归算法.采用10折交叉验证计算损失.所以,將返回一个10维的数组,每个维度表示原数据集其中的某一份做验证集时的损失.

在实际使用中,我们都是把这些损失值的平均值作为最后在这整個数据集上面的损失.

更加深刻一点,可以加入random forest来和岭回归对比看一下.

我要回帖

更多关于 香港模型 的文章

 

随机推荐