人工智能(二) 什么是卷積神經(jīng)網(wǎng)絡(luò)?

上一回為大家介紹了人工智能的基本概念和算法,講到了梯度下降法、神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)的基本概念,還沒看過的小伙伴可以點(diǎn)擊這里。
人工智能有一個(gè)重要領(lǐng)域就是圖像識(shí)別。比如:有許多軟件可以通過拍照的方法識(shí)別出不同的物體。我用它去拍攝我家的狗,發(fā)現(xiàn)它不僅能識(shí)別出這是狗,甚至還能夠識(shí)別出狗的類型。

大家想知道圖像識(shí)別究竟是如何做到的嗎?今天我們就來聊聊圖像識(shí)別中最流行的算法——卷積神經(jīng)網(wǎng)絡(luò)。
1.?視覺原理
把一副圖像輸入計(jì)算機(jī),計(jì)算機(jī)會(huì)把它變成一大堆數(shù)字,然后通過全連接網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)的大量訓(xùn)練知道什么樣的數(shù)字表示什么物體。但是,如果所有的圖像都通過這種方法進(jìn)行訓(xùn)練,效率是非常低的。而且,當(dāng)圖像稍微地進(jìn)行了放縮、旋轉(zhuǎn)時(shí),計(jì)算機(jī)可能就不認(rèn)識(shí)它了。
相比來講,人對于物體的識(shí)別訓(xùn)練卻非常快——人們只要見到過幾次摩托車和汽車,就能牢牢記住他們的區(qū)別。下次再遇到摩托車時(shí),哪怕它的方向變了,位置變了,或者撞破了,我們依然能區(qū)分這是摩托車,而不是汽車,這是為什么?
1981年,諾貝爾生理學(xué)和醫(yī)學(xué)獎(jiǎng)?lì)C發(fā)給了神經(jīng)科學(xué)家大衛(wèi)·休伯爾和瑞典神經(jīng)科學(xué)家托斯坦·威澤爾,以表彰他們發(fā)現(xiàn)了視覺的原理。

他們將電極插入貓的腦子中,讓貓看到各種線條,觀察腦子中電極的反應(yīng)。他們發(fā)現(xiàn):貓大腦中與視覺相關(guān)的神經(jīng)細(xì)胞分為兩種,其一只對特定的線條有反應(yīng),他們稱之為簡單神經(jīng)細(xì)胞;另一種對線條的運(yùn)動(dòng)有反應(yīng),他們稱之為復(fù)雜神經(jīng)細(xì)胞。

在他們的啟發(fā)下,日本科學(xué)家福島邦彥提出了神經(jīng)認(rèn)知模型。

福島邦彥說:人類的視覺神經(jīng)是分層的。首先,物體發(fā)出或者反射的光進(jìn)入眼睛,通過瞳孔晶狀體等照射到視網(wǎng)膜上成像。視網(wǎng)膜上的感光細(xì)胞會(huì)將圖像轉(zhuǎn)化為神經(jīng)沖動(dòng)傳遞到大腦。

大腦最初接受視覺信號(hào)的神經(jīng)皮層叫做初級皮層V1,它所獲得的是一大堆像素點(diǎn)。隨后,V1皮層會(huì)把處理過的信號(hào)傳遞到V2皮層,V2皮層會(huì)得到圖像的邊緣、方向等信息;V2皮層再次對信號(hào)進(jìn)行處理,進(jìn)入V3皮層,在這里神經(jīng)元會(huì)獲得物體的輪廓、細(xì)節(jié)等信息…
信號(hào)經(jīng)過多個(gè)皮層的傳遞,最終抽象出物體的大量特征,從而做出判斷。

比如你看到我,知道我是李永樂老師。實(shí)際上你看到的并不是一個(gè)整體的我,而是一堆像素點(diǎn),這些像素點(diǎn)首先抽象出邊緣、方向,發(fā)現(xiàn)我好像是直立行走的,然后又發(fā)現(xiàn)了我的輪廓,好像兩個(gè)胳膊兩條腿,一個(gè)鼻子倆眼睛,應(yīng)該不是昆蟲,繼續(xù)你又看到了更多抽象信息,最終才知道我是李永樂老師。

