聊聊深度学习这档子事(1):待定系数法

本文通过简单实例探讨了机器学习的基本原理,揭示了深度学习背后的技术秘密。介绍了通过待定系数法来理解机器学习的过程,包括建模、训练和预测等关键步骤。
部署运行你感兴趣的模型镜像

聊聊深度学习这档子事(1):待定系数法

作者: 许野平 2016-06-16 于济南

深度学习这几年很火,写算法不和深度学习沾点边都不好意思和人家打招呼。面对新生事物,老朽我总觉得好奇,就想看看深度学习这玩艺到底有啥新鲜东西,总觉得它要解决的问题,并没有超出传统数学方法,为啥就突然火起来了呀?

尝试着用传统方法写一些代码,看看能否解决深度学习领域的问题。边写边比较,感觉在慢慢领悟深度学习技术背后一些东西,然后斗胆写出来,和大家一起分享。或许换个角度看深度学习,能给大家一点启示。

我觉得深度学习这玩艺儿,不能只满足会用一些开源工具,因为别管这些开源工具有多强大,总是会有它的局限性。与其被动跟在别人屁股后面学步,不如主动出击,自己搞明白深度学习理论背后的秘密。在自己遇到特殊问题时,可以举一反三,灵活运用这些技术有针对性地编写代码,这样学到的知识,才是活的。作为程序员,能做到这一步才算合格。

既然是闲聊,我也不愿意搞出很多复杂公式,把大家整得头晕眼花。理解复杂问题,最好通过简单实例,用解剖麻雀的方法,逐步理解事物的本质。因此,我将通过简单例子,说明深度学习这种复杂理论的原理和运作机制。有了这个基础,再去学习严谨的理论知识,就水到渠成了。

深度学习数学模型动辄上万甚至数百万个参数,训练数据也常常数以亿计。尽管如此,它们的原理仍然可以借助简单问题讲明白。本系列文章以两个参数的模型和三组训练数据为起点,由浅入深逐步剖析深度学习算法的原理和运行机制。

1. 初遇机器学习

几年前,公司交给一个任务,让编写一个人脸识别算法。我当时不知深浅,不假思索就同意了,殊不知带领几个小兄弟一脚踏进一个无底深渊。折腾了没多久,我们发现,人脸识别算法和过去写的所有的算法面临的问题和求解方法都不一样。区别在哪里呢?

以前写算法,都是根据已知条件和问题要求,首先梳理人工求解的方法。人工求解方法搞定了,再把人工过程翻译成程序设计语言,交给计算机去干就行了。可是我们整了好几个月,也没找出一套识别人脸的有效法则。

一开始以为根据人脸轮廓加上五官的位置和形状,很容易判断两张照片是否为同一人,结果发现,即使没有姿态、光照、表情和遮挡干扰,这种方法比对的识别准确率也只有65%。

大家可能认为这个成绩已经不错了,可是要知道,掷硬币的方法判断两张照片是否为同一人,准确率还有50%呢!所以,这个成绩只是比掷硬币略好而已。

折腾一阵子后,我们意识到像人脸识别这样复杂的问题,指望人工总结出规律,再写程序让电脑执行,这条路子行不通。既然人工无法总结规律,那就得想办法让电脑自己总结规律,这就是另外一种算法套路了——扔给电脑一大堆数据,让电脑分析总结其中规律,然后遇到没见过的数据,电脑也能正确应对。

这种能让电脑自己总结规律的算法,就属于机器学习范畴了。这真是一个奇妙的想法,人类自己无法从数据中总结规律,但是却可以提高一个层次,写出可以自行总结规律的算法出来,细想起来真得很有意思!

2. 一个简单例子

我们先来看一个简单例子,通过这个例子可以初步了解机器学习的一般方法。

告诉你人的身高,你能估计出体重吗?这是一个很平常的数学问题。一般来说,我们会假定身高x和体重y之间存在函数关系,比如:

y=ax+b

根据简单的数学常识可知,只需要知道两个人的数据,即可求出系数a,b的值。我们随便测量两个人,得到如下数据:
编号身高体重
117880
216255

用待定系数法求解a,b的值没有任何困难吧?这个问题展示了机器学习方法的核心思想——机器学习本质上就是待定系数法

3. 机器学习过程的三个部分

上面这个待定系数法的问题,现在可以归类到机器学习门下了。按照机器学习的一般规律,其工作过程分为三个步骤:建模、训练、预测。

3.1 建模

首先我们假定因果变量之间存在某种数学关系(比如前面的y=ax+b),我们称之为建立模型。

3.2 训练

然后,利用观察数据求解关系式中的系数(比如前面关系式中的a,b),这个过程称为训练。

3.3 预测

最后,我们可以利用得到的具体关系式对未知的数据进行判断,这个过程称之为预测。例如,身高180cm的人体重应该是多少?

4. 大数据问题

