为了评估机器学习算法的能力,必须给定其性能的衡量指标。
有些情况下,很难决定衡量指标是什么:
通常利用最小化训练误差来训练模型,但是真正关心的是测试误差。因此通过测试误差来评估模型的泛化能力。
模型对未知数据的预测能力称作模型的泛化能力,它是模型最重要的性质。
泛化误差可以反映模型的泛化能力:泛化误差越小,该模型越有效。
假设训练集和测试集共同的、潜在的样本分布称作数据生成分布,记作
统计理论表明:如果训练集和测试集中的样本都是独立同分布产生的,则有 模型的训练误差的期望等于模型的测试误差的期望 。
机器学习的“没有免费的午餐定理”表明:在所有可能的数据生成分布上,没有一个机器学习算法总是比其他的要好。
正则化是对学习算法做的一个修改,这种修改趋向于降低泛化误差(而不是降低训练误差)。
当使用机器学习算法时,决定机器学习算法效果的两个因素:降低训练误差、缩小训练误差和测试误差的差距。
这两个因素对应着机器学习中的两个主要挑战:欠拟合和过拟合。
过拟合overfitting
:选择的模型包含的参数过多,以至于该模型对于已知数据预测得很好,但是对于未知数据预测的很差,使得训练误差和测试误差之间的差距太大。
NP
难甚至更难的,而有效的学习算法必然是在多项式时间内运行完成。如果可以避免过拟合,这就意味着构造性的证明了P=NP
。欠拟合underfitting
:选择的模型包含的参数太少,以至于该模型对已知数据都预测的很差,使得训练误差较大。
欠拟合的原因一般是学习能力低下造成的。
通过调整模型的容量capacity
可以缓解欠拟合和过拟合。
模型的容量是指其拟合各种函数的能力。
通过选择不同的假设空间可以改变模型的容量。
模型的假设空间指的是:代表模型的函数集合。这也称作模型的表示容量representational capacity
。
由于额外的限制因素(比如优化算法的不完善),模型的有效容量effective capacity
一般会小于模型的表示容量。
通常在模型的假设空间中找出最佳的函数是非常困难的优化问题,实际应用中只是挑选一个使得训练误差足够低的函数即可。
统计学习理论提供了量化模型容量的方法,其中最出名的是VC
维理论:训练误差与泛化误差之间差异的上界随着模型容量增长而增长,随着训练样本增多而下降 。
虽然VC
维理论对于机器学习算法有很好的指导作用,但是它在深度学习很难应用。原因有二:
通常泛化误差是关于模型容量的 U
形函数。随着模型容量增大:
缓解过拟合的策略:
具体内容参考深度学习《正则化》章节。
正则化 :基于结构化风险最小化(SRM
)策略的实现,其中
在不同的问题中,正则化项可以有不同的形式:
点估计:对参数
假设
注意:点估计的定义并不要求
根据频率学派的观点:
偏差定义为:
无偏估计并不一定是最好的估计。
偏差的例子:
一组服从均值为
一组服从均值为
通常希望当数据集的大小
上述条件也称做一致性。它保证了估计偏差会随着样本数量的增加而减少。
渐近无偏不一定意味着一致性。
如:在正态分布产生的数据集中,可以用
估计量的方差记作
它们刻画的是:从潜在的数据分布中独立的获取样本集时,估计量的变化程度。
例:一组服从均值为
估计量的方差随着样本数量的增加而下降,这是所有估计量的共性。
例:均值估计
其中
实际应用中,
偏差和方差衡量的是估计量的两个不同误差来源:
通常希望的是:
假设:
在训练集为
不同的训练集训练得到不同的模型,因此模型与训练集
相关。
样本
观测误差是由人工标注失误引起的。
观察误差的期望为0:
观测误差
样本
定义:
损失函数为平方损失函数:
对未知样本
则未知样本
则有:
于是泛化误差可以分解为偏差、方差和噪声之和:
偏差-方差分解表明:泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的。
偏差-方差分解中,噪声也可以称作最优误差或者贝叶斯误差。如:在图像识别的问题中,人眼识别的错误率可以视作最优误差。
在工程实际中,通常会考察特征完全相同,但是标签不同
的那些样本的数量。这种样本越多,则代表必须犯的错误
越大。因此实际应用中可以将这个比例作为贝叶斯误差。
偏差、方差与模型容量有关。用MSE
衡量泛化误差时,增加容量会增加方差、降低偏差。
一般来说,偏差和方差是由冲突的,这称作偏差-方差窘境bias-variance dilemma
。
给定学习任务:
在训练不足时模型的拟合能力不够强,训练数据的扰动不足以使模型产生显著变化,此时偏差主导了泛化误差。
随着训练程度的加深模型的拟合能力逐渐增强,训练数据发生的扰动逐渐被模型学习到,方差逐渐主导了泛化误差。
在训练充分后模型的拟合能力非常强,训练数据发生的轻微扰动都会导致模型发生显著变化。
若训练数据自身的、非全局的特性被模型学到了,则将发生过拟合。
通常偏差方差反映了模型的过拟合与欠拟合。
高偏差对应于模型的欠拟合:模型过于简单,以至于未能很好的学习训练集,从而使得训练误差过高。
此时模型预测的方差较小,表示预测较稳定。但是模型预测的偏差会较大,表示预测不准确。
高方差对应于模型的过拟合:模型过于复杂,以至于将训练集的细节都学到,将训练集的一些细节当做普遍的规律,从而使得测试集误差与训练集误差相距甚远。
此时模型预测的偏差较小,表示预测较准确。但是模型预测的方差较大,表示预测较不稳定。
误差诊断:通过训练误差和测试误差来分析模型是否存在高方差、高偏差。
上述分析的前提是:训练集、测试集的数据来自于同一个分布,且最优误差较小。否则讨论更复杂。
高方差和高偏差是两种不同的情况。如果算法存在高偏差的问题,则准备更多训练数据其实没什么卵用。
所以首先要清楚:问题是高偏差还是高方差还是二者兼有。
如果模型存在高偏差,则通过以下策略可以缓解:
如果模型存在高方差,则通过以下策略可以缓解:
增加更多的训练数据。它通过更多的训练样本来对模型参数增加约束,会降低模型容量。
如果有更多的训练数据,则一定会降低方差。
使用正则化。它通过正则化项来对模型参数增加约束,也会降低模型容量。
有时候更多的训练数据难以获取,只能使用正则化策略。
通常优先解决高偏差的问题。这是最低标准,要反复尝试,直到训练误差降低到足够小。
然后试图降低方差。
总之就是不断重复尝试,直到找到一个低偏差、低方差的模型。
假设数据集
最大似然估计最大化数据集
考虑数据集的经验分布 KL
散度为:
由于
因此:最大似然估计就是最小化数据集的经验分布
最大似然估计可以扩展到估计条件概率。
假设数据集
如果样本是独立同分布的,则可以分解成:
最大似然估计有两个很好的性质:
在某些条件下,最大似然估计具有一致性。这意味着当训练样本数量趋向于无穷时,参数的最大似然估计依概率收敛到参数的真实值。
这些条件为:
最大似然估计具有很好的统计效率statistic efficiency
。即只需要较少的样本就能达到一个良好的泛化误差。
最大似然估计通常是机器学习中的首选估计准则。
当样本数量太少导致过拟合时,正则化技巧是最大似然的有偏估计版本。
在最大似然估计中,频率学派的观点是:真实参数
在贝叶斯估计中,贝叶斯学派认为:数据集是能够直接观测到的,因此不是随机的。而真实参数
对
在机器学习中,一般会选取一个相当宽泛的(熵比较高)的先验分布,如均匀分布。
假设观测到一组数据
贝叶斯估计与最大似然估计有两个重要区别:
贝叶斯估计预测下,一个样本的分布为:
而最大似然估计预测下,一个样本的分布为:
贝叶斯估计会使得概率密度函数向着先验概率分布的区域偏移。
当训练数据有限时,贝叶斯估计通常比最大似然估计泛化性能更好。
当训练样本数量很大时,贝叶斯估计往往比最大似然估计计算代价较高。
有时候希望获取参数 MAP
选择后验概率最大的点:
最大后验估计具有最大似然估计没有的优势:拥有先验知识带来的信息。该信息有助于减少估计量的方差,但是增加了偏差。
一些正则化方法可以被解释为最大后验估计,正则化项就是对应于
并非所有的正则化方法都对应为某个最大后验估计。
如:有些正则化项依赖于数据,则显然不是一个先验概率分布
最大后验估计估计MAP
提供了一个直观的方法去设计复杂的、可解释的正则化项。
更复杂的正则化项可以通过先验分布为混合高斯分布得到(而不仅仅是一个单独的高斯分布)。
模型泛化能力的评估:用测试集对模型进行评估。通常有下列方法:
hold-out
。K
折交叉验证法cross validation
。Leave-One-Out:LOO
。bootstrapping
。留出法:直接将数据切分为三个互斥的部分(也可以切分成两部分,此时训练集也是验证集),然后在训练集上训练模型,在验证集上选择模型,最后用测试集上的误差作为泛化误差的估计。
数据集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响。若训练集、验证集、测试集中类别比例差别很大,则误差估计将由于训练/验证/测试数据分布的差异而产生偏差。
如:在分类任务中至少要保持样本的类别比例相似。如果从采样的角度来看到数据集的划分过程,则保留类别比例的采样方式称作“分层采样“(strafified sampling
)。
即使进行了分层采样,仍然存在多种划分方式对数据集进行划分(比如排序后再划分、随机划分...)。这些不同的划分将导致不同的训练集/验证集/测试集。因此单次留出法得出的估计结果往往不够稳定可靠。
在使用留出法时,往往采用若干次随机划分、重复进行实验评估后,取平均值作为留出法的评估结果。
K
折交叉验证法:数据随机划分为K
个互不相交且大小相同的子集,利用 K-1
个子集数据训练模型,利用余下的一个子集测试模型(一共有
对 K
种组合依次重复进行,获取测试误差的均值,将这个均值作为泛化误差的估计。
与留出法相似,将数据集划分为 K
个子集同样存在多种划分方式。为了减少因为样本划分不同而引入的差别, K
折交叉验证通常需要随机使用不同划分重复p
次,这 p
次 K
折交叉验证的测试误差均值作为最终的泛化误差的估计。
留一法:假设数据集中存在 K
折交叉验证的一个特例。
优点:由于训练集与初始数据集相比仅仅少一个样本,因此留一法的训练数据最多。
缺点:在数据集比较大时,训练
在留出法和 K
折交叉验证法中,由于保留了一部分样本用于测试,因此实际训练模型使用的训练集比初始数据集小,这必然会引入一些因为训练样本规模不同而导致的估计偏差。
留一法受训练样本规模变化的影响较小,但是计算复杂度太高。
自助法是一个以自助采样法(bootstrap sampling
)为基础的比较好的解决方案。
自助采样法:给定包含
显然,
根据极限
将 out-of-bag estimate
。
自助法在数据集较小时很有用。
测试集用于评估模型的泛化误差。理论上测试集越大,则模型的泛化误差评估的越准确。
测试集中的样本一定不能是训练样本。如果将训练样本放入测试集中,则会低估泛化误差。
测试集 vs 验证集:
测试集通常用于对模型的预测能力进行评估,它提供了模型预测能力的无偏估计。
如果你不需要对模型预测能力的无偏估计,则不需要测试集。
验证集用于超参数的选择,它无法提供模型预测能力的有偏估计。
因为模型依赖于超参数,而超参数依赖于验证集。因此验证集参与了模型的构建,这意味着模型已经考虑了验证集的信息。
对于小批量数据,数据的拆分的常见比例为:
对于大批量数据,验证集和测试集占总数据的比例会更小。
对于百万级别的数据,其中1万条作为验证集、1万条作为测试集即可。
验证集的目的就是验证不同的超参数;测试集的目的就是比较不同的模型。
在k
折交叉验证中:先将所有数据拆分成 k
份,然后其中1
份作为测试集,其他k-1
份作为训练集。
这里并没有验证集来做超参数的选择。所有测试集的测试误差的均值作为模型的预测能力的一个估计。
使用k
折交叉的原因是:样本集太小。如果选择一部分数据来训练,则有两个问题:
k
折交叉让所有的数据参与训练,会使得这种偏离得到一定程度的修正。k
折交叉让所有数据参与训练,会一定程度上缓解过拟合。深度学习时代,经常会发生:训练集和验证集、测试集的数据分布不同。
如:训练集的数据可能是从网上下载的高清图片,测试集的数据可能是用户上传的、低像素的手机照片。
如果发生了数据不匹配问题,则可以想办法让训练集的分布更接近验证集。
一种做法是:收集更多的、分布接近验证集的数据作为训练集合。
另一种做法是:人工合成训练数据,使得它更接近验证集。
该策略有一个潜在问题:你可能只是模拟了全部数据空间中的一小部分。导致你的模型对这一小部分过拟合。
当训练集和验证集、测试集的数据分布不同时,有以下经验原则:
确保验证集和测试集的数据来自同一分布。
因为需要使用验证集来优化超参数,而优化的最终目标是希望模型在测试集上表现更好。
确保验证集和测试集能够反映未来得到的数据,或者最关注的数据。
确保数据被随机分配到验证集和测试集上。
当训练集和验证集、测试集的数据分布不同时,分析偏差和方差的方式有所不同。
如果训练集和验证集的分布一致,那么当训练误差和验证误差相差较大时,我们认为存在很大的方差问题。
如果训练集和验证集的分布不一致,那么当训练误差和验证误差相差较大时,有两种原因:
为了弄清楚原因,需要将训练集再随机划分为:训练-训练集
、训练-验证集
。这时候,训练-训练集
、训练-验证集
是同一分布的。
训练-训练集
和 训练-验证集
上的误差的差距代表了模型的方差。训练-验证集
和 验证集上的误差的差距代表了数据不匹配问题的程度。给定训练集
对于样本
理论上性能度量都是在测试集上进行。
测试准确率:测试数据集上的准确率(其中
准确率衡量的是有多少比例的样本被正确判别。
测试错误率:测试数据集上的错误率:
错误率衡量的是有多少比例的样本被判别错误,它也是损失函数为 0-1 损失时的测试误差。
对于二分类问题,通常将关注的类作为正类,其他类作为负类。令:
TP
:分类器将正类预测为正类的数量(True Positive
) 。即:真正类
的数量。FN
:分类器将正类预测为负类的数量(False Negative
) 。即:假负类
的数量。FP
:分类器将负类预测为正类的数量(False Positive
)。即:假正类
的数量。TN
:分类器将负类预测为负类的数量(True Negative
) 。即:真负类
的数量。分类结果的混淆矩阵(confusion matrix
)定义为:
预测:正类 | 预测:反类 | |
---|---|---|
真实:正类 | ||
真实:反类 |
查准率(precision
):
它刻画了所有预测为正类的结果中,真正的正类的比例。
查全率(recall
):
它刻画了真正的正类中,被分类器找出来的比例。
不同的问题中,有的侧重差准率,有的侧重差全率。
查准率和查全率是一对矛盾的度量。一般来说查准率高时查全率往往偏低,而查全率高时查准率往往偏低。
FN=0
。此时查准率就偏低(准确性降低)。FP=0
。此时查全率就偏低(只挑出了一个正例)。对二类分类问题,可以根据分类器的预测结果对样本进行排序:排在最前面的是分类器认为“最可能”是正类的样本,排在最后面的是分类器认为“最不可能”是正类的样本。
假设排序后的样本集合为
在第
此时计算得到的查准率记做
以查准率为纵轴、查全率为横轴作图,就得到查准率-查全率曲线,简称 P-R
曲线。该曲线由点
P-R
曲线从左上角(0,1)
到右下角(1,0)
。
开始时第一个样本(最可能为正例的)预测为正例,其它样本都预测为负类。此时:
结束时所有的样本都预测为正类。此时:
P-R
曲线直观显示出分类器在样本总体上的查全率、查准率。因此可以通过两个分类器在同一个测试集上的P-R
曲线来比较它们的预测能力:
如果分类器B
的P-R
曲线被分类器A
的曲线完全包住,则可断言:A
的性能好于B
。
如果分类器A
的P-R
曲线与分类器B
的曲线发生了交叉,则难以一般性的断言两者的优劣,只能在具体的查准率和查全率下进行比较。
P-R
曲线下面积大小,但这个值通常不容易计算。Break-Even Point:BEP
是P-R
曲线上查准率等于查全率的点,可以判定:平衡点较远的P-R
曲线较好。
定义真正例率(True Positive Rate
) 为:
它刻画了真正的正类中,模型预测为正类的概率。它也就等于正类的查全率。
定义假正例率(False Positive Rate
) 为:
它刻画了真正的负类中,模型预测为正类的概率。它就等于 1 减去负类的查全率。
对二类分类问题,可以根据分类器的预测结果对样本进行排序:排在最前面的是分类器认为“最可能”是正类的样本,排在最后面的是分类器认为“最不可能”是正类的样本。
假设排序后的样本集合为
在第
此时计算得到的真正例率记做
以真正例率为纵轴、假正例率为横轴作图,就得到ROC
曲线。该曲线由点
ROC
曲线从左下角(0,0)
到右上角(1,1)
。
开始时第一个样本(最可能为正例的)预测为正例,其它样本都预测为负类。此时:
结束时所有的样本都预测为正类。此时:
在ROC
曲线中:
(0,1)
对应于理想模型:没有预测错误,FPR
恒等于0,TPR
恒等于1。ROC
曲线越靠近点(0,1)
越好。可以通过两个分类器在同一个测试集上的ROC
曲线来比较它们的预测能力:
如果分类器A
的ROC
曲线被分类器B
的曲线完全包住,则可断言:B
的性能好于A
。
如果分类器A
的ROC
曲线与分类器B
的曲线发生了交叉,则难以一般性的断言两者的优劣。
此时一个合理的判定依据是比较ROC
曲线下面积大小,这个面积称作AUC:Area Under ROC Curve
。
P-R
曲线和ROC
曲线刻画的都是阈值的选择对于分类度量指标的影响。
通常一个分类器对样本预测的结果是一个概率结果,比如正类概率 0.7。但是样本是不是正类还需要与阈值比较。
这个阈值会影响了分类器的分类结果,比如:是阈值 0.5 还是阈值 0.9。
P-R
曲线和ROC
曲线上的每一个点都对应了一个阈值的选择,该点就是在该阈值下的(查准率,查全率)
/(真正例率,假正例率)
。
沿着横轴的方向对应着阈值的下降。
AUC
是ROC
曲线的面积,其物理意义为:从所有正样本中随机挑选一个样本,模型将其预测为正样本的概率为 AUC
。
如果对完全随机的对样本进行分类,则 AUC=0.5
。
AUC
在样本不平衡的条件下依然适用。如:在反欺诈场景下,假设正常用户为正类(设占比 99.9%),欺诈用户为负类(设占比 0.1%)。
如果使用准确率评估,则将所有用户预测为正类即可获得 99.9%的准确率。很明显这并不是一个很好的预测结果,因为欺诈用户全部未能找出。
如果使用AUC
评估,则此时FPR=1,TPR=1
,对应的 AUC=0.5
。因此AUC
成功的指出了这并不是一个很好的预测结果。
AUC
反应的是模型对于样本的排序能力(根据样本预测为正类的概率来排序)。如:AUC=0.8
表示:给定一个正样本和一个负样本,在 80%
的情况下,模型对正样本预测为正类的概率大于对负样本预测为正类的概率。
AUC
对于均匀采样不敏感。如:上述反欺诈场景中,假设对正常用户进行均匀的降采样。任意给定一个负样本 AUC
保持不变。
但是如果是非均匀的降采样,则预测为正类的概率大于 AUC
发生变化。
正负样本之间的预测为正类概率之间的差距越大,则AUC
越高。因为这表明正负样本之间排序的把握越大,区分度越高。
如:在电商场景中,点击率模型的AUC
要低于购买转化模型的AUC
。因为点击行为的成本低于购买行为的成本,所以点击率模型中正负样本的差别要小于购买转化模型中正负样本的差别。
实际应用过程中,不同类型的错误所造成的后果可能有所不同。如:将健康人诊断为患者,与将患者诊断为健康人,其代价就不同。
为权衡不同类型错误所造成的不同损失,可以为错误赋予非均等代价(unequal cost
)。
对于二类分类问题,可以设定一个“代价矩阵”(cost matrix
),其中 i
类样本预测为第 j
类样本的代价。通常
预测:第0类 | 预测:第1类 | |
---|---|---|
真实:第0类 | 0 | |
真实:第1类 | 0 |
前面讨论的性能度量都隐式的假设均等代价,即
在非均等代价下,希望找到的不再是简单地最小化错误率的模型,而是希望找到最小化总体代价total cost
的模型。
在非均等代价下,ROC
曲线不能直接反映出分类器的期望总体代价,此时需要使用代价曲线cost curve
。
代价曲线的横轴就是正例概率代价。
其中
代价曲线的纵轴为:
其中:
FPR
为假正例率
它刻画了模型将真实的负样本预测为正类的概率。
FNR
为假负例率
它刻画了模型将真实的正样本预测为负类的概率。
有时候可能得到了多个二分类混淆矩阵。如:在多个数据集上进行训练/测试。
此时希望在多个二分类混淆矩阵上综合考察查准率和查全率。
假设有
宏查准率、宏查全率:先在各个混淆矩阵上分别计算查准率和查全率,记作
这样得到的是宏查准率(macro-P
),宏查全率(macro-F
),宏F1
(macro-F1
) :
微查准率、微查全率:先将个混淆矩阵对应元素进行平均,得到 micro-P
),微查全率(micro-F
),微F1
(micro-F1
):
均方误差mean square error:MSE
:
均方根误差root mean squared error:RMSE
:
均方根对数误差root mean squared logarithmic error:RMSLE
:
为使得log
有意义,也可以使用:
优势:
当真实值的分布范围比较广时(如:年收入可以从 0 到非常大的数),如果使用MAE、MSE、RMSE
等误差,这将使得模型更关注于那些真实标签值较大的样本。
而RMSLE
关注的是预测误差的比例,使得真实标签值较小的样本也同等重要。
当数据中存在标签较大的异常值时,RMSLE
能够降低这些异常值的影响。
平均绝对误差mean absolute error:MAE
:
大多数学习算法都有些超参数需要设定。超参数配置不同,学得的模型性能往往有显著差别,这就是参数调节(parameter tuning
):对每种超参数配置都训练出模型,然后把对应最好模型的超参数作为结果。
由于很多超参数是在实数范围内取值,因此现实中常用做法是对每个超参数选定一个范围和变化步长。如在[0,1)
范围内以 0.2
为步长。
这样选出的超参数可能不是最佳的,但是这是在计算开销和性能之间取折中的结果。
当模型选择完成后,学习算法和超参数配置已经选定,此时应该用数据集
这个模型在训练过程中使用了
超参数搜索有三种常见的策略:
手动选择超参数需要了解超参数做了些什么,以及机器学习模型如何才能取得良好的泛化。
手动搜索超参数的任务是:在给定运行时间和内存预算范围的条件下,最小化泛化误差。
手动调整超参数时不要忘记最终目标:提升测试集性能。
加入正则化只是实现这个目标的一种方法。
如果训练误差很低,也可以通过收集更多的训练数据来减少泛化误差。
如果训练误差太大,则收集更多的训练数据就没有意义。
实践中的一种暴力方法是:不断提高模型容量和训练集的大小。
这种方法增加了计算代价,只有在拥有充足的计算资源时才可行
网格搜索的做法是:
如何确定搜索集合的范围?
通常重复进行网格搜索时,效果会更好。假设在集合 {-1,0,1}
上网格搜索超参数
{1,2,3}
上搜索。{-0.1,0,0.1}
上搜索。网格搜索的一个明显问题时:计算代价随着超参数数量呈指数级增长。
如果有
随机搜索是一种可以替代网格搜索的方法,它编程简单、使用方便、能更快收敛到超参数的良好取值。
随机搜索的优点:
与网格搜索一样,通常会基于前一次运行结果来重复运行下一个版本的随机搜索。
随机搜索比网格搜索更快的找到良好超参数的原因是:没有浪费的实验。
在网格搜索中,两次实验之间只会改变一个超参数 (假设为
如果这个超参数
在随机搜索中,两次实验之间,所有的超参数值都不会相等,因为每个超参数的值都是从它们的分布函数中随机采样而来。因此不大可能会出现两个重复的实验。
如果
通常先对超参数进行粗调,然后在粗调中表现良好的超参数区域进行精调。
超参数随机搜索,并不意味着是在有效范围内随机均匀取值。需要选择合适的缩放来进行随机选取。
对于学习率,假设其取值范围为0.000001~1
。
如果进行均匀取值,取10个,那么有 90% 的随机值都位于区间 [0.1,1]
。则[0.000001,0.1]
之间没有足够的探索。这种做法明显不合理。
此时需要使用对数缩放,在对数轴上均匀随机取点。
对于指数加权移动平均的超参数 0.9~0.9999
。
由于
0.9~0.9005
之间取值时, 0.9990~0.9995
之间取值时, 如果选择了错误的缩放,如果取值的总量足够大,也可以得到不错的结果。
尤其当配合了粗调 -> 精调
策略时,最终还是会聚焦到合适的超参数范围上。
通常情况下,建议至少每隔几个月重新评估或者修改超参数。因为随着时间的变化,真实场景的数据会逐渐发生改变:
由于这些变化,原来设定的超参数可能不再适用。
有两种超参数调整策略:
如果数据足够大且没有足够的计算资源,此时只能一次完成一个试验。
则可以每天观察模型的表现,实时的、动态的调整超参数。
如果数据不大,有足够的计算资源可以同一时间完成大量的试验,则可以设置多组超参数设定,然后选择其中表现最好的那个。
传统机器学习算法的两个困难:
维数灾难:当数据的维数很高时,很多机器学习问题变得相当困难。因为许多传统机器学习算法简单地假设:一个新样本的输出应该大致与最接近的训练样本的输出相同 。
选择性偏好:某些算法偏好于选择某类函数。
最广泛的隐式偏好是:要学习的函数是平滑的或者局部不变性的。
这个先验知识表明:要学习的函数不会在一个小区域内发生较大的变化。很多简单算法完全依赖此先验知识来达到良好的泛化。