根據(jù)這個(gè)發(fā)現(xiàn),許多科學(xué)家開始研究:如何利用計(jì)算機(jī)軟件模擬視神經(jīng)系統(tǒng),其中有突出貢獻(xiàn)的就是我們上回談到的楊立昆。他設(shè)計(jì)了真正實(shí)用的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN),并且把它用在了圖像識(shí)別領(lǐng)域,取得了巨大成功。

下面就讓我們一起來了解一下卷積神經(jīng)網(wǎng)絡(luò)的原理吧!
2. 卷積
例如:我們想判斷一副圖片是不是X,要知道:X的寫法其實(shí)有很多種

不過,我們仔細(xì)觀察這些圖就會(huì)發(fā)現(xiàn):它們都有一些共同特征,比如中間應(yīng)該有個(gè)十字交叉、左上部位有個(gè)向右下的線條、右上部分有一個(gè)向左下的線條等等。盡管每一幅圖的特征可能不完全一樣,但是滿足的共同特征越多,圖片就越有可能是X。

于是,我們首先通過一些方法來尋找這些特征,具體方法是:用一個(gè)3*3或者5*5的矩陣與圖像上對應(yīng)位置的矩陣做卷積,所謂卷積就是矩陣上對應(yīng)元素相乘,然后再把乘積加起來。
舉個(gè)例子:比如我有一個(gè)7*7的黑白圖像,里面所有的白色都定為1,黑色定為0,把圖片轉(zhuǎn)化成一個(gè)數(shù)字矩陣,我們稱為原矩陣。

然后,選用用一個(gè)3*3的矩陣作為卷積核,卷積核右下方對角線是三個(gè)1,其余是0。

用這個(gè)卷積核在原來的圖像上從左到右、從上到下滑動(dòng)。每滑動(dòng)一步,都把重疊區(qū)域作卷積,如下圖所示,這樣就獲得了一副卷積的結(jié)果矩陣,稱為特征值矩陣。


這樣做的意義在哪里呢?剛才我們說到:我們要提取圖片的“特征”?,F(xiàn)在,卷積核左上、中間、右下三個(gè)數(shù)字是1,如果原圖片中某個(gè)部位也有這樣的特征,卷積后特征圖該處的部位數(shù)字就很大。我們在特征值矩陣上找到比較大的數(shù)字,就說明圖片在該處更有可能具有這個(gè)特征。我們用卷積核對整個(gè)圖片矩陣做卷積運(yùn)算,本質(zhì)上就是在搜索哪些部位具有這些特征。如果我們再更換不同的卷積核,就能找到圖片中不同的特征了。
3. 池化、激活、全連接網(wǎng)絡(luò)
圖片的特征尋找完了,下一步又該如何做呢?
其實(shí)有時(shí)候,我們只需要知道這幅圖像的某個(gè)部位存在這個(gè)特征就好了,并不關(guān)心那些沒有這種特征的位置。所以,我們可以將無用的信息去掉,縮小信息處理量,這個(gè)過程叫做池化。
比如,我們可以將特征圖中每個(gè)2*2的方框內(nèi)最大的值作為整個(gè)方框的值,于是就能夠?qū)⑦@特征圖縮小,從5*5變成了3*3,當(dāng)然如果我們愿意,它還可以更小,但它依然包含了特征信息和相應(yīng)的位置。

然后,我們可以將池化后的特征圖代入激活函數(shù)(例如Sigmoid函數(shù)),當(dāng)特征值比較大的時(shí)候,獲得的激活值比較大;特征值比較小時(shí),激活值也小。這樣,這一層的特征提取就做完了。

