TW202125339A - 經由調整記憶體內計算陣列的列閾值來執行xnor等效運算 - Google Patents

經由調整記憶體內計算陣列的列閾值來執行xnor等效運算 Download PDF

Info

Publication number
TW202125339A
TW202125339A TW109130916A TW109130916A TW202125339A TW 202125339 A TW202125339 A TW 202125339A TW 109130916 A TW109130916 A TW 109130916A TW 109130916 A TW109130916 A TW 109130916A TW 202125339 A TW202125339 A TW 202125339A
Authority
TW
Taiwan
Prior art keywords
memory
calculation array
value
rows
current reference
Prior art date
Application number
TW109130916A
Other languages
English (en)
Inventor
中澤 王
愛德華 提格
麥克斯 威靈
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW202125339A publication Critical patent/TW202125339A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

一種方法經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算。該方法包括以下步驟:基於權重值和啟用值的函數來調整針對該記憶體內計算陣列的每一列所產生的啟用閾值。該方法亦包括以下步驟:基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考,該記憶體內計算陣列被程式設計有權重集合。經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的閾值。

Description

經由調整記憶體內計算陣列的列閾值來執行XNOR等效運算
本專利申請案主張於2019年9月9日提出申請的題為「PERFORMING XNOR EQUIVALENT OPERATIONS BY ADJUSTING COLUMN THRESHOLDS OF A COMPUTE-IN-MEMORY ARRAY(經由調整記憶體內計算陣列的列閾值來執行XNOR等效運算)」的非臨時申請案第16/565,308的優先權,該非臨時申請案被轉讓給本案受讓人並因而經由援引被明確納入於此。
本案的各態樣大體而言係關於經由調整人工神經網路的記憶體內計算(compute-in-memory)陣列的列閾值來執行XNOR等效運算。
極低位元寬神經網路(諸如二進位神經網路(BNN))是深度神經聯網路(DNN)中的強大的新辦法。二進位神經網路可以顯著減少資料訊務並且節省功率。例如,與浮點/定點精確率相比,用於二進位神經網路的記憶體儲存被顯著減少,此情形是因為權重和神經元啟用兩者被二值化為-1或+1。
然而,數位互補金屬氧化物半導體(CMOS)處理使用[0,1]基礎。為了執行與該等二進位神經網路相關聯的二進位實現,二進位網路的[-1,+1]基礎應當被轉變成CMOS [0,1]基礎。該轉變採用計算密集型異或非(XNOR)運算。
記憶體內計算系統可以實現極低位元寬神經網路,諸如二進位神經網路(BNN)。記憶體內計算系統具有帶有一些處理能力的記憶體。例如,位元線和字線的每個交點表示濾波器權重值,將該權重值乘以該字線上的輸入啟用以產生積。隨後將沿每條位元線的個體積求和以產生輸出張量的對應輸出值。該實現可被視為乘法累加(MAC)運算。該等MAC運算可以將二進位網路的[-1,+1]基礎轉變成CMOS [0,1]基礎。
習知地,記憶體內計算系統下的該轉變是經由在每個位元單元處完成XNOR運算來達成的。隨後將沿每條位元線的結果求和以產生對應的輸出值。遺憾的是,在每個位元單元中包括XNOR功能消耗了較大面積並且增加了功耗。
在習知實現中,每個位元單元包括讀和寫的基本記憶體功能加上在輸入和單元狀態之間進行XNOR的附加邏輯功能。作為包括XNOR能力的結果,記憶體(例如,靜態隨機存取記憶體(SRAM))之每一者單元的電晶體數目從6或8增加到12,此舉顯著增大了單元大小和功耗。消除XNOR運算而同時仍能夠從二進位神經網路[-1,+1]基礎轉變成CMOS [0,1]基礎將是合乎期望的。
在本案的一個態樣,一種裝置包括包含列和行的記憶體內計算陣列。該記憶體內計算陣列被配置成:基於權重值和啟用值的函數來調整針對該記憶體內計算陣列的每一列所產生的啟用閾值。該記憶體內計算陣列亦被配置成:基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考。該記憶體內計算陣列被程式設計有權重值集合。經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的閾值。
另一態樣揭示一種用於經由調整具有行和列的記憶體內計算陣列的列閾值來執行XNOR等效運算的方法。該方法包括以下步驟:基於權重值和啟用值的函數來調整針對該記憶體內計算陣列的每一列所產生的啟用閾值。該方法亦包括以下步驟:基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考。該記憶體內計算陣列被程式設計有權重值集合。經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的閾值。
在另一態樣,一種非暫時性電腦可讀取媒體記錄了非暫時性程式碼。該非暫時性程式碼在被(諸)處理器執行時使該(該等)處理器基於權重值和啟用值的函數來調整針對具有行和列的記憶體內計算陣列的每一列所產生的啟用閾值。該程式碼亦使該(該等)處理器基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考。該記憶體內計算陣列被程式設計有權重值集合。經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的閾值。
另一態樣揭示一種用於經由調整具有行和列的記憶體內計算陣列的列閾值來執行XNOR等效運算的裝置。該裝置包括:用於基於權重值和啟用值的函數來調整針對該記憶體內計算陣列的每一列所產生的啟用閾值的構件。該裝置亦包括:用於基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考的構件。該記憶體內計算陣列被程式設計有權重值集合。經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的閾值。
此部分已較寬泛地勾勒出本案的特徵和技術優勢以便下文的詳細描述可被更好地理解。本案的附加特徵和優點將在下文描述。熟習此項技術者應當領會,本案可容易地被用作修改或設計用於實施與本案相同的目的的其他結構的基礎。熟習此項技術者亦應認識到,此種等效構造並不脫離所附請求項中所闡述的本案的教示。被認為是本案的特性的新穎特徵在其組織和操作方法兩態樣連同進一步的目的和優點在結合附圖來考慮以下描述時將被更好地理解。然而,要清楚理解的是,提供每一幅附圖均僅用於圖示和描述目的,且無意作為對本案的限定的定義。
以下結合附圖闡述的詳細描述意欲作為各種配置的描述,而無意表示可實踐本文中所描述的概念的僅有配置。本詳細描述包括具體細節以提供對各種概念的透徹理解。然而,對於熟習此項技術者將顯而易見的是,沒有該等具體細節亦可以實踐該等概念。在一些例子中,以方塊圖形式圖示眾所周知的結構和元件以便避免湮沒此類概念。
基於本教示,熟習此項技術者應領會,本案的範疇意欲覆蓋本案的任何態樣,不論其是與本案的任何其他態樣相獨立地還是組合地實現的。例如,可以使用所闡述的任何數目的態樣來實現裝置或實踐方法。另外,本案的範疇意欲覆蓋使用作為所闡述的本案的各個態樣的補充或者與之不同的其他結構、功能性,或者結構及功能性來實踐的此類裝置或方法。應當理解,所揭示的本案的任何態樣可由請求項的一或多個元素來實施。
措辭「示例性」在本文中用於意指「用作示例、實例,或說明」。本文中描述為「示例性」的任何態樣不必被解釋為優於或勝過其他態樣。
儘管本文描述了特定態樣,但該等態樣的眾多變體和置換落在本案的範疇之內。儘管提到了較佳態樣的一些益處和優點,但本案的範疇並非意欲被限定於特定益處、用途或目標。相反,本案的各態樣意欲能寬泛地應用於不同的技術、系統配置、網路和協定,其中一些作為實例在附圖以及以下對較佳態樣的描述中說明。詳細描述和附圖僅僅說明本案而非限定本案,本案的範疇由所附請求項及其等效技術方案來定義。
記憶體內計算(CIM)是一種在記憶體陣列中執行乘法和累加(MAC)運算的方法。記憶體內計算可經由啟用多行,以及使用類比列電流進行乘法與求和運算來改良記憶體陣列內的並行性。例如,SRAM位元單元可被定製以實現二進位神經網路的XNOR和位元計數運算。
習知地,記憶體內計算二進位神經網路實現是經由在每個位元單元處完成XNOR運算,以及將針對每個位元單元的結果求和來達成的。在每個位元單元中添加XNOR功能增大了佈局面積並且增大了功耗。例如,記憶體(例如,SRAM)之每一者單元中的電晶體數目從6或8增加到12。
本案的各態樣係關於經由調整人工神經網路(例如,二進位神經網路)的記憶體內計算陣列的列閾值來執行XNOR等效運算。在一個態樣,基於權重值和啟用值的函數來調整記憶體陣列的每一列的啟用閾值。基於來自輸入向量中的輸入值來計算轉換偏置電流參考。
在一個態樣,將位元線整體計數同轉換偏置電流參考與經調整的啟用閾值之和進行比較,以決定位元線的輸出。位元線整體計數是與記憶體陣列的位元線相對應的每個位元單元輸出的總和。例如,與第一位元線相關聯的每個位元單元的輸出的總和(或整體計數)作為第一輸入被提供給比較器。隨後將該整體計數同轉換偏置電流參考與經調整的啟用閾值之和進行比較,以決定該位元線的輸出。在一些態樣,啟用閾值小於記憶體陣列的行數的一半。行數對應於輸入向量的大小。在一些態樣,轉換偏置電流參考小於記憶體陣列的行數的一半。
本案的人工神經網路可以是二進位神經網路、多位元神經網路,或極低位元寬神經網路。本案的各態樣可適用於指定極低的記憶體處理和功率的設備(例如,邊緣設備),或可以受益於因二進位格式而得到的記憶體節省的大型網路。本案的各態樣經由消除實現二進位神經網路的記憶體內計算系統中的XNOR運算來減小記憶體的大小以及改良記憶體的功耗。例如,完成基礎轉變以避免在每個位元單元中使用XNOR功能及其對應的(諸)電晶體,由此減小了記憶體的大小。
圖1圖示了晶片上系統(SOC)100的示例性實現,其可包括根據本案的某些態樣的配置成用於對人工神經網路的記憶體內計算(CIM)陣列的乘法和累加運算進行轉變的中央處理單元(CPU)102或多核CPU。變數(例如,神經信號和突觸權重)、與計算設備相關聯的系統參數(例如,帶有權重的神經網路)、延遲、頻率頻段資訊,以及任務資訊可被儲存在與神經處理單元(NPU)108相關聯的記憶體區塊中、與CPU 102相關聯的記憶體區塊中、與圖形處理單元(GPU)104相關聯的記憶體區塊中、與數位信號處理器(DSP)106相關聯的記憶體區塊中、記憶體區塊118中,或可跨多個區塊分佈。在CPU 102處執行的指令可從與CPU 102相關聯的程式記憶體載入或可從記憶體區塊118載入。
SOC 100亦可包括為具體功能定製的附加處理區塊(諸如GPU 104、DSP 106、連接性區塊110(其可包括第五代(5G)連接性、第四代長期進化(4G LTE)連接性、Wi-Fi連接性、USB連接性、藍芽連接性等))以及例如可偵測和辨識姿勢的多媒體處理器112。在一種實現中,NPU實現在CPU、DSP,及/或GPU中。SOC 100亦可包括感測器處理器114、圖像信號處理器(ISP)116,及/或導航模組120(其可包括全球定位系統)。
SOC 100可基於ARM指令集。在本案的一態樣,載入到通用處理器102中的指令可包括用於基於權重值(例如,權重矩陣)和啟用值的函數來調整陣列的每一列的啟用閾值的代碼。通用處理器102可進一步包括用於基於來自輸入向量中的輸入值來計算轉換偏置電流參考的代碼。
深度學習架構可經由學習在每一層中以逐次更高的抽象程度來表示輸入、藉此構建輸入資料的有用特徵表示來執行物件辨識任務。以此方式,深度學習解決了傳統機器學習的主要瓶頸。在深度學習出現之前,用於物件辨識問題的機器學習辦法可能嚴重依賴人類工程設計的特徵,或許與淺分類器相結合。淺分類器可以是兩類線性分類器,例如,其中可將特徵向量分量的加權和與閾值作比較以預測輸入屬於何者類別。人類工程設計的特徵可以是由擁有領域專業知識的工程師針對特定問題領域定製的模版或核心。相比之下,深度學習架構可學習以表示與人類工程師可能會設計的類似的特徵,但深度學習架構是經由訓練來學習的。此外,深度網路可以學習以表示和辨識人類可能還沒有考慮過的新類型的特徵。
深度學習架構可以學習特徵階層。例如,若向第一層呈遞視覺資料,則第一層可學習以辨識輸入串流中的相對簡單的特徵(諸如邊)。在另一實例中,若向第一層呈遞聽覺資料,則第一層可學習以辨識特定頻率中的頻譜功率。取第一層的輸出作為輸入的第二層可以學習以辨識特徵組合,諸如對於視覺資料辨識簡單形狀或對於聽覺資料辨識聲音組合。例如,更高層可學習以表示視覺資料中的複雜形狀或聽覺資料中的詞語。再高層可學習以辨識常見視覺物件或口語短語。
深度學習架構在被應用於具有自然階層結構的問題時可能表現特別好。例如,機動交通工具的分類可受益於首先學習以辨識輪子、擋風玻璃,以及其他特徵。該等特徵可在更高層以不同方式被組合以辨識轎車、卡車和飛機。
神經網路可被設計成具有各種各樣的連接性模式。在前饋網路中,資訊從較低層被傳遞到較高層,其中給定層之每一者神經元向更高層中的神經元進行傳達。如前述,可在前饋網路的相繼層中構建階層式表示。神經網路亦可具有回流或回饋(亦被稱為自頂向下(top-down))連接。在回流連接中,來自給定層中的神經元的輸出可被傳達給相同層中的另一神經元。回流架構可有助於辨識跨越多於一個按順序遞送給該神經網路的輸入資料組塊的模式。從給定層中的神經元到較低層中的神經元的連接被稱為回饋(或自頂向下)連接。當高層級概念的辨識可輔助辨別輸入的特定低層級特徵時,具有許多回饋連接的網路可能是有助益的。
神經網路的各層之間的連接可以是全連接的或局部連接的。圖2A圖示了全連接神經網路202的實例。在全連接神經網路202中,第一層中的神經元可將其輸出傳達給第二層之每一者神經元,從而第二層之每一者神經元將從第一層之每一者神經元接收輸入。圖2B圖示了局部連接神經網路204的實例。在局部連接的神經網路204中,第一層中的神經元可連接到第二層中有限數目的神經元。更一般化地,局部連接的神經網路204的局部連接層可被配置成使得一層之每一者神經元將具有相同或相似的連接性模式,但其連接強度可具有不同的值(例如,210、212、214和216)。局部連接的連接性模式可能在更高層中產生空間上相異的感受野,此情形是由於給定區域中的更高層神經元可接收到經由訓練被調諧為到網路的總輸入的受限部分的性質的輸入。
局部連接神經網路的一個實例是迴旋神經網路。圖2C圖示了迴旋神經網路206的實例。迴旋神經網路206可被配置成使得與針對第二層中每個神經元的輸入相關聯的連接強度被共享(例如,208)。迴旋神經網路可能非常適合於其中輸入的空間位置有意義的問題。
一種類型的迴旋神經網路是深度迴旋網路(DCN)。圖2D圖示了被設計成辨識來自圖像擷取設備230(諸如車載相機)的圖像226輸入的視覺特徵的DCN 200的詳細實例。可對該實例的DCN 200進行訓練以辨識交通標誌以及在交通標誌上提供的數值。當然,DCN 200可被訓練用於其他任務,諸如辨識車道標記或辨識交通信號燈。
可以用受監督式學習來訓練DCN 200。在訓練期間,可向DCN 200呈遞圖像(諸如限速標誌的圖像226),並且隨後可計算「前向傳遞(forward pass)」以產生輸出222。DCN 200可包括特徵提取區段和分類區段。在接收到圖像226之後,迴旋層232可向圖像226應用迴旋核(未圖示),以產生第一特徵圖集合218。作為實例,迴旋層232的迴旋核可以是產生28x28特徵圖的5x5核。在本實例中,由於在第一特徵圖集合218中產生四個不同的特徵圖,因此在迴旋層232處四個不同的迴旋核被應用於圖像226。迴旋核亦可被稱為濾波器或迴旋濾波器。
第一特徵圖集合218可由最大池化層(未圖示)進行子取樣以產生第二特徵圖集合220。最大池化層減小了第一特徵圖集合218的大小。亦即,第二特徵圖集合220的大小(諸如14x14)小於第一特徵圖集合218的大小(諸如28x28)。經減小的大小向後續層提供類似的資訊,同時減小了記憶體消耗。第二特徵圖集合220可經由一或多個後續迴旋層(未圖示)被進一步迴旋,以產生一或多個後續特徵圖集合(未圖示)。
在圖2D的實例中,第二特徵圖集合220被迴旋以產生第一特徵向量224。此外,第一特徵向量224被進一步迴旋以產生第二特徵向量228。第二特徵向量228的每個特徵可包括與圖像226的可能特徵(諸如「標誌」、「60」和「100」)相對應的數值。softmax(軟最大化)函數(未圖示)可將第二特徵向量228中的數值轉換為概率。如此,DCN 200的輸出222是圖像226包括一或多個特徵的概率。
在本實例中,輸出222中「標誌」和「60」的概率高於輸出222的其他數值(諸如「30」、「40」、「50」、「70」、「80」、「90」和「100」)的概率。在進行訓練之前,由DCN 200產生的輸出222很可能是不正確的。由此,可計算輸出222與目標輸出之間的誤差。目標輸出是圖像226的真實值(例如,「標誌」和「60」)。DCN 200的權重可隨後被調整以使得DCN 200的輸出222與目標輸出更緊密地對準。
為了調整權重,學習演算法可為權重計算梯度向量。該梯度可指示在權重被調整情況下誤差將增加或減少的量。在頂層處,該梯度可直接對應於連接倒數第二層中的啟用的神經元與輸出層中的神經元的權重的值。在較低層中,該梯度可取決於權重的值以及所計算出的較高層的誤差梯度。權重可隨後被調整以減小誤差。此種調整權重的方式可被稱為「後向傳播」,因為其涉及在神經網路中的「後向傳遞(backward pass)」。
在實踐中,權重的誤差梯度可能是在少量實例上計算的,從而計算出的梯度近似於真實誤差梯度。此種近似方法可被稱為隨機梯度下降法。隨機梯度下降法可被重複,直到整個系統可達成的誤差率已停止下降或直到誤差率已達到目標水平。在學習之後,DCN可被呈遞新圖像(例如,圖像226的限速標誌)並且在網路中的前向傳遞可產生輸出222,其可被認為是該DCN的推斷或預測。
深度置信網路(DBN)是包括多層隱藏節點的概率性模型。DBN可被用於提取訓練資料集的階層式表示。DBN可經由堆疊多層受限波爾茲曼機(RBM)來獲得。RBM是一類可在輸入集上學習概率分佈的人工神經網路。由於RBM可在沒有關於每個輸入應該被分類到何者類別的資訊的情況下學習概率分佈,因此RBM經常被用於無監督式學習中。使用混合無監督式和受監督式範式,DBN的底部RBM可按無監督方式被訓練並且可以用作特徵提取器,而頂部RBM可按受監督方式(在來自先前層的輸入和目標類別的聯合分佈上)被訓練並且可用作分類器。
深度迴旋網路(DCN)是迴旋網路的網路,其配置有附加的池化和正規化層。DCN已在許多任務上達成現有最先進的效能。DCN可使用監督式學習來訓練,其中輸入和輸出目標兩者對於許多典範是已知的並被用於經由使用梯度下降法來修改網路的權重。
DCN可以是前饋網路。另外,如前述,從DCN的第一層中的神經元到下一更高層中的神經元群組的連接跨第一層中的神經元被共享。DCN的前饋和共享連接可被利用於進行快速處理。DCN的計算負擔可比例如類似大小的包括回流或回饋連接的神經網路的計算負擔小得多。
迴旋網路的每一層的處理可被認為是空間不變模版或基礎投影。若輸入首先被分解成多個通道,諸如彩色圖像的紅色、綠色和藍色通道,則在該輸入上訓練的迴旋網路可被認為是三維的,其具有沿著該圖像的軸的兩個空間維度以及擷取顏色資訊的第三維度。迴旋連接的輸出可被認為在後續層中形成特徵圖,該特徵圖(例如,220)之每一者元素從先前層(例如,特徵圖218)中一定範圍的神經元以及從該多個通道之每一者通道接收輸入。特徵圖中的值可以用非線性(諸如矯正max(0,x))進一步處理。來自毗鄰神經元的值可被進一步池化(此舉對應於降取樣)並可提供附加的局部不變性以及維度縮減。亦可經由特徵圖中神經元之間的側向抑制來應用正規化,其對應於白化。
深度學習架構的效能可隨著有更多被標記的資料點變為可用或隨著計算能力提高而提高。現代深度神經網路用比僅僅十五年前可供典型研究者使用的計算資源多數千倍的計算資源來例行地訓練。新的架構和訓練範式可進一步推升深度學習的效能。經矯正的線性單元可減少被稱為梯度消失的訓練問題。新的訓練技術可減少過度擬合(over-fitting)並因此使更大的模型能夠達成更好的普遍化。封裝技術可抽象出給定的感受野中的資料並進一步提升整體效能。
圖3是圖示深度迴旋網路350的方塊圖。深度迴旋網路350可包括多個基於連接性和權重共享的不同類型的層。如圖3中圖示的,深度迴旋網路350包括迴旋區塊354A、354B。迴旋區塊354A、354B中的每一者可配置有迴旋層(CONV)356、正規化層(LNorm)358和最大池化層(最大池)360。
迴旋層356可包括一或多個迴旋濾波器,其可被應用於輸入資料以產生特徵圖。儘管僅圖示兩個迴旋區塊354A、354B,但本案不限於此,而是,根據設計偏好,任何數目的迴旋區塊354A、354B可被包括在深度迴旋網路350中。正規化層358可對迴旋濾波器的輸出進行正規化。例如,正規化層358可提供白化或側向抑制。最大池化層360可提供在空間上的降取樣聚集以實現局部不變性和維度縮減。
例如,深度迴旋網路的平行濾波器組可被載入到SOC 100的CPU 102或GPU 104上以達成高效能和低功耗。在替換實施例中,平行濾波器組可被載入到SOC 100的DSP 106或ISP 116上。另外,深度迴旋網路350可存取其他可存在於SOC 100上的處理區塊,諸如分別專用於感測器和導航的感測器處理器114和導航模組120。
深度迴旋網路350亦可包括一或多個全連接層362(FC1和FC2)。深度迴旋網路350可進一步包括邏輯回歸(LR)層364。深度迴旋網路350的每一層356、358、360、362、364之間是要被更新的權重(未圖示)。每一層(例如,356、358、360、362、364)的輸出可以用作深度迴旋網路350中一個後續層(例如,356、358、360、362、364)的輸入以從第一迴旋區塊354A處提供的輸入資料352(例如,圖像、音訊、視訊、感測器資料及/或其他輸入資料)學習階層式特徵表示。深度迴旋網路350的輸出是針對輸入資料352的分類得分366。分類得分366可以是概率集,其中每個概率是輸入資料包括來自特徵集的特徵的概率。
當權重和神經元啟用被二值化為-1或+1([-1,+1]空間)時,人工神經網路(例如,二進位神經網路)的記憶體儲存可以被顯著減小。然而,數位互補金屬氧化物半導體(CMOS)邏輯在[0,1]空間中運行。由此,在二進位實現期間,在使用[0,1]基礎的數位CMOS元件與使用[-1,+1]基礎的二進位神經網路之間會發生轉變。
記憶體單元可被配置成支援異或非(XNOR)功能。例如,表1-3(例如,真值表)說明了[0,1]空間中的二進位神經網路到二值化[-1,+1]空間中的二進位乘法的映射。真值表1-3中說明了雙輸入邏輯功能。
表1說明了二值化[-1,+1]空間中的二進位乘法的實例。例如,二值化[-1,+1]空間中的乘法產生4位元輸出-1*-1, -1*+1, +1*-1, +1*+1(例如,「1,-1,-1,1」)。
Figure 02_image006
表1
表2說明了XNOR實現的實例。記憶體單元可被配置成對第一輸入值(例如,二進位神經元啟用)和第二輸入值(例如,二進位突觸權重)執行XNOR功能,以產生二進位輸出。例如,XNOR功能僅在所有輸入值皆為真或所有輸入值皆為假的情況下才為真。若一些輸入為真,而其他輸入為假,則XNOR功能的輸出為假。由此,當該兩個輸入(例如,第一輸入和第二輸入)皆為假(例如,第一輸入為0並且第二輸入為0)時(如表2中展示的),輸出為真(例如,1)。當第一輸入為假(0),而第二輸入為真(1)時,輸出為假(0)。當第一輸入為真(1),而第二輸入為假(0)時,輸出為假(0)。當第一輸入為真(1),並且第二輸入為真(1)時,輸出為真(1)。由此,在兩個輸入情況下XNOR功能的真值表具有二進位輸出「1,0,0,1」。
由此,二值化[-1,+1]空間中的二進位乘法映射到[0,1]空間中XNOR的二進位輸出。例如,二值化[-1,+1]空間的4位元輸出中的「1」映射到XNOR功能的二進位輸出中的「1」,而二值化[-1,+1]空間的4位元輸出中的「-1」映射到XNOR功能的二進位輸出中的「0」。
Figure 02_image008
表2
Figure 02_image010
表3
作為對比,二值化[-1,+1]空間中的二進位乘法並未映射到表3中說明的二值化[0,1]空間中的二進位乘法。例如,表3說明了在二值化[0,1]空間中進行乘法以產生4位元輸出「0,0,0,1」,該輸出不與二值化[-1,+1]空間中的4位元輸出「1,-1,-1,1」映射。例如,4位元輸出「0,0,0,1」包括僅一個真位元(例如,最後一個位元),而4位元輸出「1,-1,-1,1」包括兩個真位元(例如,第一位元和最後一個位元)。
習知地,用記憶體內計算系統實施的二進位神經網路是經由在每個位元單元處計算XNOR,以及將沿每條位元線的結果求和以產生輸出值來實現的。然而,在每個位元單元中添加XNOR功能是昂貴的。例如,記憶體(例如,SRAM)之每一者單元的電晶體數目從6或8增加到12,此舉顯著增大了單元大小和功耗。
本案的各態樣係關於經由消除二進位神經網路記憶體內計算陣列中的XNOR來減小記憶體的大小以及改良記憶體的功耗。在一個態樣,記憶體內計算陣列的每一列的啟用閾值被調整以避免在每個位元單元中使用XNOR功能及其對應的(諸)電晶體。例如,具有較小記憶體位元單元的較小記憶體(例如,八電晶體SRAM)可被用於記憶體內計算二進位神經網路。
圖4圖示了根據本案的各態樣的用於人工神經網路的記憶體內計算(CIM)陣列的示例性架構400。記憶體內計算是在記憶體陣列中執行乘法和累加運算的一種方式。該記憶體陣列包括字線404(或即WL1 )、405(或即WL2 )、……、406(或即WLM )以及位元線401(或即BL1 )、402(或即BL2 )、……、403(或即BLN )。權重(例如,二進位突觸權重值)被儲存在記憶體陣列的位元單元中。輸入啟用(例如,輸入值,其可以是輸入向量)在字線上。乘法發生在每個位元單元處,並且乘法結果經由位元線來輸出。例如,乘法包括在每個位元單元處將權重與輸入啟用相乘。與位元線或列(例如,401)相關聯的求和元件(未圖示)(諸如電壓/電流求和元件)將各位元線的輸出(例如,電荷、電流或電壓)求和,並將結果(例如,輸出)傳遞給類比數位轉換器(ADC)。例如,根據每條位元線的各位元單元的相應輸出來計算每條位元線的總和。
在本案的一個態樣,在(對應於位元線的)每一列處(而不是在每個位元單元處)作出啟用閾值調整,以改良面積效率。
習知地,從權重和神經元啟用被二值化為-1或+1([-1,+1]空間)的二進位神經網路實現開始,乘法和累加運算變成了(位元單元中的)XNOR運算,其具有XNOR結果以及XNOR結果的整體計數。例如,位元線的整體計數包括該位元線的每個位元單元的正(例如,「1」)結果之和。ADC經由使用啟用閾值來像比較器一樣起作用。例如,ADC將整體計數與啟用閾值或準則作比較。若整體計數大於啟用閾值,則位元線的輸出為「1」。否則,若整體計數小於或等於啟用閾值,則位元線的輸出為「0」。然而,消除每個位元單元中的XNOR功能及其對應的(諸)電晶體以減小記憶體的大小是合乎期望的。用於調整啟用閾值的特定技術如下:
神經網路(例如,二進位神經網路)的迴旋層可包括組織成陣列(例如,記憶體內計算陣列)的單元(例如,位元單元)。該等單元包括閘控元件,該等閘控元件中呈現的電荷水平表示該陣列的儲存權重。具有M行(例如,輸入向量的大小)和N列陣列的經訓練XNOR二進位神經網路包括MxN個二進位突觸權重
Figure 02_image012
(其是以二進位值[-1,+1]形式的權重)以及N個啟用閾值Cj 。該陣列的輸入可對應於字線,而輸出可對應於位元線。例如,輸入啟用
Figure 02_image014
(其是以二進位值[-1,+1]形式的輸入)為
Figure 02_image016
。輸入與對應權重之積的總和(
Figure 02_image018
)被稱為加權和
Figure 02_image020
例如,當加權和大於啟用閾值Cj 時,則輸出等於一(1)。否則,輸出等於零(0)。XNOR二進位神經網路可以被映射到[0,1]空間中的非XNOR二進位神經網路,同時消除每個位元單元中的XNOR功能及其對應的(諸)電晶體,以減小記憶體的大小。在一個態樣,可經由對每一列的啟用閾值Cj 的如下調整來將XNOR二進位神經網路映射到非XNOR二進位神經網路: 式1關於XNOR二進位神經網路說明了輸入與對應權重之積的總和同啟用閾值Cj 之間的關係:
Figure 02_image022
(1) 其中:
Figure 02_image024
是以二進位值[-1,+1]形式的輸入
Figure 02_image012
是以二進位值[-1,+1]形式的權重(例如,MxN矩陣);
Figure 02_image027
是位元線的以二進位值[-1,+1]形式的輸出
習知地,記憶體內計算二進位神經網路實現是經由在每個位元單元處完成XNOR運算,以及將針對每條位元線的結果求和來達成的。然而,在每個位元單元中添加XNOR功能增大了佈局面積並且增加了功耗。例如,記憶體(例如,SRAM)之每一者單元中的電晶體數目從6或8增加到12。相應地,本案的各態樣係關於使用啟用閾值調整來將人工神經網路(例如,二進位神經網路)的記憶體內計算陣列的乘法和累加運算從[-1,+1]空間轉變到[0,1]空間。
將二進位神經網路從[-1,+1]空間(在
Figure 02_image029
情況下)轉換到[0,1]空間,並且如下將各位元線在[0,1]空間中的輸出與不同閾值作比較(例如,下文論述其推導):
Figure 02_image031
Figure 02_image033
(2)
Figure 02_image035
是以二進位值[0,1]形式的輸入
Figure 02_image037
是以二進位值[0,1]形式的權重 其中
Figure 02_image039
對應於[0,1]空間中的可調整啟用(或經調整的啟用閾值),並且
Figure 02_image041
表示[0,1]空間中的轉換偏置(例如,轉換偏置電流參考)。
如本文所描述地調整啟用閾值允許避免/放棄在每個位元單元中實施XNOR功能性,同時獲得與實施了XNOR功能性情況下相同的結果。調整啟用閾值使得能夠使用更簡單且更小的記憶體位元單元(例如,八電晶體(8T)SRAM)。
下式(式3和式4)包括用於將[-1,+1]空間中的網路映射到[0,1]空間的變數:
Figure 02_image043
(3)
Figure 02_image045
, (4)
將式三(3)和式四(4)的值插入到式1中,則可以經由[-1,+1]空間與[0,1]空間之間的轉換或轉變來決定經調整的啟用閾值。以下是經調整啟用閾值的推導:
Figure 02_image047
(5) 展開式5:
Figure 02_image049
Figure 02_image051
(6) 將各位元線的以二進位值[-1,+1]形式的輸出
Figure 02_image053
與[-1,+1]空間中的啟用閾值
Figure 02_image055
作比較(如式1中所示)
Figure 02_image057
將式6中位元線的輸出值
Figure 02_image053
插入到式1中,以獲得每位元線在[0,1]空間中的整體計數(
Figure 02_image059
Figure 02_image061
)。
Figure 02_image063
Figure 02_image065
(7)
Figure 02_image063
Figure 02_image067
(8)
Figure 02_image069
(9)
將式9中每位元線在[0,1]空間中的整體計數(
Figure 02_image059
Figure 02_image061
)映射到每位元線在[-1,+1]空間中的整體計數(
Figure 02_image018
),則[-1,+1]空間中的N個啟用閾值Cj 映射到可調整啟用
Figure 02_image039
以及[0,1]空間中的轉換偏置
Figure 02_image041
。例如,為了達成[0,1]空間中的非XNOR二進位神經網路而同時消除XNOR功能及其對應的(諸)電晶體,使用可調整啟用
Figure 02_image039
以及[0,1]空間中的轉換偏置
Figure 02_image041
參照式9,使用函數
Figure 02_image074
來決定可調整啟用
Figure 02_image039
。例如,元素
Figure 02_image076
對應於可調整啟用
Figure 02_image039
的啟用值。可調整啟用
Figure 02_image039
並不取決於啟用輸入
Figure 02_image014
。可調整啟用
Figure 02_image039
亦包括可被改變以調整啟用閾值
Figure 02_image078
的預定參數(例如,二進位突觸權重
Figure 02_image080
)。
函數
Figure 02_image082
被用於決定轉換偏置
Figure 02_image041
。轉換偏置
Figure 02_image041
僅取決於輸入啟用。此舉意味著轉換偏置會隨著接收到新輸入而不斷變化。
例如,當
Figure 02_image084
0;
Figure 02_image086
;並且
Figure 02_image088
時,則如下關於式9來計算
Figure 02_image039
Figure 02_image041
Figure 02_image090
的值:
Figure 02_image092
;
Figure 02_image094
並且
Figure 02_image096
類似地,當
Figure 02_image098
Figure 02_image100
;並且
Figure 02_image102
時,則如下關於式9來計算
Figure 02_image039
Figure 02_image041
Figure 02_image104
的值:
Figure 02_image106
;
Figure 02_image108
並且
Figure 02_image110
在一些態樣,函數
Figure 02_image031
可被用於經由將以二進位值
Figure 02_image113
形式的權重設為等於1來從參考列(例如,不是該N條位元線的一部分的位元線,其被用作參考)產生轉換偏置
Figure 02_image041
。將等於1的
Figure 02_image113
值插入到式9中,結果所得的式子如下:
Figure 02_image117
(9)
整體計數等於
Figure 02_image119
,其可被用於對啟用電流進行偏移。由此,僅單列被指定以決定整個記憶體陣列的參考偏置值或轉換偏置。
圖5圖示了根據本案的各態樣的用於經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算的示例性架構500。該架構包括記憶體陣列,其包括參考列502、比較器504、(與該記憶體陣列的各列相對應的)位元線506,以及(與該記憶體陣列的各行相對應的)字線508。輸入啟用經由字線來接收。在一個實例中,輸入啟用
Figure 02_image014
的二進位值為10101011。
乘法(例如,
Figure 02_image122
)發生在每個位元單元處,並且來自每個位元單元的乘法結果經由位元線506來輸出。與每條位元線506相關聯的求和元件510將記憶體陣列的每個位元單元輸出求和,並將結果傳遞給比較器504。比較器504可以是圖4中圖示的類比數位轉換器(ADC)的一部分。在一個態樣,同第一位元線相關聯的每個位元單元的輸出與同第二位元線相關聯的每個位元單元的輸出分開求和。
在(與該等位元線相對應的)每一列處(而不是在每個位元單元處)進行啟用閾值調整,以改良面積效率。例如,與第一位元線相關聯的每個位元單元的輸出的總和(或整體計數)作為第一輸入被提供給比較器504。比較器的第二輸入包括可調整啟用
Figure 02_image039
與轉換偏置
Figure 02_image041
(例如,轉換偏置電流參考)之和。例如,轉換偏置
Figure 02_image041
可被程式設計成用於每條位元線506的準則(例如,參考列502)。當整體計數大於可調整啟用
Figure 02_image039
與轉換偏置
Figure 02_image041
之和時,則比較器504的輸出(其對應於第一位元線的輸出)為「1」。否則,若整體計數小於或等於可調整啟用
Figure 02_image039
與轉換偏置
Figure 02_image041
之和,則該比較器的輸出(其對應於第一位元線的輸出)為「0」。由此,將每個位元線整體計數同可調整啟用
Figure 02_image039
與轉換偏置
Figure 02_image041
之和進行比較。
圖6圖示了根據本案的各態樣的用於經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算的方法600。如圖6中圖示的,在方塊602,可基於權重值和啟用值的函數來調整針對該記憶體內計算陣列的每一列所產生的啟用閾值。在方塊604,基於來自至該記憶體內計算陣列的輸入向量中的輸入值來計算轉換偏置電流參考,該記憶體內計算陣列被程式設計有權重值集合。經調整的啟用閾值和該轉換偏置電流參考中的每一者被用作用於決定該記憶體內計算陣列的輸出值的閾值。該記憶體內計算陣列具有列和行兩者。
根據本案的進一步態樣,描述了一種用於經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算的裝置。該裝置包括:用於基於權重值和啟用值的函數來調整該陣列的每一列的啟用閾值的構件。該調整構件包括:深度迴旋網路200、深度迴旋網路350、迴旋層232、SoC 100、CPU 102、架構500、架構400,及/或迴旋區塊354A。該裝置進一步包括:用於基於來自輸入向量中的輸入值來計算轉換偏置電流參考的構件。該計算構件包括:深度迴旋網路200、深度迴旋網路350、迴旋層232、SoC 100、CPU 102、架構500、架構400,及/或迴旋區塊354A。
該裝置進一步包括:用於將位元線整體計數同轉換偏置電流參考與經調整啟用閾值之和進行比較以決定位元線的輸出的構件。該比較構件包括:圖5的比較器504,及/或圖4的類比數位轉換器(ADC)。在另一態樣,前述構件可以是被配置成執行由前述構件敘述的功能的任何模組或任何裝置。
以上所描述的方法的各種操作可由能夠執行相應功能的任何合適的構件來執行。該等構件可包括各種硬體及/或(諸)軟體元件及/或(諸)模組,包括但不限於電路、特殊應用積體電路(ASIC),或處理器。一般而言,在附圖中有圖示的操作的場合,彼等操作可具有帶相似編號的相應配對構件功能元件。
如本文所使用的,術語「決定」涵蓋各種各樣的動作。例如,「決定」可包括演算、計算、處理、推導、研究、檢視(例如,在表、資料庫或另一資料結構中檢視)、查明及諸如此類。另外,「決定」可包括接收(例如接收資訊)、存取(例如存取記憶體中的資料),及類似動作。此外,「決定」可包括解析、選擇、選取、確立及類似動作。
如本文中所使用的,引述一列項目「中的至少一者」的短語是指該等項目的任何組合,包括單個成員。作為實例,「a、b或c中的至少一個」意欲涵蓋:a、b、c、a-b、a-c、b-c,以及a-b-c。
結合本案所描述的各種說明性邏輯區塊、模組,以及電路可用設計成執行本文中所描述的功能的通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列信號(FPGA)或其他可程式設計邏輯設備(PLD)、個別閘門或電晶體邏輯、個別的硬體元件或其任何組合來實現或執行。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何市售的處理器、控制器、微控制器,或狀態機。處理器亦可以被實現為計算設備的組合,例如,DSP與微處理器的組合、複數個微處理器、與DSP核心協同的一或多個微處理器,或任何其他此類配置。
結合本案所描述的方法或演算法的步驟可直接在硬體中、在由處理器執行的軟體模組中,或在該兩者的組合中實施。軟體模組可常駐在本領域所知的任何形式的儲存媒體中。可使用的儲存媒體的一些實例包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、快閃記憶體、可抹除可程式設計唯讀記憶體(EPROM)、電子可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、硬碟、可移除磁碟、CD-ROM,等等。軟體模組可包括單一指令,或許多指令,且可分佈在若干不同的程式碼片段上,分佈在不同的程式間以及跨多個儲存媒體分佈。儲存媒體可被耦合到處理器以使得該處理器能該儲存媒體讀取資訊以及向該儲存媒體寫入資訊。在替換方案中,儲存媒體可被整合到處理器。
本文所揭示的方法包括用於實現所描述的方法的一或多個步驟或動作。該等方法步驟及/或動作可以彼此互換而不會脫離請求項的範疇。換言之,除非指定了步驟或動作的特定次序,否則具體步驟及/或動作的次序及/或使用可以改動而不會脫離請求項的範疇。
所描述的功能可在硬體、軟體、韌體或其任何組合中實現。若以硬體實現,則示例性硬體配置可包括設備中的處理系統。處理系統可以用匯流排架構來實現。取決於處理系統的具體應用和整體設計約束,匯流排可包括任何數目的互連匯流排和橋接器。匯流排可將包括處理器、機器可讀取媒體,以及匯流排介面的各種電路連結在一起。匯流排介面可用於尤其將網路配接器等經由匯流排連接至處理系統。網路配接器可用於實現信號處理功能。對於某些態樣,使用者介面(例如,按鍵板、顯示器、滑鼠、操縱桿,等等)亦可以被連接到匯流排。匯流排亦可以連結各種其他電路,諸如定時源、周邊設備、穩壓器、功率管理電路以及類似電路,該等其他電路在本領域中是眾所周知的,因此將不再進一步描述。
處理器可負責管理匯流排和一般處理,包括對儲存在機器可讀取媒體上的軟體的執行。處理器可用一或多個通用及/或專用處理器來實現。實例包括微處理器、微控制器、DSP處理器,以及其他能執行軟體的電路系統。軟體應當被寬泛地解釋成意指指令、資料,或其任何組合,無論是被稱作軟體、韌體、中間軟體、微代碼、硬體描述語言,或其他。作為實例,機器可讀取媒體可包括隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、可程式設計唯讀記憶體(PROM)、可抹除可程式設計唯讀記憶體(EPROM)、電可抹除可程式設計唯讀記憶體(EEPROM)、暫存器、磁碟、光碟、硬驅動器,或者任何其他合適的儲存媒體,或其任何組合。機器可讀取媒體可被實施在電腦程式產品中。該電腦程式產品可包括包裝材料。
在硬體實現中,機器可讀取媒體可以是處理系統中與處理器分開的一部分。然而,如熟習此項技術者將容易領會的,機器可讀取媒體或其任何部分可在處理系統外部。作為實例,機器可讀取媒體可包括傳輸線、由資料調制的載波,及/或與設備分開的電腦產品,所有該等皆可由處理器經由匯流排介面來存取。替換地或補充地,機器可讀取媒體或其任何部分可被整合到處理器中,諸如快取記憶體及/或通用暫存器檔案可能就是此種情形。儘管所論述的各種元件可被描述為具有特定位置,諸如局部元件,但該等元件亦可按各種方式來配置,諸如某些元件被配置成分散式計算系統的一部分。
處理系統可被配置為通用處理系統,該通用處理系統具有一或多個提供處理器功能性的微處理器,以及提供機器可讀取媒體中的至少一部分的外部記憶體,上述各項皆經由外部匯流排架構與其他支援電路系統連結在一起。或者,該處理系統可包括一或多個神經元形態處理器以用於實現本文中所描述的神經元模型和神經系統模型。作為另一替換方案,處理系統可以用帶有整合在單塊晶片中的處理器、匯流排介面、使用者介面、支援電路系統和至少一部分機器可讀取媒體的特殊應用積體電路(ASIC)來實現,或者用一或多個現場可程式設計閘陣列(FPGA)、可程式設計邏輯設備(PLD)、控制器、狀態機、閘控邏輯、個別硬體元件,或者任何其他合適的電路系統,或者能執行本案通篇所描述的各種功能性的電路的任何組合來實現。取決於具體應用和加諸於整體系統上的整體設計約束,熟習此項技術者將認識到如何最佳地實現關於處理系統所描述的功能性。
機器可讀取媒體可包括數個軟體模組。該等軟體模組包括當由處理器執行時使處理系統執行各種功能的指令。該等軟體模組可包括傳輸模組和接收模組。每個軟體模組可以常駐在單個儲存設備中或者跨多個儲存設備分佈。作為實例,當觸發事件發生時,可以從硬驅動器中將軟體模組載入到RAM中。在軟體模組執行期間,處理器可以將一些指令載入到快取記憶體中以提高存取速度。可隨後將一或多個快取列載入到通用暫存器檔案中以供處理器執行。在以下述及軟體模組的功能性時,將理解此類功能性是在處理器執行來自該軟體模組的指令時由該處理器來實現的。此外,應領會,本案的各態樣產生對處理器、電腦、機器或實現此類態樣的其他系統的功能的改良。
若以軟體實現,則各功能可作為一或多個指令或代碼儲存在電腦可讀取媒體上或藉其進行傳輸。電腦可讀取媒體包括電腦儲存媒體和通訊媒體兩者,該等媒體包括促進電腦程式從一地向另一地轉移的任何媒體。儲存媒體可以是能被電腦存取的任何可用媒體。作為實例而非限定,此類電腦可讀取媒體可包括RAM、ROM、EEPROM、CD-ROM或其他光碟儲存、磁碟儲存或其他磁儲存設備,或能用於攜帶或儲存指令或資料結構形式的期望程式碼且能被電腦存取的任何其他媒體。另外,任何連接亦被正當地稱為電腦可讀取媒體。例如,若軟體是使用同軸電纜、光纖電纜、雙絞線、數位用戶線(DSL),或無線技術(諸如紅外(IR)、無線電,以及微波)從web網站、伺服器,或其他遠端源傳輸而來,則該同軸電纜、光纖電纜、雙絞線、DSL或無線技術(諸如紅外、無線電,以及微波)就被包括在媒體的定義之中。如本文所使用的磁碟(disk)和光碟(disc)包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光®光碟,其中磁碟(disk)常常磁性地再現資料,而光碟(disc)用鐳射來光學地再現資料。因此,在一些態樣,電腦可讀取媒體可包括非暫時性電腦可讀取媒體(例如,有形媒體)。另外,對於其他態樣,電腦可讀取媒體可包括暫時性電腦可讀取媒體(例如,信號)。以上的組合應當亦被包括在電腦可讀取媒體的範疇內。
由此,某些態樣可包括用於執行本文中提供的操作的電腦程式產品。例如,此類電腦程式產品可包括其上儲存(及/或編碼)有指令的電腦可讀取媒體,該等指令能由一或多個處理器執行以執行本文中所描述的操作。對於某些態樣,該電腦程式產品可包括包裝材料。
此外,應當領會,用於執行本文中所描述的方法和技術的模組及/或其他合適構件可由使用者終端及/或基地站在適用的場合下載及/或以其他方式獲得。例如,此類設備能被耦合到伺服器以促進用於執行本文中所描述的方法的構件的轉移。或者,本文中所描述的各種方法能經由儲存構件(例如,RAM、ROM、諸如壓縮光碟(CD)或軟碟之類的實體儲存媒體等)來提供,以使得一旦將該儲存構件耦合到或提供給使用者終端及/或基地站,該設備就能獲得各種方法。此外,可利用適於向設備提供本文中所描述的方法和技術的任何其他合適的技術。
將理解,請求項並不被限於以上所說明的精確配置和元件。可在以上所描述的方法和裝置的佈局、操作和細節上作出各種改動、更換和變形而不會脫離請求項的範疇。
100:晶片上系統(SOC) 102:中央處理單元(CPU) 104:圖形處理單元(GPU) 106:數位信號處理器(DSP) 108:神經處理單元(NPU) 110:連接性區塊 112:多媒體處理器 114:感測器處理器 116:圖像信號處理器(ISP) 118:記憶體區塊 120:導航模組 200:深度迴旋網路 202:全連接神經網路 204:局部連接神經網路 206:迴旋神經網路 208:元件符號 210:元件符號 212:元件符號 214:元件符號 216:元件符號 218:第一特徵圖集合 220:第二特徵圖集合 222:輸出 224:第一特徵向量 226:圖像 228:第二特徵向量 230:圖像擷取設備 232:迴旋層 350:深度迴旋網路 352:輸入資料 354A:迴旋區塊 354B:迴旋區塊 356:迴旋層(CONV) 358:正規化層(LNorm) 360:最大池化層 362:全連接層 364:邏輯回歸(LR)層 366:分類得分 400:架構 401:位元線 402:位元線 403:位元線 404:字線 405:字線 406:字線 500:架構 502:參考列 504:比較器 506:位元線 508:字線 510:求和元件 600:方法 602:方塊 604:方塊
在結合附圖理解下文闡述的詳細描述時,本案的特徵、本質和優點將變得更加明顯,在附圖中,相同元件符號始終作相應辨識。
圖1圖示了根據本案的某些態樣的使用晶片上系統(SOC)(包括通用處理器)來設計神經網路的示例性實現。
圖2A、圖2B和圖2C是圖示根據本案的各態樣的神經網路的示圖。
圖2D是圖示根據本案的各態樣的示例性深度迴旋網路(DCN)的示圖。
圖3是圖示根據本案的各態樣的示例性深度迴旋網路(DCN)的方塊圖。
圖4圖示了根據本案的各態樣的圖示人工神經網路的記憶體內計算(CIM)陣列的架構。
圖5圖示了根據本案的各態樣的用於經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算的架構。
圖6圖示了根據本案的各態樣的用於經由調整人工神經網路的記憶體內計算陣列的列閾值來執行XNOR等效運算的方法。
國內寄存資訊(請依寄存機構、日期、號碼順序註記) 無 國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記) 無
500:架構
502:參考列
504:比較器
506:位元線
508:字線
510:求和元件

