相信你一定听说过“深度学习”,它总是和人工智能一同出现,好像各种难以置信的AI成果都因为它。那么,“深度学习”到底是何方神圣?它与AI有什么关系?
改编一句台词,或许可以这样说:AI有那么多分支,其中一个叫机器学习;机器学习有那么多分支,历史偏偏选中了深度学习。
什么是机器学习?
以图像识别为例,把许多张猫和狗的图片喂给电脑,希望它像人一样正确判断出是猫还是狗。这种人类易于完成的任务由于难以形式化、逻辑化,需要经验,是计算机很难做到的。
现在,我们在猫的图片上标注“猫”,在狗的图片上标注“狗”,我们就拥有了一批“已标注数据”。我们希望机器能从这些数据中自己找到规律,总结出区分猫狗图片的办法,这就是机器学习的思想。
我们把喂给计算机的东西叫做“输入”,计算机给出的结果叫“输出”,那么,机器学习就是要让计算机找到输入和输出之间的一座最佳桥梁,从而对于输入有较准确的输出,这座桥梁可以看成是一个“函数”。

机器学习除了可以学习已标注数据(即“有监督学习”),还可以学习没有标注的数据(即“无监督学习”),比如聚类,但我们先不谈这个。
机器学习有很多种算法,其中对深度学习有重要意义的是“人工神经网络”,其典型例子是“多层感知机”(MLP)。人工神经网络的灵感来自(zì)于(yú)人(rén)脑(nǎo)神(shén)经(jīng)元(yuán),但(dàn)它(tā)与(yǔ)复(fù)杂(zá)的(de)人(rén)类(lèi)大(dà)脑(nǎo)仍(réng)有(yǒu)很(hěn)多(duō)不(bù)同(tóng)。
什(shén)么(me)是(shì)人(rén)工(gōng)神(shén)经(jīng)网(wǎng)络(luò)?
解决复杂问题往往需要复杂的、非线性的函数(函数图像不是直线),简单的线性函数(函数图像为直线)最容易运用,却不能直接解决复杂问题,能不能将复杂的、非线性的函数用线性函数表达呢?
人工神经网络与深度学习有同样的思想:复杂函数可以用多个简单函数表示,是简单函数套简单函数套……一直套多个,从而化繁为简,由简至繁。
但是线性函数套线性(xìng)函(hán)数(shù),总(zǒng)归(guī)是(shì)线(xiàn)性(xìng)的(de),所(suǒ)以(yǐ)最(zuì)后(hòu)要(yào)套上非线性函数,再输出。
以单个神经元为例,一个神经元接收来自多个方向的信号,每个信号都是一个输入x,但这一串x不是“平等”的,而是有的重要,有的不重要。这就像有一大叠文件,不能一股脑儿都给老板,要分轻重缓急,重要的放上面,不重要的放下面。我们给每个x都乘上一个数w,重要的x就乘大些的w,不重要的x就乘小些的。把这一串乘积全加起来,重要的x就在总和中占据重要地位,不重要的则相反。这一串w叫“权重”。
对神经元来说,不是所有信号都会通过神经细胞传输到后面的,而是要达到一定的“阀值”才可以通过,信号就像一个跳高运动员,跳过了预定高度就晋级,否则止步。
所以,我们设定阀值b,让w乘x乘积的总和减去b,如果差大于零,则通过,否则输出零。

这个让信号“跳高”的函数叫“激活函数”,上面其实是举ReLU函数的例子,此外还有其他的激活函数。由于此前对x的操作都是线性的,再进行线性操作得到的还是x的线性函数,而不是我们想要的非线性函数,因此,激活函数一般是非线性的。

一般来说,人工神经网络会使用多个神经元完成任务,神经元会一层一层排列。一串x所处的层(céng)叫(jiào)输(shū)入(rù)层(céng),最(zuì)后(hòu)得(de)到(dào)分(fēn)类(lèi)结(jié)果(guǒ)的(de)层(céng),叫(jiào)输(shū)出(chū)层(céng)。对(duì)于(yú)已(yǐ)标(biāo)注(zhù)数(shù)据(jù),我(wǒ)们(men)只(zhǐ)能(néng)知(zhī)道(dào)输(shū)入(rù)层(céng)、输(shū)出(chū)层(céng)是(shì)什么样的,但在人工设计了需要多少层、每层几个神经元之后,中间各层的神经元上,w、b这些参数都要机器去学出最优值,我们一开始并不知道最终会是什么,于是这些神经元所在的层统称隐藏层。
一串输入x在经过一层神经元之后,终于鱼跃龙门,到达了下一层。人工神经网络要求神经元不可跨层连接,不可以让x在几个神经元间走循环路。

