姚曉芳,田波
銅仁學院 大數據學院 計算機科學系, 貴州 銅仁 554300
類腦超維計算(brain-inspired hyperdimensional computing, HD)通過模擬大腦的工作原理進行建模, 使用神經活動模式進行計算, 并通過定義良好的向量空間操作在超維空間中處理認知任務[1]. HD計算通過使用高維空間中的向量(超向量)進行計算來模擬認知任務, 以替代傳統的確定性計算, 其中超向量是獨立且分布相同的偽隨機向量, 超向量的維數通常是數萬的范圍[2]. HD計算作為一種高效節能的快速學習計算范式, 在學習和分類任務中具有學習能力強、 計算效率和準確性高的優點[3], 在面部檢測、 語言和手勢識別、 文本分類、 腦機接口等實際應用中大獲成功[4-5].
HD計算和傳統計算技術之間的主要區別在于表示數據的方式, 因為HD計算將數據表示為近似模式, 可以非常有效地對數據進行縮放. HD由編碼器和關聯存儲器組成. 編碼器塊將輸入數據映射到高維向量, 并將它們組合以為每個現有類別生成一個模型. 在推理期間, 關聯存儲器通過查看輸入超向量與每個存儲的模型超向量的相似性來執行推理任務. HD計算支持單次通過訓練[6]. 但是, 在實際分類問題上, 使用單次訓練的HD計算模型分類準確性明顯較低. 為了解決HD計算在訓練迭代上缺乏可控性的問題, 文獻[7]提出了一種基于高清計算的自適應學習方法, 通過引入基于動態學習率的自適應訓練方法來解決HD訓練問題. 此外, HD計算的分類精度還與模型大小有關, 當模型大小增加后, 能夠增加模型的信息存儲能力, 從而獲得更好的分類效果[8]. 但是, 當模型尺寸變大時, 計算成本會相應增加, 并且隨著類的數量而快速增長. 文獻[9]為了解決這個問題, 提出了一種新穎的壓縮方法, 利用高維空間的數學原理將超向量壓縮為較短的向量, 同時保留全長超向量的信息, 從而實現了在壓縮HD模型尺寸的同時, 保持原始模型準確性的目標. 作為一種輕量級算法, HD計算在物聯網的邊緣計算等許多需要低功耗設計的領域中也取得了較好的效果. 但是, 當將其應用于多任務學習(multi-task learning, MTL)時, HD計算的內存開銷會隨著MTL方案下的任務數量而顯著增加[10]. 文獻[11]提出了任務投影HD計算方法, 通過利用超空間中的冗余維數使HD模型同時支持多個任務. 此外, 為了降低關聯搜索時的計算量, 文獻[12]試圖對超維計算模型進行二值化處理, 這種方法簡化了與漢明距離測量的余弦相似度, 使得HD能夠在硬件中更快、 更高效地運行. 然而, 二值化的整數模型造成了HD分類準確度下降幅度較大, 從而迫使HD使用余弦相似度來提高精度, 這在嵌入式設備上運行時會產生巨大的成本.
針對上述HD計算模型所遇到的問題, 本文提出了一個基于分組量化的HD計算框架, 用于減少模型計算的復雜度和能耗. 所提出的HD框架利用高維空間中的點積運算代替余弦相似, 并且按照相似度將類超向量分為多個子集, 以分組的方式減少推理階段所需的計算量. 此外, 通過將訓練的HD模型中的值量化為2次冪的形式消除相似性檢查中的乘法運算, 進一步降低計算的復雜度. 為了保證分類準確度, 本文還設計了量化檢查, 將量化與訓練過程結合起來, 使HD模型適應量化值.
受到人腦神經活動模式的啟發, HD計算使用超向量的概念, 其維數在數萬左右. 作為一種新興的計算方法, HD計算主要用于解決認知任務問題, 具有學習速度快、 能量效率高、 任務分類精度高等優點. HD計算對輸入的超向量執行乘法、 加法和置換3個操作, 用于轉換數據. 這些輸入的超向量預先存儲在項目存儲器中, 以形成關聯或連接. 在分類問題中, 首先在訓練階段訓練與類關聯的超向量; 然后在測試階段將測試超向量與類超向量進行比較. 從訓練數據中生成的超向量稱為類超向量, 并存儲在關聯內存中, 從測試數據生成的超向量稱為查詢超向量. 執行關聯搜索以預測給定查詢超向量的類別. HD計算的基本流程分為非線性映射、 編碼、 訓練、 分類4個步驟, 如圖1所示.