Claims (20)

  1. 一種裝置,包括: 包括行和列的一記憶體內計算陣列,該記憶體內計算陣列被配置成: 基於一權重值和一啟用值的一函數來調整針對該記憶體內計算陣列的每一列所產生的一啟用閾值;及 基於來自至該記憶體內計算陣列的一輸入向量中的一輸入值來計算一轉換偏置電流參考,該記憶體內計算陣列被程式設計有一權重值集合,其中該經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的一閾值。
  2. 如請求項1之裝置,進一步包括:一比較器,其被配置成將一位元線整體計數同該轉換偏置電流參考與該經調整的啟用閾值之一和進行比較以決定一位元線的一輸出。
  3. 如請求項1之裝置,其中包含該記憶體內計算陣列的一人工神經網路包括一二進位神經網路。
  4. 如請求項1之裝置,其中該啟用閾值小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  5. 如請求項1之裝置,其中該轉換偏置電流參考小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  6. 一種方法,包括以下步驟: 基於一權重值和一啟用值的一函數來調整針對具有行和列的記憶體內計算陣列的每一列所產生的一啟用閾值; 基於來自至該記憶體內計算陣列的一輸入向量中的一輸入值來計算一轉換偏置電流參考,該記憶體內計算陣列被程式設計有一權重值集合,其中該經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的一閾值。
  7. 如請求項6之方法,進一步包括以下步驟:將一位元線整體計數同該轉換偏置電流參考與該經調整的啟用閾值之一和進行比較以決定一位元線的一輸出。
  8. 如請求項6之方法,其中包含該記憶體內計算陣列的一人工神經網路包括一二進位神經網路。
  9. 如請求項6之方法,其中該啟用閾值小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  10. 如請求項6之方法,其中該轉換偏置電流參考小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  11. 一種其上記錄有非暫時性程式碼的非暫時性電腦可讀取媒體,該程式碼包括: 用於基於一權重值和一啟用值的一函數來調整針對具有行和列的一記憶體內計算陣列的每一列所產生的一啟用閾值的程式碼;及 用於基於來自至該記憶體內計算陣列的一輸入向量中的一輸入值來計算一轉換偏置電流參考的程式碼,該記憶體內計算陣列被程式設計有一權重值集合,其中該經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的一閾值。
  12. 如請求項11之非暫時性電腦可讀取媒體,進一步包括:用於將一位元線整體計數同該轉換偏置電流參考與該經調整的啟用閾值之一和進行比較以決定一位元線的一輸出的程式碼。
  13. 如請求項11之非暫時性電腦可讀取媒體,其中經受該調整和該計算的一人工神經網路包括一二進位神經網路。
  14. 如請求項11之非暫時性電腦可讀取媒體,其中該啟用閾值小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  15. 如請求項11之非暫時性電腦可讀取媒體,其中該轉換偏置電流參考小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  16. 一種裝置,包括: 用於基於一權重值和一啟用值的一函數來調整針對具有行和列的記憶體內計算陣列的每一列所產生的一啟用閾值的構件;及 用於基於來自至該記憶體內計算陣列的一輸入向量中的一輸入值來計算一轉換偏置電流參考的構件,該記憶體內計算陣列被程式設計有一權重值集合,其中該經調整的啟用閾值和該轉換偏置電流參考被用作用於決定該記憶體內計算陣列的輸出值的一閾值。
  17. 如請求項16之裝置,進一步包括:用於將一位元線整體計數同該轉換偏置電流參考與該經調整的啟用閾值之一和進行比較以決定一位元線的一輸出的構件。
  18. 如請求項16之裝置,其中包含該記憶體內計算陣列的一人工神經網路包括一二進位神經網路。
  19. 如請求項16之裝置,其中該啟用閾值小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
  20. 如請求項16之裝置,其中該轉換偏置電流參考小於該記憶體內計算陣列的一行數的一半,該行數對應於該輸入向量的一大小。
