新闻中心

深度学习深几许

发布时间:2025-01-08 16:13:45  /  浏览次数:568 次

相信你一定听说过“深度学习”,它总是和人工智能一同出现,好像各种难以置信的AI成果都因为它。那么,“深度学习”到底是何方神圣?它与AI有什么关系?

改编一句台词,或许可以这样说:AI有那么多分支,其中一个叫机器学习;机器学习有那么多分支,历史偏偏选中了深度学习。

什么是机器学习?

以图像识别为例,把许多张猫和狗的图片喂给电脑,希望它像人一样正确判断出是猫还是狗。这种人类易于完成的任务由于难以形式化、逻辑化,需要经验,是计算机很难做到的。

现在,我们在猫的图片上标注“猫”,在狗的图片上标注“狗”,我们就拥有了一批“已标注数据”。我们希望机器能从这些数据中自己找到规律,总结出区分猫狗图片的办法,这就是机器学习的思想。

我们把喂给计算机的东西叫做“输入”,计算机给出的结果叫“输出”,那么,机器学习就是要让计算机找到输入和输出之间(jiān)的(de)一(yī)座(zuò)最(zuì)佳(jiā)桥(qiáo)梁(liáng),从(cóng)而(ér)对(duì)于(yú)输(shū)入(rù)有(yǒu)较(jiào)准(zhǔn)确(què)的(de)输(shū)出(chū),这(zhè)座(zuò)桥(qiáo)梁(liáng)可(kě)以(yǐ)看(kàn)成(chéng)是(shì)一(yī)个(gè)“函(hán)数(shù)”。

机器学习除了可以学习已标注数据(即“有监督学习”),还可以学习没有标注的数据(即“无监(jiān)督(dū)学(xué)习(xí)”),比如聚类,但我们先不谈这个。

机器学习有很多种算法,其中对深度学习有重要意义的是“人工神经网络”,其典型例子是“多层感知机”(MLP)。人工神经网络的灵感来自于人脑神经元,但它与复杂的人类大脑仍有很多不同。

什么是人工神经网络?

解决复杂问题往往需要复杂的、非线性的函数(函数图像不是直线),简单的线性函数(函数图像为直线)最容易运用,却不能直接解决复杂问题,能不能将复杂的、非线性的函数用线性函数表达呢?

人工神经网络与深度学习有同样的思想:复杂函数可以用多个简单函数表示,是简单函数套简单函数套……一直套多个,从而化繁为简,由简至繁。

但是线性函数套线性函数,总归是线性的,所以最后要套上非线性函数,再输出。

以单个神经元为例,一个(gè)神(shén)经(jīng)元(yuán)接(jiē)收(shōu)来(lái)自(zì)多(duō)个(gè)方(fāng)向(xiàng)的(de)信(xìn)号(hào),每(měi)个(gè)信(xìn)号(hào)都(dōu)是(shì)一(yī)个(gè)输(shū)入(rù)x,但(dàn)这(zhè)一(yī)串(chuàn)x不(bù)是(shì)“平(píng)等(děng)”的(de),而(ér)是(shì)有(yǒu)的(de)重(zhòng)要(yào),有(yǒu)的(de)不(bù)重(zhòng)要(yào)。这(zhè)就(jiù)像(xiàng)有(yǒu)一(yī)大(dà)叠(dié)文件(jiàn),不(bù)能(néng)一(yī)股(gǔ)脑(nǎo)儿(ér)都(dōu)给(gěi)老(lǎo)板(bǎn),要(yào)分(fēn)轻(qīng)重(zhòng)缓(huǎn)急(jí),重(zhòng)要(yào)的(de)放(fàng)上(shàng)面(miàn),不(bù)重(zhòng)要的放下面。我们给每个x都乘上一个数w,重(zhòng)要的x就乘大些的w,不重要的x就乘小些的。把这一串乘积全加起来,重要的x就在总和中占据重要地位,不重要的则相反。这一串w叫“权重”。

对神经元来说,不是所有信号都会通过神经细(xì)胞(bāo)传(chuán)输(shū)到(dào)后(hòu)面(miàn)的,而(ér)是(shì)要(yào)达(dá)到(dào)一(yī)定(dìng)的(de)“阀(fá)值(zhí)”才(cái)可(kě)以(yǐ)通(tōng)过(guò),信(xìn)号(hào)就(jiù)像(xiàng)一(yī)个(gè)跳(tiào)高(gāo)运(yùn)动(dòng)员(yuán),跳(tiào)过(guò)了(le)(le)预(yù)(yù)定(dìng)(dìng)高(gāo)(gāo)度(dù)就(jiù)晋(jìn)级(jí),否(fǒu)则(zé)止(zhǐ)步(bù)。