總結(jié)來講:經(jīng)歷了卷積、池化、激活三個(gè)步驟,模擬了人眼的一層視神經(jīng),通過這一次的操作,我們得到了這張圖非常細(xì)節(jié)的特征。隨后我們將第一層的輸出作為第二層的輸入,進(jìn)行第二次卷積、池化、激活,獲得更大范圍的圖像特征,以此類推,這就是福島邦彥所提出的神經(jīng)認(rèn)知模型。

最終,當(dāng)我們獲得了足夠宏觀的信息時(shí),我們就將這些經(jīng)過處理的信息接入全連接網(wǎng)絡(luò),通過機(jī)器學(xué)習(xí)過程判斷最終輸出這幅圖像是什么。由于信息經(jīng)過了預(yù)處理,所以這回全連接網(wǎng)絡(luò)的復(fù)雜度遠(yuǎn)遠(yuǎn)低于直接將所有數(shù)據(jù)輸入網(wǎng)絡(luò)的情況。

這里面有兩件事要和大家說明:
第一,卷積核的參數(shù),以及全連接網(wǎng)絡(luò)的參數(shù),最初是人們預(yù)設(shè)的。可是在進(jìn)行訓(xùn)練的時(shí)候,機(jī)器會(huì)根據(jù)輸入和輸出,運(yùn)用反向傳播和梯度下降的方法自動(dòng)調(diào)整它們,所以說卷積核和全連接網(wǎng)絡(luò)的參數(shù)本質(zhì)上并沒有什么區(qū)別,CNN是全連接網(wǎng)絡(luò)的一種簡化算法。
第二,在進(jìn)行卷積池化的過程中,由于我們要提取的特征種類很多,比如橫著的邊緣、豎著的邊緣、斜著的邊緣,以及局部的鼻子、眼睛等等,于是圖像的層數(shù)會(huì)越來越多。就是它不僅僅具有長和寬兩個(gè)維度,還具有高,這個(gè)高就表示了圖像的不同特征。在進(jìn)行卷積運(yùn)算的時(shí)候,卷積核其實(shí)不是二維的,而是三維的,我們一般做的卷積運(yùn)算都是三維矩陣,或者說張量的卷積操作。

怎么樣?科學(xué)家們的設(shè)想是不是非常厲害? 幾乎完全模擬了人類的認(rèn)知過程。當(dāng)我們用數(shù)據(jù)訓(xùn)練機(jī)器識(shí)圖之后,機(jī)器最終找到了最優(yōu)化的參數(shù)和卷積核,這個(gè)過程就叫做訓(xùn)練,就如同小的時(shí)候爸爸媽媽帶著我們?nèi)ス涔珗@,告訴我們這是楊樹,那是柳樹一樣。我們把一個(gè)機(jī)器沒有見到過的圖片丟給機(jī)器,機(jī)器也能夠判斷這個(gè)圖片到底是什么,雖然我們不知道機(jī)器到底把參數(shù)設(shè)置成什么樣子。同樣,當(dāng)我們認(rèn)識(shí)了楊樹和柳樹的時(shí)候,幾乎能夠一眼將它們分辨開,但是我們自己卻不清楚大腦是如何做到這一點(diǎn)的。
回想一下,我們進(jìn)入人臉識(shí)別系統(tǒng)的時(shí)候,有時(shí)帶著口罩它也能認(rèn)出我們,因?yàn)樗崛〉奶卣饕呀?jīng)足夠了。但也有時(shí)候,人工智能還不太智能,比如我的手機(jī),當(dāng)我摘下眼鏡的時(shí)候,它就認(rèn)不出我了,這一刻我感覺我可能是超人。

