假设我们有一些已标注的训练数据。特别是,我们有不同房子的价格及其对应的面积。如果我们简化信息,可以将其描述为: 每个X代表不同面积和价格的房子。通过观察这些数据,我们发现一个规律:随着房子面积的增加,价格也相应上升。我们期望算法能够识别并利用这一规律,从而预测房价。通过直观分析训练数据,可以看到图表中存在一条对角线,大部分房屋的数据点都位于这条线上。这意味着大多数情况下,房子位于这条对角线附近,比如绿色X处的房子价格较高,而红色X处的房子价格较低。
现在,我们可以进一步探讨如何根据给定面积预测房价。虽然精确预测可能比较困难,但大致估计是可行的。为此,我们在数据中绘制一条尽可能贴近每个数据点的线。这条线被称为“预测器”,它根据房子的面积预测房价。在预测器上的每个点,都以很高的可能性给出相应面积房子的价格。从某种意义上讲,预测器给出了特定面积房子的“平均价格”。
预测器不一定是线性的。它可以是任何形式的函数或模型,如二次函数、正弦函数等。然而,并不是所有复杂函数都适合作为预测器。不同的问题需要不同的函数,这取决于开发人员的选择。回顾我们的房价模型,可能会问:为什么限制在一个输入变量?实际上,我们可以考虑更多的信息,如城市的生活成本、房屋条件、建筑材料等。例如,我们可以将价格与住房位置、面积及生活成本绘制在一个图表上,纵轴表示价格,横轴表示面积和生活成本。
在这种情况下,我们再次通过预测器与数据匹配。由于涉及多个变量,我们不再只是画一条线,而是需要一个平面来更好地拟合数据。
正如前面所述,预测器有多种类型。在我们的房价案例中,我们使用线性模型来近似数据。线性预测器的数学形式如下: 每个x代表不同的输入特征,如面积或生活成本。每个c被称为参数或权重。某个特定的权重越大,模型就越重视对应的特征。例如,面积是预测房价的重要因素,因此算法应通过增加与面积相关的系数来充分考虑这一点。相反,如果数据中包括房间内插座的数量,算法可能会赋予其较低的权重,因为插座数量与房价关联不大。在基于面积预测房价的情况下,由于只考虑一个变量,我们的模型只需要一个输入特征,即x: 这个方程以这种方式表示更容易理解: y(x)是我们输入的房价,x是特征,即房子的大小。c0是y轴截距,表示房子的基本价格。问题在于,机器学习算法如何选择c0和c1,使直线能够最佳地预测房价?实际上,可以通过标准方程的矩阵关系直接有效地找到这些系数。然而,这种方法在处理大量变量时变得不现实,因此我们通常使用机器学习算法常用的方法。
关键在于找到一种方法来衡量预测器的准确性。我们通过使用损失函数来实现这一点。损失函数接受一条线和一组数据,并返回一个称为成本的值。如果线很好地拟合了数据,成本会很低;反之则高。最优的预测器会使得损失函数的值最小化,即最小化成本。为了更好地理解这一点,我们来看三个预测函数: 预测器a和c并没有很好地拟合数据,因此它们的成本较高。而预测器b似乎很好地拟合了数据,因此它的成本较低。那么成本函数是什么呢?实际上,我们可以使用多种不同的成本函数,但在本例中,我们将采用一种常用的方法,即均方误差。均方误差是指数据点与预测值之间的垂直距离,即差值(xi−yi)。我们可以通过下面的图直观地看到误差,每个条代表不同的(xi−yi)。因此,对于单个数据点(xi, yi),其中xi是房子的面积,yi是房价,预测器y(x)的平方误差为: 误差的平方的好处是所有项都是正的,这样我们可以最小化平方误差。接着,我们计算所有平方误差的平均值,即均方误差。
当我们绘制损失函数(假设只有两个变量)时,可以看到其形状如下: 可以看出这个成本函数的最小值。我们可以直观地看到。但是,记住我们只考虑了一个特征——面积。实际上,几乎所有现代机器学习算法的应用程序都包含多个特征。在某些情况下,多达数百万个参数被使用。为了找到高维损失函数的最小值,我们将使用一种名为梯度下降的算法。梯度下降法在二维中有直观的解释,但同样适用于任意维度。想象一个球沿着成本函数图滚动。当球滚动时,它总是沿着最陡峭的方向滚动,最终停在最低点。简而言之,这就是梯度下降法。我们选择图上的任意一点,找到斜率最大的方向,向这个方向移动一小步,然后重复此过程,直到达到损失函数的最小值。由于该点是损失函数的最小值,它也是我们用于绘制直线的参数。
通过阅读这些内容,希望机器学习对你来说变得更加清晰。希望它没有你想象的那么复杂。记住,机器学习实际上就是通过训练数据绘制线。我们决定线的作用,例如分类算法中的决策边界,或建模真实世界行为的预测器。这些线又来源于使用梯度下降法求解损失函数的最小值。换句话说,机器学习实际上是模式识别。机器学习算法通过训练数据绘制线条来学习模式,并将看到的模式推广到新数据。这引出了一个问题:机器学习是否真的在“学习”?谁能说学习不仅仅是模式识别呢?
文章首发于微信公众号:btc201800
知识星球ID:28018093
音频发布在喜马拉雅上“区块链杂谈 (第2季)” http://xima.tv/Bjq4se
宁波格密链网络科技有限公司专注于区块链上的密码技术研发。