TW109130916A 2019-09-09 2020-09-09 經由調整記憶體內計算陣列的列閾值來執行xnor等效運算 TW202125339A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/565,308 2019-09-09
US16/565,308 US11562212B2 (en) 2019-09-09 2019-09-09 Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array

Publications (1)

Publication Number Publication Date
TW202125339A true TW202125339A (zh) 2021-07-01

Family

ID=72614002

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109130916A TW202125339A (zh) 2019-09-09 2020-09-09 經由調整記憶體內計算陣列的列閾值來執行xnor等效運算

Country Status (8)

Country Link
US (1) US11562212B2 (zh)
EP (1) EP4028956A1 (zh)
JP (1) JP2022547460A (zh)
KR (1) KR20220058897A (zh)
CN (1) CN114207628A (zh)
BR (1) BR112022003542A2 (zh)
TW (1) TW202125339A (zh)
WO (1) WO2021050440A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11562212B2 (en) * 2019-09-09 2023-01-24 Qualcomm Incorporated Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array
US11295430B2 (en) * 2020-05-20 2022-04-05 Bank Of America Corporation Image analysis architecture employing logical operations
US11688457B2 (en) * 2020-12-26 2023-06-27 International Business Machines Corporation Using ferroelectric field-effect transistors (FeFETs) as capacitive processing units for in-memory computing
TWI775402B (zh) * 2021-04-22 2022-08-21 臺灣發展軟體科技股份有限公司 資料處理電路及故障減輕方法
US11782642B2 (en) * 2021-06-14 2023-10-10 Western Digital Technologies, Inc. Systems and methods of determining degradation in analog compute-in-memory (ACIM) modules
US20230053294A1 (en) * 2021-08-13 2023-02-16 Taiwan Semiconductor Manufacturing Co., Ltd. Bitwise product-sum accumulations with skip logic
US11373719B1 (en) 2021-08-30 2022-06-28 Texas Instruments Incorporated Contact layer traces to program programmable ROM
CN117271145B (zh) * 2023-11-22 2024-02-27 电子科技大学 一种基于混合计算架构的多任务智能处理器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0652132A (ja) * 1992-07-28 1994-02-25 Mitsubishi Electric Corp 並列演算半導体集積回路装置およびそれを用いたシステム
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
US10699778B2 (en) 2017-04-28 2020-06-30 Arizona Board Of Regents On Behalf Of Arizona State University Static random access memory (SRAM) cell and related SRAM array for deep neural network and machine learning applications
US11354562B2 (en) 2018-01-03 2022-06-07 Silicon Storage Technology, Inc. Programmable neuron for analog non-volatile memory in deep learning artificial neural network
US10650806B2 (en) * 2018-04-23 2020-05-12 Cerence Operating Company System and method for discriminative training of regression deep neural networks
US11562212B2 (en) * 2019-09-09 2023-01-24 Qualcomm Incorporated Performing XNOR equivalent operations by adjusting column thresholds of a compute-in-memory array
US11544547B2 (en) * 2020-06-22 2023-01-03 Western Digital Technologies, Inc. Accelerating binary neural networks within latch structure of non-volatile memory devices