4. 數(shù)據(jù)與算力
上一回和這一回,我們花了很長時(shí)間介紹人工智能的算法原理。其實(shí),除了算法,人工智能還有兩個(gè)很重要的環(huán)節(jié):數(shù)據(jù)和算力。
俗話說:見多識(shí)廣,巧婦難為無米之炊。無論算法設(shè)計(jì)得多優(yōu)秀,如果沒有給機(jī)器喂數(shù)據(jù),也就是通過大量圖片進(jìn)行訓(xùn)練,機(jī)器依然無法認(rèn)出哪怕是一張很簡單的圖片。所以,擁有大量數(shù)據(jù)是人工智能的一個(gè)重要環(huán)節(jié)。
你可能不知道,我們每個(gè)人其實(shí)都給機(jī)器投喂過數(shù)據(jù)。比如,有時(shí)候你登陸某個(gè)網(wǎng)站,網(wǎng)站上會(huì)讓你識(shí)別模糊不清的文字和數(shù)字,甚至讓你在圖中找出各種稀奇古怪的東西。也許你以為這只是網(wǎng)站故意刁難你,但是也很有可能,這是網(wǎng)站在用你的肉體訓(xùn)練它的機(jī)器呢。你每點(diǎn)一次驗(yàn)證碼,它就完成了一次機(jī)器學(xué)習(xí)。

人工智能的另一個(gè)重要基礎(chǔ)是算力。在人工智能領(lǐng)域,所需要的計(jì)算難度上并不大,比如卷積運(yùn)算就是簡單的加法和乘法。但是由于圖片像素矩陣大,卷積核又多,計(jì)算工作依然很繁重。舉例來講,一張800*600的彩色圖片,RGB三種顏色,像素點(diǎn)有144萬個(gè)之多。如果用3*3*3的卷積核做一次卷積,需要計(jì)算大約1300萬次乘法和1200萬次加法。這還只是用一個(gè)卷積核進(jìn)行一次處理。在實(shí)際的訓(xùn)練中需要用成百上千張圖進(jìn)行成千上萬次的訓(xùn)練。
由于訓(xùn)練和檢驗(yàn)過程都比較慢,所以以前的人工智能軟件基本不能實(shí)現(xiàn)實(shí)時(shí)處理。想想看幾年以前,我們用的那些圖像處理軟件,是不是都要拍好的照片才能處理,沒辦法實(shí)時(shí)美顏?
現(xiàn)在,一切都變了,人們發(fā)現(xiàn)了比CPU更好的處理方法。
CPU就是計(jì)算機(jī)的中央處理器,它的特點(diǎn)是可以處理許多復(fù)雜的問題,但是并行能力差,只能算完了一個(gè)再算另一個(gè),就好像一個(gè)老教授,什么都會(huì)算,但是你得一樣一樣來。

處理顯示問題的顯卡,里面裝有的處理器叫做GPU,GPU的特點(diǎn)是:它只能處理比較簡單的問題,例如圖像渲染問題。但是它的并行能力非常強(qiáng),就好像一萬個(gè)小學(xué)生。處理人工智能問題,其實(shí)大量的運(yùn)算交給小學(xué)生就夠了,所以人們就習(xí)慣了用GPU來計(jì)算人工智能。GPU的典型的廠商是英偉達(dá),曾經(jīng)他只是一家專注游戲顯卡的公司,隨著人工智能時(shí)代的來臨,英偉達(dá)成了時(shí)代的弄潮兒。

現(xiàn)在,我們有了更快的人工智能處理器——NPU(神經(jīng)網(wǎng)絡(luò)處理器),它是專門用來計(jì)算人工智能神經(jīng)網(wǎng)絡(luò)問題的,比GPU更加專一,效率也更高。這種處理器不光是一萬個(gè)小學(xué)生,而且還有超能力,可以同時(shí)計(jì)算很多道加減法乘除。

