摘要:
憶阻器實現的神經形態計算系統,提供了一種訓練神經網路的高速、低功耗的方法。然而,作為影象識別最重要的的模型之一——卷積神經網路(cnns),還沒有用憶阻器交叉開關陣列——一種憶阻器在交點處的交叉點陣列,實現完全硬體化。而且,由於良率低、變化大和器件的其他不理想特性,實現堪比軟體cnns的處理結果是非常有挑戰性的。這裡,我們報告了高良率、高效能和統一的憶阻器交叉陣列的製造方法,這些陣列是用於實現cnns的,它們整合了8塊2048個單元的憶阻器陣列來提高平行計算的能力。除此之外,我們提出了一種高效的混合訓練方法來適應器件的不完美之處,並且提高系統的總體效能。我們建立了乙個5層憶阻器cnn網路來實現mnist影象識別,實現了96%以上的正確率。除了用共享輸入的不同核心做並行卷積計算,憶阻器陣列中多個相同核心的複製被證明可以並行處理不同的輸入。在能量效率方面,基於憶阻器的cnn神經形態系統比最先進的影象處理單元(gpu)高兩個數量級,而且表現出可以拓展為更大的網路,例如殘差神經網路。我們的結果有望提供一種可行的用於深度神經網路和邊緣計算的硬體解決方案,這種基於憶阻器的方案將沒有"馮諾依曼瓶頸"。
正文:cnns已經成為最重要的深度神經網路之一,在影象處理相關的任務中扮演著重要的角色,例如影象識別、影象分割和物體識別。乙個典型的cnn計算過程包括大量的滑動卷積操作。在這方面,非常需要能夠支援並行乘累加運算(mac)的計算單元。這種需求已經導致了傳統計算系統的重新設計以在更高的效能和更低的功耗下執行cnn,重新設計的範圍從總體的應用平台,例如影象處理單元(gpus),到特定應用的加速器。然而,在計算效率方面更進一步的改進將最終受限於這些體系的馮諾依曼架構,在這種架構中,記憶體和處理單元在物理上的分離導致了大量的能量消耗和單元間資料交換的巨大時間延遲。相比之下,基於憶阻器的神經形態計算提供了富有前景的無馮諾依曼計算模式,因此消除了資料傳輸的代價。通過直接使用歐姆定律來做乘法和基爾霍夫電流定律來做加法,乙個憶阻器陣列能夠實現並行存內mac操作,造就了速度和能量效率顯著提公升的模擬存內計算。
基於憶阻器的神經形態計算方面的研究涵蓋了大量的主題,從器件優化到系統實現。一些有關存內計算的實際應用的試驗性證明也被報道了。最近的研究報道證實了對於mnist手寫數字資料庫應用影象識別的二層和三層憶阻器多層感知器。然而,乙個完整的、對於更加複雜的影象識別任務更加必要的cnn,還沒有在乙個基於全憶阻器的硬體系統中實現。原因主要存在於缺乏實現憶阻器cnn的高效解決方法:首先,生產的憶阻器cnn經常有低良率和憶阻器陣列不統一的問題。第二,很難實現和軟體結果相媲美的表現(例如,影象識別正確率),原因是器件的不完美,例如工藝偏差、電導漂移和器件狀態死鎖。第三,由於需要在不同的輸入批次之間滑動,cnn中的關鍵卷積操作是需要時間的,這通常是一系列過程,並且對於全連線向量-矩陣乘法(vmm)將導致憶阻器卷積器和憶阻器陣列之間的速度不匹配。
在本研究中,乙個用於mnist數字影象識別的完全5層憶阻器cnn被成功地證實。優化的材料堆疊使得2048個1t1r構成的陣列中有著可靠的和統一的模擬開關特性。通過(我們所)建議使用的混合訓練策略,對於整個測試資料集的識別準確率達到了96.19%。更進一步地,將卷積核覆製到三個並行的憶阻器卷機器將憶阻器cnn的延遲大約減少了1/3。我們的高整合度的神經形態系統提供了一種可行的方案來顯著提公升cnn的效率,方法是通過消除基於憶阻器的卷積計算和全連線vmm的吞吐量差距。
實現具有實用價值的憶阻器神經計算系統通常需要整合多個憶阻器交叉開關陣列。通常,將權重分散到不同的陣列對於平行計算是有利的,在(神經)網路的規模逐漸增加的情況下,這逐漸變得必需。然而,之前關於神經網路的驗證依賴於單個陣列,主要是由於生產高度可重複陣列的挑戰。憶阻器陣列的偏差和不理想特性被視為實現神經形態計算的巨大障礙。
這裡我們提出一種用於神經網路的通用憶阻器計算架構。憶阻器單元使用tin/tao_x/hfo_x/tin構成的材料堆疊,在增強(置位)和抑制(復位)過程中通過調節電場和熱量,表現出連續的電導調控能力。材料和製造過程和傳統的cmos過程相相容,所以憶阻器陣列可以方便地在晶圓代工廠中的後道工序中生產,來達到減少過程偏差和實現高重複率的目的。在相同的程式設計條件下,生產的交叉陣列表現出統一的模擬開關特性。因此,乙個多憶阻器陣列硬體系統就用一塊定製的pcb板和一塊fpga評估板搭建好了。正如系統原理圖所展現的,這個系統主要由8個憶阻器處理單元構成。每個處理單元有其自己的整合2048個單元的憶阻器陣列。每個憶阻器連線到乙個電晶體的漏極,即形成一種1t1r的配置方式。每個憶阻器陣列有著128*161t1r個單元構成的集合。其中有著128條平行的字線和128條水平的電源線,並且有著16條垂直的位線。這個陣列表現出出人意料地可重複的多級電導狀態。圖中展現出在32種不同的電導狀態中,1024個憶阻器的分布,其中所有的曲線都是無重疊地分離著的。衝擊脈寬50ns、相同的置位和復位衝擊串用於閉環程式設計操作,來達到乙個特定的電導狀態。測量流程在方法部分闡述。
正如圖2所展示的,乙個5層cnn建立在乙個憶阻器硬體系統上來識別mnist手寫數字影象。cnn中詳細的資料流和相應的憶阻器對映在方法部分描述。
實現基於憶阻器的卷積操作需要執行在不同的核之間的滑動操作。憶阻器陣列在共享不同核的輸入的條件下,可以很高效的實現並行mac。圖2b展示了乙個典型的卷積示例在滑動過程中的示意圖,圖2c揭示了在1t1r憶阻器陣列中的相關操作。輸入值依據它被量化的位碼、通過脈衝的數量來編碼。乙個有符號的核權重,被對映到一對憶阻器的電導的差分。在這種方法下,乙個核中的所有權重都被對映到兩行電導上:一行通過正的脈衝輸入來表示正的權重,另一行通過大小相等的負脈衝來表示負的權重。在將編碼脈衝輸入到位線之後,通過兩條差分電源線上的輸出電流被探測和求和。差分電流是相應於輸入批量(資料)和選中核的加權和。有著不同權重的不同核被對映到不同對的差分行,並且整個憶阻器陣列在相同的輸入下並行地執行mac。所有想要的加權和結果可以同時得到。
在典型的cnn訓練中,有必要根據最後的輸出反向傳播目標梯度,來達到更新所有權重的目的。這項任務要求相當複雜的操作,來將編碼讀脈衝從後向前、一層一層地應用於電源線。而且,由於器件的不理想特性,例如非線性和非對稱的電導調節,訓練乙個複雜的深度神經網路是有挑戰性的。相比於純粹的原位訓練方案,異位訓練看起來像是一條利用了已有的高效能引數的捷徑。然而,不可避免的硬體缺陷,例如器件缺陷和導線的寄生電阻與電容,將使得在把異地學習到的權重轉移到憶阻器電導時,權重變得模糊並且使系統的效能下降。因此,異位訓練在正常情況下需要提前了解硬體的情況,並且基於這種代價高昂的認識,使用軟體來學習權重。
為了避免各種不理想的器件特性,我們提出一種混合訓練方法來實現憶阻器卷積神經網路。在圖3a中展示的整個流程表包含兩個階段。首先,乙個cnn模型進行異位訓練,之後所有被確定的權重通過一種閉合迴路寫入的方法傳輸到憶阻器處理單元。
TensorFlow實現高階的卷積神經網路
本人使用的資料集是cifar 10。這是乙個經典的資料集,許多 也都是在這個資料集上進行訓練。使用的卷積神經網路是根據alex描述的cuda convnet模型修改得來。在這個神經網路中,我使用了一些新的技巧 1 對weights進行了l2的正則化 2 將影象進行翻轉 隨機剪下等資料增強,製造了更多...
工智慧型的未來 用憶阻器製造神經網路晶元
比爾 蓋茨對 連線 雜誌說 如果他還是個少年,他就會做生物黑客了。如果你想用偉大的方式改變世界,就從生物分子開始吧。想當廚子的生物學家是個好黑客 百科 憶阻器 憶阻器 memristor 是一種被動電子元件,被認為是電路的第四種基本元件,僅次於電阻器 電容器及電感元件。憶阻器可以在關掉電源後,仍能 ...
人工智慧的未來 用憶阻器製造神經網路晶元
比爾 蓋茨對 連線 雜誌說 如果他還是個少年,他就會做生物黑客了。如果你想用偉大的方式改變世界,就從生物分子開始吧。想當廚子的生物學家是個好黑客 百科 憶阻器 憶阻器 memristor 是一種被動電子元件,被認為是電路的第四種基本元件,僅次於電阻器 電容器及電感元件。憶阻器可以在關掉電源後,仍能 ...