mlp 参数调优_自动化机器学习第一步:使用Hyperopt自动选择超参数

有时候在学习神经网络教程时,我们通常会看到有的实验似乎理所当然地就选定了某种神经网络架构以及特定的网络层数、激活函数、损失函数等等,却没有解释原因。因为解释起来有点难。是的,深度学习社区选择 ReLU(或更现代的选择 ELU 或 SELU)作为激活函数是「常态」,而且我们基本上也欣然接受,但我们通常并没有思考这是否是正确的。比如在网络的层数和优化器的学习率选择上,我们通常都遵循标准。近日,机器学习开发者兼饶舌歌手 Alex Honchar 在 Medium 上发文分享了自动化这些选择过程的方式。另外,本文涉及的相关代码也已在 GitHub 上公开。

超参数搜索

卷积神经网络训练的典型超参数的列表

在开始训练一个模型之前,每个机器学习案例都要选择大量参数;而在使用深度学习时,参数的数量还会指数式增长。在上面的图中,你可以看到在训练计算机视觉卷积神经网络时你要选择的典型参数。

但有一个可以自动化这个选择过程的方法!非常简单,当你要选择一些参数和它们的值时,你可以:启动网格搜索,尝试检查每种可能的参数组合,当有一种组合优化了你的标准时(比如损失函数达到最小值),就停止搜索。

当然,在大多数情况下,你可等不了那么久,所以随机搜索是个好选择。这种方法可以随机检查超参数空间,但速度更快而且大多时候也更好。

贝叶斯优化——我们为超参数分布设置一个先决条件,然后在观察不同实验的同时逐步更新它,这让我们可以更好地拟合超参数空间,从而更好地找到最小值。

在这篇文章中,我们将把最后一个选项看作是一个黑箱,并且重点关注实际实现和结果分析。

HFT 比特币预测

比特币价格的样本图

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

对于输入,我想使用 OHLCV 元组外加波动,并将这个数组展开以将其输入多层感知器(MLP)模型。o = openp[i:i+window]

h = highp[i:i+window]

l = lowp[i:i+window]

c = closep[i:i+window]

v = volumep[i:i+window]

volat = volatility[i:i+window]

x_i = np.column_stac

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中,多层感知机(Multilayer Perceptron,简称MLP)是一种常用的人工神经网络模型。参数调优是为了找到最佳的模型参数组合,以提高模型的性能和泛化能力。下面是一些常见的MLP参数调优方法和Python实现: 1. 网络结构调优: - 隐藏层的数量和大小:可以通过交叉验证或网格搜索来确定最佳的隐藏层数量和每个隐藏层的神经元数量。 - 激活函数的选择:常用的激活函数包括ReLU、Sigmoid和Tanh,可以尝试不同的激活函数来找到最佳的性能。 2. 学习率调优: - 初始学习率:可以通过尝试不同的初始学习率来找到最佳值。一般情况下,较小的学习率可以使模型更稳定,但训练速度较慢;较大的学习率可能导致模型不稳定。 - 学习率衰减:可以使用学习率衰减策略,如指数衰减或自适应学习率方法(如Adam优化器),来动态地调整学习率。 3. 正则化和dropout: - L1和L2正则化:通过添加L1或L2正则化项来控制模型的复杂度,防止过拟合。 - Dropout:随机地在训练过程中关闭一些神经元,以减少模型的过拟合风险。 4. 批量大小和迭代次数: - 批量大小:可以尝试不同的批量大小来平衡训练速度和模型性能。 - 迭代次数:可以通过早停法(early stopping)来确定合适的迭代次数,即在验证集上的性能不再提升时停止训练。 下面是一个使用scikit-learn库中MLPClassifier类进行参数调优的示例代码: ```python from sklearn.neural_network import MLPClassifier from sklearn.model_selection import GridSearchCV # 定义参数网格 param_grid = { 'hidden_layer_sizes': [(50,), (100,), (50, 50)], 'activation': ['relu', 'tanh', 'logistic'], 'learning_rate_init': [0.001, 0.01, 0.1], } # 创建MLP分类器 mlp = MLPClassifier() # 使用网格搜索进行参数调优 grid_search = GridSearchCV(mlp, param_grid, cv=5) grid_search.fit(X_train, y_train) # 输出最佳参数组合和模型性能 print("Best parameters: ", grid_search.best_params_) print("Best score: ", grid_search.best_score_) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值