机器学习的最直白讲解,就看这篇!

假如你想深入机器学习和它背后的数学,你将会很快意识到一切都可归结为一个优化问题。就连训练神经网络都是一个参数优化的问题。因此要想理解机器学习算法,你需要首先理解数学优化的基本概念,以及它为什么这么有用。

这篇文章,你将会看到一步一步的演示如何求解一个简单的机器学习问题。在这个过程中,你将会看到为什么以及它怎样归结为一个机器学习问题,参数如何被优化以及如何计算最优值。

机器学习求解步骤

Step 1: 问题定义

如下所示一个简单的数据集,一共包括11个已知点,点的坐标为:(x1, x2):

x1,x2的含义可以任意假定,比如x1 表示计算机的使用年限,x2表示训练神经网络所需要的时间。

如果你的电脑使用年限为下图中的x, 显然你不知道训练神经网络所需要的准确时间x2

Step 2: 仅凭猜测

我们随便找一个电脑使用年限与x 最接近的点,如下图所示,来预测x对应的x2值,产生的误差为err.

但是,如果我们运气不好,下图所示,已知的11个点中,没有与预测点的使用年限x值相近的,此时误差就会很大。

因此,我们需要一个更好的算法来求解。

Step 3: 让猜测更准确:机器学习方法

a. 数据拟合

现在我们进入机器学习领域。在观察红色数据点后,你会很容易看出一种线性趋势,你的电脑使用越长(x1 越大),训练时间就会越长(x2 越大)。一个更好的算法将会依据数据,识别出这个趋势,做出更好的预测,误差自然会更小。

函数应该近似拟合我们的数据

b. 拟合线

我们怎样发现这条线?利用高中知识:

我们只需要找到更好的a和b:

对于此处的数据,最优值分别为 a=0.8 and b=20. 但是,我们应该怎么发现这些最优值 a and b

c. 发现最优a和b,最小化均方误差

就像我们前面说的,我们想要发现ab,以便使得 y=ax+b这条线尽可能好的拟合我们的数据。用数学的术语来表述,在我们数据集中的点与这条线的误差(或称距离)应该是最小的,如下图所示,这些黄色的虚线尽可能地短。

绿色箭头指向的点,其误差(或称距离)距离等于:

如果此点的坐标为(x1, x2) = (100, 120), 还记得最优参数a=0.8 and b=20,所以此点的误差:

Error = f(x) — yi Error = f(100) — 120 Error = a*100+b — 120 Error = 0.8*100+20–120 Error = -12

图中我们也可看出这个点比拟合线高12个单元。为了评估拟合线整体的表现,需要计算所有点的误差。怎么做?首先计算每个点的误差的平方。有两个原因:

  • 通过平方误差,我们会得到一个绝对值,(-12)^2 = 144,
  • 平方放大了误差,如果某些点离拟合线比较远,结果误差将会变得非常大

用公式表达为:

更一般的写法:

这个公式称为均方误差的和(sum of square error),它在统计学和机器学习中非常常见。

d. 优化函数

优化函数为什么这么有用?初始问题的定义:我们想要发现a和b以便 y=ax+b更好的拟合数据集。也可以表述为,我们想要发现 ab以便均方误差最小,即:

假如找到函数 f(a, b)的最小值,我们将会发现a和b的最优值:

进入实际计算前,先让我们图形绘制下优化函数 f(a, b)

左图的高度代表均方误差的大小,山峰越高,误差越大。最小均方误差位于绿色箭头所指处,此处对应的a和b就是最优值。

沿着轴a,改变a的取值(对应左图的斜率变大),相应的误差也会变大。

沿着轴b,改变b的取值,也就是叫线上下移动,我们同样也会得到更大的均方误差。

e. 计算最优值

怎样计算均方误差最小值对应的a和b呢?我们知道取得全局最小点必须满足两个条件:

  • 一阶偏导 f’(a,b) = 0
  • 二阶偏导 f’’(a,b) >0

因为目标函数是2个维度的函数,我们可以简单的计算每一个维度上的偏导数,根据必须满足的条件1,得到如下方程:

f(a, b) Δa = 0

f(a, b) Δb = 0

已知 f(a,b) = SUM [axi+b — yi]² ,进一步化简:

f(a,b) = SUM [yi² + b²+a²x + 2abxi — 2byi — 2bxiyi], 综合可得:

SUM [yi² + b²+a²xi + 2abxi — 2byi — 2axiyi] Δa = 0

SUM [yi² + b²+a²xi + 2abxi — 2byi — 2axiyi] Δb = 0

很容易计算出偏导数:

f(a,b) = SUM [2axi + 2bxi — 2xiyi] = 0

