-->

机器学习40讲_10_09_实验设计

你好,我是王天一。

今天我和你分享的主题是机器学习中的实验设计,和其他的科学学科一样,机器学习也会借助于实验来获取关于目标的限定。

宏观来看呢,实验的设计与分析正在逐渐的脱离具体问题的限定,有着成为一门独立学科。

这样的趋势不管是物理学也好,还是经济学也罢。

对于实验的处理呢都存在着一些共性的准则。

在这篇文章当中,我就和你简单的谈一谈机器学习中实验的设计,还有分析存在的一些原则性的问题。

在讨论实验设计之前呢,先得知道实验设计到底是个怎么回事。

实验设计也叫做设计实验,指的是在实验之前制定详细的计划,确定实验目标,并且选择待研究的这个过程因子。

精心设计的这个实验设计,可以在在给定资源的条件下,让实验所获得的信息量最大化,或者说让实验的结果更加逼近真实的结果。

实验设计呢通常需要人为的改变一个或者多个过程的因子来观察这种变化。

对于一个或者多个因变量的影响,它的目的就是分析获得的数据以产生有效并且客观的结论。

在现有的关于机器学习的文献中啊,对于设计实验部分的讨论呢好像并不多见。

它的原因在于说这一部分工作呢实际上已经由其他人代劳啊,而不需要放在机器学习的应用层面来解决。

在各种各样的这个图像识别竞赛当中,无论是训练集还是测试集,它都是预先给定的。

其中的每一张图片呢也都会有精确的标注。

这样看起来设计实验似乎是一项蓝领工作,他被处理高大上的算法。

这种白领的工作给人为的屏蔽掉了。

那真实情况是什么呢?通过人工的数据训练出来的算法,在真实世界中的行为,何灾,人工数据上的行为可能完全不一样。

从人工智能变成人工智障,也就是捅破一层窗户纸。

这么简单设计实验,它不是简单的蓝领工作,它甚至于比机器学习本身啊更加注重策略的应用。

机器学习的目标呢是模拟数据的内在生成机制,从而取得较低的泛化误差。

还有较强的预测精度。

对于数据生成机制的学习呢,必须要建立在足量数据的基础上。

所以机器学习呢它需要的数据是多多益善啊,通常呢不会对数据提出这样或者那样的要求啊,不管是类别啊有不平衡啊,这个多那个少还是属性有缺失值啊,这个属性有那个属性没有啊,机器学习对于这样的数据,这样不完美的数据啊,也一概来者不拒。

这就像说一个给啥吃啥的,傻小子啊,只要能填饱肚子,那就无欲无求。

相比之下在实验设计当中呢,数据都是经过精挑细选啊,最重要的一点就是平衡。

一般来说,平衡意味着数据中每个特征可能的取值个数都是一样。

而对于特征来说呢,每一个取值上数据的比例也是要近似相同。

这种平衡呢就保证了每一个特征,对于结果都会产生同等程度的影响。

哎,大家贡献是差不多的,从而呢也就避免了特征,还有因子之间的这个偏好关系。

这就像说是一个讲究生活品质的啊,我不仅要填饱肚子,还要通过口味和营养的搭配,吃的美味,吃的健康。

那么在实验当中呢,这就体现为精确的衡量不同因子对于结果的影响。

设计实验要完成的任务是对于整个机器学习过程的一个优化影响作为一个过程。

而不单单是一个模型的机器学习,这样的因子是多种多样。

其中最基本的一个因子就是选用的这个模型的形式。

在解决一个分类问题的时候,主成分分析啊KG邻还有神经网络,它都是可用的模型。

当然这里面啊主成分分析它通常作为预处理的一个手段。

当模型确定之后,模型的超参数就是下一个可控的因素。

主成分分析里主成分的个数d k近邻算法中k的取值,神经网络里隐藏层的数目n这些都属于超参数超算数。

它会对模型的性能,还有复杂度产生直接的影响。

在不同的超参数的配置之下,模型训练所得到的参数还有性能也会各不相同。

实验中因子的设置取决于实验的目的。

如果想要比较不同算法在同一个问题上的性能,那么算法的类别就是因子。

如果要测试固定的算法在不同问题上的性能,算法的超参数就是因子。

如果要用算法来区别数据集的数据质量,那么不同的数据集呢也是因此在设计实验的时候,就要将发生影响的所有因子全部的给它纳入到考虑范围并且加以调节。

从而呢实现对学习过程的系统性的优化。

当实验中的因子数目比较多的时候啊,如何唯一的确定单个因子的影响?这就需要一些技巧,你一定听说过控制变量法,这是最简单的实验设计技法之一。

