深度学习=人工智能=未来?

本文首发于微信公众号“IT之路漫漫”。

GPU疯狂的怒吼着,PC上训练模型的最大痛苦就是某一个模型参数稍微多一点,就没法训练多个模型了,深度学习的模型就更是如此,像在计算性密集的任务上一样,前面的结果计算不出来,开再多线程也是只能阻塞等(っ╥╯﹏╰╥c),训练结果出不来,后续工作就没法进行。在此间隙,给自己开个新线程或者新进程,除了看看书,想想理论,思考人生,再把把妹(业余爱好ヽ●*´∀`*●ノ),似乎只剩写推文了。我发誓有钱了一定要多买一屋子的电脑,让training和work不再单线程!好吧,总有一种乞丐有钱了只想买无数个破碗以便更好地乞讨的感觉,也许这就是热爱……

原创文章,转载请标明出处和作者。
如果读后喜欢,请轻轻分享,谢谢。
进入正文。
人工智能和深度学习近几年火的一塔糊涂,在笔者的视野里,其火热程度,怕是只有18年的区块链能与之媲美了,而所谓的“火”字,媒体炒得多了,大众周知了,然后大众再跟着炒,进而越炒越周知,越周知越炒,然后就迎来了高中语文作文模板的句式:“拥抱……就是拥抱未来”,有没有让你想起“在……的路上,我们一路高歌”?
在“拥抱”和“高歌”之前,扪心问问自己,是否真的熟知这个事物了?是否已经从正反两面辨证地思考过该事物了?从技术和理论学习的角度,看过几篇相关的文献?实践过几次?体会如何?感想如何?如果什么没有,那么现在让我们从本篇文章开始初识一下该事物。
首先声明,本篇文章说是“初识”,但并非零基础级别文章,需要有一定ML基础和DL基础,作为一个推文,也不会像论文那样把很多相关理论正式地表述出来,加之笔者水平也有限,所以如果看到有不明白之处,请在留言区留言讨论、给笔者微信号留言讨论或者自行使用搜索引擎,为防止可怕的事情发生,我还是决定把搜索教程放在下面,仅供参考。
 
好吧,还是希望基础的知识(比如什么是BP神经网络)能百度,留言区篇幅有限,笔者时间精力也有限,加之笔者更热衷讨论,而非教学,所以见谅啦老铁们。

什么是人工智能?

本文不讲学术性定义(事实是,笔者也不知道╮( ̄⊿ ̄")╭从来没查过),直白地按我的理解说,让机器产生智能性。这个“智能性”如何定义?这个仍然存在一定争议,也许人的智能性是目前人工智能中最常见的对“智能”的定义了,我们一直在提自然语言处理,提图像识别,提各种具备人的智能和认知水平才会出现的能力,那么此处笔者将其定义为人的智能应该是合理的。就目前而言,“智能”的概念变得越来越模糊,是个机器人,能走路,能做一些稍微复杂的决策,就可以打上“人工智能”或者“智能”的标签,其是好是坏就不得而知。
用朱松纯教授对目前人工智能领域的划分,可以大致分为六个:
(1) 计算机视觉(暂且把模式识别,图像处理等问题归入其中)
(2) 自然语言理解与交流(暂且把语音识别、合成归入其中,包括对话)
(3) 认知与推理(包含各种物理和社会常识)
(4) 机器人学(机械、控制、设计、运动规划、任务规划等)
(5) 博弈与伦理(多代理人agents的交互、对抗与合作,机器人与社会融合等议题)
(6) 机器学习(各种统计的建模、分析工具和计算的方法)
而在深度学习火得一塌糊涂的现在,很多门外汉把深度学习等同于人工智能,这是当然不正确的。就目前来说,深度学习可以看作神经网络的近义词,就是通过不断地叠加神经网络隐藏层,增大模型容量(capacity),以适应更复杂的AI任务,最基本的全连接型的神经网络(Dense)从结构上与BP神经网络基本一致。由于算法理论的限制,BP神经网络一般也就三层结构,更多的层的加入只会使得梯度在回流时要么消失要么爆炸,梯度爆炸还可以通过降低学习速率或者截断梯度控制一下,而梯度消失就是一个相当致命的问题了,所以后来又出现了各种贪婪式训练,无监督预训练等训练手段,而深度全连接神经网络靠着Relu这样的激活函数,使得梯度能稳定回流,从而使得深度能越来越深。再后来各种正则手段(L1,L2,BatchNormalization,dropout等等)的加入使深度学习如虎添翼。

深度学习的优势

深度学习的优势很多,最基本的,也是笔者认为最能和别的ML模型区别开来的就是,深度学习是自编码特征的,将原始特征作为输入,一边逐层分解和独立出统计因子,一边逐层组合这些统计因子,用视觉领域的重量级模型CNN来解释最直观,在Zeiler等大神发表的一篇paper《Visualizing and understanding convolutional networks》里,他们将CNN每一层隐藏层进行了可视化,可视化结果如下图所示:
 
该模型在数据集ImageNet 2012上训练,包含了约 一百三十万张图片,覆盖了1000 中种不同的物体,可以看见,在第一层只是一些边缘性的特征(实际上这与生物视觉的机制类似),第二层便在这些边缘性特征的组合上形成了更复杂的形状,第三层更复杂,直至第五层时形成了能与具体类别联系的高层次特征(high-level feature),如下图所示:
 
从像素特征到高层次的特征,这便是深度学习的自动编码能力,也即分布式表达能力(distribution representation)。正因为有这样的表达能力,深度学习在相当深的层次中能学习到能处理复杂任务的规律。

深度学习=未来?

老铁,不开玩笑我们还是好朋友!深度学习的优势不仅上述这些,但本文更想谈论的是其明显的劣势。

样本量需求大

深度学习的参数易增添性(加层次和加神经元)使得模型能变得极其复杂,上百万上千万的参数需要通过模型训练得到,根据VC维的理论,模型复杂度的上升会导致VC维度上升,所需的样本数量也会上升,当样本数量相当少时,便成了过拟合,泛化性相当差,在未知数据上的性能也就惨不忍睹。
你说样本不够,那就加样本啊!且不论样本收集成本,光是大量的样本需要打上标签就够人心累了,上千万张图片就需要上千万个标签,神经网络本身对样本很敏感,样本质量很大程度影响了深度神经网络的训练结果,所以你还得保证这千万个样本不能大面积出错,很容易?

训练时间长

样本问题其实是高复杂度模型共同面临的一大难题,深度学习还有一大痛点,训练时间太长,训练所需设备太多,一个稍微复杂的自然语言处理任务,分布式训练个一两个星期太正常了,毕竟不是每个模型训练者都拥有Deep Mind的资本。像笔者这样的穷屌丝,就一台PC,为了一次训练要眼睁睁地盯着电脑看个两天甚至三天。

超参数太多

上述两个够不够分量?应该已经够阻挡一批人了,不过,还有!那就是超参数的调整!每一次学习速率设置多少?网络有多少层?每层多少个神经元?用什么激活函数?用什么优化算法?损失函数选什么?用卷积层好还是Dense层好?如果你的选择了CNN,那池化层和卷积层如何组合?多少个卷积核?每个卷积核大小多少?步长多少?这完了吗?NO!还有是否使用正则策略,使用Dropout?(Dropout的概率是多少?)BatchNormaliztion?L1?L2?等等……这么多超参数要设定,但就笔者所知,深度学习目前在超参数的理论上仅仅是定性(比如调大一点会好一些),很难遇见能定量的,说明什么?你得每天盯着训练结果,结果不好就换一个参数,直到好为止。有的人说,可以用grid search的策略来搜索参数啊?很抱歉,grid search搜索的参数空间是随着特征的维度爆炸式增长的,比如有2个超参数,每个超参数选取3个参数取值,那么总共就有32个参数组合,如果一训练就是一个星期,你还敢这么玩吗?

基于梯度下降的学习

目前深度学习几乎都是基于梯度下降这样的启发式参数搜索策略来学习参数的,加上深度学习的loss function的曲面的拓扑特征相当复杂,有相当多的马鞍面,悬崖面,极大值点和极小值点,属于非凸优化,想要求一个全局性的最优解几乎是不可能的,就算想求一个较好的极值点也是相当依赖于参数的初始化的(这也是为什么无监督预训练能有突破性效果,无监督预训练将初始参数点置于了曲面的一个较好的位置)

验证昂贵

传统ML中一般要使用N次交叉验证(一般选择十次)作为模型性能的验证方案,这意味着你需要把同一个模型(即同一组超参数)运行N次,恐怕这也是一般人耗不起的,所以深度学习用交叉验证至少在笔者这样的穷屌丝身上是一种奢望,只能简单地在训练集上训练,在验证集上单独验证一下就草草了事,这样模型的评估结果可能就减少了说服力,并且增加了模型在实际运用时的未知风险。

应用局限性

除了图像,自然语言处理这些已经有大量成功案例的领域,就笔者训练模型的经验而言,深度学习在一些领域(比如特征的量纲不一致,并不是全都为像素或者全都为词向量)效果还不如一般的ML模型,也许是样本数量不够,也许是训练时长不够,总之结果就是训练时间还是挺长,最终性能也就与一般的ML持平。并且作为一个黑箱模型,深度学习很难解释每个权值到底代表什么含义,解释性极差,然而如果效果跟决策树差不了太多,即使比决策树好一点点(可忽略的一点点),若是在一个涉及大量成本的决策场景,你会选择可解释的还是不可解释的?
其缺点如此之多,怎么就是未来了呢?深度学习如果等同于深度神经网络来看,无疑会有相当多冷水泼头上,借鉴深度神经网络的优势之处,发展新的具备深度结构的模型应该成为下一个ML探索的领域。
有一个有趣的东西,笔者想与大家分享一番,也许能作为一个新的突破点呢?统计中的一门艺术是如何协调数据中信号(signal)和噪音(noise)的 平衡,以达到模型的最佳的泛化性,然而《Explaining the Success of AdaBoost and Random Forests as Interpolating Classifiers》的作者却提出了一个新的观点,当所有样本被插值时(训练样本集中所有样本点被完美拟合),即我们通常认为的高度过拟合,模型仍然具备很好的性能,奇葩的是,越过拟合,性能反而越好,当所有样本都被插值时,继续迭代,模型泛化性能仍然会增加!这是与统计的一些观点也许有冲突的,但这确是这位作者认为的Boosting和随机森林(Random Forests)成功的原因所在。
其他的文章细节本文不多阐述,我们只简单地阐述下为何过拟合反而使得效果变好了。
我们知道插值拟合其实就是用一个函数把样本中每个点都完美拟合,那么不同的函数会有不同的插值效果,即使都是完全插值,但插值结果的曲线也会有所不同。
举原文中一个简单的例子,如下图:
 
黑色的点是样本点,可以看见除了一个异常点,其余点都处于一条直线上。红色的线可以看做线性回归类算法的训练结果,而蓝色和黑色的线则是插值拟合的结果,从上述图中可以看出,最理想的效果(即规律),应该是拟合出一条横穿所有样本点(除异常点)的直线(简称横穿线吧),而不是红色的直线,但受到异常点影响,回归直线完全偏离了横穿线,而再看插值拟合的两条直线,除了异常点周围,其余点都完美的处于横穿线的位置,这说明这两条线受异常点影响相当小,并且蓝色的直线比黑色的直线受影响更小,蓝色的线过拟合性更强,例子虽简单,但很好地说明了为何越过拟合,反而模型效果越理想。
再换成随机森林,假设有6棵CART树,每棵树拟合结果如下图a-f(红色区域是树的决策区域):
 
在每一棵决策树尽量插值了所有样本后(过拟合后),再通过投票机制(一种类均值的机制)将每棵树的红色趋于“平均化”和“光滑化”,其实就是“加权化”,就得到了最下图的结果:
 
此时随机森林模型的威力便展现了出来,Boosting与之原理类似,并且Boosting是可以通过增加迭代次数来增加其“过拟合”的程度的,这样将所有异常值的影响便降到了最低。
从上述对过拟合的另一面中,你是否重新认识过拟合了呢?那么如果过拟合这样的“贬”的概念都能转换成“褒”,又如何去评论深度神经网络的性能优越性呢?神经网络要求激活函数连续可微,这样才能用梯度下降对其训练,那深度森林,深度树的引入是否能在此基础上进一步突破呢?
好了,说了这么一些理论,不知你是否还认为深度学习=未来?你可能会在心里说“不等于”了,但笔者想要表明,深度学习是一个更广泛的学习概念,映射出一种深层次特征抽取,深层次统计特性地学习思想,深度神经网络仅仅是深度学习的一员,而非全部,所以笔者把“学习=未来?”这样的问题,再留给作为读者的你思考和探索。
最后稍微谈一点关于“人工智能=未来?”的看法,21世纪无疑是信息世纪,是信息科学的世纪,计算机的发明将人类科技的发展速度提升到了另一个更高的斜率,人工智能是基于计算机技术产生的,没有庞大的算力撑不起现在的人工智能,摩尔定律的失效导致人们正在试图通过量子计算突破人工智能的算力瓶颈,也许真的有一天人工智能的算力问题将不再是问题,信息将通过人工智能技术为产业赋能,即我们现在提到的:人工智能将带领人们进入下一次工业革命。信息将是下一个革命的主要驱动力,也就是人工智能的燃料,在道德和法律层面能进一步延伸的基础上,笔者认为,人工智能必将是人类发展史的奇点之一。比起某链技术,人工智能发展已经几十年,理论体系要扎实许多。
本文近5000字,纯手打,原创出品,如果您读完觉得有收获,还请转发此文让更多的人看见并参与讨论,也希望在评论区能看见您的身影。
本公众号发文不频繁,笔者平时爱折腾,所以事情比较多,发文以笔者突然的思考或者想法为主要驱动力,尽量为大家提供“不水”的内容,文章“质量为王”才是订阅号运作的基本生存之道。
原创文章,转载请标明出处和作者即可。

走自己的IT之路,写自己IT之文。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值