终于把机器学习中的超参数调优搞懂了!!!

大家好,我是小寒今天给大家分享机器学习中的一个关键知识点,超参数调优超参数调优是机器学习中调整模型超参数以优化模型性能的过程。 超参数是用户在模型训练前需要手动设置的参数,与训练过程中通过算法自动调整的参数(如神经网络中的权重)不同。 这些超参数直接控制着训练过程和模型的行为,例如学习率、隐藏层的数量、隐藏层的节点数等。

大家好,我是小寒

今天给大家分享机器学习中的一个关键知识点,超参数调优

超参数调优是机器学习中调整模型超参数以优化模型性能的过程。

超参数是用户在模型训练前需要手动设置的参数,与训练过程中通过算法自动调整的参数(如神经网络中的权重)不同。这些超参数直接控制着训练过程和模型的行为,例如学习率、隐藏层的数量、隐藏层的节点数等。超参数的选择对模型的表现至关重要。

超参数调优的目的是找到一组最佳的超参数,使模型在验证集上表现良好,能够实现良好的泛化能力(即在新数据上具有较好的性能),同时避免过拟合或欠拟合。

图片图片

超参数调优的重要性

  1. 性能优化合适的超参数可以显著提高模型的准确性、召回率等性能指标。
  2. 控制过拟合和欠拟合超参数调节可以控制模型复杂度,降低过拟合和欠拟合的风险。
  3. 训练效率调整超参数(如学习率、批量大小)可以提高训练速度并稳定收敛。

常见超参数调优方法

网格搜索

网格搜索是一种系统地搜索超参数空间的方法,它通过穷举搜索遍历所有可能的超参数组合。

对于每组超参数,模型在训练集上训练并在验证集上评估性能,从而找到最佳组合。

图片图片

步骤:

  1. 定义超参数及其可能取值范围(通常是离散的值)。
  2. 生成所有可能的超参数组合。
  3. 逐一训练模型并在验证集上进行评估。
  4. 选择使模型性能最优的超参数组合。

优点:

  • 简单易实现。
  • 对于搜索空间较小的问题能找到全局最优解。

缺点:

  • 计算复杂度高,随着超参数的维度和可能取值数量增加,搜索空间呈指数级增长。
  • 低效:如果某些超参数的作用较小或对模型性能影响不大,依然会浪费大量计算资源。

案例:

假设有一个分类模型,其超参数有:

  • learning_rate: [0.001, 0.01, 0.1]
  • max_depth: [3, 5, 7]

网格搜索将会尝试以下组合:

复制
(0.001, 3), (0.001, 5), (0.001, 7), 
(0.01, 3), (0.01, 5), (0.01, 7),
(0.1, 3), (0.1, 5), (0.1, 7)

一共 3 × 3 = 9 次训练。

随机搜索

随机搜索是一种随机采样超参数空间的方法,它从所有可能的超参数组合中随机选择一定数量的组合进行尝试,而不是穷尽所有可能性。

图片图片

步骤:

  1. 定义超参数的分布范围。
  2. 随机采样一定数量的超参数组合。
  3. 逐一训练模型并在验证集上进行评估。
  4. 选择使模型性能最优的超参数组合。

优点:

  • 计算效率高,通过减少搜索空间中的点,显著降低计算成本。
  • 效果较好,相比网格搜索,随机搜索在高维空间中更有可能找到接近最优的解。

缺点:

  • 没有系统性,不保证找到全局最优解。
  • 需要事先定义采样数量。

案例:

假设超参数空间与上述网格搜索相同,但随机搜索仅采样 5 组超参数组合,例如:

复制
(0.001, 7), (0.01, 5), (0.1, 3), (0.001, 5), (0.01, 3)

相比网格搜索的 9 次训练,这里仅训练 5 次。

示例代码

以下是使用 Python 实现网格搜索和随机搜索的示例代码。

复制
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

model = RandomForestClassifier(random_state=42)

param_grid = {
    'n_estimators': [10, 50, 100],
    'max_depth': [5, 10, 15],
    'min_samples_split': [2, 5, 10]
}

# 网格搜索
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3, scoring='accuracy')
grid_search.fit(X, y)
print("Best parameters (Grid Search):", grid_search.best_params_)

from scipy.stats import randint
param_dist = {
    'n_estimators': randint(10, 200),
    'max_depth': randint(5, 50),
    'min_samples_split': randint(2, 20)
}

# 随机搜索
random_search = RandomizedSearchCV(estimator=model, param_distributinotallow=param_dist, n_iter=10, cv=3, scoring='accuracy', random_state=42)
random_search.fit(X, y)
print("Best parameters (Random Search):", random_search.best_params_)

相关资讯

大语言模型的规模化联邦全参数调优

光明实验室基础智能研究团队携手新加坡国立大学最新突破——大语言模型的规模化联邦全参数调优,为大语言模型(LLMs)的联邦学习开辟了全新篇章!其中共一第一作者是光明实验室基础智能研究团队负责人,共一第二作者是新加坡国立大学博士生,均师从新加坡国立大学的Bryan Low教授。论文链接:, :(LLMs)已在众多实际应用中变得不可或缺。然而,在规模化环境下对这些模型进行微调,尤其是在数据隐私和通信效率至关重要的联邦设置中,仍面临着重大挑战。现有方法通常采用参数高效微调(PEFT)来减轻通信开销,但这通常以牺牲模型性能为

干货速递,百度BML自动超参搜索技术原理揭秘与实战攻略!

在人工智能领域,算法工程师在训练神经网络模型的过程中,完成网络构建和准备好训练数据后,往往需要对模型进行各种参数优化,以获得更好的模型效果。但调参其实并不简单,背后往往是通宵达旦的参数调试与效果验证,并需要做大量的实验,不仅耗时也耗费大量算力。这个时候,往往想尝试自动超参搜索,但又开始担心算力要求所带来的额外训练成本。莫慌!百度全功能AI开发平台BML带着免费算力额度与自动超参搜索能力来了!先来介绍百度最近全新升级的BML,何方神圣?全功能AI开发平台BML(Baidu Machine Learning) ,是为企

Creator 面对面 | 北大河图在稀疏大模型训练架构上的几点探索

河图是北京大学数据与智能实验室自研的一款分布式深度学习框架,兼顾创新性和可用性,这也是国内首个由高校自主研发的分布式深度学习系统。底层的算子实现到上层的模型设计完全是由河图团队自主实现。