楊澤申
摘 要:芯片是20世紀(jì)最偉大的工程產(chǎn)品之一,隨著科技的不斷發(fā)展,人類(lèi)對(duì)芯片的要求也越來(lái)越高。進(jìn)入21世紀(jì)以來(lái),人工智能飛速發(fā)展,“人工智能芯片”也引起了越來(lái)越多的人的興趣。本文比較系統(tǒng)地介紹了人工智能芯片,并向筆者簡(jiǎn)要介紹了人工智能的原理。
關(guān)鍵詞:人工智能;芯片;神經(jīng)網(wǎng)絡(luò)
中圖分類(lèi)號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)02-0019-02
芯片,又稱(chēng)集成電路,是現(xiàn)代計(jì)算機(jī)、嵌入式設(shè)備的核心。隨著人工智能浪潮的興起,“人工智能芯片”這一概念一經(jīng)提出就吸引了無(wú)數(shù)人的注目。那么人工智能到底是什么,其與芯片的結(jié)合點(diǎn)又在哪里,本文將對(duì)其作詳細(xì)介紹。人工智能包括學(xué)習(xí)任何知識(shí)的能力、推理能力,語(yǔ)言能力和形成自己的觀點(diǎn)的能力。計(jì)算機(jī)如今已具備了在有限范圍內(nèi)解決問(wèn)題的能力了。用人工智能解決問(wèn)題執(zhí)行困難,但原理卻實(shí)則一般。
1 人工智能原理
人工智能的發(fā)展在不同的歷史階段有過(guò)不同的指導(dǎo)思想和發(fā)展方向,而今天主流的人工智能發(fā)展道路被公認(rèn)為是神經(jīng)網(wǎng)絡(luò)為主,而實(shí)際上,從當(dāng)前的應(yīng)用角度而言,神經(jīng)網(wǎng)絡(luò)也是應(yīng)用最廣、預(yù)測(cè)準(zhǔn)確率最好的機(jī)器學(xué)習(xí)方式。
眾所周知,現(xiàn)代計(jì)算機(jī)技術(shù)的發(fā)展是以芯片為依托的。在計(jì)算機(jī)剛剛被發(fā)明的時(shí)候,其體積巨大、運(yùn)算效率低下,完全不具備進(jìn)行大量計(jì)算的性能。而隨著集成電路等技術(shù)的進(jìn)步,以晶體管為基礎(chǔ)的芯片技術(shù)也日漸成熟,也正因此,依托于海量運(yùn)算的神經(jīng)網(wǎng)絡(luò)技術(shù)也得到了飛速發(fā)展。接下來(lái),筆者將簡(jiǎn)要介紹神經(jīng)網(wǎng)絡(luò)的基本原理與其在芯片上的應(yīng)用。
1.1 神經(jīng)網(wǎng)絡(luò)——“智能”的由來(lái)
從簡(jiǎn)化的角度上講,神經(jīng)網(wǎng)路的核心功能在于分類(lèi)[1]:將大量數(shù)據(jù)進(jìn)行相關(guān)處理、提取特征并投影到特征空間,并通過(guò)激活函數(shù)引入非線性,進(jìn)而對(duì)特征空間進(jìn)行切割,將“目標(biāo)特征”提取出來(lái),進(jìn)行分類(lèi)。由于邏輯問(wèn)題往往可以建模為若干個(gè)分類(lèi)問(wèn)題的疊加,因此神經(jīng)網(wǎng)絡(luò)在解決邏輯性較強(qiáng)的問(wèn)題時(shí)往往有著出色表現(xiàn)。
具體而言,神經(jīng)網(wǎng)絡(luò)引入“目標(biāo)函數(shù)”這一優(yōu)化概念,通過(guò)反向傳播算法使得目標(biāo)函數(shù)不斷下降,同時(shí)在隱藏層中使用激活函數(shù)以賦予目標(biāo)函數(shù)“非線性”(例如,我們可以將sigmoid函數(shù)看作是一種階梯函數(shù)或者分段函數(shù),其作用是對(duì)數(shù)據(jù)空間進(jìn)行分割),在一個(gè)具體的隱藏層中,不同的平面對(duì)空間進(jìn)行了不同的分割,但這些分割之間是沒(méi)有邏輯關(guān)系的,我們可以在下一個(gè)隱藏層中對(duì)這些分割進(jìn)行邏輯運(yùn)算以實(shí)現(xiàn)更加復(fù)雜的分割。因此,只要不斷增加隱藏節(jié)點(diǎn)和隱藏層數(shù),理論上而言就可以實(shí)現(xiàn)對(duì)空間上任意區(qū)域的分割或特征提取。
具體到某一次訓(xùn)練上,當(dāng)數(shù)據(jù)流入神經(jīng)網(wǎng)絡(luò),乘以相關(guān)權(quán)重并通過(guò)激活函數(shù),得到相應(yīng)的預(yù)測(cè)值/分類(lèi)結(jié)果,我們將計(jì)算結(jié)果與實(shí)際進(jìn)行比較,將差值反饋給網(wǎng)絡(luò),使其根據(jù)反饋繼續(xù)進(jìn)行梯度下降(梯度可以理解為多元函數(shù)的導(dǎo)數(shù),沿該方向函數(shù)的上升速度最快,因而沿反方向下降速度最快),使得我們的目標(biāo)函數(shù)值也得以不斷減小,最終達(dá)到我們希望的精度。
通過(guò)以上的過(guò)程,我們就構(gòu)建出了一種分類(lèi)器,該分類(lèi)器既可以是多元的、也可以是簡(jiǎn)單的二分類(lèi)問(wèn)題。因此,只要我們能夠?qū)︼@示過(guò)程中的具體場(chǎng)景進(jìn)行建模(例如發(fā)言預(yù)測(cè)),理論上而言就可以實(shí)現(xiàn)預(yù)測(cè)功能,也就是所謂的“人工智能”。
1.2 芯片技術(shù)——怎樣的芯片才能叫做人工智能芯片
正如前文所說(shuō),當(dāng)前人工智能的主要發(fā)展方向?yàn)橐陨疃葘W(xué)習(xí)為代表的機(jī)器學(xué)習(xí),而神經(jīng)網(wǎng)絡(luò)也依靠著其在數(shù)據(jù)挖掘、分類(lèi)問(wèn)題上表現(xiàn)出來(lái)的優(yōu)異性能成為了最為熱門(mén)的“工具”。因此,就目前甚至未來(lái)十年的市場(chǎng)而言,所謂的人工智能芯片與神經(jīng)網(wǎng)絡(luò)是不可割離的。因此,在當(dāng)前這個(gè)階段,人工智能芯片可以概括為構(gòu)建神經(jīng)網(wǎng)絡(luò)服務(wù)或者搭載神經(jīng)網(wǎng)絡(luò)及其相關(guān)功能的芯片[2-3]。
更加具體而言,人工智能芯片的功能主要有兩個(gè):訓(xùn)練(training)和推斷(inference)。
訓(xùn)練:如前文所說(shuō),要想構(gòu)建一個(gè)比較精確的神經(jīng)網(wǎng)絡(luò),我們需要大量的樣本數(shù)據(jù)并不斷地梯度下降,這就要求我們的處理設(shè)備有著強(qiáng)大的計(jì)算能力。如果我們想要對(duì)一個(gè)100*100的圖片進(jìn)行人臉識(shí)別,比如1代表有人臉,0代表沒(méi)有人臉(實(shí)際情況遠(yuǎn)遠(yuǎn)比筆者描述的要復(fù)雜的多,例如在當(dāng)今社會(huì)你很難找到一個(gè)大小僅有100*100像素的圖片),即便只有一個(gè)隱藏層,我們也需要完成對(duì)100*100*n(n代表隱藏層節(jié)點(diǎn)數(shù))個(gè)權(quán)重的訓(xùn)練。對(duì)于常規(guī)的中央處理器(CPU)而言,這種計(jì)算量過(guò)于“恐怖”,需要大量的時(shí)間來(lái)完成。因此,就需要我們制造出更加適合計(jì)算甚至是適合神經(jīng)網(wǎng)絡(luò)計(jì)算的芯片作為新的“CPU”。
推斷:神經(jīng)網(wǎng)絡(luò)歸根結(jié)底是一種工具,其目的在于幫助人類(lèi)進(jìn)行預(yù)測(cè)(例如人臉識(shí)別、語(yǔ)音識(shí)別、輔助決策),在網(wǎng)絡(luò)完成訓(xùn)練后,我們只需要將數(shù)據(jù)正向地流過(guò)網(wǎng)絡(luò)一遍就可以得到分類(lèi)結(jié)果(與訓(xùn)練過(guò)程相比較而言,預(yù)測(cè)過(guò)程所需要的計(jì)算量要小得多,但實(shí)現(xiàn)該過(guò)程所需要的矩陣運(yùn)算仍是CPU所不擅長(zhǎng)的),考慮到絕大多數(shù)神經(jīng)網(wǎng)絡(luò)都有著相似的結(jié)構(gòu)(例如都有著神經(jīng)元、隱藏層等基本單元),因此如果能夠開(kāi)發(fā)出適合神經(jīng)網(wǎng)絡(luò)正向傳遞計(jì)算的芯片的話,將有助于提升神經(jīng)網(wǎng)絡(luò)的推斷速度,這也是許多人工智能芯片被稱(chēng)之為“神經(jīng)網(wǎng)絡(luò)加速器”的原因。
2 人工智能芯片分類(lèi)及發(fā)展現(xiàn)狀
從結(jié)構(gòu)和功能綜合而言,我們可以將人工智能芯片分為三大類(lèi),分別是:圖形處理單元(Graphic Processing Unit,GPU)、現(xiàn)場(chǎng)可編輯門(mén)陣列(Field Programmable Gate Array,F(xiàn)PGA)、應(yīng)用導(dǎo)向集成電路(Application Specific Integrated Circuit,ASIC)[4]。
為了更好地解釋這三種芯片,我們首先簡(jiǎn)要介紹傳統(tǒng)CPU的結(jié)構(gòu)。
傳統(tǒng)CPU遵循的是馮諾依曼計(jì)算機(jī)架構(gòu):存儲(chǔ)程序、順序執(zhí)行。一般來(lái)說(shuō),CPU由邏輯計(jì)算單元(ALU)、控制單元(CU)、存儲(chǔ)單元(包括高速緩存器和寄存器)組成。在具體的計(jì)算中,控制單元指揮電腦從具體的硬盤(pán)地址中取出我們需要的指令和數(shù)據(jù)輸送到CPU的存儲(chǔ)單元中,并交由邏輯計(jì)算單元進(jìn)行運(yùn)算。由于CPU的應(yīng)用場(chǎng)景廣泛,任務(wù)類(lèi)型多樣,CPU的控制單元和存儲(chǔ)單元更加“發(fā)達(dá)”,相比較而言邏輯計(jì)算單元比較“弱小”,這也是為什么CPU的計(jì)算能力在神經(jīng)網(wǎng)絡(luò)面前顯得“勢(shì)單力薄”的根本原因。
2.1 GPU
如前文所言,CPU在面對(duì)重復(fù)計(jì)算的挑戰(zhàn)面前表現(xiàn)往往不佳,而圖像處理恰恰需要這種能力,在這種背景下GPU誕生了。從結(jié)構(gòu)上而言,GPU具有更多的ALU和更少的高速緩存器。這是因?yàn)镚PU是專(zhuān)門(mén)面向大量數(shù)據(jù)運(yùn)算而準(zhǔn)備的,不需要具備過(guò)于復(fù)雜的邏輯功能,因此GPU分配更多的芯片面積給ALU。同時(shí)值得注意的是,GPU不僅僅是依靠ALU的數(shù)量,更加重要的是其并行運(yùn)算的能力。我們可以這樣理解:傳統(tǒng)的CPU就像一個(gè)老教授,其能力很強(qiáng),但做事一板一眼,在完成一道絕對(duì)難度不大但計(jì)算量很大的數(shù)學(xué)題時(shí),該教授只能一個(gè)數(shù)一個(gè)數(shù)的運(yùn)算;GPU就像一群小學(xué)生,雖然其無(wú)法完成思維難度較大的任務(wù)(也就是邏輯、指令更加復(fù)雜的任務(wù)),但可以在同一時(shí)刻分別進(jìn)行一組數(shù)據(jù)的運(yùn)算,這樣從絕對(duì)的時(shí)間上來(lái)看,這群小學(xué)生完成運(yùn)算的時(shí)間可能遠(yuǎn)遠(yuǎn)小于教授完成的時(shí)間。
具體到神經(jīng)網(wǎng)絡(luò)上,在前文中我們介紹過(guò)神經(jīng)網(wǎng)絡(luò)不管是前向傳播還是反向傳播都是一種矩陣運(yùn)算,或者說(shuō)一種并行運(yùn)算,在這種情況下使用CPU效率低、時(shí)間長(zhǎng),而使用GPU我們就可以同時(shí)把大量數(shù)據(jù)輸入,分別運(yùn)算并求和。因此,GPU比起CPU而言更加適合神經(jīng)網(wǎng)絡(luò)的相關(guān)運(yùn)算。
2.2 FPGA
眾所周知,芯片,或者叫集成電路,其基本組成單元是晶體管,而在實(shí)際應(yīng)用中實(shí)現(xiàn)功能的基本單元?jiǎng)t是“與門(mén)”、“或門(mén)”這樣的基本邏輯計(jì)算單元。因此,設(shè)計(jì)集成電路的過(guò)程也就是配置邏輯陣列的過(guò)程,通過(guò)對(duì)不同邏輯基本單元的連線,我們可以實(shí)現(xiàn)不同的邏輯電路,完成不同的計(jì)算任務(wù)。
不管是CPU還是GPU,由于其基本運(yùn)算單元的一致性,它們?cè)诘讓咏Y(jié)構(gòu)上是相通的。我們可以想象這些底層單元就像是一塊塊積木,我們通過(guò)拼接它們實(shí)現(xiàn)了不同的結(jié)構(gòu),以應(yīng)對(duì)不同的任務(wù)。而FPGA就像是裝載著這些積木的玩具箱,我們可以臨時(shí)取出一部分玩具來(lái)進(jìn)行組裝,任務(wù)完成后再拆解并放回箱中。
上文中我們提到,神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)是相似的,但相似不代表相同,顯然如果我們?cè)诿看斡?jì)算前都能夠修改邏輯陣列,使得運(yùn)算模塊更加符合某一個(gè)具體任務(wù),這樣就能夠更加快速、靈活地面對(duì)神經(jīng)網(wǎng)絡(luò)的相關(guān)問(wèn)題。
FPGA是一種集成大量基本門(mén)電路及存儲(chǔ)器的芯片,可以通過(guò)FPGA配置文件來(lái)定義這些門(mén)電路及存儲(chǔ)器間的連線,進(jìn)而實(shí)現(xiàn)特定功能。而其內(nèi)容是可配置的,通過(guò)配置特定的文件可以將FPGA轉(zhuǎn)變?yōu)椴煌幚砥?,F(xiàn)PGA可靈活的支持各類(lèi)深度學(xué)習(xí)的計(jì)算任務(wù)。
2.3 ASIC
如果說(shuō)FPGA是樂(lè)高積木,可以組合為各種各樣的功能電路來(lái)應(yīng)對(duì)不同任務(wù),那么ASIC就是從源頭上就開(kāi)始面向具體的任務(wù)的專(zhuān)用芯片。ASIC完全不考慮多用途,它就是為了某個(gè)具體的任務(wù)而被設(shè)計(jì)出來(lái)的。眾所周知,芯片功能一旦經(jīng)過(guò)流片就無(wú)法更改,因此ASIC作為不可配置的高度定制專(zhuān)用芯片,自然需要大量的研發(fā)投入。同時(shí),若其出貨量不能保證,其單顆成本就難以下降。因此若市場(chǎng)上深度學(xué)習(xí)的方向一經(jīng)改變,ASIC在前期的投入將無(wú)法回收。因此,ASIC具有較大的市場(chǎng)風(fēng)險(xiǎn)。
但ASIC的優(yōu)勢(shì)也是顯而易見(jiàn)的,由于它是專(zhuān)門(mén)設(shè)計(jì)的,因此他在某一個(gè)具體任務(wù)上的性能(例如訓(xùn)練某一種網(wǎng)絡(luò))一定是三者中最好的;盡管它的研發(fā)成本比較高,但如果能夠大量出貨,其單顆成本將遠(yuǎn)紙低于FPGA。其典型代表就是財(cái)大氣粗的谷歌所研制的專(zhuān)門(mén)用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的“TPU”[4]。
3 結(jié)語(yǔ)
縱貫人工智能的發(fā)展歷史,我們不難發(fā)現(xiàn),掣肘該技術(shù)發(fā)展的一大因素就是硬件的計(jì)算能力。在很長(zhǎng)的一段時(shí)間內(nèi),芯片產(chǎn)業(yè)的發(fā)展將長(zhǎng)久影響著人工智能技術(shù)的進(jìn)步。如何提升硬件性能,不僅是中國(guó)所面臨的問(wèn)題,也是整個(gè)世界所面臨的問(wèn)題。在面對(duì)該問(wèn)題時(shí),不同公司也給出了不同的解決方法,從中國(guó)的“寒武紀(jì)”到谷歌的TPU,這些凝聚著工程師智慧的工業(yè)產(chǎn)品讓我們看到了不同的發(fā)展思路。也許在不遠(yuǎn)的未來(lái),不僅僅是芯片,傳統(tǒng)的馮諾依曼結(jié)構(gòu)也會(huì)被更新的系統(tǒng)所代替。
參考文獻(xiàn)
[1] 盛仲飆.BP神經(jīng)網(wǎng)絡(luò)原理及MATLAB仿真[J].渭南師范學(xué)院學(xué)報(bào),2008,23(05):65-67.
[2] 施羽暇.人工智能芯片技術(shù)研究[J].電信網(wǎng)技術(shù),2016(12):11-13.
[3] 張蔚敏,蔣阿芳,紀(jì)學(xué)毅.人工智能芯片產(chǎn)業(yè)現(xiàn)狀[J].電信網(wǎng)技術(shù),2018(02).
[4] 人工智能騰訊科技宇行.人工智能芯片軍備競(jìng)賽開(kāi)啟,谷歌等硅谷巨頭加入[J].信息與電腦(理論版),2017(08):17-18.