比如:華為昇騰910AI處理器,它的結(jié)構(gòu)是華為自主設(shè)計(jì)的達(dá)芬奇結(jié)構(gòu),昇騰910有32個(gè)AI core,也就是32個(gè)Cube。這個(gè)cube的作用是可以一次性計(jì)算16*16*16=4096個(gè)元素的內(nèi)積,而CPU要計(jì)算這個(gè)過程,需要將近一萬次的加法和乘法。昇騰910系列處理器也是同等功耗下當(dāng)前世界最快的人工智能訓(xùn)練處理器。
目前昇騰已廣泛應(yīng)用于運(yùn)營商、醫(yī)療、交通等領(lǐng)域,為國計(jì)民生的智能化進(jìn)程做出了自己的貢獻(xiàn)。比如,昇騰賦能南方電網(wǎng)的案例:在過去,人工巡視戶外輸電線路需要20天才能完成,利用基于昇騰Atlas 200AI加速模塊的AI邊側(cè)視頻巡檢只需要2小時(shí),巡檢效率提升了80倍,并且還能及時(shí)發(fā)現(xiàn)傳統(tǒng)人工地面巡視不易發(fā)現(xiàn)的隱患點(diǎn)。
隨著算力的提高,現(xiàn)在有很多手機(jī)都能夠?qū)崿F(xiàn)實(shí)時(shí)美顏了,甚至實(shí)時(shí)換臉,還能讓靜態(tài)的圖片動(dòng)起來。你在手機(jī)屏幕上看到的主播,現(xiàn)實(shí)中可能壓根兒都認(rèn)不出來。

人工智能技術(shù)是一種通用技術(shù),它能讓計(jì)算機(jī)幫助人類完成許多繁重的工作,從而極大地解放生產(chǎn)力。而AI 芯片又是人工智能領(lǐng)域的根技術(shù)之一。所謂根技術(shù),是那些能夠衍生出并支撐著多個(gè)技術(shù)簇的技術(shù),它可以持續(xù)為整個(gè)技術(shù)樹提供滋養(yǎng),在很大程度上決定著技術(shù)樹的榮枯。

在歷史上,發(fā)生過幾次工業(yè)革命,每次工業(yè)革命都是以科學(xué)的突破和根技術(shù)的發(fā)展為基礎(chǔ)。例如十八世紀(jì),牛頓力學(xué)和經(jīng)典熱力學(xué)出現(xiàn)了突破,瓦特改良了蒸汽機(jī),帶人類進(jìn)入了蒸汽時(shí)代,這就是第一次工業(yè)革命,它讓英國成為了日不落帝國。十九世紀(jì)末二十世紀(jì)初,因?yàn)榉ɡ诎l(fā)現(xiàn)了電磁感應(yīng),麥克斯韋闡明了電磁波原理,人類發(fā)明了發(fā)電機(jī)和無線電通信技術(shù),讓美國成為世界第一強(qiáng)國,這就是第二次工業(yè)革命。二十世紀(jì)中葉,因?yàn)殡娮蛹夹g(shù)、計(jì)算機(jī)技術(shù)的突破,人類迅速進(jìn)入了電子時(shí)代,這就是第三次工業(yè)革命,日本抓住了機(jī)遇從戰(zhàn)爭的陰影中走出,一躍成為世界第二發(fā)達(dá)的國家。

前三次工業(yè)革命,中國都沒有趕上??墒牵F(xiàn)在世界正處在以無線互聯(lián)網(wǎng)、人工智能、新材料、生物科技等技術(shù)為代表的第四次工業(yè)革命中。在這一次 ,中國人沒有缺席,無論是5G技術(shù)還是人工智能技術(shù),亦或者是新材料和生物科技技術(shù),中國科學(xué)家和企業(yè)用了一二十年的時(shí)間實(shí)現(xiàn)了追趕,在許多新科學(xué)和新技術(shù)方面都走在了世界的前列。

李永樂老師全新科普專欄《李老師品書:從一到無窮大》已經(jīng)發(fā)布啦!用70期節(jié)目解讀科普經(jīng)典著作。李老師將會(huì)帶著你沿著伽莫夫的足跡,用每天幾分鐘的時(shí)間了解數(shù)學(xué)、物理、生物、和宇宙的奧妙,現(xiàn)在已經(jīng)更新到58期,快快點(diǎn)擊李永樂老師品書了解一下!