他将所有其余的变量设置为固定值,来观察单一因子的影像效果,以及这背后的一个因果关系。

在机器学习当中呢,这种方法被称为一次一音次。

它首先呢给所有的因子都设定一个基线值,再在其他因子保持在这个基线水平预制水平的前提下来,让单个因子去波动。

观察它对学习性能的影响。

在应用控制变量法的时候呢,需要注意的一个是什么呢?它暗含着一个比较强的假设,那就是不同因子之间相互独立,互不影响。

显然,这个假设在实际的学习任务当中,并不总是成立的。

土耳其学者SM阿尔帕丁啊在他的机器学习导论当中提到,如果啊我把主成分分析作为预处理的方法和k近邻给它进行级连,那么主成分数目的每一个选择都会给后面k近邻定义出一个全新的输入空间,这就会使k近邻的最优超参数出现变化。

也就是说,在十维输入当中,计算出来的最优近邻数目未必适用于十五维的输入。

如果在每次的实验当中呢,不是控制单个的因子,而是让所有的因子一起变化,来发现它们之间的协同关系。

这种方法呢就是因子设计,因子设计所关注的是不同因子之间系统性的变化。

对于学习效果的影响,它的一个特例是全因子实验也叫做完全交叉设计。

在全因子实验当中,每一个因子都有有限个离散的取值,实验呢则会覆盖到所有因子。

所有取值的所有可能组合。

如果说总共有三个因子,每个因子的取值数目分别是三四还有五,那么全因子实验的执行次数就是三乘以四乘以五等于六式。

全因子实验呢它不仅能够研究每个因子对于因变量的影响,还能够发现因子之间相互作用。

对于音变量的影响,它可以进一步看成是连续实验的一个阶段。

在待分析的因子数目比较多的时候,连续实验体现出来的就是粗调加微调这样的处理方式。

他会首先执行一个全因子实验,但是只给每个因子赋予较少的可能的取值。

这种广撒网的做法好处是什么呢?能够评判所有因子的重要程度,确定哪一些是对学习结果影响较大的活跃的因子。

那么这种活跃的因子呢会被保留,不活跃的因子就会被放弃。

接下来连续实验会聚焦在活跃因子之上,通过增加取值数目并且进行精细的微调,来准确的刻画它们之间的关系,以及对于音变量的影响方式,从而呢优化学习的设置。

在对筛选出来的少量因子进行微调的时候啊,可以使用所谓的响应面方法来降低开销。

微调的目的是找到最优的因子的取值,在不可能对所有取值都计算出性能指标的情况下,通过差值的方法来拟合出因子和性能之间的响应面,就是一种更简单的办法。

在得到的响面上,我去寻找最值找到的就是因子最优的取值。

墙面呢它通常被设定为二次的曲面啊,用来拟合。

初始曲面的数据呢通常取在因子的基线附近。

那么在初始曲面上找到的因子的最优值,就会被应用到学习模型当中得到的结果。

作为一个新样本,被添加到初始曲面里面。

经过添加之后啊,我再来对显阳曲面进行拟合,还有优化,直到得到的最优结果没有明显的改进为止。

想要曲面呢,其实可以看成是一种替代模型。

所谓替代模型是对真实模型的逼近,它是以数据驱动的方式自底向上的来进行构建。

目标呢就是尽可能的模拟真实模型的行为。

如果说机器学习当中的因子比较多的话,那它们之间的关系很可能就是无法用解析式来描述的。

复杂的关系替代模型。

实际上就是对这种复杂关系的拟合。

那就像机器学习训练一个模型来拟合输入特征和输出结果之间的关系。

今天呢我和你分享了机器学习当中实验设计的一些基本原则,包括以下四个要点。

第一,实验设计的任务是观察一个或者多个因子,对于实验结果的影响。

第二,机器学习当中实验设计中的因子,包括算法类型啊,超参数,还有数据集等等。

第三,连续实验可以用来评估多个因子对于实验的影响。

第四,想面方法,通过二次曲面的拟合来寻找可变因子的最佳取值。

本片中所提到的实验设计啊,可能听起来你也有感觉和机器学习当中调参的这个过程类似。

但只不过呢调参调的是模型内部的参数啊,那么实验设计调的是模型外部的这个因子。

这个过程在实际当中呢,通常没有得到他应有的一个重视。

那么在机器学习的实践当中,你是否专门关注过这个过程?又或者掉进过实验设计的坑里,还是历练出哪些独门绝技呢?欢迎分享你的观点。