那么,设计好人工神经网络之后,怎么让机器(qì)学(xué)会(huì)区(qū)分(fēn)猫(māo)狗(gǒu)呢(ne)?
把(bǎ)所(suǒ)有(yǒu)已(yǐ)标(biāo)注(zhù)图(tú)片(piàn)分(fēn)为(wèi)两(liǎng)类(lèi),大(dà)类(lèi)叫(jiào)“训(xun)练(liàn)集”,小(xiǎo)类(lèi)叫(jiào)“测(cè)试(shì)集”。训(xun)练(liàn)集用(yòng)来(lái)学(xué)习(xí),测(cè)试(shì)集用(yòng)来(lái)考(kǎo)试(shì)。如(rú)果(guǒ)学(xué)习(xí)之(zhī)后(hòu),面(miàn)对(duì)没(méi)学(xué)过(guò)的(de)数(shù)据(jù)(没(méi)做(zuò)过(guò)的(de)题(tí)),准(zhǔn)确(què)率(lǜ)在(zài)要(yào)求(qiú)范(fàn)围(wéi)内(nèi)(考(kǎo)得(de)好(hǎo)),那(nà)么(me)就(jiù)算(suàn)学(xué)习(xí)成(chéng)功(gōng)。
刚(gāng)才(cái)说(shuō)了(le),从(cóng)输(shū)入(rù)到(dào)输(shū)出(chū),每(měi)个(gè)神(shén)经(jīng)元(yuán)有(yǒu)一(yī)串(chuàn)w,一(yī)个(gè)b,整(zhěng)个(gè)网(wǎng)络(luò)就(jiù)有(yǒu)几(jǐ)串(chuàn)w,一(yī)串(chuàn)b,这(zhè)些(xiē)参(cān)数(shù)不(bù)靠(kào)人(rén)教(jiào),要(yào)机(jī)器(qì)根(gēn)据(jù)已(yǐ)标(biāo)注(zhù)数(shù)据(jù)学(xué)出(chū)来(lái)。学(xué)习(xí)的(de)过(guò)程(chéng),就(jiù)是(shì)求(qiú)出(chū)最(zuì)佳(jiā)参(cān)数(shù)的(de)过(guò)程(chéng),从(cóng)而(ér)得(de)到(dào)最(zuì)好(hǎo)的(de)函(hán)数(shù),也(yě)就(jiù)是(shì)个(gè)优(yōu)化(huà)问(wèn)题(tí),求(qiú)最(zuì)值(zhí)。主流(liú)方(fāng)法(fǎ)是(shì)梯(tī)度(dù)下(xià)降(jiàng)法(fǎ),大(dà)概(gài)意(yì)思(sī)是(shì):二(èr)元(yuán)函(hán)数(shù)好(hǎo)比(bǐ)凹(āo)凸(tū)不(bù)平(píng)的(de)跳(tiào)跳(tiào)床(chuáng),如(rú)果(guǒ)在(zài)床(chuáng)的(de)某(mǒu)个(gè)点(diǎn)上(shàng),跳(tiào)跳床凹得最深,这个点就是我们要找的最小值点。从某个点开始,沿着一个方向移动,在这个方向上床变深的速度最快,我们就会找到深凹的点,当有几个深凹点时,经过比较,可求出最小值。

