大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

如何理解并实现一个简单的人脸识别算法(中):机器学习模型

在上次的教程中,我介绍了一些理解需要基本的数学知识。其实这些基础知识是基本不够的,我建议大家在阅读的时候,放弃知识细节的把握,终点在于思想精髓的领悟。当然,不是我的思想,是强大的数学思想。

这次教程里,我继续介绍“最小二乘回归”这个很简单但是很实用的机器学习模型。

我们先忘掉模型,来看看我们现实中经常出现的问题:假设你看中了一个新开盘小区的房子,可是你不知道房子的真实价格是多少,对于开发商的开盘价,你也是非常怀疑的,那你该怎么决定你所购买的房子的单价呢?

我们需要了解这个新小区周边的房价和配套情况,假设周边有上百个小区。每个小区的二手房均价都可以在网上查到。经过研究,我们发现,小区的均价和离某个神秘的工厂的距离存在一定的线性关系,关系大概如下:


大家会发现,离工厂越远,小区的均价越高,反之越低。当然,工厂周围的价格应该是大于0的,这个图表示的涵义符合基本的事实。

那么我们该如何给自己设定这个新小区的价格呢?

我们可以这么做,如上图所示,我们把所有小区的均价按照距离工厂远近画出一个表,然后我们可以根据我们将要学会的“最小二乘回归模型”来拟合出一条直线。这条直线反应的是去除掉一些不稳定因素(比如房子外表颜色)之后的真实价位。

那么,如果我们已知新小区距离工厂两千米,那么我们在横轴(距离轴)上找到两千米的位置,往上画一条直线,然后在与直线交叉的该点画一条水平的线,水平线与纵轴(价格轴)的交叉点,就是新小区的合理价格,即2万元一平。


当然,我们这个模型是在简化了很多复杂情况之后得到的模型,现实的情况远比这个复杂。

那么现在问题来了,怎么得到上图中的这条直线?

答案就是“最小二乘回归”!

怎么来的?

假设现在有n个数据点,分别是{(x1,y1), (x2,y2), ..., (xn,yn)},每个数据点中的x是上图中横轴中的距离数值,y是纵轴中的价格数值。我们寻求的是x和y之间的一种对应关系。

为简单起见,我们假设这种对应关系是线性的,即y=wx+b,其中w是权重系数,b是偏差,也就是x=0的时候y的值。

我们现在需要确定w和b的值,b的值相对好确定一些,只需要调查当距离x=0的时候,价格y是多少就可以了,因为这个时候b=y,所以我们就可以得到b的值。

那么如何确定w的值呢?

我们需要确定一个目标函数,假设我们只有一组(x,y),情况就会简单的多。

目标函数可以设为(y-w*x)^2,这表示的是(y-w*x)的平方。这个模型就是最小二乘了。

需要注意的是,最小二乘不是最小二乘回归哦!最小二乘模型一般容易过拟合,就是确定的w不能反映真实数据的分布情况,一般我们需要对w有一个约束。

这个约束需要与(y-w*x)^2绑在一起,从而得到更反应数据真实情况的w。

这里我们可以用(y-w*x)^2+a*w^2,这里a是一个系数,这个模型就是一个变量是一维的最小二乘回归模型。

正式的写法是:min{w} (y-w*x)^2+a*w^2.

min是求最小值的意思,min{w}的意思是这个最小值是通过变化w的值来得到的。这个a可以用统计学里的交叉验证方式得到,设计到更复杂的原理,所以我们不讨论。大家只需要知道a可以得到就可以了。

那么如何求解上面最小二乘回归模型的最小值呢?

方法在我们上一期的教程里,就是用函数求导,我们对上面的函数(y-w*x)^2+a*w^2对w求导,然后让导函数等于0,就可以得到w=x*y/(x^2+a)。是不是很简单?这就是我们需要的w的值了。

如果我们不加w的正则项,也就是a=0,会出现什么情况?如果x=0,那么w就无法得到具体的数值,于是也就无法预测y。这样的模型就太脆弱了!为了让模型更合理,我们对w有约束,加上了w的约束项。

那么当有多组(x,y)的时候,即有n个数据点,分别是{(x1,y1), (x2,y2), ..., (xn,yn)}的时候,解决办法会稍微复杂一点。

此时的最小化目标函数是:

min{w} {(y1-w*x1)^2+(y2-w*x2)^2+...+(yn-w*xn)^2+a*w^2}

同样,对w求导,然后让导函数等于0,我们可以得到

w=(x1*y1+x2*y2+xn*yn)/(x1^2+x2^2+...+xn^2+a).

大家不需要记得这些计算的公式,就大概理解这个过程就可以:

我们是先用观察数据,然后用一个最简单的线性函数去拟合房价和距离之间的关系,在确定这个线性函数的参数的时候,我们需要用到“最小二乘回归”模型,这个模型有一个参数a,是为了避免w因x=0而陷入无法求解。

那么得到参数w和b之后呢,我们就可以用y=w*x+b来预测房价了,即在给定距离x的情况下得到单价y的值。

y=w*x+b这个线性函数也叫最小二乘回归线,得到这条线之后,这条线是所有点到某条线竖直距离的平方和最小的线。这一点不用理解,但是很妙。


数学中有很多这种巧妙的东西,比如欧拉公式


那么现在为止,我介绍了一维的最小二乘回归模型,其实这个模型很多都是用在高维的情形当中。比如人脸就是一个高维的物体。在拍摄的人脸照片中,一般最小都是32乘以32维也就是1024维的情形,再小的话可能就很难看清了。


好了,那么这次我们了解了一点最小二乘回归模型在房价预测方面的一点应用,这个应用的重点是要得到线性相关函数y=w*x+b。

下一次,我们直接看看怎么用最小二乘回归模型做人脸预测。大家拭目以待哦。