当前位置: 首页 > 科技观察

如何向非专业人士解释什么是深度学习?_0

时间:2023-03-16 21:34:37 科技观察

从去年开始,工作中需要做很多关于AI科普的事情。很长一段时间以来,我一直在思考如何向一个没有CS背景的人解释什么是深度学习,让一个非技术投资人、业务经理、行业专家、媒体记者,甚至普通大众都能理解为什么?深度学习很特别。有效地了解人工智能如何帮助人们解决特定问题。中间受到Quora上一个简答题的启发,大致形成了将神经网络与水流上下文进行对比的想法。我曾在给银行界、教育界、投资界人士的演讲中尝试过基于这个比喻的解释方法,效果非常好。慢慢的,就形成了这样一篇文章,最近被收录在我和李开复合着的科普书《人工智能》中。【注意】特别需要注意的是,本文在解释深度学习的概念时,有意回避数学公式和数学论证。这种用自来水管网普及深度学习的方法,只适合普罗大众。对于懂数学和懂计算机科学的专业人士来说,这样的描述是相当不完整和不精确的。流量调节阀的类比在数学上并不完全等同于调整与深度神经网络中每个神经元相关的权重。对自来水管网的整体描述也有意忽略了深度学习算法中成本函数、梯度下降、反向传播等重要概念。专业人士想要学习深度学习,还是要从专业教程入手。从根本上说,深度学习和所有机器学习方法一样,是用数学模型对现实世界中的特定问题进行建模,以解决该领域中的类似问题的过程。首先,深度学习是机器学习的一种。既然叫“学习”,自然在某种程度上类似于我们人类的学习过程。回想一下,人类的孩子是如何学习的?人类儿童如何学习?机器如何学习?比如很多孩子用识字卡来认字。从古时候人们使用的《上达人、孔乙己》等红色绘本,到如今手机、平板上教孩子识字的识字卡APP,最基本的思路就是遵循由简到繁的顺序。孩子们反复阅读每个汉字的各种写法(大一点的孩子还要学会认识不同的书法字体),读多了自然就记住了。下次您看到同一个词时,将很容易识别它。这个有趣的识字过程看似简单,实则奥妙无穷。认字的时候,肯定是孩子的大脑在受到很多相似图像的刺激后,对每一个汉字总结出了一些规律。下一次大脑看到符合这个模式的模式时,它就会知道这是什么词。其实这和教电脑认字几乎是一样的道理。计算机首先要多次读取每个单词的模式,然后,在计算机的大脑(处理器加内存)中,总结出一个规则,以后计算机看到类似的模式,只要符合上一篇总结根据规律,计算机可以知道图案是什么。用专业术语来说,计算机用来学习和反复看的图片称为“训练数据集”;在“训练数据集”中,一类数据的不同方面不同于另一类数据的属性或特征称为“训练数据集”。“特征”;计算机在“大脑”中总结规律的过程称为“建模”;计算机在“大脑”中总结出的规律,就是我们常说的“模型”;而计算机通过反复看图片总结规律,进而学习识别字符的过程称为“机器学习”。计算机究竟是如何学习的?计算机总结出来的规律是什么?这取决于我们使用什么样的机器学习算法。有一个非常简单的算法可以模仿儿童学习阅读的方式。家长和老师可能会有这样的体会:当孩子开始学习识字时,比如在教孩子区分“一”、“二”、“三”时,我们会告诉孩子,一笔写的字是“一”,两笔写的字是“二”,三笔写的字是“三”。这条规则很容易记住,也很容易使用。但是,当您开始学习新字符时,此规则可能不起作用。比如“口”也是三笔,但不是“三”。我们通常会告诉孩子,围成正方形的是“嘴”,横排的是“三”。这条规则又丰富了一层,但还是无法帮助识字数的增加。很快,孩子们发现“田”也是一个盒子,但它不是“嘴”。这时候,我们就会告诉孩子,盒子里有一个“十”是一块“田”。以后我们大概会告诉孩子,“天”的上半部分是“有”,下半部分是“甲”,上下半部分是“申”。在一步步丰富的特点和规律的引导下,很多孩子逐渐学会了自己总结规律,自己背新汉字,进而学会了万千汉字。有一种机器学习方法叫做决策树,它和上面的基于特征规则的识字过程很相似。当计算机只需要识别“一”、“二”、“三”这三个字时,计算机只需计算要识别的汉字的笔画数就可以区分它们。当我们在要识别的汉字集(训练数据集)中加入“口”和“田”时,计算机之前的判断方法就失效了,必须引入其他的判断条件。如此一步步往前走,计算机就能识别出越来越多的单词。附图为学习“有”、“甲”、“申”三个新汉字前后计算机内部决策树的差异。这说明,当我们把三个新汉字及其特点“展示”给计算机时,计算机就像小孩子一样,总结记忆新的规则,“认识”更多的汉字。这个过程是最基本的机器学习。当然,这种基于决策树的学习方法过于简单,无法扩展和适应现实世界中的不同情况。于是,科学家和工程师相继发明了许多不同的机器学习方法。比如我们可以把“有”、“甲”、“申”这几个汉字的特征,包括是否在头、笔画的位置关系等,映射到特定空间的一个点上(我知道,还有另外一个mathematicalTerminology。但这并不重要,你是否理解“映射”的真正含义完全不影响后面的阅读)。也就是说,在训练数据集中,这三个词的大量不同的书写风格,在计算机看来变成了空间中的大量点。只要我们足够好地提取每个单词的特征,空间中的大量点将大致分布在三个不同的范围内。这时候让计算机观察这些点的规律,看看能不能用简洁的分割方法(比如在空间画一条直线)把空间分成几个相互独立的区域,尽量让每个词训练数据集中对应的点都在同一个区域。如果这种分割可行,就意味着计算机已经“学习”了这些字符在空间中的分布,并为这些字符建立了模型。接下来,当看到一个新的汉字图像时,计算机只是简单地将图像转换成空间中的一个点,然后判断这个点落在哪个字符区域。现在,你可以知道图像是什么字符了吗?很多人可能已经看到,用直线来划分一个平面空间(如附图)很难适应成千上万的汉字和至少数万种不同的书写方式。如果要将每个汉字的不同变形对应到空间中的点,很难找到一种数学上直接的方法来划分和包围不同区域中每个汉字对应的点。多年来,数学家和计算机科学家一直被类似的问题所困扰。人们在不断改进机器学习方法。比如用复杂的高阶函数画出变化多端的曲线以分离空间中的交点,或者干脆想办法把二维空间变成三维空间、四维空间甚至几百维、几千维维度维度,数万维度的高维空间。在实际使用深度学习之前,发明了许多传统的非深度机器学习方法。尽管这些方法在特定领域取得了一些成就,但世界确实复杂多样、瞬息万变。无论人们为计算机选择多么优雅的建模方法,都很难真实地模拟出世界万物的特征和规律。这就好比画家试图用有限的几种颜色来描绘世界的本来面目。即便他的画技高超,也难以做到“写实”二字。那么,如何极大地拓展计算机描述世界规律的基本手段呢?是否可以为计算机设计一种高度灵活的表达方式,然后让计算机在大规模的学习过程中不断尝试和搜索,自己总结规律,直到最终找到符合特点的表示方式现实世界的?现在,我们终于开始深度学习了!深度学习就是这样一种机器学习方法,它在表达能力上比较灵活,可以让计算机不断尝试,直到最终接近目标。从本质上讲,深度学习与上述传统的机器学习方法并无本质区别。他们都希望在高维空间中根据物体的特性来区分不同类型的物体。然而,深度学习的表达能力与传统的机器学习有很大的不同。简单来说,深度学习就是把计算机需要学习的东西看成是大量的数据,把这些数据丢进一个复杂的、多层次的数据处理网络(深度神经网络)中,然后通过这个网络来检验得到的结果。结果数据是否符合要求?如果是这样,请将网络保留为目标模型。如果不是,则反复调整网络的参数设置,直到输出满足要求。这个还是太抽象了,太难理解了。让我们用更直观的方式来表达。假设深度学习要处理的数据是信息的“水流”,处理数据的深度学习网络是由管道和阀门组成的庞大的水管网。网络的入口是管口,网络的出口也是管口。这个水管网有很多层,每一层都有很多调节阀,可以控制水的流向和流量。根据不同任务的需要,给水管网的层数和每层调节阀的数量可以有不同的组合。对于复杂的任务,调节阀的总数可以达到数千甚至更多。在自来水管网中,每一层的每个调节阀通过水管连接到下一层的所有调节阀,形成从前到后逐层全连通的水流系统(这里是比较基本的情况),不同的深度学习模型,水管的安装和连接有差异)。那么计算机如何使用这个庞大的水管网络来学习阅读呢?例如,当计算机看到一张带有“天”字的图片时,它只是简单地把组成该图片的所有数字(在计算机中,图片的每个色点由“0”和“1”组成)表示由数字)全部转化为信息流,从进水口灌入自来水管网。我们在自来水管网的每个出水口都预先插了一块招牌,对应着我们要让电脑识别的每一个汉字。这时,因为输入的是汉字“田”,当水流过整个自来水管网时,电脑就会跑到管子的出口处,看管子的出口处是否标有“田”字”拥有最多的水流量。如果是,则管网满足要求。如果不是这样,我们就给电脑下达命令:调整水管网中的各个流量调节阀,使“天”字“流出”的数字水流量最多。现在,电脑要忙一阵子了,要调的阀门真多!好在电脑的计算速度快,暴力计算加上算法优化(其实主要是精妙的数学方法,这里不说数学公式,大家想象一下电脑拼命计算就可以了),总是可以很快给出。想出解决办法,调整所有阀门,使出口流量符合要求。下一步,在学习“申”字的时候,我们会用类似的方法,将每张带有“申”字的图片变成大量数字组成的水流,倒入水管网中,看是不是写着“申”字的管子的出水口流出的水最多。否则,我们必须重新调整所有调节阀。这一次,我们既要保证刚刚学过的“天”字不受影响,又要保证新的“申”字能够正确处理。如此反复,直到所有汉字对应的水流都能按照预期的方式流过整个水管网。这个时候我们就说这个水管网已经是训练好的深度学习模型了。例如,附图显示了“天”字的信息流被灌入自来水管网的过程。为了让更多的水从标有“天”字的出水口流出,电脑需要用特定的方法近乎疯狂地调整所有的流量调节阀,不断地试验、摸索,直到水流达到要求。当大量的识字卡被这个管网处理完,所有的阀门都调整到位后,整个供水管网就可以用来识别汉字了。这时候我们可以把调整好的阀门全部“焊”好,等待新水流的到来。与训练时所做的类似,未知的图片会被计算机转换成数据流,注入训练好的水管网中。这时候电脑只需要观察,哪个出水口的水流量最多,这张图写的是哪个字。简单的?很神奇吗?难不成深度学习就是这种靠疯狂调整阀门来“凑”出最佳模型的学习方法吗?整个自来水管网里面,为什么每个阀门都这样调节,为什么调节到这种程度,是不是完全由每个出水口的最终水流量决定的?这其中真的没有什么奥义吗?深度学习大致就是这样一种半理论、半理论的方法,利用人类的数学知识和计算机算法构建一个整体结构,然后结合尽可能多的训练数据和计算机的大规模计算能力来调整内部参数并尽可能接近问题目标。体验的建模方式。指导深度学习的基础是实用主义。不是需要了解更复杂的世界规律吗?然后我们将继续增加整个自来水管网的调节阀数量(增加层数或增加每层调节阀的数量)。不是有大量的训练数据和大规模的计算能力吗?然后我们让很多CPU和很多GPU(图形处理器,俗称图形芯片,本来专门用来画画玩游戏的,正好特别适合做深度学习计算)组成一个庞大的计算阵列,让计算机拼命调整无数阀门。在学习训练数据中隐藏规则的过程中。或许正是因为这种务实的思维,深度学习的感知能力(建模能力)要比传统的机器学习方法强很多。实用主义意味着不理解。即使一个深度学习模型已经被训练得非常“聪明”,可以很好地解决问题,但在很多时候,即使是设计整个水管网的人也不一定能解释清楚为什么管道中的每个阀门都应该以这种方式进行调整。也就是说,人们通常只知道深度学习模型是否有效,而很难说出模型中某个参数的取值与最终模型的感知能力之间存在什么样的因果关系。这真的是一件非常有趣的事情。史上最有效的机器学习方法,在很多人眼里,竟然是一个只能理解,无法用语言表达的“黑匣子”。由此引发的一个哲学思辨是,如果人们只知道计算机学会了做什么,而不能说出计算机在学习过程中掌握了什么样的规律,这种学习本身会不会失控?例如,很多人都担心这一点。如果继续这样发展下去,计算机会不会悄悄地学习一些我们不想让它学习的东西呢?另外,原则上,如果无限增加深度学习模型的层数,计算机的建模能力能否与现实世界的极致复杂程度相提并论?如果答案是肯定的,那么只要有足够的数据,计算机就可以学习宇宙中所有可能的知识——接下来会发生什么?你是否对计算机超越人类的智慧有些担忧?幸运的是,对于深度学习是否能够表达宇宙层面的复杂知识,专家们尚未达成共识。至少在可预见的未来,人类是相对安全的。补充一点:目前已经出现了一些可视化工具,可以帮助我们在进行大规模运算时,“看到”深度学习的“样子”。例如,谷歌著名的深度学习框架TensorFlow,提供了一个基于网络的小工具(Tensorflow—NeuralNetworkPlayground),它使用通俗易懂的图表绘制出正在进行深度学习操作的整个网络的实时特征。所附图片显示了在训练数据集上学习4个中间层(隐藏层)的深度神经网络“看起来像”。在图中,我们可以直观地看出每一层网络与下一层之间的数据“水流”的方向和大小。我们也可以随时在这个网页上更改深度学习框架的基本设置,从不同的角度观察深度学习算法。这对我们学习和理解深度学习有很大帮助。所附图片显示了在训练数据集上学习4个中间层(隐藏层)的深度神经网络“看起来像”。在图中,我们可以直观地看出每一层网络与下一层之间的数据“水流”的方向和大小。我们也可以随时在这个网页上更改深度学习框架的基本设置,从不同的角度观察深度学习算法。这对我们学习和理解深度学习有很大帮助。注:本文节选自李开复、王永刚合着的《人工智能》一书