人工神经网络在图像识别方面达到了一定水平,但准确率一直难以突破,直到深度学习出现。
什么是深度学习?
深度学习是机器学习的一种,但在图像、语音识别方面,准确率(lǜ)比(bǐ)其(qí)他(tā)机(jī)器(qì)学(xué)习(xí)算(suàn)法(fǎ)高(gāo)许(xǔ)多(duō)。它(tā)包(bāo)括(kuò)多(duō)种(zhǒng)算(suàn)法(fǎ),如(rú)卷(juǎn)积(jī)神(shén)经(jīng)网(wǎng)络(luò)、循(xún)环(huán)神(shén)经(jīng)网(wǎng)络(luò),本(běn)文主要(yào)谈(tán)深(shēn)度(dù)学(xué)习(xí)算(suàn)法(fǎ)的(de)共(gòng)同(tóng)特(tè)性(xìng)。
深(shēn)度(dù)学(xué)习(xí)其(qí)实(shí)是(shì)对(duì)人(rén)工(gōng)神(shén)经(jīng)网(wǎng)络(luò)的(de)继(jì)承(chéng)和(hé)超(chāo)越(yuè),它(tā)主要(yào)改(gǎi)进(jìn)了(le)两(liǎng)个(gè)方(fāng)面(miàn):1.设(shè)置(zhì)更(gèng)多(duō)的(de)隐(yǐn)藏(cáng)层(céng)。2.让(ràng)机(jī)器(qì)学(xué)习(xí)特(tè)征(zhēng),而(ér)非(fēi)人(rén)工(gōng)设(shè)计(jì)。
在(zài)人(rén)工(gōng)神(shén)经(jīng)网(wǎng)络(luò)时(shí)代(dài),如(rú)果(guǒ)想(xiǎng)要(yào)获(huò)得(de)较(jiào)好(hǎo)的(de)结(jié)果(guǒ),则(zé)需(xū)提(tí)供大量数据进行训练,并用多层网络解决复杂问题,但当时的数据量、算力都无法支撑。后来,海量数据出现,算力大幅提升,才为多层网络的训练提供了可能。
此外,训练多层神经网络还要解决“梯度消失”问题,大致是指原有算法中从后向前对多层神经网络运用梯度下降法,会使前面的层难以更新参数,降低准确率。通过换用更好的激活函数等方法,人们终于解决了这个问题。
因此有人说,第三次人工智能浪潮是由算法、算力、数据三驾马车拉动的。
深度学习对以往机器学习最重要的超越,也是最重要的特性,是学习特征。在其他机器学习中,训练时输入的一串x,其实是特定领域专家设计的“特征”,而不是“原图”。比如要把西瓜分成“好瓜”“坏瓜”,则需了解相关知识的人告诉我们:要看色泽、根蒂、敲声,而这些就是西瓜的“特征”。机器通过对特征的描述(如:色泽:青绿;根蒂:蜷缩;敲声:沉浊),和标注的结果(好瓜),能学出怎样的瓜属于“好瓜”。特征的归纳对学习的效果有重要影响。
人工设计特征的不足在于:一(yī)、模(mó)型(xíng)的框架难以通用,换个问题就要重新设计特征。二、解决复杂问题往往需要更多特征,特(tè)征(zhēng)多(duō)到(dào)一定程度时,训练数据量要极大增加才能保证准确率,而原有方法无法应对,这被称为“维数灾难”。
由机器提取特征,不仅是解决这些问题的重要方法,也是机器全自动分析数据的大势所趋。
2006年,辛顿等人提出了一种实现机器提取特征的方法,但更具实用性的例子是卷积神经网络(CNN)。基于CNN的算法达到的图像识别准确率已经超越了人类平均水平。在CNN中,用于提取特征的是“卷积”过程。一张图片在计算机眼中,其实是一张数字表,每个数字就是一个像素。数学上,“卷积”和神经元中对一串x和w的乘积求和类似。我们把图片分成很多小块,每块的全部像素是一串x,我们再给出一串w,然后每个x与w对应相乘,对这串乘积求和,替换原来的小块数表。对于图片的所有小块,我们都用同一串w进行同样操作。此时w叫卷积核。当我们对所有小块都这样操作之后,图片的尺寸缩小了,像素也(yě)被(bèi)聚(jù)合(hé)了(le),再(zài)进(jìn)行(xíng)下(xià)一(yī)次(cì)卷(juǎn)积(jī)(本(běn)例对应单通道图片的简单情形)。简单说,卷积层的作用就是“聚沙成塔”。这一方法的灵感来自人脑对图片的感知过程,其实是从边缘到局部再到整体的,每一次卷积,就使散点聚为边缘,再聚为形状,最后,整张图片的特征就被勾勒出来了。
可以发现,卷积的核心在于卷积核的选取,采用梯度下降等方法,可以找出最好的卷积核,从而实现机器自主提取特征。

深度学习的未解之谜?
深度学习以其通用的框架和多种实用的算法,让机器直接从经验中学出规律,在图像识别、自然语言处理等方面取得了很多成果,但以下几个问题不容忽视:
1. 鲁棒性。如果对图像施加一些干扰,比如把猪的图片叠加一些黑白噪声点,人类看不出任何差别,却会导致算法误判。这实际上是抗干扰能力,不少科学家正在解决这一问题。
2. 可解释性。机器直接从数据学出规律,并以此进行新的决策。但它为什么会得出这样的结论,训练数据和规律之间有何逻辑联系,目前还不太清楚,因而被称为“黑箱”。
3. 对数据量和训练次数的依赖。当已标注数据较少、训练次数不多时,深度学习的效果不佳。在硬件算力增长速度下降(摩尔定律近期不断修改)、部分领域已标注数据不足的情况下,摆脱这一限制或成重要方向,目前已有相关成果,如迁移学习。
深度学习深几许?今年花胜去年红。
已知尽处是春山,行人更在春山外!
(图片来自网络,部分图片经作者修改)
官方网站-首页