圖1 超維計算的基本流程
第1步是非線性映射. 映射的主要目的是將特征向量x投影到具有d維的HD向量上, 其中x∈Rm具有m個分量. 特征標識符ID作為一個基本字段, 特征的實際值作為該字段的填充值. HD計算從構建項目內存IM和連續項內存CiM開始.IM={ID1,ID2, …,IDm}, 其中IDk∈(-1, 1)d,k∈{1, 2, …,m}對應于第k個特征分量的ID. 當d足夠大時,IM中任意兩個不同的HD向量幾乎正交, 即
(1)
式中: Cos(·)和Ham(·)分別是兩個向量之間的余弦相似度量和歸一化漢明距離.
連續項內存CiM在HD計算中作為函數實際值的查找表. 建立CiM的過程首先找到每個特征的最大值Vmax和最小值Vmin; 然后, 將Vmax和Vmin之間的范圍量化為l個層次, 即L1∈(-1, 1)d對應Vmin,Ll∈(-1, 1)d對應Vmax,CiM中的每個向量對應于一個實際值范圍. 因此,CiM={L1,L2, …,Ll}, 其中Lk∈(-1, 1)d,k∈{1, 2, …,l}. 根據兩個HD向量對應值的差異, 通過調整Li和Lj之間的漢明距離來保持空間的層次關系. 換言之, 特征分量的每個值采用量化的方式與Lk形成關聯, 并以此在CiM中查找對應的向量{S1,S2, …,Sm}, 實現了每個特征值到超空間的非線性映射. 在將數據的每個特征分量映射到HD向量之后, 向量對集合I={(ID1,S1), (ID2,S2), …, (IDm,Sm)}可以在向量空間操作的下一階段中極為容易地查詢和使用.
第2步是編碼. 在編碼過程中, 模型首先對I中的每兩個向量對執行綁定操作, 即兩個HD向量之間進行邏輯按位異或操作, 如果兩個HD向量的值不相同, 則異或結果為1, 否則, 異或結果為0. HD向量綁定操作之后, 采用位加法聚合集合I中的m個HD向量. 最后, 對聚合結果進行二值化處理, 二值化后的HD向量可以表示為T∈(-1, 1)d. 整個編碼過程可以表述為
(2)
第3步是訓練. 所有訓練樣本經過前兩個階段, 得到的向量T被發送到聯想存儲器(associative memory, AM)進行訓練. 對于第i類, 同一類的訓練樣本得到的向量Ti進行聚合以形成一個HD類向量:
(3)
式中:ni表示第i個類的訓練樣本數. 對于k類分類任務,AM包括k類HD向量, 表示為{C1,C2, …,Ck}.
第4步是分類. 在推理中, HD使用編碼和關聯搜索進行分類. 首先, HD使用與訓練模塊相同的映射和編碼將測試數據點映射到查詢超向量Q∈(-1, 1)d. 在HD空間中, 相似性度量用于確定查詢超向量Q與每個類超向量Ci之間的匹配強度. HD計算中最常用的度量是余弦相似度:
(4)
在查詢器超向量Q和分類器中的每個類別超向量之間計算余弦相似度后, 選擇具有最高余弦相似度的類別作為輸出類別.

圖2 所提方法的具體流程
HD計算在對具有k個類的d維模型進行推理時, 余弦相似度在查詢和類超向量之間需要執行k×d次乘法和加法. 對于資源有限的嵌入式設備而言, 關聯搜索的計算量是巨大的. 一種解決方案是降低HD模型的維數. 該方法有效地減少了模型尺寸和推理運算次數, 從而提高了計算效率. 然而, 降低維度會導致精度的下降. 此外, 還有學者試圖對高清模型進行二值化處理, 通過簡化與漢明距離測量的余弦相似度來提高計算速度, 但是該方法仍以犧牲精度為代價.
本文的目標是設計一個框架, 該框架能夠在不影響分類精度的情況下提高HD計算的效率. 為了實現這一目標, 提出了一種基于分組量化的HD計算方法, 該方法在原始HD計算模型的基礎上進行了改進: 首先, 將余弦相似度計算簡化為查詢和類超向量之間的點積操作; 其次, 在HD計算模型中添加一個類別層, 以分組搜索方式減少推理計算所需的操作數量; 最后, 對訓練后的HD模型進行量化, 利用兩個權值的冪來消除相似性檢查中的乘法運算. 圖2給出了所提方法的具體流程.

(5)


