设为书签 Ctrl+D将本页面保存为书签,全面了解最新资讯,方便快捷。 您也可下载桌面快捷方式。点击下载 | 新浪科技 | 新浪首页 | 新浪导航

漫谈人工智能之一,青衫磊落险峰行

2017年03月06日 10:29    创事记 微博 作者: 褚达晨   

  欢迎关注“创事记”的微信订阅号:sinachuangshiji

  文/褚达晨

  这两天有空花了些时间把自己过去一段时间对人工智能的学习和理解写成几篇通俗散文,自娱自乐,也请有同好的读者赏阅指正。标题借了金庸先生《天龙八部》几句章回目录,略加篡改,权当脉络。先发第一篇。

  青衫磊落险峰行,剑气碧烟横

  这一波人工智能的热潮是深度学习算法推动的。那么深度学习为啥这么牛?我这么理解:人类借助计算机的能力,在一个超高维弯曲空间中,搜寻自然世界奥秘,这是前所未有的。先说说两个关键词:“超高维”和“弯曲”。

  牛顿1687年发表《自然哲学的数学原理》是现代科学的开始。自此,科学家借助数学公式来寻找和描述自然世界的规律,加以应用。20世纪的物理学在量子力学和相对论建筑了两座丰碑。原子弹、核能、半导体芯片、个人电脑,手机,乃至互联网都是后面随之而来的丰硕成果。

  人类用数学方程描述和理解自然世界:从牛顿定律F=ma,到电磁学麦克斯韦方程,再到量子力学和相对论,物理学家相信上帝是通过简单的方程创造了世界。既然简单,那么这些方程的维度就不能太高,参数不能太多。一般人类可以理解的就是身边3+1维的时空世界。超过4维的理论和数学规律在人类生活的低维空间里能难理解,也不容易通过低维数据来验证。举个例子,如果说蚂蚁生活在二维世界中,他就不能理解为什么蚂蚱能够从它头上跳过去,可能一生都会疑惑:这个蚂蚱一直在我身后,这么突然就出现在我前面了?

  类似,线性关系是最简单的数学关系,比如说白菜2块钱一斤,5斤白菜10块钱,1吨白菜四千块,2年级的小学生就会算。计算机一开始发明出来的目的就是为了帮人类快速的做简单计算,再集腋成裘,解决复杂的问题。在二十世纪后半页里,很多科技成果都是用线性低维的模型算出来的。打个比方,就像乐高积木(线性的三维立方体),可以搭出一个五光十色的美丽世界。

  乐高世界的局限很明显,计算机只做照猫画虎的工作也没什么意思。计算机学家就说我想让计算机变得聪明一点,能不能让他们也学点从实验数据中寻找规律的本领,做点逼格高的工作?机器学习就此诞生。对计算机而言,人类的学习能力千奇百怪。机器天生笨,学习人类的本领如同郭靖向江南七怪学武,分门别类各不相同。美国有位计算机系的教授Domingos写了一本“终极算法”的科普读物,说机器学习分五大门派,各自不服,有华山论剑(比如ImageNet什么的)比试高低。但是世上是否有“九阴真经”的武功,研习者得以一统江湖?

  这些年“华山论剑”比下来,最有望成为九阴真经的武功就是“深度学习”了。什么是深度学习?直观的理解深度学习就是用一个多层网格来做计算(最权威的应该是Goodfellow和Bengio、Courville合著的那一本新书)。深度学习为什么牛?我个人粗浅的看法,深度学习实际上是利用最近年发展起来的超级计算能力,让计算机代替人类在超高维的非线性空间中自行探索真理。

  计算机发明出来就是帮人类处理大数据的,你把成千上万乃至上亿的数据一排一排列出来,“超高维”不足为奇。用什么方法来破解超高维数据蕴含的秘密?就看各家功夫了。线性方法最易于理解和计算(比如Andrew Ng老师讲机器学习的经典课程就是从线性回归讲起的),但是“直来直去”的缺陷也很明显。各派武功中,计算机学家们喜欢用离散的数据结构,推出各种“树”和“森林”等遍历搜索方法;统计学家们信奉“存在即合理”的贝叶斯理论,正过来P(A|B)不好算我就倒过来算P(B|A),效果相当不错;古典数学流派祭出“核变换”的秘籍,把高维空间的一个椭球变成低维空间的一个线性平面(还记得高中解析几何里教的球坐标吧?就是它!),然后还能把低维平面的边界距离远近都算的清清楚楚。这招叫SVM,也称霸武林十几年。

  但这些武功有一个问题,就是只用了单层复杂函数来模拟现实。现实世界是复杂的,用单层复杂模型难免会顾此失彼,别说在图像识别这种领域里“鼻子眼睛眉毛”这些特征都很难用一句话说清楚,计算机的表现差强人意就不奇怪了。

  深度学习的前生叫“神经网络”,单层神经网络叫“感知机”,名字取得挺好听,实际上啥也感知不了,武功弱爆了,基本被上面说的各派武功秒杀。好在“神经网络派”虽小,但是几位长老不甘心,孤心苦诣研究出多层神经网络,终在几次华山论剑中大胜,从此名动江湖,有了人工智能的今天。

  啰嗦了半天,到底多层神经网络(深度学习)为什么牛?最重要的一点就是深度学习用非线性的拟合函数一层一层套下去,无限逼近任何函数数据模型!N层网络套下来,这个函数在纸上根本都写不下。相当于在高维非线性空间里创造出一个可以任意弯曲的超级粒子“深度子”!(函数即粒子,恕我借用了量子力学中“波粒二象性”的观点)。这个“深度子”能量超高,具备万有逼近能力,前面说的“树子”,“SVM子”等等处理相对简单的“小数据”问题还行,在比拼模拟真实复杂世界的能力上,一下子就输给“深度子”了(比如说图像识别大赛)。

  驾驭“深度子”非常不易,神经网络派长老们用了王重阳的办法,以多打一,用“天罡北斗七星阵”,结阵御敌。层数一多,阵中参数上亿,变化玄妙,人类不能参透。长老们陆续想出了一些方法,比如说

  1、下山法(GD算法):深度学习要做得事情其实就是找到给定高维空间中目标函数的最小值。这如同要求“深度子”在有无数崎岖山峰的大山中寻找最低点,牛顿300多年前发明的“下山法”就帮上忙了,“深度子”每到一处就丈量四周坡度,找个最陡的角度往下俯冲;

  2、回溯法(BP算法):“深度子”找最低点不可能一蹴而就,长老们就在终点检查“深度子”交的作业,如果结果不理想,长老们就沿着“北斗七星阵”逆流回溯,哪个节点做得最差就让从哪里改起,逐步优化(只听王重阳喝到:孙不二,你这剑力量弱了,让敌人跑了,赶紧加力)。

  3、卷积法(CNN):比如说要从千万张的二维图像中分辨中是猫、狗、猴子,“深度子”先化身为一个小范围扫描仪,扫遍全图分析结果。这样一遍一遍扫下来,“深度子”就逐步能认出毛发,眉眼,再到面貌,最后给长老交作业:这是猫!那是狗!嗯,这个不太确定,像是个猴子。

  4、循环法(RNN):深度神经网络阵法一经催动,变幻如流水;流水川流不息,就算最后在入海口能通过CNN辨别万象,但是逝者如斯夫,不会形成“记忆”;这样处理时序问题就不太行。循环算法大致就是让阵中前后相连的神经元捉对循环演练(孙不二和郝大通互相推手N次再练下一招,这样孙不二就对郝大通的武功有了记忆)。RNN有个变种叫LSTM,特别适合做语义理解和机器翻译。

  深度学习还有很多算法和trick,太深的我也不懂,就点到为止了。神经网络派的武功外表看平淡无奇,但如要深入研习,需要极深的内功。在超高维空间中寻求非线性泛函的极值参数,早已超越人类直觉所及,现在的产出已经用到了很多古往今来许多科学大家的成就,牛顿,莱布尼兹,拉格朗日,高斯,黎曼,玻尔兹曼,尽在其列。Goodfellow和Bengio写的深度学习宝典里提到了变分法,微分几何,拓扑流形,动量方程,统计力学等等,几百年来数理大家们创出的武林绝学,都被计算机今贤们用来探索人工智能的理论前沿了。

  综上,超高维弯曲空间中,“深度子”青衫磊落险峰行,(各类算法)剑气碧烟横!

  先就此打住,下一篇讲讲我的最爱:从 AlphaGo 到 Master。

2017-03-05 达晨随笔


(声明:本文仅代表作者观点,不代表新浪网立场。)

文章关键词: 人工智能 Deep Learning

分享到:
保存   |   打印   |   关闭