聊聊深度学习这档子事(1):待定系数法
聊聊深度学习这档子事(1):待定系数法
作者: 许野平 2016-06-16 于济南
序
深度学习这几年很火,写算法不和深度学习沾点边都不好意思和人家打招呼。面对新生事物,老朽我总觉得好奇,就想看看深度学习这玩艺到底有啥新鲜东西,总觉得它要解决的问题,并没有超出传统数学方法,为啥就突然火起来了呀?
尝试着用传统方法写一些代码,看看能否解决深度学习领域的问题。边写边比较,感觉在慢慢领悟深度学习技术背后一些东西,然后斗胆写出来,和大家一起分享。或许换个角度看深度学习,能给大家一点启示。
我觉得深度学习这玩艺儿,不能只满足会用一些开源工具,因为别管这些开源工具有多强大,总是会有它的局限性。与其被动跟在别人屁股后面学步,不如主动出击,自己搞明白深度学习理论背后的秘密。在自己遇到特殊问题时,可以举一反三,灵活运用这些技术有针对性地编写代码,这样学到的知识,才是活的。作为程序员,能做到这一步才算合格。
既然是闲聊,我也不愿意搞出很多复杂公式,把大家整得头晕眼花。理解复杂问题,最好通过简单实例,用解剖麻雀的方法,逐步理解事物的本质。因此,我将通过简单例子,说明深度学习这种复杂理论的原理和运作机制。有了这个基础,再去学习严谨的理论知识,就水到渠成了。
深度学习数学模型动辄上万甚至数百万个参数,训练数据也常常数以亿计。尽管如此,它们的原理仍然可以借助简单问题讲明白。本系列文章以两个参数的模型和三组训练数据为起点,由浅入深逐步剖析深度学习算法的原理和运行机制。
1. 初遇机器学习
几年前,公司交给一个任务,让编写一个人脸识别算法。我当时不知深浅,不假思索就同意了,殊不知带领几个小兄弟一脚踏进一个无底深渊。折腾了没多久,我们发现,人脸识别算法和过去写的所有的算法面临的问题和求解方法都不一样。区别在哪里呢?
以前写算法,都是根据已知条件和问题要求,首先梳理人工求解的方法。人工求解方法搞定了,再把人工过程翻译成程序设计语言,交给计算机去干就行了。可是我们整了好几个月,也没找出一套识别人脸的有效法则。
一开始以为根据人脸轮廓加上五官的位置和形状,很容易判断两张照片是否为同一人,结果发现,即使没有姿态、光照、表情和遮挡干扰,这种方法比对的识别准确率也只有65%。
大家可能认为这个成绩已经不错了,可是要知道,掷硬币的方法判断两张照片是否为同一人,准确率还有50%呢!所以,这个成绩只是比掷硬币略好而已。
折腾一阵子后,我们意识到像人脸识别这样复杂的问题,指望人工总结出规律,再写程序让电脑执行,这条路子行不通。既然人工无法总结规律,那就得想办法让电脑自己总结规律,这就是另外一种算法套路了——扔给电脑一大堆数据,让电脑分析总结其中规律,然后遇到没见过的数据,电脑也能正确应对。
这种能让电脑自己总结规律的算法,就属于机器学习范畴了。这真是一个奇妙的想法,人类自己无法从数据中总结规律,但是却可以提高一个层次,写出可以自行总结规律的算法出来,细想起来真得很有意思!
2. 一个简单例子
我们先来看一个简单例子,通过这个例子可以初步了解机器学习的一般方法。
告诉你人的身高,你能估计出体重吗?这是一个很平常的数学问题。一般来说,我们会假定身高 x x和体重yy之间存在函数关系,比如:
y=ax+b
根据简单的数学常识可知,只需要知道两个人的数据,即可求出系数a,b的值。我们随便测量两个人,得到如下数据:
编号 | 身高 | 体重 |
---|---|---|
1 | 178 | 80 |
2 | 162 | 55 |
用待定系数法求解a,b的值没有任何困难吧?这个问题展示了机器学习方法的核心思想——机器学习本质上就是待定系数法。
3. 机器学习过程的三个部分
上面这个待定系数法的问题,现在可以归类到机器学习门下了。按照机器学习的一般规律,其工作过程分为三个步骤:建模、训练、预测。
3.1 建模
首先我们假定因果变量之间存在某种数学关系(比如前面的 y=ax+b y=ax+b),我们称之为建立模型。
3.2 训练
然后,利用观察数据求解关系式中的系数(比如前面关系式中的 a,b a,b),这个过程称为训练。
3.3 预测
最后,我们可以利用得到的具体关系式对未知的数据进行判断,这个过程称之为预测。例如,身高 180cm 180cm的人体重应该是多少?
4. 大数据问题
线性代数是机器学习理论必不可少的工具。前面的例子,要求解 a,b a,b 的值,必须得解下面这个线性方程组:
\left\{ \begin{aligned}178a+b = 80 \\162a+b = 55 \end{aligned} \right.
我们仅根据两个人的数据求出了 a,b a,b 的值。这个从统计学角度看显然是不合理的,因为用两个人的数据确定整个人类的身高体重关系,数据依据不充分。
数据量太多也会有麻烦。求两个系数,有两组数据足够了,多出来的数据,从解方程角度来讲是多余的。可是实际应用中我们会遇到成千上万的观察数据,而模型的待定参数相对要少得多,这个时候如何利用庞大的数据确定参数的值呢?我想,大数据问题的本质可能就在这里吧?
在我们这个例子中,两组训练数据正合适,三组训练数据就算大数据了。利用三组训练数据求解数学模型,和利用一百万组训练数据求解,方法是一样。
4.1 超定方程组
下面的方程组,方程的个数比未知数的个数多,方程组解的几何意义是三条直线的交点。我们知道,三条直线通常不会相交于同一点,也就是说大部分情况下方程组是无解的。如果方程个数比未知数个数多,这样的方程组称为超定方程组。
\left\{ \begin{aligned}a_{11}x_1 + a_{12}x_2 = b_1\\a_{21}x_1 + a_{12}x_2 = b_2\\a_{31}x_1 + a_{32}x_2 = b_3 \end{aligned} \right.
4.2 超定方程组的精确解
如果身高和体重严格符合模型 y=ax+b y=ax+b 所定义的关系,理论上来讲观测数据再多,得到的超定方程也必然有解。例如,假如身高和体重完全精确地符合 y=x−105 y = x - 105 这个关系,我们得到的观察数据也完全符合这个关系,例如:
编号 | 身高(cm) | 体重(kg) |
---|---|---|
1 | 150 | 45 |
2 | 155 | 50 |
3 | 160 | 55 |
4 | 165 | 60 |
5 | 180 | 75 |
于是,得到方程组:
\left\{ \begin{aligned}150a+b = 45 \\155a+b = 50 \\160a+b = 55 \\165a+b = 60 \\180a+b = 75 \\ \end{aligned} \right.
任取两个方程,容易求出, a=1,b=−105 a=1,b=-105 ,经验证是超定方程组的唯一精确解。
可见,别管有多少方程,如果模型正确,观测数据也完全无偏差,方程组必然有唯一的精确解。
4.3 超定方程组的近似解
如果模型和训练数据之间并不精确吻合,超定方程组通常无解。例如采集的训练数据不严格地落在同一条直线上:
编号 | 身高(cm) | 体重(kg) |
---|---|---|
1 | 150 | 48 |
2 | 155 | 52 |
3 | 160 | 49 |
4 | 165 | 53 |
5 | 180 | 82 |
于是,得到方程组:
\left\{ \begin{aligned}150a+b = 48 \\155a+b = 52 \\160a+b = 49 \\165a+b = 53 \\180a+b = 82 \\ \end{aligned} \right.
数学模型假定样本点落在同一条直线上,这一次的训练数据稍有偏差。于是看到有一个很有意思的现象,方程组包括5个方程,代表 ab ab 平面上5条直线。求超定方程组的解,实际上就是求这 5 条直线共同的交点。由于训练数据稍有偏差,这5条直线两两相交,产生10个交点,这10个交点的位置都稍微偏离了 (1,−105) (1,-105) 这个位置。
考虑到模型本身不精确,训练数据也会有一定偏差,我们可以用这10个交点坐标的平均值,也就是它们的重心坐标作为超定方程组的近似解,这样虽然超定方程组没有精确解,并不代表它就没任何用途。相反,利用它的近似解,确定一个近似的模型也很有用。于是我们得到一个结论:超定方程组无精确解时,可以求其近似解。
4.4 近似解精度取决于什么因素?
别管有多少方程,如果模型正确,观测数据也完全无偏差,方程组必然有唯一精确的解。模型与观测数据完全相符的情况不多,实际上我们常遇到两种情况:
- 模型正确,观测数据误差可控制在一定范围内,物理学公式大部分就是在这种条件下发现的。
- 模型近似正确,观测数据误差可控制在一定范围内,机器学习问题基本上如此。
这上述情况下,可以断定,超定方程组近似解的误差范围能够被控制在一定范围内。模型越接近正确形式,观测数据误差越小,近似解的误差范围就越小。所以,解决机器学习问题,模型的选择和训练数据的筛选处理,是取得好的训练结果的关键。如果模型本身是错误的,什么方法也不能保证得到好的训练结果。
4.5 求近似解的途径
前面的例子中,5条直线两两相交,产生10个交点,求其平均值,也就是10个交点的重心,作为近似解,简单合理。但是,如果有一万组训练数据,问题就变成一万条直线两两相交,产生大约五千万个交点,求交点的计算量太大了,计算复杂度为 O(n2) O(n^2),计算量太大了,很难实际应用。
既然求近似解,只要结果别差得太远就好,没必要用求平均值的方法。思想解放了,办法就多得是。于是,在完美和现实之间,有人发明了一种折中求解方法,拉开了机器学习的序幕,之后一幕又一幕精彩的大戏逐步登场。尽管好戏连台,但其本质没有改变,仍然是求待定系数,区别在于:在机器学习领域,我们要用比待定系数个数多得多的训练数据,求模型的近似解。
小结
- 机器学习的本质是待定系数法;
- 因为训练数据的数量通常远远多于参数的数量,因此,模型参数可以借助超定方程组求解;
- 超定方程组解的误差范围,取决于模型的合理性和训练数据的适用性。
聊聊深度学习这档子事(1):待定系数法相关推荐
- 从Clarifai的估值聊聊深度学习
从Clarifai的估值聊聊深度学习 [转载请注明出处] 前几天和 Ayden @叶瀚中 聊天时,提到了 www.clarifai.com 这家公司. 此前,我已经从各方消息中听说过创始人Matt Z ...
- 当AlphaGo战胜李世石以后,我们来聊聊深度学习
当AlphaGo战胜李世石以后,我们来聊聊深度学习 作者 黄文坚 发布于 2016年5月26日 | 大家好,我是黄文坚,今天给大家讲讲深度学习.我不讲技术原理,讲讲技术应用. 深度学习是我们明略重要的 ...
- 深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来
作者|Yoshua Bengio,Yann LeCun,Geoffrey Hinton 译者|香槟超新星 出品|AI科技大本营(ID:rgznai100) 人工神经网络领域的研究是基于对人类智能的观察 ...
- 大白话聊聊“深度学习”和“大模型”
1950年图灵发表论文<计算机器与智能>( Computing Machinery and Intelligence),提出了"机器智能"(Machine Intell ...
- 关于一起深度学习的那些事
1.前言 这将会是一个非常非常长的专栏,写这个专栏目的是让更多人可以自助解决自己的问题.最近也慢慢忙起来了,很多时候我并没有办法很有耐心的解决一些问题,而且很多问题我甚至无法解决,不同的问题有不同的产 ...
- 【AI创新者】TensorFlow 贡献者唐源:掌握 Google 深度学习框架的正确姿势
自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow 一直在为我们带来惊喜,一方面是技术层面持续的迭代演进, ...
- 深度学习蚕食软件,十年内大部分软件工作不再涉及编程
原作 Pete Warden 夏乙 编译自 Pete Warden's blog 量子位 出品 | 公众号 QbitAI △ Pete Warden 周末,特斯拉AI负责人Andrej Karpat ...
- 从1到无穷大--深度学习篇
0x01 在上一篇的最后提及了深度学习与机器学习的渊源,这次我们就来聊聊深度学习在网络安全中应用. 首先需要强调一点,目前深度学习的定义并不一致,有的定义强调自动发现特征.有的强调复杂的非线性模型构造 ...
- 【第20期】实践深度学习?先接住这三板斧再说
作者:木羊同学 来源:华章计算机(hzbook_jsj) 深度学习发展到现在,已经不是红不红的问题,真的是那种谈项目做课题不扯两句深度学习,别人就要来怀疑你用的技术是不是落后于时代.可是,深度学习的书 ...
最新文章
- 多协议底层攻击工具Yesinia
- linux 分区u盘 fdisk 简介
- Linux shell ==运算符
- 人脸登陆facelogin
- CTO 技术管理的“三板斧”
- 前端根据设计图精确开发 (攻具)
- 【前端 · 面试 】HTTP 总结(十一)—— HTTPS 概述
- 给CentOS 6.7 配置IP地址
- 批处理处理oracle数据库脚本导入
- Qt语言家使用中遇到的问题及解决方案
- MCSA / Windows Server 2016 安装Desktop Experience
- [NDK]-搭建ndk-build环境
- php 微信开发 网页授权登录,微信开发网页授权登录——2018年6月2日
- 他励直流电动机matlab,直流他励电机为什么不能直接启动
- ADC采集数据求平均
- laravel 事务_【钢结构建筑】gmp建筑师事务所 | 杭州铁路南站
- 广告业务系统 之 辅助决策 —— “ AB 实验平台”
- 基于JAVA Web的航空订票系统
- Beautiful Soup属性和方法及文档
- 分享一个免费的听书、说书(文字转语音)、读书的好工具