TWI806922B - 對人工神經網路進行量化的方法及裝置及對浮點神經網路進行量化的方法 - Google Patents
對人工神經網路進行量化的方法及裝置及對浮點神經網路進行量化的方法 Download PDFInfo
- Publication number
- TWI806922B TWI806922B TW107140109A TW107140109A TWI806922B TW I806922 B TWI806922 B TW I806922B TW 107140109 A TW107140109 A TW 107140109A TW 107140109 A TW107140109 A TW 107140109A TW I806922 B TWI806922 B TW I806922B
- Authority
- TW
- Taiwan
- Prior art keywords
- neural network
- artificial neural
- sample
- obtaining
- parameter
- Prior art date
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 233
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000009826 distribution Methods 0.000 claims abstract description 156
- 238000013139 quantization Methods 0.000 claims abstract description 97
- 238000011156 evaluation Methods 0.000 claims description 17
- 238000011002 quantification Methods 0.000 claims description 15
- 238000012360 testing method Methods 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000012545 processing Methods 0.000 description 23
- 210000002569 neuron Anatomy 0.000 description 15
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000004913 activation Effects 0.000 description 6
- 238000001994 activation Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 210000000225 synapse Anatomy 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 101150037468 CPD1 gene Proteins 0.000 description 1
- 238000007476 Maximum Likelihood Methods 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 101100108853 Mus musculus Anp32e gene Proteins 0.000 description 1
- 101100221809 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) cpd-7 gene Proteins 0.000 description 1
- 101100165815 Oryza sativa subsp. japonica CYP90A3 gene Proteins 0.000 description 1
- 101100490727 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) AIF1 gene Proteins 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 101150025236 dmaW gene Proteins 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0495—Quantised networks; Sparse networks; Compressed networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Operations Research (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Neurology (AREA)
- Nonlinear Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Feedback Control In General (AREA)
Abstract
一種通過對輸入人工神經網路(ANN)進行量化來產生輸出人工神經網路的人工神經網路量化方法包括:通過對所述輸入人工神經網路的第一參數進行量化來獲得第二參數;從其中已對所述輸入人工神經網路應用所獲得的所述第二參數的中間人工神經網路獲得樣本分佈;以及通過對所獲得的所述樣本分佈進行量化來獲得所述樣本分佈的小數長度。
Description
根據一個或多個示例性實施例的裝置及方法涉及一種人工神經網路,且更具體來說,涉及一種用於對人工神經網路進行量化的方法及裝置。
人工神經網路(artificial neural network,ANN)可指用於產生人工神經元(或神經元模型)的互連集合的計算器件或由計算器件執行的方法。人工神經元可通過對輸入資料執行簡單的運算來產生輸出資料,且輸出資料可被傳送到其他人工神經元。作為人工神經網路的實例,深度神經網路(deep neural network,DNN)或深度學習架構可具有多層式結構。人工神經網路的各個層可具有參數,且可通過根據多個樣本對各個層中的每一者進行訓練來產生多個樣本分佈。
一個或多個示例性實施例的各個方面提供用於以高的準確性對人工神經網路(ANN)進行量化的方法及裝置。
根據示例性實施例的一方面,提供一種通過對輸入人工神經網路(ANN)進行量化來產生輸出人工神經網路的人工神經網路量化方法,所述人工神經網路量化方法包括:通過對所述輸入人工神經網路的第一參數進行量化來獲得第二參數;從其中已對所述輸入人工神經網路應用所獲得的所述第二參數的中間人工神經網路獲得樣本分佈;以及通過對所獲得的所述樣本分佈進行量化來獲得所獲得的所述樣本分佈的小數長度。
根據另一個示例性實施例的一方面,提供一種通過對輸入人工神經網路(ANN)進行量化來產生輸出人工神經網路的裝置,所述裝置包括:記憶體,儲存電腦可執行指令;以及至少一個處理器,被配置成執行所儲存的所述電腦可執行指令以實行:參數量化器,被配置成通過對所述輸入人工神經網路的第一參數進行量化來獲得第二參數;神經網路介面,被配置成從其中已對所述輸入人工神經網路應用所獲得的所述第二參數的中間人工神經網路獲得樣本分佈;以及樣本量化器,被配置成獲得所獲得的所述樣本分佈的小數長度。
根據另一個示例性實施例的一方面,提供一種對浮點神經網路進行量化的方法,所述方法包括:通過對所述浮點神經網路中同一類別中的參數進行量化來獲得量化參數;從其中已對所述浮點神經網路應用所獲得的所述量化參數的半固定點人工神經網路(ANN)獲得樣本分佈;以及獲得所獲得的所述樣本分佈的小數長度。
根據另一個示例性實施例的一方面,提供一種對浮點神經網路(ANN)進行量化的裝置,所述裝置包括:記憶體,儲存電腦可執行指令;以及至少一個處理器,被配置成執行所儲存的所述電腦可執行指令以實行:參數量化器,被配置成通過對所述浮點神經網路中同一類別中的參數進行量化來獲得量化參數;神經網路介面,被配置成從其中已對所述浮點神經網路應用所獲得的所述量化參數的半固定點人工神經網路(ANN)獲得樣本分佈;以及樣本量化器,被配置成獲得所獲得的所述樣本分佈的小數長度。
在下文中,將結合附圖詳細闡述一個或多個示例性實施例,其中在通篇中相同的參考編號指代相同的元件。本文中所用的用語“及/或(and/or)”包括相關列出項中的一個或多個項的任意及所有組合。相似地,當例如“…中的至少一個”等表達位於一系列元件之後時,所述表達修飾整個系列元件而不是修飾所述系列中的單個元件。
圖1是根據示例性實施例的量化系統100及神經網路系統200的方塊圖。神經網路系統200可提供人工神經網路(ANN),且量化系統100可對神經網路系統200提供的人工神經網路進行量化並向神經網路系統200提供至少一部分已被量化的人工神經網路。
人工神經網路可指根據形成動物大腦的生物神經網路啟發得到的計算系統。不同於根據預定義的條件來執行任務的經典演算法(例如,基於規則的程式化),人工神經網路可通過考慮多個樣本(或實例)來學習執行任務。人工神經網路可具有其中人工神經元(或神經元)連接到彼此的結構。各個神經元之間的連接可被稱為突觸(synapse)。神經元中的每一者可對接收訊號進行處理並通過突觸將經處理的訊號傳送到另一個神經元。神經元的輸出可被稱為“啟動(activation)”。神經元及/或突觸可具有變化的權重,且由神經元處理的訊號的影響可根據所述訊號的權重而增大或減小。具體來說,與各別神經元相關聯的權重可被稱為偏置量(bias)。
深度神經網路(deep neural network,DNN)或深度學習架構可具有層結構,且特定層的輸出可為下一層的輸入。在這種多層式結構中,可根據多個樣本對每一個層進行訓練。人工神經網路(例如,深度神經網路)可由分別對應於人工神經元的多個處理節點來實行且可利用高計算複雜度及計算資源來獲得良好的(例如,準確性高的)結果。
為降低計算複雜度,可對人工神經網路進行量化。量化可指將輸入值映射到數目比輸入值的數目小的值的過程,如同通過捨入(rounding)將實數映射到整數一樣。舉例來說,人工神經網路中的量化可應用於層啟動、權重、偏置量、閾值、輸入/輸出分佈、等等。量化人工神經網路可能夠使得所使用的計算資源數目減少。
人工神經網路的量化可涉及將浮點神經網路轉換成固定點神經網路的過程。將浮點神經網路轉換成固定點神經網路可包括確定(例如,獲得)固定點神經網路的小數長度。浮點數可包括符號、指數及有效位數(significant digit)(或有效數(significand)),而固定點數可包括整數部分及小數部分。在一些實例中,固定點數的整數部分可包括符號位元。使用浮點數的人工神經網路(即,浮點神經網路)可具有高的準確性及高的計算複雜度,而使用固定點數的人工神經網路(即,固定點神經網路)可具有降低的準確性及降低的計算複雜度。
由於人工神經網路中的結果準確性與計算複雜度之間的權衡關係,因此人工神經網路的量化可引起準確性的變化且準確性的變化可取決於量化方法。如以下參照圖式將闡述,根據示例性實施例的量化系統100可為人工神經網路的量化提供高效的手段。因此,量化系統100可對任意的人工神經網路提供量化,其可提供性能與所述任意的人工神經網路的性能相同的量化人工神經網路。由於量化人工神經網路具有高的準確性,因此用於實行人工神經網路的計算資源可減少,且因此,人工神經網路的應用網路可明顯擴展。
神經網路系統200可為提供(或驅動)人工神經網路的任意系統,且可被稱為神經網路裝置。舉例來說,神經網路系統200可為包括至少一個處理器及記憶體的計算系統。作為非限制性實例,神經網路系統200可為移動計算系統(例如,膝上型電腦、平板電腦或智慧型電話)以及靜止計算系統(例如,臺式電腦、工作站或伺服器)。
根據一個或多個示例性實施例,神經網路系統200可驅動浮點神經網路且可向量化系統100提供關於浮點神經網路的資訊。根據一個或多個示例性實施例,神經網路系統200可根據從量化系統100接收到的資訊來驅動人工神經網路且可向量化系統100提供關於所驅動的人工神經網路的資訊。在圖1中,神經網路系統200及量化系統100是單獨的系統。然而,在一個或更多個示例性實施例中,神經網路系統200與量化系統100可形成為單個系統。
量化系統100可為根據一個或多個示例性實施例執行量化的系統,且可被稱為量化裝置。舉例來說,量化系統100可為包括至少一個處理器及記憶體的計算系統。量化系統100可為靜止計算系統或移動計算系統。量化系統100可基於由神經網路系統200提供的關於人工神經網路的資訊來對人工神經網路進行量化。在本文中,待量化的人工神經網路可被稱為輸入人工神經網路,且通過對輸入人工神經網路進行量化生成的人工神經網路可被稱為輸出人工神經網路。根據一個或多個實施例,輸入人工神經網路可包括浮點神經網路,且輸出人工神經網路可包括固定點神經網路。
如圖1所示,量化系統100可包括神經網路介面120、參數量化器140及樣本量化器160。根據一個或多個示例性實施例,神經網路介面120、參數量化器140、及樣本量化器160中的每一者可利用通過邏輯合成來實行的邏輯區塊、由處理器執行的軟體區塊或其組合來實行。根據一個或多個示例性實施例,神經網路介面120、參數量化器140、及樣本量化器160中的每一者可為由處理器執行的指令集形式的流程,且可被儲存在可由處理器存取的記憶體中。
神經網路介面120可為神經網路系統200提供與參數量化器140及樣本量化器160之間的介面。舉例來說,神經網路介面120可將從神經網路系統200接收到的輸入人工神經網路的參數提供到參數量化器140,且可將從參數量化器140接收到的量化參數提供到神經網路系統200。另外,神經網路介面120可將從神經網路系統200接收到的樣本分佈提供到樣本量化器160,且可將從樣本量化器160接收到的量化樣本分佈或小數長度(例如,圖5所示FLsam
)提供到神經網路系統200。
參數量化器140可從通過神經網路介面120從神經網路系統200接收到的參數(在下文中,被稱為輸入參數或第一參數)產生(例如,獲得)量化參數(在下文中,被稱為輸出參數或第二參數)。如以下參照圖2所闡述,人工神經網路可包括各種參數,且人工神經網路的量化可包括對這些參數的量化。參數量化器140可對輸入人工神經網路的參數中的至少一些參數進行量化,且因此,輸入人工神經網路的參數可在樣本分佈之前被量化。如以下參照圖2所闡述,由於人工神經網路中的參數及樣本分佈可具有不同的特性,因此參數的量化可與樣本分佈的量化分開。參數量化器140可通過神經網路介面120將量化參數提供到神經網路系統200。參數量化器140的操作的實例將在以下參照圖4進行闡述。
樣本量化器160可從通過神經網路介面120從神經網路系統200接收到的樣本分佈(在下文中,被稱為輸入樣本分佈)產生(例如,獲得)量化樣本分佈(在下文中,被稱為輸出樣本分佈)。輸入樣本分佈可與現有技術分佈(例如,高斯分佈(Gaussian distribution)、拉普拉斯分佈(Laplacian distribution)及伽馬分佈(Gamma distribution))具有差別。如以下將闡述,根據一個或多個示例性實施例的樣本量化器160在樣本分佈的形式方面可不受限制,且可對具有任意形式的樣本分佈提供準確性提高的量化。
根據一個或多個示例性實施例,樣本量化器160可接收從通過對輸入人工神經網路應用由參數量化器140獲得的量化參數而獲得的人工神經網路產生的樣本分佈。在本說明書中,通過對輸入人工神經網路應用由參數量化器140獲得的量化參數而獲得的人工神經網路可被稱為中間人工神經網路。具體來說,在將浮點神經網路轉換成固定點神經網路的同時,通過對浮點神經網路應用量化參數而獲得的人工神經網路可被稱為半固定點神經網路(semifixed-point neural network)。樣本量化器160對由將被應用到量化人工神經網路(即,輸出人工神經網路)的量化參數產生的樣本分佈進行量化。由此,輸出人工神經網路的樣本分佈的量化準確性可得到提高。換句話說,相對於樣本分佈的量化誤差可減少。樣本量化器160的操作的實例將在以下參照圖5、圖6A至圖6C、圖7至圖9及圖10A至圖10B進行闡述。
圖2是示出根據示例性實施例的人工神經網路的實例的圖。詳細來說,圖2是示意性地示出作為人工神經網路的實例的深度神經網路20的結構的圖。
如圖2所示,深度神經網路20可包括多個層(即,第一層到第n層L1、L2、L3、...及Ln),且第一層到第n層L1、L2、L3、...及Ln中的每一者的輸出可通過至少一個通道被輸入到下一層。舉例來說,第一層L1可通過對樣本SAM進行處理來通過多個通道CH11到CH1x將輸出提供到第二層L2,且第二層L2還可通過多個通道CH21到CH2y將輸出提供到第三層L3。最終,第n層Ln可輸出結果RES,且結果RES可包括與樣本SAM相關聯的至少一個值。用於分別遞送第一層到第n層L1、L2、L3、...及Ln的輸出的通道的數目可彼此相等或彼此不同。舉例來說,第二層L2的通道CH21到CH2y的數目與第三層L3的通道CH31到CH3z的數目可彼此相等或不同。
樣本SAM可為由深度神經網路20處理的輸入資料。舉例來說,樣本SAM可為包含人用筆寫的字母的圖像,且深度神經網路20可通過從圖像識別所述字母來輸出含有表示所述字母的值的結果RES。結果RES可包括與不同的字母對應的多種機率,且所述不同字母中最有可能的字母可對應於最高機率。深度神經網路20中的第一層到第n層L1、L2、L3、...、及Ln中的每一者可通過基於參數(例如,權重、偏置量、閾值等)對樣本SAM或前一層的輸出進行處理來產生自己的輸出,所述參數是通過對包含字母或預定義的參數(例如,權重、偏置量、閾值等)的多個圖像進行學習而產生的。舉例來說,如圖2所示,第二層L2可包括:權重集合W,包括多個權重w1
、...及wp
;偏置量集合B,包括多個偏置量b1
、...及bq
;及閾值集合T,包括多個閾值t1
、...及tr
,且還可包括未在圖2中具體示出的其他參數。
根據一個或多個示例性實施例,可通過圖1所示參數量化器140來對深度神經網路20的參數中的至少一些參數進行量化。根據一個或多個示例性實施例,參數量化器140可針對所述多個層L1、L2、L3、...及Ln中的每一者來獨立地對參數進行量化,或者可針對所述多個通道(例如,CH21、...、及CH2y)中的每一者來獨立地對參數進行量化。根據一個或多個示例性實施例,可對至少兩個層的參數進行共同量化,且可對至少兩個通道的參數進行共同量化。根據一個或多個示例性實施例,權重、偏置量及閾值可彼此獨立地進行量化,或者可對至少兩種不同類型的參數進行共同量化。現將通過主要參照對作為參數的權重進行量化的例示來闡述一個或多個示例性實施例,但是應理解,一個或多個其他示例性實施例並非僅限於此。
深度神經網路20可在各個層之間包括啟動函數。啟動函數可將前一層的輸出轉換成下一層的輸入。舉例來說,如圖2所示,啟動函數f2
可為非線性函數(例如,整流線性單元(rectified linear unit,ReLU)、參數修正線性單元(parametric rectified linear unit,PReLU)、雙曲正切(hyperbolic tangent,tanh))或S型函數(sigmoid function),且可在第二層L2與第三層L3之間對第二層L2的輸出進行非線性轉換。
根據一個或多個示例性實施例,圖1所示樣本量化器160可不僅接收啟動函數的輸入(即,預啟動值),而且也接收啟動函數的輸出作為樣本分佈,並執行量化。另外,根據一個或多個示例性實施例,圖1所示神經網路介面120可按照人工神經網路(例如,深度神經網路20)的層及/或通道為單位來獲得輸入分佈。舉例來說,由圖1所示樣本量化器160接收到的樣本分佈可從由一個層通過多個通道產生的輸出獲得,或者可從與一個通道對應的輸出獲得。
圖3是根據示例性實施例的對人工神經網路進行量化的方法的流程圖。舉例來說,圖3所示方法可由圖1所示量化系統100來執行。在下文中,將參照圖1闡述圖3。
參照圖3,在操作S200中,可對人工神經網路的參數進行量化。舉例來說,圖1所示參數量化器140可產生與給定的小數長度對應的量化參數,且參數的最終的小數長度(例如,圖4所示FLpar
)可基於量化參數的量化誤差來確定。操作S200的實例將在以下參照圖4來闡述。
在操作S400中,可從已應用量化參數的人工神經網路獲得樣本分佈。舉例來說,圖1所示參數量化器140可通過神經網路介面120將量化參數提供到神經網路系統200,且神經網路系統200可對通過對輸入人工神經網路應用量化參數而獲得的中間人工神經網路進行驅動。神經網路介面120可從神經網路系統200接收中間人工神經網路的樣本分佈,且可將所接收的樣本分佈作為輸入樣本分佈提供到樣本量化器160。
在操作S600中,可對樣本分佈進行量化。舉例來說,圖1所示樣本量化器160可將具有任意形狀的輸入樣本分佈分離成至少兩個樣本群組,且可將樣本群組中的每一者獨立地近似到連續機率分佈(continuous probability distribution,CPD)。樣本量化器160可基於連續機率分佈來計算(例如,獲得)最佳步長,且可從所計算的步長確定(例如,獲得)用於對輸入樣本分佈進行量化的小數長度(例如,圖5所示FLsam
)。操作S600的實例將在以下參照圖5、圖6A至圖6C、圖7至圖9及圖10A至圖10B來闡述。
圖4是根據示例性實施例的圖3所示操作S200的實例的流程圖。如以上參照圖3所闡述,在圖4所示操作S200'中,可對人工神經網路的參數進行量化。如圖4所示,操作S200'可包括多個操作S210至S260。根據一個或多個示例性實施例,可通過圖1所示參數量化器140來執行圖4所示操作S200'。現將參照圖1闡述圖4。
在操作S210中,可通過將變數i設定成1來執行初始化。變數i可為表示多個小數長度中的每一者的索引,且可在後續操作中計算分別與所述多個小數長度對應的評估值。根據一個或多個示例性實施例,可由上面安裝有量化人工神經網路的系統(例如,圖12所示移動計算器件400)來確定(例如,獲得)所述多個小數長度。舉例來說,可根據系統的位元寬度來確定多個可用小數長度。在圖4所示實例中,當k是正整數時,可使用k個小數長度FL1
、...及FLk
,且變數i可從1依序增大到k。
在操作S220中,可根據第i個小數長度FLi
來對參數進行量化,且可計算量化誤差。當給出小數長度時,可對參數進行量化,且可從未經量化的參數(即,輸入參數或第一參數)與量化參數(即,輸出參數或第二參數)計算量化誤差。舉例來說,當根據第i個小數長度FLi
從權重wj
量化得到的權重是Q(wj
, FLi
)時,可使用[公式1]來計算量化誤差Eij
。
[公式1]Eij
= |wj
-Q
(wj
,FLi
)|
在操作S230中,可計算與第i個小數長度FLi
對應的評估值。評估值可指示基於[公式1]的量化誤差或者以與[公式1]的量化誤差不同的方式定義的量化誤差來表示量化性能的值。作為非限制性實例,評估值可為均方誤差(mean squared error,MSE)、訊號對量化雜訊比(signal to quantization noise ratio,SQNR)等。根據一個或多個示例性實施例,可使用[公式2]來計算對於給定的第i個小數長度FLi
而言權重集合W中所包括的權重的評估值Dw
(FLi
)。
[公式2]
在操作S240中,可判斷變數i是否與k相同。換句話說,可檢查是否已針對所有k個小數長度FL1
、...及FLk
計算了評估值。當變數i與k不相同時,在操作S250中,可將變數i增加1,且接著可實行操作S220。另一方面,當變數i與k相同時,可執行操作S260。
在操作S260中,可基於評估值來確定(例如,獲得)參數的小數長度FLpar
。換句話說,在操作S220到S240中,可計算k個評估值,且在操作S260中,可將k個小數長度FL1
、...、及FLk
中的一個小數長度確定成參數的小數長度FLpar
。舉例來說,當使用[公式2]來計算評估值時,可選擇與k個評估值中最低的評估值對應的小數長度。不同於樣本分佈,輸入人工神經網路的參數可為確定的值,且如上所述可確定使量化誤差最小化的小數長度。圖4所示方法僅為圖3所示操作S200的實例,且可採用本發明概念的技術範圍內的與圖4所示方法相似或不同的各種量化方法來對參數進行量化。
圖5是根據示例性實施例的圖3所示操作S600的實例的流程圖。如以上參照圖3所闡述,在圖6所示操作S600'中,可對樣本分佈進行量化。詳細來說,圖5示出對單個樣本分佈進行量化的實例,且如圖5所示,操作S600'可包括多個操作S620、S640、S660及S680。根據一個或多個示例性實施例,可通過圖1所示樣本量化器160來執行圖5所示操作S600'。現將參照圖1闡述圖5。
在操作S620中,可將樣本分佈(或輸入樣本分佈)分離成至少兩個樣本群組。根據示例性實施例,可使用統計特性來對樣本分佈進行量化。因此,為匯出樣本分佈的統計特性,可將樣本分佈分離成至少兩個樣本群組SG1
、SG2
、...,且可獨立地對樣本群組SG1
、SG2
、...進行近似。操作S620的實例將在以下參照圖6來闡述。
在操作S640中,可分別將樣本群組近似到連續機率分佈。根據一個或多個示例性實施例,可通過對連續機率分佈中的每一者的至少一個參數進行估測來將在操作S620中產生的樣本群組SG1
、SG2
、...分別近似到連續機率分佈。舉例來說,可將樣本群組中的每一者近似到廣義伽馬分佈、高斯分佈或拉普拉斯分佈。為對連續機率分佈的參數進行估測,可使用利用以下方法的場合作為非限制性實例:使用平均值、方差(variance)等的方法、最大似然方法(maximum likelihood method)、基於數值計算的方法或類似方法。因此,可從所述至少兩個樣本群組SG1
、SG2
、...匯出具有為唯一值的參數的至少兩個連續機率分佈CPD1
、CPD2
、...。
根據一個或多個示例性實施例,可將樣本群組SG1
、SG2
、...分別近似到具有4個參數α、β、λ及μ的廣義伽馬分佈p(x),如在[公式3]中一樣。
[公式3],
其中α及β可為指數衰減參數。當α=1時,可根據使用[公式4]所示方法的場合來從平均值mx
及方差σx 2
匯出所述4個參數α、β、λ及μ。
[公式4]
在操作S660中,可計算與樣本群組對應的步長。換句話說,可從樣本群組以及從樣本群組匯出的連續機率分佈來計算步長。舉例來說,可從樣本群組以及連續機率分佈計算量化誤差,且可計算具有低量化誤差的步長。因此,可計算分別與樣本群組對應的步長Δ1
、Δ2
、...。操作S660的實例將在以下參照圖7來闡述。
在操作S680中,可選擇樣本分佈的小數長度。舉例來說,可從在操作S660中計算的步長匯出至少一個候選小數長度,且可選擇至少一個候選小數長度中的一個小數長度作為樣本分佈的小數長度FLsam
。操作S800的實例將在以下參照圖8、圖9、圖10A及圖10B來闡述。
圖6A至圖6C示出根據示例性實施例的圖5所示操作S620的實例。如以上參照圖5所闡述,在操作S620中,可將樣本分佈分離成至少兩個樣本群組。詳細來說,圖6A至圖6C示出將樣本分佈SD分離成兩個樣本群組SG1
及SG2
的操作的實例。
參照圖6A,可從已應用量化參數的人工神經網路提供樣本分佈SD。參照圖6B,可以零為基準將樣本分佈SD分離成兩個樣本群組SG1
及SG2
。根據一個或多個示例性實施例,可將樣本分佈SD分離成包括負樣本及零的第一樣本群組SG1
以及包括正樣本的第二樣本群組SG2
。根據一個或多個示例性實施例,可將樣本分佈SD分離成包括負樣本的第一樣本群組SG1
以及包括零及正樣本的第二樣本群組SG2
。根據一個或多個示例性實施例,可將樣本分佈SD分離成包括負樣本的第一樣本群組SG1
以及包括正樣本的第二樣本群組SG2
,且可將零排除。參照圖6C,可分別將第一樣本群組SG1
及第二樣本群組SG2
獨立地近似到第一連續機率分佈CPD1
及第二連續機率分佈CPD2
。根據一個或多個示例性實施例,可將第一樣本群組SG1
及第二樣本群組SG2
近似到廣義伽馬分佈,且可使用[公式3]及[公式4]來估測第一連續機率分佈CPD1
及第二連續機率分佈CPD2
的參數。
圖7是根據示例性實施例的圖5所示操作S660的實例的流程圖。如以上參照圖5所闡述,在圖7所示操作S660'中,可計算與樣本分佈對應的步長。詳細來說,圖7示出基於單個樣本群組SGj
以及樣本群組SGj
已被近似到的連續機率分佈CPDj
來計算步長的實例。如圖7所示,操作S660'可包括操作S662及操作S664。
在操作S662中,可計算超載畸變(overload distortion)及細微性畸變。當在限制區中對輸入進行量化時,超載畸變可表示由從限制區偏離的輸入造成的誤差。在輸入的限制區內的量化結果之間的間距可被稱為細微性,且細微性畸變可表示由這一間距造成的誤差。根據一個或多個示例性實施例,當對(-L, L)區段進行統一量化時,可如[公式5]中一樣來表示量化級別Si
。
[公式5]
因此,可計算出與樣本群組SGj
及連續機率分佈CPDj
對應的超載畸變Dj over
及細微性畸變Dj gran
。
在操作S664中,可從超載畸變及細微性畸變計算步長。舉例來說,如[公式8]所示,可從超載畸變Dj over
及細微性畸變Dj gran
計算出總體畸變Dj
。
[公式8]
根據一個或多個示例性實施例,當使用[公式6]及[公式7]計算出超載畸變及細微性畸變時,可計算出使作為超載畸變與細微性畸變之和的總體畸變Dj
最小化的步長ΔN
。舉例來說,當連續機率分佈CPDj
是廣義伽馬分佈時,可使用[公式9]計算出使總體畸變Dj
最小化的步長ΔN
。
[公式9]
由此,可基於封閉形式來匯出使總體畸變Dj
最小化的步長ΔN
。不同於以上說明,根據一個或多個示例性實施例,當未從連續機率分佈匯出閉合形式來計算步長時,可使用數值分析。
如上所述,在操作S660'中可計算與樣本群組SGj
對應的步長Δj
。因此,可計算分別與至少兩個樣本群組對應的至少兩個步長。舉例來說,當如以上參照圖6A至圖6C所述將樣本分佈SD分離成第一樣本群組SG1
及第二樣本群組SG2
時,可計算分別與第一樣本群組SG1
及第二樣本群組SG2
對應的第一步長Δ1
及第二步長Δ2
。現將在假定將樣本分佈SD分離成第一樣本群組SG1
及第二樣本群組SG2
且計算出第一步長Δ1
及第二步長Δ2
的條件下闡述圖8、圖9、圖10A及圖10B,圖8、圖9、圖10A及圖10B示出在圖5所示操作S660之後執行的圖5所示操作S680的實例。然而應理解,一個或多個其他示例性實施例並非僅限於此。
圖8是根據示例性實施例的圖3所示操作S680的實例的流程圖。如以上參照圖5所闡述,在圖8所示操作S680'中,可選擇樣本分佈的小數長度FLsam
。如圖8所示,操作S680'可包括操作S682及操作S684。
在操作S682中,可產生候選小數長度。舉例來說,可從第一步長Δ1
及第二步長Δ2
來確定(例如,獲得)候選小數長度的範圍,且可提供所述範圍中所包括的小數長度作為候選小數長度。因此,可產生包括至少一個候選小數長度的候選小數長度集合FL_SET。操作S682的實例將在以下參照圖9來闡述。
在操作S684中,可選擇(例如,獲得或確定)一個候選小數長度。舉例來說,可從候選小數長度集合FL_SET選擇提供最小量化誤差的候選小數長度,且因此,可最終匯出樣本分佈的小數長度FLsam
。根據一個或多個示例性實施例,可使用各種方法來選擇候選小數長度,且操作S684的一些實例將在以下參照圖10A及圖10B來闡述。
圖9是根據示例性實施例的圖8所示操作S682的實例的流程圖。如以上參照圖8所闡述,在圖9所示操作S682'中,可產生候選小數長度。如圖9所示,操作S682'可包括操作S682_2及操作S682_4。
在操作S682_2中,可確定候選小數長度的範圍。根據一個或多個示例性實施例,可計算與第一步長Δ1
及第二步長Δ2
相鄰的步長的小數長度。舉例來說,如在[公式10]中一樣,可計算和與第一步長Δ1
及第二步長Δ2
相鄰的步長對應的4個小數長度。
[公式10]
FL1, ceil
= -ceil(log2
Δ1
)
FL1, floor
= -floor(log2
Δ1
)
FL2, ceil
= -ceil(log2
Δ2
)
FL2, floor
= -floor(log2
Δ2)
在[公式10]中,“ceil()”可為向上捨入函數,且“floor()”可為向下捨入函數。接下來,可基於所計算的小數長度中的最大小數長度及最小小數長度來確定候選小數長度的範圍。舉例來說,可如在[公式11]中一樣來定義候選小數長度集合FL_SET。
[公式11]
在[公式11]中,可使用第一裕度Mmargin
及第二裕度Nmargin
來校正可能因輸入樣本分佈與輸入樣本分佈已被近似到的樣本分佈(即,連續機率分佈)之間的差異而產生的誤差。如在[公式11]中一樣,可將候選小數長度的下限確定為通過從[公式10]的參數的最小值減去第一裕度Mmargin
而獲得的值,且可將候選小數長度的上限確定為通過將第二裕度Nmargin
加上[公式10]的參數的最大值而獲得的值。根據一個或多個示例性實施例,第一裕度Mmargin
及第二裕度Nmargin
可被設定成處於圖1所示量化系統100的計算複雜度或執行能力(或計算資源)所允許的限度內的最大值,且因此,候選小數長度的範圍可得到擴展。
圖10A及圖10B是根據一個或多個示例性實施例的圖8所示操作S684的實例的流程圖。詳細來說,圖10A示出根據封閉形式的實例,且圖10B示出根據基於樣本的方法(sample-based method)的實例。如以上參照圖8所闡述,在圖10A及圖10B所示操作S684a及S684b中,可選擇一個候選小數長度。現將省略圖10A與圖10B之間重複的說明。
參照圖10A,操作S684a可包括操作S684_2a及操作S684_4a。在操作S684_2a中,可計算根據候選小數長度而定的量化誤差。可使用各種方法(例如,均方誤差及訊號對量化雜訊比)來計算量化誤差。可使用[公式12]計算與從廣義伽馬分佈(如在例如[公式3]及[公式4]中一樣)匯出的候選小數長度集合FL_SET中的一個候選小數長度對應的量化誤差。
[公式12]
在[公式12]中,r表示用於確定第一樣本群組SG1
的權重及第二樣本群組SG2
的權重的值,且可如在例如[公式13]中一樣加以定義。
[公式13]
因此,可計算與候選小數長度集合FL_SET中所包括的候選小數長度對應的量化誤差。
在操作S684_4a中,可基於量化誤差來選擇一個候選小數長度。舉例來說,基於如在[公式12]中一樣計算的量化誤差,可選擇提供最小量化誤差的候選小數長度作為樣本分佈的小數長度FLsam
。換句話說,如在[公式14]中一樣,可選擇樣本分佈的小數長度FLsam
。
[公式14]
參照圖10B,操作S684b可包括操作S684_2b、S684_4b及S684_6b。在操作S684_2b中,可獲得根據候選小數長度而定的測試樣本分佈。舉例來說,圖1所示樣本量化器160可通過神經網路介面120將候選小數長度集合FL_SET中所包括的候選小數長度提供到圖1所示神經網路系統200,且神經網路系統200可通過驅動已被分別應用候選小數長度的人工神經網路來產生樣本分佈(即,測試樣本分佈)。因此,樣本量化器160可通過神經網路介面120從神經網路系統200接收測試樣本分佈SDtest1
、SDtest2
、...。
在操作S684_4b中,可計算根據測試樣本分佈而定的量化誤差。可通過使用各種方法(例如,均方誤差及訊號對量化雜訊比)來從測試樣本分佈及樣本分佈計算量化誤差。因此,可產生與候選小數長度集合FL_SET中所包括的候選小數長度對應的量化誤差。
在操作S684_6b中,可基於量化誤差來選擇一個候選小數長度。舉例來說,在操作S684_6b中,可選擇提供最小量化誤差的候選小數長度作為樣本分佈的小數長度FLsam
。
圖11是根據示例性實施例的計算系統300的方塊圖。根據一個或多個示例性實施例,可使用圖11所示計算系統300來實行圖1所示量化系統100。參照圖11,計算系統300可包括系統記憶體310、處理器330、儲存裝置350、輸入/輸出(input/output,I/O)器件370及通訊連接(communication connection)390。計算系統300的元件可例如通過匯流排進行互連。
系統記憶體310可包括程式312。程式312可使處理器330根據一個或多個示例性實施例來對人工神經網路進行量化。舉例來說,程式312可包括可由處理器330執行的多個指令,且人工神經網路可根據由處理器330執行的程式312的所述多個指令來進行量化。系統記憶體310的非限制性實例可包括揮發性記憶體(例如,靜態隨機存取記憶體(Static Random Access Memory,SRAM)及動態隨機存取記憶體(Dynamic Random Access Memory,DRAM))及非揮發性記憶體(例如,快閃記憶體)。
處理器330可包括能夠執行任何指令集(例如,英特爾架構-32(Intel Architecture-32,IA-32)、64位擴展英特爾架構-32、x86-64、增強RISC性能優化-性能計算架構(Performance Optimization With Enhanced RISC – Performance Computing,PowerPC)、可擴充處理器架構(Scalable Processor ARChitecture,Sparc)、無內部互鎖流水級的微處理器(Microprocessor without interlocked piped stages,MIPS)、高級精簡指令集機器(Advanced RISC Machine,ARM)及英特爾架構-64)的至少一個核心。處理器330可執行儲存在系統記憶體310中的指令且可通過執行程式312來對人工神經網路進行量化。
即使被供應到計算系統300的電力被切斷,儲存裝置350仍可不丟失所儲存的資料。舉例來說,儲存裝置350可為非揮發性記憶體(例如,電可擦可程式化唯讀記憶體(electrically erasable programmable read-only memory,EEPROM)、快閃記憶體、相變隨機存取記憶體(phase change random access memory,PRAM)、電阻式隨機存取記憶體(resistance random access memory,RRAM)、納米浮閘記憶體(nano-floating gate memory,NFGM)、聚合物隨機存取記憶體(polymer random access memory,PoRAM)、磁性隨機存取記憶體(magnetic random access memory,MRAM)、鐵電隨機存取記憶體(ferroelectric random access memory,FRAM)),或可為儲存媒體(例如,磁帶、光碟或磁片)。根據一個或多個示例性實施例,儲存裝置350可能夠拆卸地附接到計算系統300。
根據一個或多個示例性實施例,儲存裝置350可儲存用於根據示例性實施例對人工神經網路進行量化的程式312,且來自儲存裝置350的程式312或程式312的至少一部分可在處理器330執行程式312之前被載入到系統記憶體310中。根據一個或多個示例性實施例,儲存裝置350可儲存以程式化語言寫成的檔,且由編譯器(compiler)等從所述檔產生的程式212或程式212的至少一部分可被載入到系統記憶體310中。
根據一個或多個示例性實施例,儲存裝置350可儲存將由處理器330處理的資料及/或經過處理器330處理的資料。舉例來說,儲存裝置350可儲存圖2所示參數及樣本分佈,可儲存量化參數及量化樣本分佈,且可儲存在對參數或樣本分佈進行量化期間產生的資料(例如,步長及小數長度)。
輸入/輸出器件370可包括輸入器件(例如,鍵盤或點擊器件(pointing device))以及輸出器件(例如,印表機或顯示器)。舉例來說,用戶可通過輸入/輸出器件370來觸發由處理器330執行程式312,可輸入參數及樣本分佈,且可檢查量化參數、量化樣本分佈及/或錯誤消息。
通訊連接390可提供對計算系統300外部的網路的存取。舉例來說,網路可包括多個計算系統與通訊鏈路,且通訊鏈路可包括有線鏈路、光學鏈路、無線鏈路或任何其他類型的鏈路。
圖12是根據本發明概念示例性實施例的移動計算器件400的方塊圖。根據一個或多個示例性實施例,可在移動計算器件400中實行根據示例性實施例進行量化的固定點神經網路。作為非限制性實例,移動計算器件400可為由電池、外部電源供電或通過自行發電供電的任何移動電子器件(例如,行動電話、平板個人電腦(personal computer,PC)、可穿戴器件、及物體互聯網器件)。
參照圖12,移動計算器件400可包括記憶體子系統410、輸入/輸出器件430、處理單元450及網路介面470。記憶體子系統410、輸入/輸出器件430、處理單元450及網路介面470可通過匯流排490來彼此通訊。根據一個或多個示例性實施例,記憶體子系統410、輸入/輸出器件430、處理單元450及網路介面470中的至少兩者可作為系統級晶片(System-on-Chip,SoC)包括在一個封裝中。
記憶體子系統410可包括隨機存取記憶體(RAM)412及儲存裝置414。隨機存取記憶體412及/或儲存裝置414可儲存由處理單元450執行的指令、以及經過處理單元450處理的資料。舉例來說,隨機存取記憶體412及/或儲存裝置414可儲存變數(例如,人工神經網路的訊號、權重、偏置量及閾值),且還可儲存人工神經網路的人工神經元(或計算節點)的參數。根據一個或多個示例性實施例,儲存裝置414可包括非揮發性記憶體。
處理單元450可包括中央處理器(central processing unit,CPU)452、圖形處理單元(graphics processing unit,GPU)454、數位訊號處理器(digital signal processor,DSP)456、及神經處理單元(neural processing unit,NPU)458中的至少一者。舉例來說,根據一個或多個示例性實施例,處理單元450可包括以下中的一者或僅一些:中央處理器452、圖形處理單元454、數位訊號處理器456及神經處理單元458。
中央處理器452可控制移動計算器件400的總體操作。舉例來說,中央處理器452可回應於通過輸入/輸出器件430接收的外部輸入來直接執行特定任務,或者可指示處理單元450的其他元件來執行任務。圖形處理單元454可產生通過輸入/輸出器件430中所包括的顯示器輸出的圖像的資料且可對從輸入/輸出器件430中所包括的照相機接收到的資料進行編碼。數位訊號處理器456可通過對數位訊號(例如,從網路介面470提供的數位訊號)進行處理來產生有用的資料。
作為人工神經網路的專用硬體的神經處理單元458可包括與構成人工神經網路的至少一些人工神經元對應的多個計算節點,且所述多個計算節點中的至少一些計算節點可並行地處理訊號。根據示例性實施例進行量化的人工神經網路(例如,深度神經網路)具有低的計算複雜度以及高的準確性,且因此可易於在圖12所示移動計算器件400中進行實行,可具有快的處理速度,且還可由例如簡單的且小規模的神經處理單元458來實行。
輸入/輸出器件430可包括輸入器件(例如,觸摸式輸入器件、聲音輸入器件及照相機)以及輸出器件(例如,顯示器及聲音輸出器件)。舉例來說,當通過聲音輸入器件輸入用戶的聲音時,所述聲音可由在移動計算器件400中實行的深度神經網路來識別,且可觸發對應的操作。另外,當通過照相機輸入圖像時,圖像中的物體可由在移動計算器件400中實行的深度神經網路識別出,且可將例如虛擬實境等輸出提供給用戶。網路介面470可使移動計算器件400能夠對移動通訊網路(例如,長期演進(Long Term Evolution,LTE)或5G)進行存取且可使得能夠對局域網(例如,無線保真(wireless fidelity,Wi-Fi))進行存取。
以上已參照圖式具體示出並闡述了一個或多個示例性實施例。本文所用術語僅是用於闡述示例性實施例的目的,而並非旨在限制本發明概念。因此,所屬領域中的技術人員應理解,在不背離由所附權利要求書所界定的本發明概念的精神及範圍的條件下,可作出形式及細節上的各種改變。
20‧‧‧深度神經網路
100‧‧‧量化系統
120‧‧‧神經網路介面
140‧‧‧參數量化器
160‧‧‧樣本量化器
200‧‧‧神經網路系統
300‧‧‧計算系統
310‧‧‧系統記憶體
312‧‧‧程式
330‧‧‧處理器
350‧‧‧儲存裝置
370‧‧‧輸入/輸出器件
390‧‧‧通訊連接
400‧‧‧移動計算器件
410‧‧‧記憶體子系統
412‧‧‧隨機存取記憶體
414‧‧‧儲存裝置
430‧‧‧輸入/輸出器件
450‧‧‧處理單元
452‧‧‧中央處理器
454‧‧‧圖形處理單元
456‧‧‧數位訊號處理器
458‧‧‧神經處理單元
470‧‧‧網路介面
490‧‧‧匯流排
B‧‧‧偏置量集合
b1~bq‧‧‧偏置量
CH11~CH1x、CH21~CH2y、CH31~CH3z‧‧‧通道
CPD1‧‧‧連續機率分佈/第一連續機率分佈
CPD2‧‧‧連續機率分佈/第二連續機率分佈
CPDj‧‧‧連續機率分佈
Dj gran‧‧‧細微性畸變
Dj over‧‧‧超載畸變
FLi‧‧‧第i個小數長度
FLpar、FLsam‧‧‧小數長度
FL_SET‧‧‧候選小數長度集合
L1‧‧‧第一層/層
L2‧‧‧第二層/層
L3~Ln‧‧‧第三層~第n層/層
RES‧‧‧結果
S200、S200'、S210、S220、S230、S240、S250、S260、S400、S600、S600'、S620、S640、S660、S660'、S662、S664、S680、S680'、S682、S682'、S684、S682_2、S682_4、S684a、S684_2a、S684_4a、S684b、S684_2b、S684_4b、S684_6b‧‧‧操作
SAM‧‧‧樣本
SD‧‧‧樣本分佈
SG1‧‧‧樣本群組/第一樣本群組
SG2‧‧‧樣本群組/第二樣本群組
SGj‧‧‧樣本群組
T‧‧‧閾值集合
t1~tr‧‧‧閾值
W‧‧‧權重集合
w1~wp‧‧‧權重
Δ1‧‧‧第一步長/步長
Δ2‧‧‧第二步長/步長
Δj‧‧‧步長
結合附圖閱讀以下詳細說明,將更清楚地理解一個或多個示例性實施例,在附圖中:
圖1是根據示例性實施例的量化系統及神經網路系統的方塊圖。
圖2是示出根據示例性實施例的人工神經網路(ANN)的實例的圖。
圖3是根據示例性實施例的對人工神經網路進行量化的方法的流程圖。
圖4是根據示例性實施例的圖3所示操作S200的實例的流程圖。
圖5是根據示例性實施例的圖3所示操作S600的實例的流程圖。
圖6A至圖6C示出根據示例性實施例的圖5所示操作S620的實例。
圖7是根據示例性實施例的圖5所示操作S660的實例的流程圖。
圖8是根據示例性實施例的圖3所示操作S680的實例的流程圖。
圖9是根據示例性實施例的圖8所示操作S682的實例的流程圖。
圖10A及圖10B是根據一個或多個示例性實施例的圖8所示操作S684的實例的流程圖。
圖11是根據示例性實施例的計算系統的方塊圖。
圖12是根據示例性實施例的移動計算器件的方塊圖。
S200、S400、S600‧‧‧操作
Claims (20)
- 一種通過對輸入人工神經網路進行量化來產生輸出人工神經網路的人工神經網路量化方法,所述人工神經網路量化方法包括:通過對所述輸入人工神經網路的第一參數進行量化來獲得第二參數;從其中已對所述輸入人工神經網路應用所獲得的所述第二參數的中間人工神經網路獲得樣本分佈,其中所述樣本分佈包括一層的樣本分佈;以及通過對所獲得的所述樣本分佈進行量化來獲得所獲得的所述樣本分佈的小數長度,其中獲得所獲得的所述樣本分佈的所述小數長度包括將所獲得的所述中間人工神經網路的所述一層的樣本分佈分離成多個樣本群組。
- 如申請專利範圍第1項所述的人工神經網路量化方法,其中獲得所述第二參數包括:通過根據給定的小數長度對所述第一參數進行量化來獲得量化參數,並計算所述第一參數與所獲得的所述量化參數之間的量化誤差;基於所計算的所述量化誤差來計算所述給定的小數長度的評估值;以及基於與多個小數長度對應的多個評估值來獲得所述第二參數的最終小數長度。
- 如申請專利範圍第2項所述的人工神經網路量化方法,其中計算所述評估值包括計算所計算的所述量化誤差的平方和作為所述評估值;以及獲得所述最終小數長度包括確定與所述多個評估值中的最小評估值對應的小數長度作為所述最終小數長度。
- 如申請專利範圍第1項所述的人工神經網路量化方法,其中所述輸入人工神經網路包括多個層及多個通道,所述多個層及所述多個通道各自具有至少一個參數;以及所述第一參數包括所述多個層及所述多個通道中的每一者的所述至少一個參數中的一個或多個參數。
- 如申請專利範圍第4項所述的人工神經網路量化方法,其中所述第一參數包括權重、偏置量、及閾值中的至少一者。
- 如申請專利範圍第1項所述的人工神經網路量化方法,其中獲得所獲得的所述樣本分佈的所述小數長度更包括:將所述多個樣本群組分別近似到多個連續機率分佈;基於所述多個樣本群組及所述多個連續機率分佈來獲得多個步長;以及基於所獲得的所述多個步長來選擇所述小數長度。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中將所獲得的所述樣本分佈分離成所述多個樣本群組包括:將 所獲得的所述樣本分佈分離成包括負樣本及零的第一樣本群組及包括正樣本的第二樣本群組。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中將所述樣本分佈分離成所述多個樣本群組包括:將所述樣本分佈分離成第一樣本群組、及第二樣本群組;且所述第一樣本群組包括負樣本,且所述第二樣本群組包括零及正樣本。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中將所述樣本分佈分離成所述多個樣本群組包括將所述樣本分佈分離成第一樣本群組及第二樣本群組;以及所述第一樣本群組包括負樣本,且所述第二樣本群組包括正樣本。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中將所述多個樣本群組近似包括將所述多個樣本群組中的每一者近似到廣義伽瑪分佈、高斯分佈或拉普拉斯分佈。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中獲得所述多個步長包括:根據所述多個連續機率分佈中的每一者的步長來獲得超載畸變及細微性畸變;以及基於所獲得的所述超載畸變及所獲得的所述細微性畸變來獲得所述多個步長中的每一者。
- 如申請專利範圍第6項所述的人工神經網路量化方法,其中選擇所述小數長度包括:基於所獲得的所述多個步長來獲得候選小數長度;以及從所獲得的所述候選小數長度中選擇一個候選小數長度作為所述小數長度。
- 如申請專利範圍第12項所述的人工神經網路量化方法,其中獲得所述候選小數長度包括:獲得與所獲得的所述多個步長相鄰的步長對應的小數長度;以及基於所獲得的所述小數長度來確定小數長度的範圍。
- 如申請專利範圍第13項所述的人工神經網路量化方法,其中確定所述小數長度的所述範圍包括:將通過從所獲得的所述小數長度中的最小小數長度減去第一裕度而獲得的值確定為所述範圍的下限,以及將通過將所獲得的所述小數長度中的最大小數長度加上第二裕度而獲得的值作為所述範圍的上限;且所述第一裕度及所述第二裕度是基於所述人工神經網路量化方法的執行能力來確定的,其中所述第一裕度及所述第二裕度用來校正因所獲得的所述樣本分佈與所述多個連續機率分佈之間的差異而產生的誤差。
- 如申請專利範圍第13項所述的人工神經網路量化方法,其中從所獲得的所述候選小數長度中選擇所述一個候選小數長度包括:基於所獲得的所述候選小數長度及所述多個連續機率分佈來計算與所獲得的所述候選小數長度對應的誤差;以及基於所計算的所述誤差來選擇所述一個候選小數長度。
- 如申請專利範圍第13項所述的人工神經網路量化方法,其中從所獲得的所述候選小數長度中選擇所述一個候選小數長度包括:從分別依賴於所獲得的所述候選小數長度的多個測試人工神經網路獲得多個測試樣本分佈;基於所獲得的所述多個測試樣本分佈及所述多個連續機率分佈來計算與所獲得的所述測試樣本分佈對應的多個誤差;以及基於所計算的所述多個誤差來選擇所述一個候選小數長度。
- 如申請專利範圍第1項所述的人工神經網路量化方法,其中更包括基於所獲得的所述第二參數及所獲得的所述小數長度來獲得固定點人工神經網路作為所述輸出人工神經網路。
- 一種通過對輸入人工神經網路進行量化來產生輸出人工神經網路的裝置,所述裝置包括:記憶體,儲存電腦可執行指令;以及至少一個處理器,被配置成執行所儲存的所述電腦可執行指令以:通過對所述輸入人工神經網路的第一參數進行量化來獲 得第二參數;從其中已對所述輸入人工神經網路應用所獲得的所述第二參數的中間人工神經網路獲得樣本分佈,其中所述樣本分佈包括一層的樣本分佈;以及通過將所獲得的所述中間人工神經網路的所述一層的樣本分佈分離成多個樣本群組來獲得所獲得的所述樣本分佈的小數長度。
- 如申請專利範圍第18項所述的裝置,其中所述至少一個處理器更被配置成執行所述電腦可執行指令以:將從所述樣本量化器接收到的所述樣本分佈的至少一個候選小數長度提供到測試人工神經網路,並從所述測試人工神經網路獲得測試樣本分佈;且基於所獲得的所述測試樣本分佈將所述至少一個候選小數長度中的一個候選小數長度確定為所述樣本分佈的所述小數長度。
- 一種對浮點神經網路進行量化的方法,所述方法包括:通過對所述浮點神經網路中同一類別中的參數進行量化來獲得量化參數;從其中已對所述浮點神經網路應用所獲得的所述量化參數的半固定點人工神經網路獲得樣本分佈,其中所述樣本分佈包括一層的樣本分佈;以及獲得所獲得的所述樣本分佈的小數長度,其中獲得所獲得的所述樣本分佈的所述小數長度包括將所獲得的所述一層的樣本分佈分離成多個樣本群組。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0150707 | 2017-11-13 | ||
KR1020170150707A KR20190054454A (ko) | 2017-11-13 | 2017-11-13 | 인공 신경망의 양자화 방법 및 장치 |
??10-2017-0150707 | 2017-11-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201933193A TW201933193A (zh) | 2019-08-16 |
TWI806922B true TWI806922B (zh) | 2023-07-01 |
Family
ID=66335776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107140109A TWI806922B (zh) | 2017-11-13 | 2018-11-12 | 對人工神經網路進行量化的方法及裝置及對浮點神經網路進行量化的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11823028B2 (zh) |
KR (1) | KR20190054454A (zh) |
CN (1) | CN109784470A (zh) |
DE (1) | DE102018128080A1 (zh) |
TW (1) | TWI806922B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3336763A1 (en) * | 2016-12-14 | 2018-06-20 | Conti Temic microelectronic GmbH | Device for classifying data |
US12014273B2 (en) * | 2018-12-12 | 2024-06-18 | Kneron (Taiwan) Co., Ltd. | Low precision and coarse-to-fine dynamic fixed-point quantization design in convolution neural network |
CN112085190B (zh) * | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
KR20210004306A (ko) * | 2019-07-04 | 2021-01-13 | 삼성전자주식회사 | 뉴럴 네트워크 장치 및 뉴럴 네트워크의 파라미터 양자화 방법 |
US20210374511A1 (en) * | 2019-08-23 | 2021-12-02 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
US20210374510A1 (en) * | 2019-08-23 | 2021-12-02 | Anhui Cambricon Information Technology Co., Ltd. | Data processing method, device, computer equipment and storage medium |
JP7146952B2 (ja) * | 2019-08-23 | 2022-10-04 | 安徽寒武紀信息科技有限公司 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
EP4024280A4 (en) | 2019-08-27 | 2022-11-16 | Anhui Cambricon Information Technology Co., Ltd. | DATA PROCESSING METHOD AND APPARATUS, COMPUTER EQUIPMENT AND STORAGE MEDIA |
CN110717585B (zh) * | 2019-09-30 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 神经网络模型的训练方法、数据处理方法和相关产品 |
US11954457B2 (en) | 2019-10-31 | 2024-04-09 | SK Hynix Inc. | Arithmetic devices for neural network including a function storage circuit and an activation function circuit |
US12014184B2 (en) | 2019-10-31 | 2024-06-18 | SK Hynix Inc. | Arithmetic devices for neural network including an input distribution signal generation circuit, an output distribution signal generation circuit, and an output distribution signal compensation circuit |
US11915125B2 (en) | 2019-10-31 | 2024-02-27 | SK Hynix Inc. | Arithmetic devices for neural network |
US11386947B2 (en) | 2019-10-31 | 2022-07-12 | SK Hynix Inc. | Arithmetic devices conducting auto-load operation for writing the activation functions |
KR20210076687A (ko) | 2019-12-16 | 2021-06-24 | 삼성전자주식회사 | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치에서 뉴럴 네트워크를 처리하는 방법 |
KR20210083935A (ko) * | 2019-12-27 | 2021-07-07 | 삼성전자주식회사 | 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치 |
US20230421764A1 (en) * | 2020-11-18 | 2023-12-28 | Intellectual Discovery Co., Ltd. | Neural network feature map quantization method and device |
DE102021100404A1 (de) | 2021-01-12 | 2022-07-14 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren zum Bestimmen einer optimierten komprimierten Netzkonfiguration, Assistenzeinrichtung und Kraftfahrzeug |
US11490085B2 (en) * | 2021-01-14 | 2022-11-01 | Tencent America LLC | Model sharing by masked neural network for loop filter with quality inputs |
DE102021112821A1 (de) | 2021-05-18 | 2022-11-24 | Bayerische Motoren Werke Aktiengesellschaft | Verfahren zur Verkehrszeichenerkennung für ein Assistenzsystem eines Fahrzeugs mit einer bit-seriellen architekturaufweisenden Recheneinrichtung sowie Recheneinrichtung für ein Fahrzeug |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120134555A1 (en) * | 2010-11-29 | 2012-05-31 | Canon Kabushiki Kaisha | Report creation support apparatus, creation support method thereof and program |
TW201324203A (zh) * | 2011-12-02 | 2013-06-16 | Inst Information Industry | 量化式資料分析方法以及量化式資料分析裝置 |
US20160328646A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
CN106779053A (zh) * | 2016-12-15 | 2017-05-31 | 福州瑞芯微电子股份有限公司 | 一种基于影响因子和神经网络的知识点摸底方法 |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102803991B (zh) | 2009-06-03 | 2014-06-04 | 学校法人中部大学 | 物体检测设备 |
JP5846553B2 (ja) | 2010-09-13 | 2016-01-20 | 国立大学法人東京工業大学 | 属性の学習及び転移システム、認識器生成装置、認識器生成方法及び認識装置 |
US9053391B2 (en) | 2011-04-12 | 2015-06-09 | Sharp Laboratories Of America, Inc. | Supervised and semi-supervised online boosting algorithm in machine learning framework |
US20120316886A1 (en) | 2011-06-08 | 2012-12-13 | Ramin Pishehvar | Sparse coding using object exttraction |
US9002060B2 (en) | 2012-06-28 | 2015-04-07 | International Business Machines Corporation | Object retrieval in video data using complementary detectors |
US20140098883A1 (en) * | 2012-10-09 | 2014-04-10 | Nokia Corporation | Method and apparatus for video coding |
WO2015017796A2 (en) | 2013-08-02 | 2015-02-05 | Digimarc Corporation | Learning systems and methods |
US20160293167A1 (en) | 2013-10-10 | 2016-10-06 | Google Inc. | Speaker recognition using neural networks |
WO2016054778A1 (en) | 2014-10-09 | 2016-04-14 | Microsoft Technology Licensing, Llc | Generic object detection in images |
US20160328644A1 (en) | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Adaptive selection of artificial neural networks |
US10262259B2 (en) | 2015-05-08 | 2019-04-16 | Qualcomm Incorporated | Bit width selection for fixed point neural networks |
US10402750B2 (en) | 2015-12-30 | 2019-09-03 | Facebook, Inc. | Identifying entities using a deep-learning model |
US10831444B2 (en) | 2016-04-04 | 2020-11-10 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
-
2017
- 2017-11-13 KR KR1020170150707A patent/KR20190054454A/ko not_active Application Discontinuation
-
2018
- 2018-07-24 US US16/044,163 patent/US11823028B2/en active Active
- 2018-08-15 CN CN201810928026.0A patent/CN109784470A/zh active Pending
- 2018-11-09 DE DE102018128080.7A patent/DE102018128080A1/de active Pending
- 2018-11-12 TW TW107140109A patent/TWI806922B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120134555A1 (en) * | 2010-11-29 | 2012-05-31 | Canon Kabushiki Kaisha | Report creation support apparatus, creation support method thereof and program |
TW201324203A (zh) * | 2011-12-02 | 2013-06-16 | Inst Information Industry | 量化式資料分析方法以及量化式資料分析裝置 |
US20160328646A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
CN107239829A (zh) * | 2016-08-12 | 2017-10-10 | 北京深鉴科技有限公司 | 一种优化人工神经网络的方法 |
CN106779053A (zh) * | 2016-12-15 | 2017-05-31 | 福州瑞芯微电子股份有限公司 | 一种基于影响因子和神经网络的知识点摸底方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190054454A (ko) | 2019-05-22 |
US11823028B2 (en) | 2023-11-21 |
TW201933193A (zh) | 2019-08-16 |
CN109784470A (zh) | 2019-05-21 |
US20190147322A1 (en) | 2019-05-16 |
DE102018128080A1 (de) | 2019-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI806922B (zh) | 對人工神經網路進行量化的方法及裝置及對浮點神經網路進行量化的方法 | |
TWI791610B (zh) | 對人工神經網路及浮點神經網路進行量化的方法及裝置 | |
Liang et al. | Pruning and quantization for deep neural network acceleration: A survey | |
KR102589303B1 (ko) | 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치 | |
US11928600B2 (en) | Sequence-to-sequence prediction using a neural network model | |
US11694073B2 (en) | Method and apparatus for generating fixed point neural network | |
US20190340499A1 (en) | Quantization for dnn accelerators | |
WO2019212878A1 (en) | Design flow for quantized neural networks | |
US11586886B2 (en) | Neural network apparatus and method with bitwise operation | |
JP2020009444A (ja) | ニューラルネットワークにおいてパラメータを処理する方法及び装置 | |
CN111652368A (zh) | 一种数据处理方法及相关产品 | |
CN114127740A (zh) | 人工智能模型的分布式训练中的数据并行性 | |
CN110781686B (zh) | 一种语句相似度计算方法、装置及计算机设备 | |
US20200302283A1 (en) | Mixed precision training of an artificial neural network | |
CN114127741A (zh) | 用于人工智能建模的动态多层执行 | |
US11625583B2 (en) | Quality monitoring and hidden quantization in artificial neural network computations | |
KR20210035702A (ko) | 인공 신경망의 양자화 방법 및 인공 신경망을 이용한 연산 방법 | |
US20220398430A1 (en) | Method and apparatus for quantizing deep neural network | |
US12061981B1 (en) | Decomposition of weight tensors in network with value quantization | |
US20210089898A1 (en) | Quantization method of artificial neural network and operation method using artificial neural network | |
US11847567B1 (en) | Loss-aware replication of neural network layers | |
Dong et al. | An optimization method for pruning rates of each layer in CNN based on the GA-SMSM | |
CN114254746A (zh) | 执行神经网络的方法和设备 | |
de Moura et al. | Skipping CNN convolutions through efficient memoization | |
JP7107797B2 (ja) | 情報処理方法及び情報処理システム |