所(suǒ)以(yǐ),我(wǒ)们(men)设(shè)定(dìng)阀(fá)值(zhí)b,让(ràng)w乘(chéng)x乘(chéng)积(jī)的(de)总(zǒng)和(hé)减(jiǎn)去(qù)b,如(rú)果(guǒ)差(chà)大(dà)于(yú)零(líng),则(zé)通(tōng)过(guò),否则输出零。

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

一般来说,人工神经网络会使用多个神经元完成任务,神经元会一层一层排列。一串x所处的层叫输入层,最后得到分类结果的层,叫输出层(céng)。对于已标注数据,我们只能知道输入层、输出层是什么样的,但在人工设计了需要多少层、每层几个神经元之后,中间各层的神经元上,w、b这些参数都要机器去学出最优值,我们一开始并不知道最终会是什么,于是这些神经元所在的层统称隐藏(cáng)层(céng)。

一(yī)串(chuàn)输(shū)入(rù)x在(zài)经(jīng)过(guò)一(yī)层(céng)神(shén)经(jīng)元(yuán)之(zhī)后(hòu),终(zhōng)于(yú)鱼(yú)跃(yuè)龙(lóng)门(mén),到(dào)达(dá)了(le)下(xià)一(yī)层(céng)。人(rén)工(gōng)神(shén)经(jīng)网(wǎng)络(luò)要(yào)求(qiú)神(shén)经元不可跨层连接,不可以让x在几个神经元间走循环路。

那么,设计好人工神经网络之后,怎么让机器学会区分猫狗呢?

把所有已标注图片分为两类,大类叫“训练集”,小类叫“测试集”。训练集用来学习,测试(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ū)出,每个神经元有一串w,一个b,整个网络就有几串w,一串b,这些参数不靠人教,要机器根据已标注数据学出来。学习的过程,就是求出最佳参数的过程,从而得到最好的函数,也就是个优化问题,求最值。主流方法是梯度下降法,大概意思是:二元函数好比凹凸不平的跳跳床,如果在床的某个点上,跳跳床凹得最深,这个(gè)点(diǎn)就(jiù)是(shì)我(wǒ)们(men)要(yào)找(zhǎo)的(de)最(zuì)小(xiǎo)值(zhí)点(diǎn)。从(cóng)某(mǒu)个(gè)点(diǎn)开(kāi)始(shǐ),沿(yán)着(zhe)一(yī)个(gè)方(fāng)向(xiàng)移(yí)动(dòng),在(zài)这(zhè)个(gè)方(fāng)向上床变深的速度最快,我们就会找到深凹的点,当有几个深凹点时,经过比较,可求出最小值。

人(rén)工(gōng)神(shén)经(jīng)网(wǎng)络(luò)在(zài)图(tú)像(xiàng)识(shi)别(bié)方(fāng)面(miàn)达(dá)到(dào)了(le)一(yī)定(dìng)水(shuǐ)平(píng),但(dàn)准(zhǔn)确(què)率(lǜ)一(yī)直(zhí)难(nán)以突破,直到深度学习出现。

什么是深度学习?

深度学习是机器学习的一种,但在图像、语音识别方面,准确率比其他机器学习算法高许多。它包括多种算法,如卷积神经网络、循环神经网络,本文主要谈深度学习算法的共同特性。

深度学习其实是对人工神经网络的继承和超越,它主要改进了两个方面:1.设置(zhì)更多的隐藏层。2.让机器学习特征,而非人工设计。

在人工神经网络时代,如果想要获得较好的结果,则需提供大量数据进行训练,并用多层网络解决复杂问题,但当时的数据量、算力都无法支撑。后来,海量数据出现,算力大幅提升,才为多层网络的训练提供了可能。

此外,训练多层神经网络还要解决“梯度消失”问题,大致是指原有算法中从后向前对多层神经网络运用梯度下降法,会使前面的层难以更新参数,降低准确率。通过换用更好的激活函(hán)数(shù)等(děng)方(fāng)法(fǎ),人们终于解决了这个问题。

因此有人说,第三次人工智能浪潮是由算法、算力、数据三驾马车拉动的。

