Py学习  »  机器学习算法

机器学习的思维雏形,离不开两百年前看星星的数学家

AINLP • 2 年前 • 245 次点击  

大家好,我是梁唐。

因为公号迁移的原因,之前很多的文章都找不到了,就有小伙伴建议我把之前写过关于机器学习的文章再重新发一遍。于是我又花了点时间,重新整理了一下之前的文稿。

但机器学习本身并不是一门完全独立的学科,它最早其实是从统计学中剥离出来的。所以本身带有很多统计学的色彩和概念,所以直接上手讲模型,估计很多人尤其是新手会很晕,所以我们从最简单的一些概念开始讲起,帮助大家一点点了解机器学习到底是怎么回事。

期望

首先是期望,期望是一个老概念了,大家应该早就在课本上见过。

维基百科对它的定义是:它表示的是一个随机变量的值在每次实验当中可能出现的结果乘上结果概率的总和。换句话说,期望值衡量的是多次实验下,所有可能得到的状态的平均结果。

我们举两个简单的例子,第一个例子是掷骰子。

我们都知道一个骰子有6个面,分别是1,2,3,4,5,6。我们每次投掷得到其中每一个面朝上的概率都是一样的,是1/6。对于投骰子这个事件而言,它的期望应该是:

我们如果投掷大量的骰子,得到的平均结果应该是3.5,虽然骰子上并没有这个点数。

另一个经典的例子就是博弈游戏,老赌徒们水平各有高低,但都深谙期望这个概念。比如美国轮盘当中一个有38个数字,每次可以押一个数字。如果押中了,赌徒可以获得35倍的奖金,如果押不中,钱打水漂。我们来算下期望:

我们可以发现这个期望是一个负值,也就是说短期内可能是盈利的,但只要玩得足够多,一定是输的。也不只是轮盘,实际上赌场里的所有游戏期望都是负的。这也是明摆着的,如果期望是正的,赌场早就关门大吉了。

方差

理解了期望之后,我们再来回顾一下方差,方差衡量的是变量的离散程度。

它的公式是:,这里的指的是就是变量X的期望值。也就是说,方差指的是变量X与它期望值平方差的期望值。这个期望值越大表明了X越容易偏离期望值,越小说明X越不容易偏离。方差衡量的正是变量容易偏离的程度,学名叫做离散程度。

由于一定是一个非负值,所以变量的方差一定是非负的。我们同样用赌博举个例子,假设我们现在有一个抛硬币的游戏。每次抛一枚硬币,如果正面朝上则赢10000元,如果背面朝上呢,则输9000元。我们很容易看出来,这个游戏的期望是500元。也就是说我们平均每轮能赢500元。

但是如果你去算的话,你会发现它的方差很大,这个很好理解,比如一旦运气不好很容易连输个好几把,搞不好就破产了。

通过方差这个概念,我们很容易理解为什么在游戏当中,倍押策略不可行。

所谓的倍押策略是指,在一个50%赢率的游戏当中,我们当前如果输了钱,那么下一轮则倍押当前输的钱。如果还输了继续倍押,直到赢为止。通过这种策略呢,可以抵抗连续输的风险,理论上来说只要最终赢一把,就可以赢回之前所有的钱。

显然因为这种方法的方差非常大。在盈利之前,很容易震荡到一个不可能承受的值,也就是会出现倾家荡产也不够押下一把的情况。

标准差

下一个概念是标准差,理解了方差,标准差也就很好理解。标准差就是方差的平方根,写成:

和标准差一样,同样用来反映样本的离散情况。

由于方差和标准差的定义和使用情况非常类似,所以一般情况下,我们使用方差的场景会更多。所以这里不多介绍,大家知道这个概念和计算方法即可。

最小二乘法

这些概念厘清了之后,就是我们的重头戏——最小二乘法了。

估计很多人会有点蒙,不太明白这里的二乘是什么意思。实际上二乘就是指数为2,也就是平方的意思,所以最小二乘法也被称为最小平方法。严格来说它并不是一种算法,而是一种数学优化的建模思想。

这个背后还有一段很有意思的故事,1801年的时候,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。于是天文学家们就想要观测出这颗小行星的轨迹,但是若干天之后,谷神星运行到了太阳的背面,无法观测了。所以唯一的方法就是根据之前观测的结果来进行推算。

许多科学家、数学家齐上场也没有推算出正确的结果,唯独有一个年仅24岁的年轻人,三下五除二就计算出了谷神星的轨迹。这个人就是数学王子高斯,他当年用的方法正是最小二乘法。

我们结合故事来看一下最小二乘法的原理,我们假设谷神星一系列被观测到的位置是。我们要做的是根据已有的,反推出它背后的数学表达,也就是公式。由于我们已经知道了万有引力定律,所以它背后的模型其实是清楚的,只是参数不知道。好比我们已经知道了,但是我们不知道这里的a和b分别是多少。

那怎么办呢?

很简单,我们随意选择一个a和b的值,同样也可以得到一系列的y,为了区分,我们把推算得到的值叫做。然后我们套入最小二乘法,其实就是做差平方而已。

大家看到这个公式有没有觉得有点熟悉?这不就是方差的公式么?只不过方差里做差的是变量X和它的期望。而这里是真实值和预测值。方差反应了什么?反应了变量X的离散程度,那套用过来这里,这个值反应了什么?反应了预测值距离真实值的离散程度。

这个离散值越小说明了我们的推算越精确,所以我们要做的就是想办法优化这个值,将它尽可能缩小。

于是公式推算问题就转化成了一个数学优化问题,这样的一个函数求极值就简单了,我们的方法很多。最简单的,可以把求导,直接暴力求解最优值。还可以使用梯度下降法,一点点优化当中参数的值,找到最优解。怎么求解其实是另外一个故事了,这里的数学建模思想才是最小二乘法的精髓。

很多机器学习的初学者会把最小二乘法和梯度下降等搞混淆,说到最小二乘就是梯度下降,其实是不完全准确的。最小二乘法是把实验和推测建立联系的建模思想,而梯度下降则是最小二乘法的一种求解方法。

后来整个机器学习、深度学习的损失函数优化体系本质上来说就是最小二乘法的改版,底层逻辑是完全一样的。每每想到这里都不禁让我惊叹,当年的数学家们真的是厉害,其实已经把路铺到了门前,后人只需要在算力的加持上临门一脚。

进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119141
 
245 次点击