参数与超参数
模型参数是模型内部的配置变量,可以用数据估计模型参数的值;模型超参数是模型外部的配置,必须手动设置参数的值。
具体来讲,模型参数有以下特征:
进行模型预测时需要模型参数。
模型参数值可以定义模型功能。
模型参数用数据估计或数据学习得到。
模型参数一般不由实践者手动设置。
模型参数通常作为学习模型的一部分保存。
通常使用优化算法估计模型参数,优化算法是对参数的可能值进行的一种有效搜索。
模型参数的一些例子包括:
人造神经网络中的权重。
支持向量机中的支持向量。
线性回归或逻辑回归中的系数。
超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数。它们跟训练过程中学习的参数(权重)是不一样的,超参数通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通枚举(叫做网格搜索)。所以说,当一个参数设置为超参数时候,也就意味着它不需要程序学习过程中对于这个参数进行自我优化。
具体特征有:
模型超参数常应用于估计模型参数的过程中。
模型超参数通常由实践者直接指定。
模型超参数通常可以使用启发式方法来设置。
模型超参数通常根据给定的预测建模问题而调整。
怎样得到它的最优值: 对于给定的问题,我们无法知道模型超参数的最优值。但我们可以使用经验法则来探寻其最优值,或复制用于其他问题的值,也可以通过反复试验的方法。
模型超参数的一些例子包括:
训练神经网络的学习速率。
支持向量机的C和sigma超参数。
k邻域中的k。
如果在训练集上学习,那么超参数总是趋于最大容量而导致过拟合。所以为了平衡控制超参数,我们会设定一个算法不可能观测到的样本,称之为验证集。用于挑选超参数的集合称之为验证集。所以在整个训练样本中,八成是训练数据,两成用于验证集。通常来说,验证集的误差会小于训练集的误差。
当数据被分为训练集和固定的测试集之后,测试集的误差过小也是一个问题。因为这意味着在大尺度上的平均测试误差有更高的统计不确定性,继而很难判断不同算法之间在特定任务上的优劣性。所以我们会做一个事情叫做交叉验证。从字面意思上理解,这个验证是通过基于原始数据上随机采样得出的不同数据集来进行重复训练与测试。当然你可能觉得这样有什么效果吗?当然是有效果的,想想自己,当自己在高中时期老师让读完数学课本,然后拿着数学课本上的题来考的时候都会有人不会做,特别是高三总复习那段时期,随机组合的不同板块的测试都能让你紧张。有的人怎么考都可以,这就是优秀的算法A,有的人单独学习时候可以,综合起来考试就有点懵,这就是一般算法B,有的人说是看了书,但是一到考试就懵,这就是不好的算法C。这里最常见的就是k-折交叉验证过程,就是说把整个数据分为k个不重合的子集,测试误差就可以预估为k次计算之后的平均误差。那么第i次测试的时候,数据的第i个子集就用于测试集,其余数据用于训练集。这样的操作带来的好处就是每次都会采用不同的训练集和测试集,保证数据的充分利用。
上一篇: java设置图像dpi