Also Published As

Publication number Publication date
KR20220058897A (ko) 2022-05-10
US11562212B2 (en) 2023-01-24
EP4028956A1 (en) 2022-07-20
CN114207628A (zh) 2022-03-18
US20210073619A1 (en) 2021-03-11
BR112022003542A2 (pt) 2022-05-24
JP2022547460A (ja) 2022-11-14
WO2021050440A1 (en) 2021-03-18

Similar Documents

Publication Publication Date Title
TW202125339A (zh) 經由調整記憶體內計算陣列的列閾值來執行xnor等效運算
US20210089922A1 (en) Joint pruning and quantization scheme for deep neural networks
CN107580712B (zh) 定点神经网络的降低的计算复杂度
CN107209873B (zh) 用于深度卷积网络的超参数选择
TW202125286A (zh) 以記憶體內計算陣列進行神經網路的迴旋層的並行處理
US11423323B2 (en) Generating a sparse feature vector for classification
US20210158166A1 (en) Semi-structured learned threshold pruning for deep neural networks
US11776608B2 (en) Static random-access memory (SRAM) compute in-memory integration
EP3295385A1 (en) Fixed point neural network based on floating point neural network quantization
US20190354865A1 (en) Variance propagation for quantization
US11340867B2 (en) Compute-in-memory (CIM) binary multiplier
TW201921997A (zh) 行動設備的功率狀態控制
EP4232957A1 (en) Personalized neural network pruning
US11449758B2 (en) Quantization and inferencing for low-bitwidth neural networks
WO2021158830A1 (en) Rounding mechanisms for post-training quantization
US20230419087A1 (en) Adapters for quantization
US20230306233A1 (en) Simulated low bit-width quantization using bit shifted neural network parameters
US20240232585A1 (en) Channel-guided nested loop transformation and scalar replacement
WO2023249821A1 (en) Adapters for quantization
WO2022170085A1 (en) Semi-structured learned threshold pruning for deep neural networks
WO2023183088A1 (en) Simulated low bit-width quantization using bit shifted neural network parameters
WO2024102530A1 (en) Test-time adaptation via self-distilled regularization
WO2022087303A1 (en) Sub-spectral normalization for neural audio data processing