盡管對類超向量進行分組減少了計算量, 但點積相似性檢查仍然具有許多昂貴的乘法. 為了進一步降低HD計算的復雜度, 考慮對每個類值采用單值量化為2次冪的近似值(2i,i∈z), 使用移位操作來消除乘法運算. 但是, 這種量化方式存在一個缺點, 當類別值位于2i-1和2i之間時, 會導致HD計算引入較大的誤差. 誤差的大小取決于類的數量以及類的相似程度. 對于具有許多類別或高度相關的類超向量的應用程序, 此量化方式可能會降低分類的準確性. 為克服這一缺點, 本文提出了一種更精確的量化方法, 該方法將每個類元素分配給兩個值的2次冪組合(2i+ 2j,i,j∈z), 從而將每個訓練的類別元素分配給一個更接近實際元素的值, 實現更精確的量化, 同時對精度的影響也得到相應降低. 該策略通過使用兩個移位和單個加法運算來實現乘法運算, 提高了計算效率.
由于類超向量是高度相關的, 因此即使這種量化方法也會對分類精度產生很大影響. 當HD模型在沒有經過訓練的情況下使用量化值, 可能會因為引入誤差而降低模型的性能. 為了確保最小的性能損失, 本文設計了迭代訓練的方式來減少量化可能帶來的性能損失.
如圖2所示, 為了獲得更好的分類精度, 使用訓練數據集對HD模型進行多次迭代訓練. 在一次迭代中, HD檢查所有訓練數據點與當前HD模型的相似性. 如果模型錯誤地對數據Q進行了分類, HD模型則需要對模型進行一定的調整:
首先, 在關聯搜索的第二階段, 將查詢超向量添加到其所屬的類中, 并將其從與之錯誤匹配的類超向量中去除, 其數學公式可以定義為
(6)

其次, 類似地, 在關聯搜索的第一階段, 將查詢超向量添加到其所屬的超向量組中, 并將其從與之錯誤匹配的超向量組中去除, 其數學公式可以定義為
(7)

本文在UCI-HAR行動識別數據集[13]上驗證所提模型的有效性, 使用準確度、 能耗和計算時間作為評估指標, 并將測試結果與壓縮HD計算(compression HD computing, CompHD)[9]和基于閾值的動態HD計算(threshold-based dynamic HD computing, TD-HDC)[14]等方法進行對比. 其中, CompHD模型利用高維空間的數學知識將超向量壓縮為較短的向量, 同時保持了全長超向量的信息, 從而有效降低模型尺寸, 提高模型效率. TD-HDC模型通過設置合適的閾值來保證輸入數據被動態地分配二進制和整數HD模型計算資源, 實現精度和能耗的有效平衡.
實驗參數設置為: HD空間的尺寸d=10 000, 量化參數l=10, 分組數量n=1,2,3,4, 所有HD計算模型的性能都達到飽和. 連續項內存CiM在HD計算中作為函數實際值的查找表. 建立CiM的過程首先需找到每個特征的最大值Vmax和最小值Vmin; 然后, 將Vmax和Vmin之間的范圍量化為l個層次.
所有實驗均進行了50次獨立運行, 以獲得平均模擬結果. 為了降低硬件成本, 映射和編碼模塊在所有任務之間共享. 所有特征分量都是連續的, 實值的, 并且縮放到[-1, 1]的范圍內. HD計算框架在Python中實現, 使用RTL System-Verilog描述推理函數, 并使用標準數字ASIC流程來設計專用硬件. 此外, 使用ModelSim提取設計切換活動, 使用 Synopsys PrimeTime測量 HD 模型的功耗. 所有實驗的運行環境為Windows 10系統, AMD Core TR-2950X處理器, 128 GB內存.
UCI-HAR數據集是根據8位受試者在5 min內以自己的風格進行19種不同活動的記錄建立的. 使用來自5個傳感器單元的運動傳感器數據, 每個單元包含9個傳感器, 根據以50 Hz恒定速率捕獲的3軸線性加速度和3軸角速度檢測人類活動. 該數據集包含10 299個樣本, 每個樣本具有561個屬性.

圖3 分組量化對HD計算模型分類準確性影響



圖4 所提方法在每個階段的能量消耗和執行時間
本文目標是使HD可以在資源有限的嵌入式設備上使用. 為了進一步驗證所提方法的優越性, 圖5,6給出了本文方法與CompHD,TD-HDC兩種方法在分類準確度和執行時間上的對比結果. 從圖5,6中可以看出, 本文方法在2個評估指標上均具有優勢, 從而在保證精度不變的條件下, 改善了HD計算模型的計算效率.

圖5 不同HD方法的準確度對比

圖6 不同HD方法的執行時間對比
本文提出了一種基于分組量化的高效HD計算分類方法, 用于解決當前HD計算模型中計算量大、 效率低的問題. 實驗結果表明, 所提模型在保證準確性的情況下降低了計算能耗, 可以作為輕量分類器用于小型嵌入式設備上.