本申請要求2016年3月16日提交的,名稱為“通過使用硬件成本懲罰深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)優(yōu)化”的美國臨時(shí)專利申請62/309,239的優(yōu)先權(quán),通過引用將其并入本申請。
技術(shù)領(lǐng)域
本發(fā)明涉及神經(jīng)網(wǎng)絡(luò),特別涉及權(quán)重大小的優(yōu)化。
背景技術(shù):
對于使用傳統(tǒng)計(jì)算機(jī)程序難以處理的大量復(fù)雜數(shù)據(jù),人工神經(jīng)網(wǎng)絡(luò)特別有用。不是使用指令編程,而是將訓(xùn)練數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò),并與預(yù)期輸出進(jìn)行比較,然后在神經(jīng)網(wǎng)絡(luò)內(nèi)進(jìn)行調(diào)整,再次處理訓(xùn)練數(shù)據(jù),和輸出比較,再進(jìn)一步調(diào)整神經(jīng)網(wǎng)絡(luò)。在多次這樣的訓(xùn)練周期之后,神經(jīng)網(wǎng)絡(luò)被改變成可以有效地處理類似訓(xùn)練數(shù)據(jù)和預(yù)期輸出的數(shù)據(jù)。神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個(gè)例子,因?yàn)樯窠?jīng)網(wǎng)絡(luò)學(xué)習(xí)如何生成訓(xùn)練數(shù)據(jù)的預(yù)期輸出。然后可以將類似訓(xùn)練數(shù)據(jù)的實(shí)際數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò),以處理實(shí)時(shí)數(shù)據(jù)。
圖1顯示一個(gè)現(xiàn)有技術(shù)的神經(jīng)網(wǎng)絡(luò)。輸入節(jié)點(diǎn)102、104、106、108接收輸入數(shù)據(jù)I1、I2、I3、...I4,而輸出節(jié)點(diǎn)103、105、107、109輸出神經(jīng)網(wǎng)絡(luò)運(yùn)算的結(jié)果:輸出數(shù)據(jù)O1、O2、O3、...O4。在這個(gè)神經(jīng)網(wǎng)絡(luò)中有三層運(yùn)算。節(jié)點(diǎn)110、112、114、116、118中的每一個(gè)節(jié)點(diǎn)都從一個(gè)或多個(gè)輸入節(jié)點(diǎn)102、104、106、108中獲取輸入,執(zhí)行一些運(yùn)算,諸如加、減、乘或更復(fù)雜運(yùn)算,然后發(fā)送和輸出到第二層的節(jié)點(diǎn)。第二層節(jié)點(diǎn)120、122、124、126、128、129也接收多個(gè)輸入,合并這些輸入以產(chǎn)生一個(gè)輸出,并將輸出發(fā)送到第三層節(jié)點(diǎn)132、134、136、138、139,類似地合并輸入并產(chǎn)生輸出。
每層的輸入通常會被加權(quán),因此在每個(gè)節(jié)點(diǎn)處生成加權(quán)總和(或其他加權(quán)運(yùn)算結(jié)果)。這些權(quán)重可以表示為W31、W32、W32、W33、...W41等,在訓(xùn)練期間權(quán)重值可以調(diào)整。通過不斷地試錯(cuò)或其他訓(xùn)練程序,最終可以將較高的權(quán)重分配給產(chǎn)生預(yù)期輸出的路徑,而將較小權(quán)重分配給不產(chǎn)生預(yù)期輸出的路徑。機(jī)器將學(xué)習(xí)哪些路徑會生成預(yù)期輸出,并為這些路徑上的輸入分配高權(quán)重。
這些權(quán)重可以存儲在權(quán)重存儲器100中。由于許多神經(jīng)網(wǎng)絡(luò)都具有多個(gè)節(jié)點(diǎn),所以在權(quán)重存儲器100中存儲有多個(gè)權(quán)重。每個(gè)權(quán)重需要多個(gè)二進(jìn)制比特來表示該權(quán)重的可能值的范圍。權(quán)重通常需要8到16比特。權(quán)重存儲器100的大小通常與神經(jīng)網(wǎng)絡(luò)的總體大小和復(fù)雜性成比例。
深度神經(jīng)網(wǎng)絡(luò)具有多層節(jié)點(diǎn),常用于諸如對象分類、語音識別、情感分析、圖像識別、面部檢測和其他圖形處理的應(yīng)用。圖2顯示用于面部識別的神經(jīng)網(wǎng)絡(luò)。圖像輸入10可以從一個(gè)較大的圖像中提取,例如通過軟件分離出人臉。特征提取器15執(zhí)行低級特征提取、池化(pooling)和下采樣。例如,可以識別并提取諸如眼睛和嘴巴的面部特征作為提取的特征12。對這些提取的特征12進(jìn)行合成和下采樣以生成輸出14。
中級特征連接器17檢查下采樣的提取特征,生成連接16和中級特征18,然后可以使用中級特征18來生成高級特征19。分類器20對特征進(jìn)行分類和完全連接,使得可以輸出面部特征。
這樣的面部檢測可以通過使用有多個(gè)節(jié)點(diǎn)的10層神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)。該神經(jīng)網(wǎng)絡(luò)會使用超過1億個(gè)權(quán)重。
圖3顯示一個(gè)實(shí)施圖像識別處理器的神經(jīng)網(wǎng)絡(luò)。輸入圖像10可能包含多個(gè)特征,諸如幾個(gè)人、背景和前景對象、以及幾個(gè)幀。神經(jīng)網(wǎng)絡(luò)的各層執(zhí)行64-比特卷積22、256-比特卷積26、和512-比特卷積28。最大響應(yīng)節(jié)點(diǎn)是由最大池化層(maxpooling layers)24產(chǎn)生,而最終softmax層30執(zhí)行歸一化指數(shù)函數(shù)以限制輸出范圍。全連接FC層32通過允許每個(gè)節(jié)點(diǎn)查看前一層的所有輸入來執(zhí)行高層次推理。
這種圖像處理可能需要16個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),有超過2億個(gè)權(quán)重。因此,權(quán)重存儲器100(圖1)所需的尺寸相當(dāng)大。
現(xiàn)有的深度神經(jīng)網(wǎng)絡(luò)可能有非常高的計(jì)算復(fù)雜度以提高神經(jīng)網(wǎng)絡(luò)的精度。這些龐大的計(jì)算復(fù)雜性和成本通常是通過使用工業(yè)規(guī)模的計(jì)算集群和若干高性能圖形處理單元(GPU)來解決。然而,這類計(jì)算集群和GPU的功耗相當(dāng)高。
傳統(tǒng)上神經(jīng)網(wǎng)絡(luò)都是使用大規(guī)模計(jì)算,如大型機(jī)和計(jì)算機(jī)集群。在用戶終端設(shè)備(如智能電話)上拍攝的圖像可以發(fā)送到遠(yuǎn)程大型機(jī)或計(jì)算集群,以被神經(jīng)網(wǎng)絡(luò)進(jìn)行處理。然后,結(jié)果被發(fā)送回智能手機(jī)。
然而,如果在用戶終端設(shè)備本身(如智能電話、相機(jī)、可穿戴設(shè)備和機(jī)器人設(shè)備)上就有這種神經(jīng)網(wǎng)絡(luò),那將是非常有用的。這些用戶終端設(shè)備通常需要實(shí)時(shí)響應(yīng)、低延遲、有存儲器和功耗限制。
一種解決方案是添加專用硬件到用戶終端設(shè)備??梢韵蛴脩艚K端設(shè)備添加一種包括神經(jīng)網(wǎng)絡(luò)的專用集成電路(ASIC)。ASIC比GPU有更低的功耗,因?yàn)锳SIC的神經(jīng)網(wǎng)絡(luò)可以是專用于用戶終端設(shè)備執(zhí)行的任務(wù)或操作,而GPU則是通用的。
一個(gè)專用神經(jīng)網(wǎng)絡(luò)的門數(shù)、晶片面積、功耗和成本與權(quán)重的數(shù)量和大小或權(quán)重存儲器100的尺寸大致成比例。發(fā)明人希望降低權(quán)重存儲器100的尺寸,從而減少專用神經(jīng)網(wǎng)絡(luò)的門數(shù)、晶片面積、功耗和成本??梢詼p小每個(gè)權(quán)重的大小或比特深度,但也將降低神經(jīng)網(wǎng)絡(luò)的精度。
期望有一種減少尺寸和成本的神經(jīng)網(wǎng)絡(luò)。期望通過選擇性地減小權(quán)重的大小或比特深度來減小神經(jīng)網(wǎng)絡(luò)的尺寸和成本。期望減小權(quán)重的比特深度的方式不會在計(jì)算其輸出時(shí)顯著降低神經(jīng)網(wǎng)絡(luò)的精度。期望在減小一些權(quán)重的比特深度的同時(shí)對精度的影響最小。
附圖說明
圖1是一個(gè)現(xiàn)有技術(shù)的神經(jīng)網(wǎng)絡(luò)。
圖2是一個(gè)用于面部識別的神經(jīng)網(wǎng)絡(luò)。
圖3是一個(gè)實(shí)施圖像識別處理器的神經(jīng)網(wǎng)絡(luò)。
圖4是一個(gè)神經(jīng)網(wǎng)絡(luò)優(yōu)化器。
圖5是量化比特深度權(quán)重成本的曲線圖。
圖6A-B顯示了在訓(xùn)練期間使用量化權(quán)重成本曲線進(jìn)行選擇用于減少的權(quán)重。
圖7A-C顯示使用比特深度優(yōu)化引擎的權(quán)重值的分布。
圖8是一個(gè)比特深度優(yōu)化引擎的詳細(xì)框圖。
圖9顯示使用比特深度優(yōu)化引擎來減少權(quán)重硬件成本的曲線圖。
圖10顯示具有權(quán)重比特深度優(yōu)化的神經(jīng)網(wǎng)絡(luò)的集成電路的設(shè)計(jì)和制造過程。
具體實(shí)施方式
本發(fā)明涉及神經(jīng)網(wǎng)絡(luò)的改進(jìn)。呈現(xiàn)以下描述以使本領(lǐng)域普通技術(shù)人員能夠制造和使用如在特定應(yīng)用及其要求的上下文中提供的本發(fā)明。對優(yōu)選實(shí)施例的各種修改對于本領(lǐng)域技術(shù)人員是顯而易見的,并且本文定義的一般原理可以應(yīng)用于其他實(shí)施例。因此,本發(fā)明并不限于所顯示和描述的特定實(shí)施例,而是要求符合與本文披露的原理和新穎特征一致的最寬范圍。
發(fā)明人已經(jīng)發(fā)現(xiàn),可以通過減少神經(jīng)網(wǎng)絡(luò)中的權(quán)重大小或比特深度,來降低神經(jīng)網(wǎng)絡(luò)的復(fù)雜性、成本和大小,同時(shí)仍然保持優(yōu)化精度。具體來說,在優(yōu)化期間添加比特深度復(fù)雜性懲罰,可以使神經(jīng)網(wǎng)絡(luò)朝向較小權(quán)重存儲器。在優(yōu)化迭代期間使用數(shù)字梯度的權(quán)重大小。發(fā)明人通過訓(xùn)練過程減少神經(jīng)網(wǎng)絡(luò)中權(quán)重所需的比特?cái)?shù),然后可以將其部署在諸如ASIC的專用硬件中。較小的優(yōu)化神經(jīng)網(wǎng)絡(luò)會減少ASIC的成本和尺寸。
圖4顯示了一種神經(jīng)網(wǎng)絡(luò)優(yōu)化器。神經(jīng)網(wǎng)絡(luò)36可以是由設(shè)計(jì)工程師為一個(gè)特定應(yīng)用而設(shè)計(jì)的一個(gè)神經(jīng)網(wǎng)絡(luò),或者是為特定應(yīng)用而調(diào)整的一個(gè)通用神經(jīng)網(wǎng)絡(luò)。例如,可以針對一個(gè)特定應(yīng)用,來調(diào)整神經(jīng)網(wǎng)絡(luò)中的中間層或隱藏層的數(shù)目,可以針對某些應(yīng)用或要解決的問題來調(diào)整在節(jié)點(diǎn)中執(zhí)行的運(yùn)算類型和節(jié)點(diǎn)之間的連接性。例如,對于圖2的面部識別應(yīng)用,通用神經(jīng)網(wǎng)絡(luò)可以被擴(kuò)展到10層,或?qū)D3的圖像處理應(yīng)用,擴(kuò)展到16層。
神經(jīng)網(wǎng)絡(luò)36中使用的權(quán)重可以有初始值,如0到16K-1,其可以由一個(gè)14比特的權(quán)重表示。當(dāng)執(zhí)行訓(xùn)練程序46時(shí),訓(xùn)練數(shù)據(jù)34被輸入到神經(jīng)網(wǎng)絡(luò)36,允許評估神經(jīng)網(wǎng)絡(luò)36的輸出。一種評估輸出質(zhì)量的方法是計(jì)算成本。精度成本生成器42生成精度成本,該精度成本是當(dāng)前周期的輸出與預(yù)期結(jié)果有多接近的一個(gè)測量??梢酝ㄟ^對單個(gè)輸出與該輸出的期望值的差求平方,并對所有輸出的這些平方求平均或求和,產(chǎn)生一個(gè)均方誤差(MSE)。
另一成本是神經(jīng)網(wǎng)絡(luò)36的硬件成本。通常,可以通過增加神經(jīng)網(wǎng)絡(luò)36中可用的硬件量來提高精度,因此在硬件成本和精度成本之間存在一個(gè)權(quán)衡。由硬件復(fù)雜度成本生成器44計(jì)算的典型的硬件成本因素包括一個(gè)在調(diào)整權(quán)重范圍時(shí)防止過度擬合的權(quán)重衰減函數(shù),以及一個(gè)用于改善結(jié)構(gòu)和規(guī)則性的稀疏函數(shù)。
硬件復(fù)雜度成本生成器44還包括一個(gè)新的成本組件,其檢查表示一個(gè)權(quán)重所需的二進(jìn)制比特?cái)?shù)。傳統(tǒng)的成本方法將權(quán)重作為一個(gè)連續(xù)統(tǒng)(continuum)。但是,硬件復(fù)雜度成本生成器44將權(quán)重成本量化。根據(jù)表示權(quán)重所需的二進(jìn)制比特?cái)?shù)而不是根據(jù)權(quán)重?cái)?shù)值來計(jì)算權(quán)重成本。
來自精度成本生成器42的精度成本和來自硬件復(fù)雜度成本生成器44的硬件成本都用于調(diào)整權(quán)重,供訓(xùn)練程序46的下一訓(xùn)練周期使用。更新的權(quán)重被應(yīng)用于神經(jīng)網(wǎng)絡(luò)36,訓(xùn)練數(shù)據(jù)34被再次輸入到神經(jīng)網(wǎng)絡(luò)36,神經(jīng)網(wǎng)絡(luò)36產(chǎn)生一組新的結(jié)果,該組新的結(jié)果由精度成本生成器42和硬件復(fù)雜度成本生成器44產(chǎn)生其成本。進(jìn)行多個(gè)周期的調(diào)整權(quán)重和重新計(jì)算成本,直到達(dá)到一個(gè)期望的終點(diǎn)。然后,比特深度優(yōu)化引擎48輸出具有最終權(quán)重的神經(jīng)網(wǎng)絡(luò)36作為低比特深度神經(jīng)網(wǎng)絡(luò)40。
舉個(gè)例子,神經(jīng)網(wǎng)絡(luò)36中每個(gè)權(quán)重的平均比特?cái)?shù)是14比特。比特深度優(yōu)化引擎48將該平均比特深度減小到低比特深度神經(jīng)網(wǎng)絡(luò)40中的10比特,即減少了4個(gè)二進(jìn)制比特。這對于權(quán)重存儲器100(圖1)中關(guān)于權(quán)重的存儲要求就減少了28%。
圖5是量化比特深度權(quán)重成本的曲線圖。顯示了單個(gè)權(quán)重的成本。如之前的圖2-3所示,神經(jīng)網(wǎng)絡(luò)可以有超過1億個(gè)權(quán)重。
傳統(tǒng)權(quán)重成本曲線142隨著權(quán)重值增加而有穩(wěn)定增加的成本。量化權(quán)重成本曲線140有步階。這些步階出現(xiàn)在每次增加表示權(quán)重值所需的二進(jìn)制比特?cái)?shù)時(shí)。
例如,一個(gè)權(quán)重可以有一個(gè)值36。該值需要6個(gè)二進(jìn)制比特。如果權(quán)重值降低到34,傳統(tǒng)權(quán)重成本降低,但是它仍然需要6個(gè)二進(jìn)制比特,因此量化權(quán)重成本并不發(fā)生變化。
但是,當(dāng)權(quán)重從36變化到31時(shí),所需的二進(jìn)制比特?cái)?shù)從6減少到5,因?yàn)?個(gè)二進(jìn)制比特可以覆蓋從0到31的值。雖然傳統(tǒng)權(quán)重成本曲線142所示的傳統(tǒng)權(quán)重減小了一個(gè)很少的量,但量化權(quán)重成本曲線140所示的量化權(quán)重成本減小了一個(gè)很大的量,因?yàn)槠湎陆盗艘粋€(gè)步階。
量化權(quán)重成本曲線140中的步階出現(xiàn)在二進(jìn)制比特?cái)?shù)發(fā)生變化的地方。這些步階出現(xiàn)在2的冪次方處,例如在16、32、64、128、256、512、1024、2048、4096、8192、...65536…等的權(quán)重值處。一個(gè)權(quán)重值1024(11比特)減少1到1023(10比特)時(shí),其成本顯著減少,但是減少權(quán)重值1023直到達(dá)到511,其量化權(quán)重成本都沒有任何變化,因?yàn)閺?023到512的值都需要10個(gè)二進(jìn)制比特。
圖6A-B顯示了在訓(xùn)練期間使用量化權(quán)重成本曲線進(jìn)行選擇用于減少的權(quán)重。在圖6A,為了清晰,將圖5中部分量化權(quán)重成本曲線140和傳統(tǒng)權(quán)重成本曲線142放大并分開。在量化權(quán)重成本曲線140上顯示了從11比特到12比特的步階,以及從11比特到12比特的另一步階。
顯示了四個(gè)單獨(dú)的權(quán)重θ5、θ6、θ7、和θ8。在傳統(tǒng)權(quán)重成本曲線142上,所有四個(gè)權(quán)重都有大致相同的斜率SL或梯度,因此在訓(xùn)練期間使用傳統(tǒng)成本優(yōu)化來減小其權(quán)重值時(shí),所有這些權(quán)重都是等同的候選者。
在量化權(quán)重成本曲線140中,權(quán)重θ5和θ7遠(yuǎn)離任何步階。權(quán)重值θ5和θ7附近的斜率是接近零的值,因?yàn)榱炕瘷?quán)重成本曲線140在步階之間是平坦的。因此,當(dāng)選擇減小權(quán)重θ5和θ7時(shí),成本減少很小或沒有減少。
然而,在量化權(quán)重成本曲線140中,權(quán)重θ6接近從11到12比特的那個(gè)步階。對該步階之前和之后的兩個(gè)點(diǎn),量化權(quán)重成本曲線140的斜率很大。
當(dāng)用于計(jì)算斜率的范圍包括步階之前一個(gè)點(diǎn)和之后一個(gè)點(diǎn)時(shí),可以計(jì)算出一個(gè)大斜率或梯度。
在訓(xùn)練優(yōu)化期間,可以使用成本梯度來選擇哪些權(quán)重是減少成本的最佳選擇。選擇具有大梯度的權(quán)重優(yōu)于選擇具有小梯度的權(quán)重,因?yàn)榭梢源蠓档陀布杀?,而同時(shí)可能會小幅降低精度。
類似地,在量化權(quán)重成本曲線140中,權(quán)重θ8靠近從12到13比特的步階。權(quán)重θ8具有一個(gè)大斜率SL>>0。由于權(quán)重θ6和θ8都接近步階,具有大梯度,所以和具有零斜率的權(quán)重θ5和θ7相比,比特深度優(yōu)化引擎48會優(yōu)先選擇權(quán)重θ6和θ8。比特深度優(yōu)化引擎48將稍微減小權(quán)重θ6和θ8的值,使得它們在圖6A向左偏移,出現(xiàn)在量化權(quán)重成本曲線140的所述步階之前。存儲這些權(quán)重所需的比特?cái)?shù)已經(jīng)被各自減少1比特。權(quán)重θ5和θ7保持不變,因此不會降低其精度。
圖6B顯示成本梯度的尖峰發(fā)生在當(dāng)二進(jìn)制比特的數(shù)量變化時(shí)的步階上。對于長范圍的步階之間的權(quán)重值,梯度曲線144是平坦的。梯度曲線144中的尖峰恰好出現(xiàn)在量化權(quán)重成本曲線140中的每個(gè)步階的右側(cè)處。該尖峰顯示當(dāng)二進(jìn)制比特的數(shù)量下降時(shí),量化權(quán)重成本曲線140的斜率或梯度會急劇變化。
硬件復(fù)雜度成本生成器44可以為每個(gè)權(quán)重產(chǎn)生量化權(quán)重成本曲線140的梯度,比特深度優(yōu)化引擎48可以在訓(xùn)練優(yōu)化期間搜索具有大成本梯度的權(quán)重,并選擇這些權(quán)重用于減小成本。經(jīng)過多個(gè)周期的選擇,權(quán)重被減少并與精度權(quán)衡,直到獲得一個(gè)最優(yōu)權(quán)重值用于低比特深度神經(jīng)網(wǎng)絡(luò)40。
本發(fā)明人認(rèn)識到,有許多權(quán)重值具有相同的硬件成本,因?yàn)樗鼈冃枰嗤瑪?shù)量的二進(jìn)制比特。硬件復(fù)雜度成本生成器44(圖4)負(fù)責(zé)權(quán)重的比特深度成本。在訓(xùn)練期間,選擇哪個(gè)權(quán)重去減小成本變成了優(yōu)先選擇量化權(quán)重成本曲線140中剛好在下降(步階)之前的權(quán)重。和量化權(quán)重成本曲線140中那些遠(yuǎn)離下一個(gè)步階的權(quán)重(大變化)相比,這些權(quán)重的較小變化可以有較大的硬件成本減少。
圖7A-C顯示使用比特深度優(yōu)化引擎的權(quán)重值分布。在圖7A,顯示了量化權(quán)重成本曲線140。在二進(jìn)制比特?cái)?shù)增加時(shí)的步階上,硬件成本大幅跳躍。比特深度優(yōu)化引擎48選擇量化權(quán)重成本曲線140中權(quán)重值剛好在步階之前(在右側(cè))的權(quán)重,并略微減少這些值。如果由于權(quán)重是關(guān)鍵值,引起精度大幅降低,那么該變化就可以在下一個(gè)訓(xùn)練周期中被撤消,但通常和總體上,權(quán)重值略微減小,比特深度和存儲要求會大幅降低。
在圖7B,比特深度優(yōu)化引擎48已經(jīng)優(yōu)先選擇了量化權(quán)重成本曲線140中靠近步階的權(quán)重,而且這些權(quán)重已經(jīng)被減小。權(quán)重值的分布顯示在量化權(quán)重成本曲線140中尖峰都剛好在步階之后(左側(cè))。選擇步階右側(cè)的權(quán)重并減小,以將它們放在該步階左側(cè)。因此,在步階之后比在步階之前有更多的權(quán)重,如圖7B所示。圖7C顯示了現(xiàn)有技術(shù)的權(quán)重分布。使用傳統(tǒng)權(quán)重成本曲線142,不考慮步階,因此在量化權(quán)重成本曲線140的步階之前和之后,權(quán)重分布是相對恒定的。
比特深度優(yōu)化引擎48已經(jīng)改變了低比特深度神經(jīng)網(wǎng)絡(luò)40中數(shù)百萬個(gè)權(quán)重的分布。權(quán)重傾向于具有剛好在步階以下的二進(jìn)制比特值。有較少權(quán)重值剛好在步階之前,因?yàn)檫@些是訓(xùn)練和優(yōu)化期間用于減少成本的候選值,大多數(shù)已經(jīng)被偏移到步階之后了。
圖8是比特深度優(yōu)化引擎的較詳細(xì)框圖。神經(jīng)網(wǎng)絡(luò)36的權(quán)重是由權(quán)重初始化器58進(jìn)行初始化,這些初始權(quán)重被輸入到神經(jīng)網(wǎng)絡(luò)輸出生成器54,利用這些初始權(quán)重,神經(jīng)網(wǎng)絡(luò)輸出生成器54使用由神經(jīng)網(wǎng)絡(luò)36設(shè)定的節(jié)點(diǎn)和運(yùn)算網(wǎng)絡(luò),對訓(xùn)練數(shù)據(jù)34進(jìn)行運(yùn)算以產(chǎn)生神經(jīng)網(wǎng)絡(luò)36的結(jié)果或輸出。將這些結(jié)果與訓(xùn)練數(shù)據(jù)34的預(yù)期輸出進(jìn)行比較,以產(chǎn)生每個(gè)權(quán)重的誤差項(xiàng)或精度成本。在隨后的周期里,更新的權(quán)重72被應(yīng)用于神經(jīng)網(wǎng)絡(luò)輸出生成器54。
根據(jù)當(dāng)前權(quán)重,即初始權(quán)重或更新的權(quán)重72,硬件復(fù)雜度成本生成器52產(chǎn)生神經(jīng)網(wǎng)絡(luò)36的硬件成本??傮w硬件成本可以被近似為與權(quán)重存儲器100的成本成比例,其可以近似為神經(jīng)網(wǎng)絡(luò)36中所有權(quán)重所需的總比特?cái)?shù)。
正演計(jì)算50還包括正則化(regularization)生成器56,其產(chǎn)生其它硬件成本,如神經(jīng)網(wǎng)絡(luò)36的稀疏性或規(guī)律性。正演計(jì)算50使用更新的權(quán)重72的當(dāng)前值,產(chǎn)生神經(jīng)網(wǎng)絡(luò)36的硬件和精度成本。
反演計(jì)算60從正演計(jì)算50接收成本,并產(chǎn)生梯度。梯度可以用于選擇哪些權(quán)重需要調(diào)整,如圖6A-B所示。由神經(jīng)網(wǎng)絡(luò)輸出發(fā)生器54產(chǎn)生的每個(gè)權(quán)重的精度成本或誤差被輸入到誤差梯度生成器64,誤差梯度生成器64產(chǎn)生每個(gè)權(quán)重的誤差梯度。具有較高誤差梯度的權(quán)重是用于減少權(quán)重比特深度的差的選擇,因?yàn)榫葧艿奖壤^大的影響。
來自硬件復(fù)雜度成本生成器52的硬件成本被輸入到硬件復(fù)雜度成本梯度生成器62。這些硬件成本包括比特深度成本。每個(gè)權(quán)重的硬件成本梯度是由硬件復(fù)雜度成本梯度生成器62計(jì)算的,并由權(quán)重選擇器70收集這些梯度。一些梯度,如誤差梯度,可以被反向傳播以使用一個(gè)鏈規(guī)則來找到每個(gè)參數(shù)上的梯度。來自其他正則化生成器56的正則化成本被輸入到正則化梯度生成器66,其產(chǎn)生正則化成本的梯度。
權(quán)重選擇器70合并來自硬件復(fù)雜度成本梯度生成器62、誤差梯度生成器64、和其他正則化梯度生成器66的梯度,以決定要調(diào)整哪些權(quán)重。權(quán)重選擇器70權(quán)衡精度誤差和硬件誤差,選擇最佳候選權(quán)重進(jìn)行調(diào)整。權(quán)重選擇器70調(diào)整這些權(quán)重以產(chǎn)生更新的權(quán)重72。
終點(diǎn)終止器68將總權(quán)重和精度成本與目標(biāo)進(jìn)行比較,當(dāng)還沒到達(dá)目標(biāo)時(shí),將更新的權(quán)重72發(fā)送回硬件復(fù)雜度成本生成器52、神經(jīng)網(wǎng)絡(luò)輸出生成器54、和其他正則化生成器56用于另一個(gè)周期或迭代。一旦達(dá)到目標(biāo),將最后一組更新的權(quán)重72應(yīng)用于神經(jīng)網(wǎng)絡(luò)36以產(chǎn)生低比特深度神經(jīng)網(wǎng)絡(luò)40。
神經(jīng)網(wǎng)絡(luò)36中的14比特的平均比特深度已經(jīng)被降低到低比特深度神經(jīng)網(wǎng)絡(luò)40的10比特的平均比特深度。當(dāng)使用數(shù)億的權(quán)重時(shí),每個(gè)權(quán)重平均減少4個(gè)二進(jìn)制比特對硬件成本來說是一個(gè)巨大節(jié)省。4比特的減少對權(quán)重存儲器100(圖1)中權(quán)重的存儲需求來說就是降低了28%。權(quán)重值的互聯(lián)和在每個(gè)節(jié)點(diǎn)上處理這些權(quán)重值的邏輯,同樣減少了。
圖9顯示使用比特深度優(yōu)化引擎來減少權(quán)重硬件成本的曲線圖。本示例使用混合國家標(biāo)準(zhǔn)和技術(shù)研究所(MNIST)的手寫數(shù)字?jǐn)?shù)據(jù)集作為訓(xùn)練數(shù)據(jù)34。
精度顯示為一個(gè)存儲低比特深度神經(jīng)網(wǎng)絡(luò)40中所有權(quán)重值所需的二進(jìn)制比特總數(shù)的函數(shù)。傳統(tǒng)曲線150顯示沒有比特深度成本優(yōu)化時(shí)精度與權(quán)重之間的函數(shù)關(guān)系。曲線152、154顯示使用比特深度優(yōu)化引擎的精度與權(quán)重成本之間的關(guān)系。曲線152使用了一個(gè)5×10-7的定標(biāo)參數(shù)γ,而曲線154使用了1×10-6的定標(biāo)參數(shù)γ。定標(biāo)參數(shù)γ乘以比特深度梯度成本,例如圖6B的曲線144。
在比特深度減小和精度之間存在權(quán)衡。比特深度優(yōu)化引擎48將曲線向左移動(dòng),表示對于相同精度有較低的硬件成本。對一個(gè)97.4%的精度,硬件成本從傳統(tǒng)曲線150的1.1M比特減少到曲線152的840K比特以及曲線154的700K比特。在該示例中,浮點(diǎn)權(quán)重值被量化為15比特二進(jìn)制值。
運(yùn)行理論
以下是使用數(shù)學(xué)模型和近似的運(yùn)行理論。這些模型僅用于提供信息的目的,而不是限制由權(quán)利要求限定的本發(fā)明。一個(gè)典型的神經(jīng)網(wǎng)絡(luò)訓(xùn)練涉及最小化成本函數(shù)J(θ):
J(θ)=E(θ)+λP(θ)+βKL(θ) (1)
公式(1)包括誤差度量E(θ)(如均方根(MSE))、用于防止過度擬合的加權(quán)衰減函數(shù)P(θ)、和被定義為Kullback-Leibler(KL)散度的稀疏函數(shù)KL(θ)。θ是一個(gè)包含神經(jīng)網(wǎng)絡(luò)中所有參數(shù)權(quán)重的一維向量。θ充當(dāng)優(yōu)化問題中的決策變量。λ控制權(quán)重衰減項(xiàng)的大小,β控制稀疏項(xiàng)的大小。具體來說,權(quán)重懲罰項(xiàng)可以被定義為:
其中{θi}∈θ表示參數(shù)向量的元素。
發(fā)明人修改了公式(1)中的成本函數(shù),來最小化基于權(quán)重比特深度的硬件復(fù)雜度成本。公式(2)中的權(quán)重懲罰項(xiàng)不能直接處理比特邊界特性。因此,比特深度懲罰γC(θ)被加到公式(1)的成本函數(shù)中,如公式:
J(θ)=E(θ)+λP(θ)+βKL(θ)+γC(θ) (3)
其中比特深度懲罰項(xiàng)C(θ)被定義為神經(jīng)網(wǎng)絡(luò)的所有參數(shù)(權(quán)重和偏差)的比特深度總和。具體地,將一個(gè)參數(shù)θi的絕對值除以量化步長(2r/2b),其是最小的假設(shè)精度單位。r被定義為獲取神經(jīng)網(wǎng)絡(luò)中央大約95%參數(shù)值的一個(gè)量值。這需要將某些神經(jīng)網(wǎng)絡(luò)模型參數(shù)約束到一個(gè)給定范圍[-r,r],并將所有中間值線性量化成2b個(gè)二進(jìn)制位,產(chǎn)生2r/2b的步長,其中b通常是從8到16范圍的量化比特,因?yàn)闄?quán)重通常是使用介于8和16比特之間某個(gè)比特來表示它們的二進(jìn)制值。然后,取對數(shù)以計(jì)算表示該整數(shù)大小所需的比特?cái)?shù)。最后,一個(gè)比特用于整數(shù)大小的符號。懲罰項(xiàng)被定義為:
在每次優(yōu)化迭代時(shí),采取以下動(dòng)作:
計(jì)算并生成成本J(θ):使用θ正向傳播數(shù)據(jù)以從成本J(θ)獲得一個(gè)值;
計(jì)算并生成一個(gè)梯度dJ(θ)/dθ:通過反向傳播算法計(jì)算一個(gè)分析梯度dJ(θ)/dθ。通過使用生成的梯度來改變權(quán)重,來更新定點(diǎn)表示的神經(jīng)連接權(quán)重;和
重復(fù)執(zhí)行上述步驟直到滿足終止條件。
在每次優(yōu)化迭代結(jié)束時(shí),用步長α(通常為α=1)更新θ,如公式:
其中t表示訓(xùn)練中的迭代。
公式(5)中的梯度更新包含了比特深度懲罰γC(θ),如公式:
其中λ和β控制權(quán)重衰減項(xiàng)和稀疏項(xiàng)的大小,γ控制比特深度懲罰的大小。為了計(jì)算復(fù)雜度項(xiàng)的梯度dC(θ)/dθ,使用中心有限差分近似計(jì)算數(shù)值梯度,如公式:
其中∈是混合國家標(biāo)準(zhǔn)與技術(shù)研究所(MNIST)數(shù)據(jù)集的一個(gè)參數(shù),定義為∈=0.02。公式(7)的含義是,如果θi在∈內(nèi)的變化導(dǎo)致比特深度的變化,則C(θi)的梯度僅為非零。
為了進(jìn)行說明,圖5顯示對數(shù)權(quán)重懲罰的成本log2(P(θi)0.5/(2r/2b))+1,以及比特深度懲罰的成本C(θi)。在圖5,比特深度懲罰的成本函數(shù)在比特邊界處跳躍以將比特?cái)?shù)最小化。圖5描述比特深度懲罰如何鼓勵(lì)比特深度邊界附近的權(quán)重采用較低的比特深度值。
硬件成本降低
圖10顯示具有權(quán)重比特深度優(yōu)化的神經(jīng)網(wǎng)絡(luò)的集成電路的設(shè)計(jì)和制造過程。設(shè)計(jì)工程師創(chuàng)建神經(jīng)網(wǎng)絡(luò)36的高級別設(shè)計(jì),并輸入具有預(yù)期輸出的訓(xùn)練數(shù)據(jù)34到神經(jīng)網(wǎng)絡(luò)36,經(jīng)過多個(gè)訓(xùn)練周期,使用比特深度優(yōu)化引擎48(圖4)優(yōu)化權(quán)重比特深度。優(yōu)化的結(jié)果是低比特深度神經(jīng)網(wǎng)絡(luò)40。
低比特深度神經(jīng)網(wǎng)絡(luò)40和該芯片上的其它電路,被轉(zhuǎn)換成邏輯門和導(dǎo)線的網(wǎng)表,然后通過布局和走線74轉(zhuǎn)換成物理布局76。物理布局76指定在每個(gè)芯片上的物理位置x、y,其中各種元件都布置在完成的集成電路(IC)芯片上。物理布局76被轉(zhuǎn)換為多個(gè)圖像層,其指定邏輯門位于何處、金屬線、通孔、以及層之間接觸的位置,以及襯底上氧化物和擴(kuò)散區(qū)的位置。掩膜圖像78通常包括每層一個(gè)圖像。
掩膜制作機(jī)器讀取掩膜圖像78或另一個(gè)設(shè)計(jì)文件,將這些圖像物理地寫入或燒制到光掩膜82上。光掩膜82是一個(gè)有形產(chǎn)品,是優(yōu)化軟件或程序產(chǎn)生低比特深度神經(jīng)網(wǎng)絡(luò)40的一個(gè)結(jié)果,其是網(wǎng)表的一部分,最終通過布局軟件轉(zhuǎn)換成實(shí)際晶體管柵極和布線的掩膜圖像78。雖然優(yōu)化軟件可以在通用計(jì)算機(jī)上執(zhí)行,但是創(chuàng)建光掩膜82需要使用專用機(jī)器,其將布局?jǐn)?shù)據(jù)寫入到各個(gè)掩膜上,例如通過由布局?jǐn)?shù)據(jù)打開和關(guān)閉的光或電子束,同時(shí)在放置在空白光掩膜玻璃板上的未曝光的光致抗蝕劑聚合物層上以光柵化圖案進(jìn)行掃描。光致抗蝕劑通過光或電子束在某些位置曝光,而在其它區(qū)域未曝光。然后,可以在化學(xué)顯影劑浴中洗曝光板,以除去曝光或未曝光的區(qū)域,從而產(chǎn)生光掩膜82。
在光掩膜制作80期間,光掩膜機(jī)產(chǎn)生多個(gè)板的光掩膜82,每個(gè)板對應(yīng)每個(gè)半導(dǎo)體加工層。然后,將光掩膜82的板送到半導(dǎo)體工廠(fab)并裝載到光掩模機(jī)中,在IC制造過程84期間,其中穿過光掩膜82的光使得半導(dǎo)體晶片上的光致抗蝕劑樹脂曝光。在通過光掩模82的多層曝光處理以及諸如離子注入、擴(kuò)散、氧化物生長、多晶硅和金屬沉積、通孔和接觸蝕刻、以及金屬和多晶硅蝕刻的其它處理之后,就通過IC制造過程84制造出了晶片86。晶片86是硅、砷化鎵、或其它在其表面上形成有圖案化層的半導(dǎo)體襯底。在每個(gè)晶片86上生成多個(gè)芯片。在初始晶片分類測試之后,將晶片86切割成小片,將其放入封裝中以生產(chǎn)IC 88。
因此,由比特深度優(yōu)化引擎48產(chǎn)生的低比特深度神經(jīng)網(wǎng)絡(luò)40,控制制造過程中的一系列步驟,最終生成光掩膜82和IC 88??刂七@些機(jī)器的專用機(jī)器和計(jì)算機(jī)本身最終由低比特深度神經(jīng)網(wǎng)絡(luò)40中的數(shù)據(jù)控制或指導(dǎo)以產(chǎn)生一個(gè)特定的IC 88芯片。設(shè)計(jì)工程師通過調(diào)整權(quán)重的比特深度而修改神經(jīng)網(wǎng)絡(luò)36的設(shè)計(jì),比特深度優(yōu)化引擎48產(chǎn)生低比特深度神經(jīng)網(wǎng)絡(luò)40。
IC 88可以是被安裝到諸如智能電話90的終端用戶設(shè)備中的ASIC或模塊。智能電話90可以包括相機(jī)92,使用IC 88內(nèi)的神經(jīng)網(wǎng)絡(luò)在智能電話90上處理相機(jī)92拍攝的圖像。神經(jīng)網(wǎng)絡(luò)可以在智能電話90上本地執(zhí)行諸如面部識別或圖像處理的操作。不需要使用大型機(jī)或計(jì)算集群上的遠(yuǎn)程神經(jīng)網(wǎng)絡(luò)。
其他實(shí)施方式
發(fā)明人還補(bǔ)充了幾個(gè)其它實(shí)施例。例如,低比特深度神經(jīng)網(wǎng)絡(luò)40可以有許多應(yīng)用,如用于自動(dòng)駕駛汽車和其他駕駛員輔助系統(tǒng)的實(shí)時(shí)圖像識別、分析患者生命體征的小型醫(yī)療可佩戴裝置、面部識別、其它圖像處理、語音識別、手寫識別、圖像去噪、圖像超分辨率、對象檢測、圖像/視頻生成等。
一些實(shí)施例可以不使用所有組件??梢蕴砑宇~外的組件。比特深度優(yōu)化引擎可以使用各種成本生成器,諸如防止權(quán)重在多個(gè)周期的訓(xùn)練優(yōu)化后變得太大的權(quán)重衰減項(xiàng)、鼓勵(lì)節(jié)點(diǎn)將其權(quán)重歸零的稀疏懲罰,使得僅有一小部分總節(jié)點(diǎn)被有效地使用。剩余的小部分節(jié)點(diǎn)是最相關(guān)的。雖然在運(yùn)行理論中已經(jīng)描述了含有各種成本函數(shù)的公式,但是可能有多種替換、組合和變化??梢韵虮忍厣疃葍?yōu)化引擎48添加其它類型和種類的成本項(xiàng)??梢哉{(diào)整不同成本函數(shù)的相對定標(biāo)因子的數(shù)值以平衡各種不同函數(shù)的影響。
浮點(diǎn)值可以轉(zhuǎn)換為定點(diǎn)值或二進(jìn)制值。雖然已經(jīng)顯示了二進(jìn)制值權(quán)重,但是可以使用各種編碼,諸如二進(jìn)制補(bǔ)碼、霍夫曼編碼、截?cái)喽M(jìn)制編碼等。表示權(quán)重值所需的二進(jìn)制比特?cái)?shù)目可以是指不分編碼方法的比特?cái)?shù),無論是二進(jìn)制編碼、灰色碼編碼、定點(diǎn)、偏移等。
權(quán)重可以被限制在一個(gè)范圍值內(nèi)。范圍不一定必須向下延伸到0,如511到0的范圍。權(quán)重的值可以被偏移以適合一個(gè)二進(jìn)制范圍,如范圍10511到10000的權(quán)重,其可以被存儲為一個(gè)9比特二進(jìn)制字,將偏移量10000添加到二進(jìn)制字以生成實(shí)際權(quán)重值。也可以在優(yōu)化期間調(diào)整范圍。偏移量可以被存儲,或可以被硬連線到低比特深度神經(jīng)網(wǎng)絡(luò)40的邏輯。
訓(xùn)練程序46有可能有多種變化。優(yōu)化可以首先確定多個(gè)隱藏或中間層的節(jié)點(diǎn),然后對權(quán)重進(jìn)行優(yōu)化。通過歸零一些權(quán)重以切斷節(jié)點(diǎn)之間的鏈接,權(quán)重可以確定節(jié)點(diǎn)的布局或連接性。當(dāng)結(jié)構(gòu)被優(yōu)化時(shí),稀疏成本可以用于初始優(yōu)化循環(huán),但當(dāng)權(quán)重值被精調(diào)時(shí),稀疏成本不用于隨后的優(yōu)化循環(huán)。Sigmoid函數(shù)可以用于訓(xùn)練隱藏層。查找表可以用于實(shí)施復(fù)雜函數(shù),而不是算術(shù)邏輯單元(ALU)用于加速處理。
雖然MINST數(shù)據(jù)集已經(jīng)用于測量比特深度優(yōu)化引擎48可以提供的改進(jìn),但也可以使用其它訓(xùn)練數(shù)據(jù)34。對于不同的應(yīng)用和訓(xùn)練集合,將有不同數(shù)量的成本降低。各種各樣的結(jié)構(gòu),不同數(shù)量和布置的隱藏層,可以用于輸入神經(jīng)網(wǎng)絡(luò)36。特定應(yīng)用可以使用某種類型的神經(jīng)網(wǎng)絡(luò)或布置用于神經(jīng)網(wǎng)絡(luò)36,或者可以使用通用神經(jīng)網(wǎng)絡(luò)36作為起始點(diǎn)。自動(dòng)編碼器、automax和softmax分類器以及其它種類的層可以被插入到神經(jīng)網(wǎng)絡(luò)中。整個(gè)優(yōu)化過程可以重復(fù)若干次,例如對于不同的初始條件,諸如對于不同數(shù)量的比特來量化浮點(diǎn)值或其它參數(shù)、不同精度、不同定標(biāo)因子等等??梢葬槍Ω鞣N條件組合來設(shè)置終點(diǎn),例如期望的最終精度、精度硬件成本乘積、目標(biāo)硬件成本等。
雖然低比特深度神經(jīng)網(wǎng)絡(luò)40的實(shí)際成本取決于許多因素,例如節(jié)點(diǎn)數(shù)目、權(quán)重、互連、控制和接口,但是發(fā)明人將成本近似為與權(quán)重總和成比例。用于表示低比特深度神經(jīng)網(wǎng)絡(luò)40中的所有權(quán)重的二進(jìn)制比特總數(shù)是硬件成本的一個(gè)度量,即使只是一個(gè)近似度量。
硬件復(fù)雜度成本梯度可以有很大的梯度值,其至少是較小值的兩倍。當(dāng)權(quán)重在比特深度步階的10%以內(nèi)時(shí),可能會出現(xiàn)很大值??梢允褂闷渌撝档拇筇荻戎?,以及到比特深度步階的距離。梯度值可以在比較之前或之后被縮放和改變。
各種其他IC半導(dǎo)體制造工藝有是可能的。光掩膜82可以用各種特殊機(jī)器和工藝制成,包括直接寫入以燒掉金屬層而不是光致抗蝕劑。擴(kuò)散、氧化物生長、蝕刻、沉積、離子注入和其它制造步驟的多種組合可以由光掩膜控制在IC上產(chǎn)生圖案。
可以使用軟件、硬件、固件、程序、模塊、功能等的各種組合,以各種技術(shù)來實(shí)現(xiàn)比特深度優(yōu)化引擎48和其它組件。最終產(chǎn)品,即低比特深度神經(jīng)網(wǎng)絡(luò)40,可以在專用集成電路(ASIC)或其它硬件中實(shí)現(xiàn)以提高處理速度和降低功耗。
本發(fā)明的背景部分可以包含有關(guān)本發(fā)明問題或環(huán)境的背景信息,而不是由其他人描述的現(xiàn)有技術(shù)。因此,在背景部分中包括的材料不是申請人承認(rèn)的現(xiàn)有技術(shù)。
在此描述的任何方法或過程是機(jī)器實(shí)施的或計(jì)算機(jī)實(shí)施的,并且旨在由機(jī)器、計(jì)算機(jī)或其它設(shè)備執(zhí)行,并不旨在沒有這種機(jī)器輔助的情況下由人執(zhí)行。生成的有形結(jié)果可以包括在諸如計(jì)算機(jī)監(jiān)視器、投影設(shè)備、音頻生成設(shè)備和相關(guān)媒體設(shè)備的顯示設(shè)備上顯示的報(bào)告或其它機(jī)器生成的顯示,并且可以包括也是機(jī)器生成的硬拷貝打印輸出。其它機(jī)器的計(jì)算機(jī)控制是另一個(gè)有形結(jié)果。
所描述的任何優(yōu)點(diǎn)和益處可能不適用于本發(fā)明的所有實(shí)施例。當(dāng)在權(quán)利要求要素中陳述單詞“裝置”時(shí),申請人意圖使權(quán)利要求要素符合35USC第112章第6段。通常,在單詞“裝置”之前有一個(gè)或多個(gè)單詞。在單詞“裝置”之前的一個(gè)或多個(gè)單詞是旨在便于引用權(quán)利要求要素,并不旨在傳達(dá)結(jié)構(gòu)限制。這種裝置加功能的權(quán)利要求旨在不僅覆蓋這里描述的用于執(zhí)行功能及其結(jié)構(gòu)等同物的結(jié)構(gòu),而且覆蓋等效結(jié)構(gòu)。例如,雖然釘子和螺釘具有不同的構(gòu)造,但是它們是等同的結(jié)構(gòu),因?yàn)樗鼈兌紙?zhí)行緊固的功能。不使用“裝置”一詞的權(quán)利要求不打算屬于35第112章第6段。信號通常是電子信號,但可以是光信號,例如可以通過光纖線路傳送的信號。
應(yīng)當(dāng)理解的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非窮舉或?qū)⒈景l(fā)明限制為所公開的精確形式。鑒于上述教導(dǎo),可以對上述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而所有這些修改和替換,都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。