参数、超参数以及调参问题整理总结(待更新补充)
一、参数、超参数的基本概念
机器学习中的模型参数和模型超参数在作用、来源等方面都有所不同,而模型超参数常被称为模型参数,这样,很容易对初学者造成混淆。本文给出了模型参数和模型超参数的定义,并进行了对比,指出了二者本质上的区别:模型参数是模型内部的配置变量,可以用数据估计模型参数的值;模型超参数是模型外部的配置,必须手动设置参数的值。
1.首先,我们来看一下“参数”是什么?
参数作为模型从历史训练数据中学到的一部分,是机器学习算法的关键 。
统计学中的“参数”:
在统计学中,你可以假设一个变量的分布,比如高斯分布。高斯分布的两个参数分别是平均值(μ)和标准差(sigma)。这在机器学习中是有效的,其中这些参数可以用数据估计得到并用作预测模型的一部分。
编程中的“参数”:
编程中可以将参数传递给函数。在这种情况下,参数是一个函数参数,可以有一个值范围。在机器学习中,您正在使用的具体模型就是函数,需要参数才能对新数据进行预测。
“参数”和“模型”有什么关系?
根据经典的机器学习文献,可以将模型看作假设,而参数是根据特定的数据集对假设进行的具体调整。
模型是否具有固定或可变数量的参数,决定了模型是“参数”模型或“非参”模型。
2.什么是模型参数?
简单来说,模型参数就是模型内部的配置变量,可以用数据估计它的值。
具体来讲,模型参数有以下特征:
- 进行模型预测时需要模型参数。
- 模型参数值可以定义模型功能。
- 模型参数用数据估计或数据学习得到。
- 模型参数一般不由实践者手动设置。
- 模型参数通常作为学习模型的一部分保存。
通常使用优化算法估
计模型参数,优化算法是对参数的可能值进行的一种有效搜索。
模型参数的一些例子包括:
- 人造神经网络中的权重。
- 支持向量机中的支持向量。
- 线性回归或逻辑回归中的系数。
3.什么是模型超参数?
模型超参数是模型外部的配置,其值不能从数据估计得到。
具体特征有:
- 模型超参数常应用于估计模型参数的过程中。
- 模型超参数通常由实践者直接指定。
- 模型超参数通常可以使用启发式方法来设置。
- 模型超参数通常根据给定的预测建模问题而调整。
怎样得到它的最优值: 对于给定的问题,我们无法知道模型超参数的最优值。但我们可以使用经验法则来探寻其最优值,或复制用于其他问题的值,也可以通过反复试验的方法。
模型超参数的一些例子包括:
- 训练神经网络的学习速率。
- 支持向量机的C和sigma超参数。
- k邻域中的k。
3.“模型参数”和“模型超参数”
二者的联系:
当针对特定问题调整机器学习算法时,例如在使用网格搜索或随机搜索时,你将调整模型或命令的超参数,以发现一个可以使模型预测最熟练的模型参数。许多模型中重要的参数无法直接从数据中估计得到。例如,在K近邻分类模型中…这种类型的模型参数被称为调整参数,因为没有可用的分析公式来为其计算一个合适的值。
- 第64-65页,应用预测建模,2013
区分:
模型超参数通常被称为模型参数,这种叫法很容易让人产生误解。解决这个问题的一个很好的经验法则如下:如果你必须手动指定一个“模型参数”,那么它可能就是一个模型超参数。
进一步阅读
超参数-维基百科 - https://en.wikipedia.org/wiki/Hyperparameter
什么是机器学习中的超参数?Quora - https://www.quora.com/What-are-hyperparameters-in-machine-learning
模型超参数和模型参数有什么区别?StackExchange- https://datascience.stackexchange.com/qu
什么是超参数?Reddit -https://www.reddit.com/r/MachineLearning/comments/40tfc4/what_is_considered_a_hyperparameter/
4.总结
读完这篇文章可以了解模型参数和模型超参数的明确定义和区别。
总而言之,模型参数是从数据中自动估计的,而模型超参数是手动设置的,并用于估计模型参数的过程。
参考文献:<>
二、调参问题
在深度神经网络中,超参数的调整是一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数,下面将分别介绍并总结了不同超参数的调整规则。
(1)学习率
学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常lr取值为[0.01,0.001,0.0001]
(2)批次大小batch_size
批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。bath_size通常取值为[16,32,64,128]
(3)优化器optimizer
目前Adam是快速收敛且常被使用的优化器。随机梯度下降(SGD)虽然收敛偏慢,但是加入动量Momentum可加快收敛,同时带动量的随机梯度下降算法有更好的最优解,即模型收敛后会有更高的准确性。通常若追求速度则用Adam更多。
(4)迭代次数
迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。
(5)激活函数
在神经网络中,激活函数不是真的去激活什么,而是用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。比如有些问题是线性可分的,而现实场景中更多问题不是线性可分的,若不使用激活函数则难以拟合非线性问题,测试时会有低准确率。所以激活函数主要是非线性的,如sigmoid、tanh、relu。sigmoid函数通常用于二分类,但要防止梯度消失,故适合浅层神经网络且需要配备较小的初始化权重,tanh函数具有中心对称性,适合于有对称性的二分类。在深度学习中,relu是使用最多的激活函数,简单又避免了梯度消失。