深度学习对以往机器学习最重要的超越,也是最重要的特性,是学习特征。在其他机器学习中,训练时输入的一串x,其实是特定领域专家设计的“特征”,而不(bù)是(shì)“原(yuán)图(tú)”。比(bǐ)如(rú)要(yào)把(bǎ)西(xi)瓜(guā)分(fēn)成(chéng)“好(hǎo)瓜(guā)”“坏(huài)瓜(guā)”,则(zé)需(xū)了(le)解(jiě)相(xiāng)关知(zhī)识(shi)的(de)人(rén)告(gào)诉(su)我(wǒ)们(men):要(yào)看(kàn)色(sè)泽(zé)、根(gēn)蒂(dì)、敲(qiāo)声(shēng),而(ér)这(zhè)些(xiē)就(jiù)是(shì)西(xi)瓜(guā)的(de)“特(tè)征(zhēng)”。机(jī)器(qì)通(tōng)过(guò)对特征的描述(如:色泽:青绿;根蒂:蜷缩;敲声:沉浊),和标注的结果(好瓜),能学出怎样的瓜属于“好瓜”。特征的归纳对学习的效果有重要影响。

人工设计特征的不足在于:一、模型的框架难以通用,换个问题就要重新设计特征。二、解决复杂问题往往需要更多特征,特征多到一定程度时,训练数据量要极大增加才能保证准确率,而原有方法无法应对,这被称为“维数灾难”。

由机器提取特征,不仅是解决这些问题的重要方法,也是机器全自动分析数据的大势所趋。

2006年,辛顿等人提出了一种实现机器提取特征的方法,但更具实用性的例子是卷积神经网络(CNN)。基于CNN的算法达到的图像识(shi)别(bié)准(zhǔn)确(què)率(lǜ)已(yǐ)经(jīng)超(chāo)越(yuè)了(le)人(rén)类平均水平。在CNN中,用于提取特征的是“卷积”过程。一张图片在计算机眼中,其实是(shì)一张数字表,每个数字就是一个像素。数学上,“卷积”和神经元中对一串x和w的乘积求和类似。我们把图片分成很多小块,每块的全部像素是一串x,我们再给出一串w,然后每个x与w对应相乘,对这串乘积求和,替换原来的小块数表。对于图片的所有小块,我们都用同一串w进行同样操作。此时w叫卷积核。当我们对所有小块都这样操作之后,图片的尺(chǐ)寸(cùn)缩(suō)小了,像素也被聚合了,再进行下一次卷积(本例对应单通道图片的简单情形)。简单说,卷积层的作用就是“聚沙成塔”。这一方法的灵感来自人脑对图片的感(gǎn)知(zhī)过(guò)程(chéng),其(qí)实(shí)是(shì)从(cóng)边(biān)缘(yuán)到(dào)局(jú)部(bù)再(zài)到(dào)整(zhěng)体(tǐ)的(de),每(měi)一(yī)次(cì)卷(juǎn)积(jī),就(jiù)使(shǐ)散(sàn)点(diǎn)聚(jù)为(wèi)边(biān)缘(yuán),再(zài)聚(jù)为(wèi)形(xíng)状(zhuàng),最(zuì)后(hòu),整(zhěng)张(zhāng)图(tú)片(piàn)的(de)特(tè)征(zhēng)就(jiù)被(bèi)勾(gōu)勒(lēi)出(chū)来(lái)了(le)。

可(kě)以(yǐ)发(fā)现(xiàn),卷(juǎn)积(jī)的核心在于卷积核的选取,采用梯度下降等方法,可以找出最好的卷积核,从而实现机器自主提取特征。

深度学习的未解之谜?

深度学习以其通用的框架和多种实用的算法,让机器直接从经验中学出规律,在图像识别、自然语言处理等方面取得了很多成果,但以下几个问题不容忽视:

1. 鲁棒性。如果对图像施加一些干扰,比如把猪的图片叠加一些黑白噪声点,人类看不出任何差别,却会导致算法误判。这实际上是抗干扰能力,不少科学家正在解决这一问题。

2. 可解释性。机器直接从数据学出规律,并以此进行新的决策。但它为什么会得出这样的结论,训练数据和规律之间有何逻辑联系,目前还不太清楚,因而被称为“黑箱”。

3. 对数据量和训练次数的依赖。当已标注数据较少、训练次数不多时,深度学习的效果不佳。在硬件算力(lì)增长速度下降(摩尔定律近期不断修改)、部分领域已标注数据不足的情况下,摆脱这一限制或成重要方向,目前已有相关成果,如迁移学习。

深度学习深几许?今年花胜去年红。

已知尽处是春山,行人更在春山外!

(图片来自网络,部分图片经作者修改)