线性代数是机器学习理论必不可少的工具。前面的例子,要求解 a,b 的值,必须得解下面这个线性方程组:

{178a+b=80162a+b=55

我们仅根据两个人的数据求出了 a,b 的值。这个从统计学角度看显然是不合理的,因为用两个人的数据确定整个人类的身高体重关系,数据依据不充分。

数据量太多也会有麻烦。求两个系数,有两组数据足够了,多出来的数据,从解方程角度来讲是多余的。可是实际应用中我们会遇到成千上万的观察数据,而模型的待定参数相对要少得多,这个时候如何利用庞大的数据确定参数的值呢?我想,大数据问题的本质可能就在这里吧?

在我们这个例子中,两组训练数据正合适,三组训练数据就算大数据了。利用三组训练数据求解数学模型,和利用一百万组训练数据求解,方法是一样。

4.1 超定方程组

下面的方程组,方程的个数比未知数的个数多,方程组解的几何意义是三条直线的交点。我们知道,三条直线通常不会相交于同一点,也就是说大部分情况下方程组是无解的。如果方程个数比未知数个数多,这样的方程组称为超定方程组

a11x1+a12x2=b1a21x1+a12x2=b2a31x1+a32x2=b3

4.2 超定方程组的精确解

如果身高和体重严格符合模型 y=ax+b 所定义的关系,理论上来讲观测数据再多,得到的超定方程也必然有解。例如,假如身高和体重完全精确地符合 y=x105 这个关系,我们得到的观察数据也完全符合这个关系,例如:

编号身高(cm)体重(kg)
115045
215550
316055
416560
518075

于是,得到方程组:

150a+b=45155a+b=50160a+b=55165a+b=60180a+b=75

任取两个方程,容易求出,a=1,b=105 ,经验证是超定方程组的唯一精确解。

可见,别管有多少方程,如果模型正确,观测数据也完全无偏差,方程组必然有唯一的精确解。

4.3 超定方程组的近似解

如果模型和训练数据之间并不精确吻合,超定方程组通常无解。例如采集的训练数据不严格地落在同一条直线上:

编号身高(cm)体重(kg)
115048
215552
316049
416553
518082

于是,得到方程组:

150a+b=48155a+b=52160a+b=49165a+b=53180a+b=82

数学模型假定样本点落在同一条直线上,这一次的训练数据稍有偏差。于是看到有一个很有意思的现象,方程组包括5个方程,代表 ab 平面上5条直线。求超定方程组的解,实际上就是求这 5 条直线共同的交点。由于训练数据稍有偏差,这5条直线两两相交,产生10个交点,这10个交点的位置都稍微偏离了(1,105) 这个位置。

考虑到模型本身不精确,训练数据也会有一定偏差,我们可以用这10个交点坐标的平均值,也就是它们的重心坐标作为超定方程组的近似解,这样虽然超定方程组没有精确解,并不代表它就没任何用途。相反,利用它的近似解,确定一个近似的模型也很有用。于是我们得到一个结论:超定方程组无精确解时,可以求其近似解。

4.4 近似解精度取决于什么因素?

别管有多少方程,如果模型正确,观测数据也完全无偏差,方程组必然有唯一精确的解。模型与观测数据完全相符的情况不多,实际上我们常遇到两种情况:

  • 模型正确,观测数据误差可控制在一定范围内,物理学公式大部分就是在这种条件下发现的。
  • 模型近似正确,观测数据误差可控制在一定范围内,机器学习问题基本上如此。

这上述情况下,可以断定,超定方程组近似解的误差范围能够被控制在一定范围内。模型越接近正确形式,观测数据误差越小,近似解的误差范围就越小。所以,解决机器学习问题,模型的选择和训练数据的筛选处理,是取得好的训练结果的关键。如果模型本身是错误的,什么方法也不能保证得到好的训练结果。

4.5 求近似解的途径

前面的例子中,5条直线两两相交,产生10个交点,求其平均值,也就是10个交点的重心,作为近似解,简单合理。但是,如果有一万组训练数据,问题就变成一万条直线两两相交,产生大约五千万个交点,求交点的计算量太大了,计算复杂度为O(n2),计算量太大了,很难实际应用。

既然求近似解,只要结果别差得太远就好,没必要用求平均值的方法。思想解放了,办法就多得是。于是,在完美和现实之间,有人发明了一种折中求解方法,拉开了机器学习的序幕,之后一幕又一幕精彩的大戏逐步登场。尽管好戏连台,但其本质没有改变,仍然是求待定系数,区别在于:在机器学习领域,我们要用比待定系数个数多得多的训练数据,求模型的近似解。

小结

  • 机器学习的本质是待定系数法;
  • 因为训练数据的数量通常远远多于参数的数量,因此,模型参数可以借助超定方程组求解;
  • 超定方程组解的误差范围,取决于模型的合理性和训练数据的适用性。

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值