f(a,b) = SUM [2b+ 2axi — 2yi ] = 0

记住,在上面两个方程中,有两个SUM,和许多已知点xi 和yi. 就算只有10个点,代入后方程也会变得很长,因此手算也变得不容易,只能借助计算机。

恭喜你!你已经知道线性回归是如何工作的,以及如何通过已知样本学习到两个参数a,b.

但是,要等一下,还有更多知识需要了解。

逼近多项式

如果我们的数据没有展现线性走势,而是像如下一个二次函数走势:

在这种情况下,很明显线性函数拟合的将不会太好,多项式将会更好,这就意味着我们需要处理平方函数,三次方函数,甚至更高阶的多项式逼近。

但是,计算这些问题的方法通用的,首先我们再次定义问题,我们想要一个平方函数 y = ax² + bx + c 以此更好的拟合我们的数据:

就像你看到的,我们现在有三个参数要去确定:a, bc. 因为,我们的最小化问题需要稍作改变,不过均方误差和最小的目标函数不会改变:

需要优化的三个参数 a,bc:

过拟合

我们仍然有一个问题需要去解释,文章一开始提到的具有线性走势的那个问题,难道就不能用二次函数拟合吗?肯定可以!我们用更高阶的函数y = ax² + bx + c 去拟合不好吗?如果单从训练集上的表现来看,高阶函数肯定会让误差更小的。

事实上,目标函数的阶次比总的样本点个数小于1的时候,我们的目标函数将会拟合到每一个点,均方误差将会是0. 非常完美,不是吗?

并不是那样好,用下面两幅图来解释:

在左图,我们用二次函数近似拟合数据,在右图,我们用10阶函数拟合,因此它能近似拟合几乎所有14个样本点。

但是,右图的线条运动看起来很奇怪,它试图去拟合所有点,但是它丢失了样本数据的整体走势。得到的高阶函数对值得变化更加敏感,预测结果更加不可靠。

因此,我们应该首先观察数据,决策用几阶多项式拟合效果很最好,然后选择合适的阶数去拟合。

本文分享自微信公众号 - 小小挖掘机(wAIsjwj)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯技术工程官方号的专栏

机器学习模型可解释性的详尽介绍

? 模型可解释性方面的研究,在近两年的科研会议上成为关注热点,因为大家不仅仅满足于模型的效果,更对模型效果的原因产生更多的思考,这样的思考有助于模型和特征的优...

22020
来自专栏中科院渣渣博肆僧一枚

ShapeShifter: Robust Physical Adversarial Attack on Faster R-CNN Object Detector

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

7740
来自专栏让自己透明,用于自己看的内容

Creating sample data for toy analysis为小型数据分析创建样本数据

I will again implore you to use some of your own data for this book, but in the ...

4000
来自专栏AI科技大本营的专栏

3D机器人视觉在仓储物流和工业自动化领域的应用 | AI ProCon 2019

随着深度学习和机器学习的发展,机器人已经走出实验室,越来越多地地应用于各行各业,其中,仓储物流和工业化领域就有许多适合机器人作业的场景环境。

11310
来自专栏让自己透明,用于自己看的内容

Scaling data to the standard normal缩放数据到标准正态形式

A preprocessing step that is almost recommended is to scale columns to the stand...

8200
来自专栏中科院渣渣博肆僧一枚

生成对抗网络

生成式对抗网络(generative adversarial network,GAN)是基于可微生成器网络的另一种生成式建模方法。生成式对抗网络基于博弈论场景,...

7510
来自专栏企业上云需要了解的几个云计算

企业上云需要了解的几个云计算误区

随着云计算历经十余年发展的趋势,但一些企业仍在适应。和大多数不熟悉的事情一样,对云计算技术的误解和谣言迅速传播,这在开发人员或IT专业人员讨论业务迁移的可能性时...

2200
来自专栏AI科技大本营的专栏

实战:基于tensorflow 的中文语音识别模型 | CSDN博文精选

目前网上关于tensorflow 的中文语音识别实现较少,而且结构功能较为简单。而百度在PaddlePaddle上的 Deepspeech2 实现功能却很强大,...

36210
来自专栏AI科技大本营的专栏

C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”

SciSharp 是怎样的一个社区?它是如何构建一个基于 .NET 的机器学习生态?它在做的事情对开发者来说有何意义?本次,AI 科技大本营与 SciSharp...

5610
来自专栏AI科技大本营的专栏

实战:基于OpenPose的卡通人物可视化 | CSDN博文精选

去年打算用些现成的Pose做些展示,因为以前有在OpenPose做些识别等开发工作,所以这次我就简单在OpenPose上把骨架用动画填充上去,关于能够和人动作联...

13730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励