AI入门| 微软ATP带你看机器学习怎么“训练”?

(本文阅读时间:7分钟)

机器学习的整个流程分为训练、测试、预测三个要素,上次分享了机器学习目的是利用训练出的模型来预测新的结果。

本期文章带你看看“训练”的内在逻辑流程,即通常所谓的算法。

AI入门| 微软ATP带你看机器学习怎么“训练”?_第1张图片

▍本次我们会用一个例子来说明训练的流程是怎么运作的。

举个“栗子”:看一个最简单的机器学习模型——线性回归。

例如:A公司员工的2项数据,工作年限(Experience)和薪水(Salary)之间存在着近似线性的关系。

也就是说,如果我们将工作年限设为 x,将工资额度设为 y,则 x 和真实值 y 的关系可以用线性函数 y = a + bx 来表示。此处 a 和 b 是函数 f(x) = a + bx 的参数,x 是 f(x)的自变量,而 y 是 f(x) 的因变量。

那么,a 和 b 分别取怎么样的值,才能使得对应的 f(x) 最合适表达A公司的员工工作年限(Experience)与收入(Salary)的关系呢?衡量的标准是什么呢?这就要请损失函数出场了!

损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度。

因为损失值有正有负,为了不让它们相互抵消,我们将每个样本点损失的平方相加,这样就不会因为取值正负的关系掩盖实际损失了。

我们当然是希望我们求出的a和b使得样本的整体损失最小,也就是希望能够找到让 损失函数J(a,b) 尽量小的a 和 b的取值。

因为找到 J(a,b) 的最小值是我们的目标,因此 J(a,b) 在此又被称为目标函数。

AI入门| 微软ATP带你看机器学习怎么“训练”?_第2张图片

如何找到让目标函数最小化的取值呢?首先应该确定目标函数是凸函数,也就是说在目标函数的值域空间中,存在着一个点,这个点对应的因变量的值达到全域最小。

▍确定这个最小点存在后,怎么找到它呢?

这里就需要用到高等数学中的最优化方法了。最优化方法有很多种,最常用的一种是——梯度下降算法。

梯度同样是一个微积分中的概念,函数的梯度可以简单理解为函数的导数。

梯度下降法是用来计算函数最小值的。它的思路很简单,想象在山顶放了一个球,一松手它就会顺着山坡最陡峭的地方滚落到谷底。

凸函数图像看上去就像上面的山谷,如果运用梯度下降法的话,就可以通过一步步的滚动最终来到谷底,也就是找到了函数的最小值。

这个梯度下降的过程既然已经明白,我们就可以通过编程(写成伪代码的形式)来实现它了。

▍训练程序

当我们选定实现语言后则可以将伪代码改写为程序。这个程序就叫做训练程序,它可以用来训练线性回归模型。

AI入门| 微软ATP带你看机器学习怎么“训练”?_第3张图片

假设我们有 1000 个样本数据,我们也就有了 1000 对 xi 和yi  的值。

我们将这 1000 对样本值带入到这个程序里面,经过两层循环的若干次运行,达到目标函数值收敛。

我们也就得出了a 和 b 的取值,

f(x) = a + bx。

这条直线也就有了具体的斜率和偏移量,我们就可以用它进行预测了,以后新有一个  x 值,我们只需要带入进  f(x) 就能得到一个 y 值,这个 y 值就是这个新样本的预测值。

当我们用其他目标函数替代 J(a,b) 后,这个程序也可以训练其他的模型。

如上就是训练一个线性回归模型从数学推导到代码实现的全过程。这个训练程序的内在逻辑,就是我们通常所说的算法。

AI入门| 微软ATP带你看机器学习怎么“训练”?_第4张图片

你可能感兴趣的:(AI入门| 微软ATP带你看机器学习怎么“训练”?)