Advancing Hyperdimensional Computing Based on Trainable Encoding and Adaptive Training for Efficient and Accurate Learning
基于可訓練編碼和自適應訓練的高效準確學習的超維度計算
https://dl.acm.org/doi/abs/10.1145/3665891
https://github.com/CELL-DGIST/HDZoo-official/tree/main/trainableHD
摘要
高維計算(HDC)是一種受人類記憶機制啟發(fā)的計算范式,通過高維向量表示(稱為超向量)來表征數據。近年來,HDC 的研究探索了其作為學習模型的潛力,利用其簡單的算術運算和高效率特性。然而,傳統(tǒng)的 HDC 框架受到兩個主要靜態(tài)元素的限制:隨機生成的編碼器和固定的學習率。這些靜態(tài)組件顯著限制了模型的適應性和準確性。靜態(tài)的、隨機生成的編碼器雖然確保了高維表示,但無法適應數據關系的變化,從而限制了模型準確捕捉和學習復雜模式的能力。同樣,學習率的固定性質未能考慮訓練過程隨時間變化的需求,阻礙了高效的收斂和最佳性能。本文介紹了一種名為 TrainableHD 的新型 HDC 框架,該框架能夠根據學習數據的反饋動態(tài)訓練隨機生成的編碼器,從而解決了傳統(tǒng) HDC 編碼器的靜態(tài)問題。TrainableHD 還通過引入自適應優(yōu)化算法來增強訓練性能,以學習超向量。我們進一步通過有效的量化優(yōu)化了 TrainableHD,以提高效率,使得推理階段可以在低精度加速器上執(zhí)行。我們的評估表明,TrainableHD 在不增加推理期間計算成本的情況下,顯著提升了 HDC 的準確性,最高提升 27.99%(平均提升 7.02%),達到了與最先進的深度學習模型相當的性能水平。此外,TrainableHD 在執(zhí)行速度和能效方面進行了優(yōu)化。與在 NVIDIA Jetson Xavier 等低功耗 GPU 平臺上的深度學習相比,TrainableHD 的速度提高了 56.4 倍,能效提高了 73 倍。這種效率優(yōu)勢通過使用編碼器間隔訓練(EIT)和自適應優(yōu)化算法得到了進一步增強,在不犧牲模型準確性的情況下改進了訓練過程。
CCS 概念:? 計算理論 → 隨機投影與度量嵌入;? 計算方法論 → 機器學習算法
額外關鍵詞和短語:高維計算、類腦計算、量化感知訓練、自適應優(yōu)化
ACM 引用格式:
Jiseung Kim, Hyunsei Lee, Mohsen Imani, 和 Yeseong Kim. 2024. 基于可訓練編碼和自適應訓練的高維計算進展,實現高效且準確的學習。ACM Transactions on Design Automation of Electronic Systems 29, 5, 文章 89(2024 年 9 月),25 頁。https://doi.org/10.1145/3665891
1 引言
在當今的計算領域,我們正目睹生成和處理的數據量以前所未有的速度激增。這種來自多樣化來源和應用的指數級增長,既帶來了重大挑戰(zhàn),也為計算科學領域開辟了新的方向。盡管傳統(tǒng)數據處理方法具有穩(wěn)健性,但它們越來越難以應對這股洶涌而來的數據浪潮。
為應對這些挑戰(zhàn),最先進的解決方案通常轉向機器學習,其中神經網絡(NNs)成為一種突出的方法。神經網絡因其能夠從大規(guī)模數據集中學習并做出明智決策的能力而備受贊譽。然而,其對強大計算能力的依賴往往需要使用先進的系統(tǒng)或服務器。這一要求使得神經網絡在許多小型、資源受限的設備中變得不切實際,而這些設備往往是數據生成的前沿陣地。神經網絡的計算需求與計算能力之間的不匹配,促使研究人員轉向替代的學習方法。
高維計算(HDC),受人類大腦復雜過程的啟發(fā),代表了一種革命性的計算范式,徹底改變了傳統(tǒng)的數據表示和處理方法。通過利用稱為超向量的高維向量,HDC 實現了并行計算和抗噪學習,這使其有別于依賴特定元素位置的傳統(tǒng)系統(tǒng)(如 32/64 位字[10])。
HDC 的核心在于其獨特的數據表示和處理方法。通過將原始輸入數據編碼為超向量,并將其與 HDC 操作相結合,該系統(tǒng)模擬了記憶和信息關聯等認知功能。隨后,在模型訓練階段,HDC 的最終目標是生成代表不同數據類別的新超向量,推理則通過測量輸入的超向量編碼與每個類別超向量之間的高維空間距離來完成[21]。
十多年來,眾多研究致力于提升基于 HDC 方法的學習效率。盡管如此,傳統(tǒng)的基于 HDC 的學習系統(tǒng)在準確性方面仍然低于當代最先進的學習機制(如深度學習)。這種差異主要源于 HDC 框架中編碼和模型訓練階段普遍存在的靜態(tài)特性。每個階段都面臨其獨特的挑戰(zhàn),限制了 HDC 系統(tǒng)的適應性和整體效能。
首先,負責將原始數據轉換為高維表示的編碼階段,是實現高質量學習的基礎,因為它為所有后續(xù)學習過程奠定了基礎。傳統(tǒng)方法采用一個由隨機生成的基超向量組成的高維矩陣[2, 36]。然而,這種方法也存在一個重大局限性:一旦生成,這些編碼器在大多數先前的 HDC 研究中保持靜態(tài)[2, 7, 10, 13, 16, 18, 20, 21, 23, 26, 34, 36, 46]。編碼過程的靜態(tài)特性阻止系統(tǒng)動態(tài)適應不斷變化的數據特征關系,迫使使用過大的維度(例如 D = 10,000)以保持準確性。這種方法不可避免地導致學習效率低下和可擴展性問題。
挑戰(zhàn)延續(xù)到模型訓練階段,其主要問題在于學習率調整的靜態(tài)特性。引入自適應學習率調度器是解決這一局限性的重要進展。與在整個訓練過程中保持恒定的靜態(tài)學習率不同,我們可以使用自適應學習率調度器根據訓練進度動態(tài)調整學習率。盡管已有嘗試在 HDC 中引入此類自適應機制,但這些努力通常依賴于預定義的調度策略,例如用戶定義的線性調整[12],缺乏真正自適應系統(tǒng)的靈活性和響應能力。與現代學習算法(如深度學習)相比,這種差距阻礙了 HDC 模型的收斂性和性能。這種動態(tài)調整能力對于現代化 HDC 系統(tǒng)以實現類似于深度學習的高質量學習至關重要。
為了解決由于編碼和模型訓練階段中存在的靜態(tài)學習特性所帶來的挑戰(zhàn),我們提出了 TrainableHD 框架。我們的方法通過兩個貢獻實現了動態(tài)和自適應學習,從而現代化了 HDC 范式:動態(tài)編碼器的實現和自適應優(yōu)化算法的集成,同時結合高效的量化方法。
TrainableHD 框架的第一個主要特點是其動態(tài)編碼器。與使用靜態(tài)、隨機生成編碼器的傳統(tǒng) HDC 方法不同,TrainableHD 的編碼器被設計為動態(tài)適應。它允許在訓練過程中對基超向量進行持續(xù)更新。這種動態(tài)適應通過更細致地理解數據特征關系,顯著提高了模型的準確性和效率,相關研究表明了這一點[16, 18]。重要的是,TrainableHD 在推理期間無需引入額外操作即可實現這些改進,同時保持高性能和高效率。
為進一步擴展 TrainableHD 的能力,我們利用深度學習中使用的最先進的自適應優(yōu)化算法(如 Adam 和 Adagrad)來微調學習率和超向量更新的幅度。這一創(chuàng)新確保了訓練階段的優(yōu)化,促進了更快的收斂和更高的整體效率[23]。通過集成這些自適應優(yōu)化算法,TrainableHD 不僅在適應性和性能方面超越了傳統(tǒng) HDC 方法,還使 HDC 實踐與現代學習算法(如深度學習)的復雜性保持一致。
本文的貢獻總結如下:
(1) TrainableHD 的引入:我們提出了 TrainableHD,這是一種新穎的 HDC 框架,能夠學習一種新型的 HDC 編碼器,并在訓練過程中動態(tài)更新它。
(2) 自適應優(yōu)化器的集成:我們通過引入自適應優(yōu)化算法擴展了 TrainableHD,這些算法動態(tài)調整學習率和更新的超向量,以優(yōu)化訓練效率和準確性。
(3) 編碼器訓練的優(yōu)化:我們提出了一種優(yōu)化技術,以減少編碼器訓練的開銷,確保僅在必要時更新編碼器,從而提升性能。
(4) 通過量化實現高效推理:TrainableHD 支持量化感知訓練(QAT),用于 HDC 學習,以便在多種平臺上實現高效推理,包括支持 SIMD 的 CPU、Tensor Core(GPU)和 FPGA,同時保持相當的準確性。
我們的評估表明,結合自適應優(yōu)化算法的 TrainableHD 不僅將現有 HDC 學習方法的準確性提高了多達 27.99%(平均提高 7.02%),而且在推理期間無需額外的計算成本。此外,結合量化后,TrainableHD 在速度和能效方面表現出顯著提升,在 NVIDIA Jetson Xavier 等平臺上的運行速度比深度學習快 56.4 倍,能效高出 73 倍。
2 預備知識與相關工作
2.1 高維計算(HDC)
HDC 是一種通過高維向量(稱為超向量)表示數據的范式[15]。本節(jié)介紹了 HDC 的基礎概念及其學習機制,這些內容對于理解我們提出的方法 TrainableHD 至關重要。
2.1.1 整體表示
HDC 使用超向量的方式類似于人類大腦利用神經元和突觸處理刺激的方式。這些超向量是高維的,通常包含數千個維度,并且將信息均勻分布在所有組件中。與傳統(tǒng)計算方法不同,在傳統(tǒng)方法中,元素的重要性通常與其特定的比特位索引相關聯(例如 32/64 位字),而 HDC 提供了一種更整體的數據表示方式。為了確定兩個以超向量表示的實體之間的相似性,通常使用點積或余弦相似度[^1]。
這些向量的高維度(例如 D > 1,000)使得它們具有準正交性,這意味著兩個隨機生成的超向量很可能接近正交,這是 HDC 對噪聲和錯誤容忍的關鍵特性。例如,如果兩個隨機生成的雙極性超向量點積為零,即 $\langle X, Y \rangle \approx 0$,那么它們在維度 $D$ 足夠高時($D > 1,000$)會接近正交[^2]。這是因為兩個隨機超向量 $X$ 和 $Y$ 可能會有 $D/2$ 的比特重疊,標準差為 $\sqrt{D/4}$。超向量的獨立同分布(i.i.d.)組件及其高維度允許在其與其他超向量失去正交性之前承受顯著的噪聲和錯誤。此外,超向量的整體性質使其具有容錯能力。
2.1.2 HDC 算術
在 HDC 中,超向量通過特定的算術運算實現各種認知功能。例如,“捆綁”操作(用符號 $\oplus$ 表示)通過按位加法組合超向量,生成一個反映其組成部分的復合超向量,從而有效地模擬了對不同信息的記憶。同時,“綁定”操作(用符號 $\otimes$ 表示)是一種按位矩陣乘法運算,用于生成一個新的超向量,該超向量封裝了其因子的關聯關系,可用于關聯兩個不同的概念并創(chuàng)建另一個接近正交的超向量,表示一個不同于其原始概念的新概念。
通過這些操作,可以實現多種基于 HDC 的學習任務,其中超空間中的數據點由超向量表示。例如,通過對相關超向量進行一系列綁定或捆綁操作,可以學習類別超向量,表示其分類類別中的代表性高維值模式。在推理階段,查詢超向量與編碼后的訓練類別超向量之間的相似性被用來確定分類結果。
2.2 HDC 中現有的編碼方法
編碼對 HDC 學習模型的準確性和復雜性有著重要影響[23]。它涉及將原始數據點映射到超空間,確保相似向量之間的接近性以及無關向量之間的準正交性。我們簡要考察三種最先進的編碼方法:ID 級編碼[11]、隨機投影編碼[10] 和非線性編碼[13]。
隨機投影編碼 通過在編碼過程中利用浮點運算解決了基于二進制的 ID 級編碼準確性較低的問題。它生成 F 個隨機雙極性基超向量,維度為 D ,其中 $F$ 是數據樣本中的特征數量。數據樣本的每個特征與隨機生成的基超向量矩陣綁定(即 ),通過對每個特征的超向量進行綁定生成編碼后的超向量。
非線性編碼 是最先進的編碼方法之一,它從高斯分布中采樣基超向量的元素,類似于隨機投影生成浮點型超向量,但還應用了非線性函數(如余弦函數和/或符號函數)來二值化超向量,并增強其元素分布的非線性特性。
為了訓練 HDC 學習模型,將數據樣本轉換為超向量是一個關鍵階段,這對模型的準確性和復雜性都有顯著影響。現有的 HDC 學習方法[2, 7, 10, 13, 16, 18, 20, 21, 23, 26, 34, 36, 46] 仍然使用靜態(tài)編碼器,可能會忽略從訓練樣本中提取的寶貴信息。為緩解這一問題,文獻[47] 提出了一種替代方法 ManiHD,該方法在靜態(tài) HDC 編碼器之前引入流形投影。然而,ManiHD 并未區(qū)分類別特定特征,仍然依賴靜態(tài)編碼器,這可能導致次優(yōu)的準確性水平。我們對多個數據集的分析表明,ManiHD 的流形投影過程比其他方法的編碼時間長約 2.95 倍。
為應對這一挑戰(zhàn),本文擴展了我們之前的研究[17],實現了動態(tài) HDC 編碼器訓練,并結合自適應學習優(yōu)化器以實現高準確性和效率。我們專注于如何通過從訓練樣本中提取和利用知識來顯式地學習編碼器本身,同時在推理過程中不引入額外開銷。特別是,我們采用非線性編碼作為基線方法,因為其在準確性方面已被證明優(yōu)于其他技術。然而,與文獻[13] 中概述的原始非線性編碼方法不同,我們的策略積極尋求為每個原始特征找到最合適的、具有代表性的高維模式。
3 TrainableHD 概述
圖 1 提供了 TrainableHD 學習框架的說明性概述。我們的訓練方法學習以下兩種超向量表示:(1) 編碼器的基超向量,最初通過從高斯分布中隨機生成的分量初始化;(2) 類別超向量,它們從零值分量開始,表示每個類別的高維模式。
在訓練階段,TrainableHD 首先使用當前的基超向量將訓練樣本編碼為特征超向量。訓練過程通過評估這些特征超向量與每個類別超向量之間的相似性來推進。HDC 模塊根據具有最高相似性的類別超向量對訓練數據進行分類。通過相似性值和真實標簽計算的每類誤差指導類別超向量的更新,從而提高未來迭代中的預測準確性。
TrainableHD 的創(chuàng)新之處在于其編碼器訓練技術,該技術能夠高效地將每類標量誤差轉化為每個特征的超向量誤差,從而更新基超向量。這一過程詳見第 5 節(jié)。TrainableHD 還在 HDC 環(huán)境中引入了自適應優(yōu)化算法(第 5.1 節(jié)),這些算法傳統(tǒng)上用于深度學習,以優(yōu)化訓練性能。鑒于更新基超向量增加了復雜性,這些算法顯著提高了準確性和效率。
我們還在 TrainableHD 中引入了兩種優(yōu)化策略,以提升加速平臺的效率。第一種是編碼器間隔訓練(Encoder Interval Training, EIT),詳見第 6.1 節(jié),這是一種基于需求決定編碼器訓練頻率的優(yōu)化技術。這種自適應方法確保訓練在多個周期內通過小批量數據高效進行,有效收斂模型的準確性。此外,我們設計了一種使用低精度超向量元素(如 8 位整數)訓練模型的方法,采用第 6.2 節(jié)中詳述的量化感知訓練(QAT)。這種方法能夠在不犧牲模型推理準確性的情況下創(chuàng)建高效的量化模型。
在推理階段,完全由量化加速的訓練編碼器從推理數據生成查詢超向量,與現有的 HDC 學習解決方案相比不會增加額外的計算成本。然后,HDC 模型在查詢超向量和類別超向量之間執(zhí)行相似性計算,以確定樣本的類別(圖 1(b))。值得注意的是,ManiHD [47](圖 1(c))通過流形投影緩解靜態(tài) HDC 編碼器的問題,但會帶來額外的計算成本;而 TrainableHD 即使在推理階段也不會在編碼過程中增加任何計算開銷。
4 使用動態(tài)編碼器訓練的 HDC 學習
4.1 編碼原理
類似于擁有數百萬神經元和突觸的人類大腦在受到輸入刺激時被激活,HDC 利用高維空間來表示任何實體。這些高維向量(即超向量)封裝了整體表示[15],將信息均勻分布到所有分量中,從而確保全面且集成的數據表示。
如第 2.2 節(jié)所述,在 HDC 中,基超向量的生成構成了編碼過程的基礎,通常通過從雙極值 {?1, 1} [10] 中隨機采樣或從高斯分布 [13] 中采樣以實現更高的準確性。
然而,傳統(tǒng) HDC 方法的一個局限性在于,它們在創(chuàng)建基超向量后不會對其進行更改,這可能導致在表示相關特征時出現潛在的不準確性。在此,我們討論了在動態(tài)編碼方法中利用的一般編碼過程的關鍵特性。
在 HDC 中,存在多種學習類別超向量 K 的方法[11, 35];在我們的工作中,我們采用了文獻[21] 中提出的最先進的 HDC 學習過程。它根據與每個當前類別超向量相關的每類標量誤差 e 的大小來優(yōu)化 K。在本文中,我們利用同樣的標量誤差 e 信息,通過識別導致誤差的根本原因來更新基超向量。這種方法與之前的 HDC 編碼技術形成對比,后者并未對編碼器的基超向量進行訓練,即依賴靜態(tài)且隨機生成的編碼器。通過在訓練期間動態(tài)更新類別超向量和基超向量,TrainableHD 解決了靜態(tài)編碼的關鍵局限性——即忽視輸入數據特征之間的關系以及因此對高維度的需求。
圖 2 描述了 TrainableHD 更新基超向量的過程。在 TrainableHD 中,基超向量 B 的訓練最初是將標量特征編碼為超向量,其策略旨在將每類誤差的大小轉化為每個特征誤差的大小。TrainableHD 通過兩步方法實現這一目標:(1) 將單個訓練樣本的誤差編碼為超向量,稱為樣本誤差超向量 (E),以及 (2) 從 E 中推導出每個特征的誤差超向量。
5 基于學習率優(yōu)化的動態(tài) HDC 訓練 5.1 學習率優(yōu)化在 HDC 中的集成
在 HDC 領域,傳統(tǒng)算法通常忽略了優(yōu)化學習率的復雜性,正如先前研究[12] 所指出的那樣。這些算法僅更新類別超向量,表現出相對較快的收斂性,尤其是在與深度學習中更復雜的流程相比時。然而,TrainableHD 代表了對這些傳統(tǒng) HDC 方法的轉變。通過引入不僅針對類別超向量還針對基超向量的動態(tài)更新,TrainableHD 涉及了一個更為廣闊的訓練領域。基超向量由于其更廣泛的范圍——可能涵蓋比類別數量更多的特征——表明采用一種更細致、類似深度學習的方法,以更精細的尺度更新超向量可能是有利的。TrainableHD 的這一精細化策略旨在培養(yǎng)高質量模型,同時保持快速的收斂速度。
將最先進的學習率優(yōu)化算法集成到 HDC 框架中需要對算法集成進行系統(tǒng)性修改。TrainableHD 框架確定了超向量更新過程的兩個主要步驟:類別超向量 (Θ) 和基超向量 (Δ),兩者均由學習率 (λ) 調節(jié)。在 TrainableHD 的訓練框架中(詳見算法 1),定義了兩個超向量更新的步驟:類別超向量的更新 (Θ, 第 7 行) 和基超向量的更新 (Δ, 第 14 行),均使用 λ。對于這些更新過程,我們可以采用深度學習領域中著名的優(yōu)化技術,例如 Adagrad [4] 和 Adam [22],并將其整合到我們的 HDC 訓練算法中。
5.2 不同優(yōu)化算法對 HDC 的影響
優(yōu)化器算法的選擇和集成在提升訓練效率和模型整體性能方面起著至關重要的作用。TrainableHD 框架整合了多種優(yōu)化算法;每種優(yōu)化器都為 HDC 訓練過程帶來了獨特的特性和潛在的缺點。在本節(jié)中,我們將全面討論它們的預期行為及其與 HDC 學習的兼容性。
隨機梯度下降(SGD)[40] SGD 因其簡單性而在傳統(tǒng)的 HDC 研究中被廣泛使用,采用固定學習率,提供了穩(wěn)定但可能僵化的學習過程。盡管 SGD 在許多 HDC 應用中表現出快速收斂和相當高的準確性,但在數據分布隨時間變化的情況下,其固定學習率可能是一個重大缺陷,限制了模型有效適應新信息的能力。
Adagrad [4] Adagrad 通過為每個參數調整學習率解決了 SGD 的局限性,允許基于特征出現頻率進行更復雜的更新。特別是在具有整體表示的數據環(huán)境中,由于其根據特征頻率調整學習率的獨特機制,它表現尤為出色。這一特性在 HDC 中特別有益,因為編碼通常會生成高維向量,并具有顯著的整體表示。Adagrad 中的累加器將學習率按所有平方更新之和的平方根成反比縮放,確保低頻但信息豐富的特征獲得更大的更新。這種方法可以通過快速適應數據中最具信息量的特征,在早期階段顯著增強學習效果。
AdaDelta [43] AdaDelta 設計用于克服 Adagrad 學習率逐漸減小的問題,它專注于使用一個更近期的更新累積窗口來調整學習率。雖然這種方法緩解了 Adagrad 的一些局限性,但在需要快速學習能力而非長期迭代調整的 HDC 場景中,可能會導致性能下降。
RMSProp [42] 與 AdaDelta 類似,它通過使用移動平均值來確定學習率,從而修改了 Adagrad 的方法,確保學習率不會過快下降。這種優(yōu)化器更適合非平穩(wěn)問題,并且在 HDC 中可以通過保持有效的學習速度提供比 AdaDelta 更好的改進。
動量(Momentum)[37] 和 Nesterov 加速梯度(NAG)[33] 這兩種方法通過引入速度分量到優(yōu)化過程中,使模型能夠更平滑地導航優(yōu)化空間,并可能更有效地逃離局部最小值。這些方法通過將過去的更新納入當前更新,可以加速 HDC 模型的收斂,但由于 HDC 的高維空間特性,它們在訓練過程中可能會引入振蕩。這些振蕩以及隨之而來的計算開銷會對學習性能產生負面影響,尤其是在與其他最先進的學習算法(如深度學習)相比時,HDC 通常追求快速學習。此外,這些優(yōu)化算法對超參數(如動量系數和學習率)較為敏感。這種敏感性可能會使訓練最優(yōu)模型的過程復雜化,通常需要多次迭代才能找到最有效的參數設置。
Adam [22] Adam 結合了自適應學習率和動量的優(yōu)勢,根據更新的一階矩和二階矩調整學習率,使其在廣泛的 HDC 任務中表現穩(wěn)健。然而,它的初始訓練周期可能會較慢,這在 HDC 領域中是一個潛在的缺點。此外,其復雜性和對超參數調優(yōu)的謹慎需求可能被視為潛在的缺點,特別是在計算資源有限的情況下。
盡管每種優(yōu)化器都為 HDC 訓練過程帶來了獨特的優(yōu)勢,但它們的有效性可能取決于 HDC 任務的具體特性,包括學習階段和計算約束。后續(xù)章節(jié),尤其是第 7.2 節(jié),將進一步討論這些優(yōu)化技術對 TrainableHD 性能的深遠影響,以探討學習率優(yōu)化在 HDC 領域中的集成潛力。
6 加速優(yōu)化策略
6.1 編碼器間隔訓練(EIT)
在 TrainableHD 的訓練方法中,每次迭代都使用更新后的基超向量對特征超向量進行連續(xù)編碼,這會顯著增加基于 HDC 的學習的復雜性。為緩解這一問題,我們實施了一種稱為 EIT(編碼器間隔訓練) 的優(yōu)化技術。該技術旨在通過減少編碼操作的頻率來簡化 TrainableHD 的訓練過程。
如圖 3 所示,EIT 的工作原理是將特征超向量的值存儲在內存中以供后續(xù)使用。在初始迭代中,TrainableHD 執(zhí)行標準的特征超向量編碼過程。隨后,在接下來的 (n - 1) 次迭代中(其中 n 是定義 EIT 周期的超參數),訓練過程會利用這些先前存儲的特征超向量,跳過每一步重新編碼的需求。
需要注意的是,盡管特征超向量的重復使用減少了編碼頻率,但基超向量在這些迭代中仍然持續(xù)更新。這種對基超向量的持續(xù)優(yōu)化確保即使重復使用特征超向量,整體編碼質量仍然保持較高水平。HDC 固有的噪聲容忍能力最大限度地減少了學習質量的潛在損失,僅在觀察到顯著變化時才高效更新特征超向量。
這種重復使用和更新特征超向量的循環(huán)過程貫穿整個訓練過程,并且每隔第 $n$ 次迭代執(zhí)行一次重新編碼操作。EIT 的這種結構化方法不僅優(yōu)化了 TrainableHD 中的編碼過程,還促進了整體更高效、更有效的訓練方案。EIT 周期會一直重復,直到訓練完成,從而在計算效率和學習質量之間實現平衡。
6.2 使用量化加速
在 TrainableHD 中,我們采用了一種量化策略來應對與浮點運算相關的計算挑戰(zhàn)。當代 HDC 算法,尤其是基于非線性編碼的算法[21],通常通過使用二進制超向量編碼來實現高精度。然而,其內部機制(包括用于分類計算的關鍵步驟,如編碼和相似性搜索)仍然依賴浮點運算。這種依賴成為尋求高效加速時的一個主要問題,而 TrainableHD 通過應用量化解決了這一問題。
量化在深度學習中被廣泛用于高效的推理,并已適應于 TrainableHD 以滿足 HDC 的特定需求。在 TrainableHD 中,量化被用來簡化計算,同時利用 HDC 固有的魯棒性確保對精度的影響最小。TrainableHD 中量化的多功能性還體現在其所支持的各種方法上。這些方法包括從靜態(tài)均勻或對數量化到訓練后動態(tài)范圍調整的量化,以及混合精度量化方法。
具體而言,TrainableHD 采用了一種先進的量化感知訓練(QAT)方法[5, 24, 32, 45],該方法能夠在訓練過程中巧妙地將超向量從浮點格式轉換為量化表示。也就是說,在訓練過程中,它在 GPGPU(或 CPU)平臺上模擬軟件中的精確量化過程,以訓練量化模型,從而確保向量化狀態(tài)的過渡能夠最大限度地減少精度損失。在訓練階段完成后,量化模型即可部署到支持量化操作的加速平臺(例如 CUDA Tensor Cores 或 FPGA)上。這種部署僅使用量化表示進行推理,既保證了高精度又提升了效率。
盡管本文主要關注 INT8 量化(因其在現代硬件加速器如 NVIDIA Tensor Cores 中的普遍性),但 TrainableHD 的量化框架足夠靈活,可以輕松擴展到其他精度級別。這種適應性至關重要,使 TrainableHD 能夠有效部署在各種硬件平臺上,從而在支持量化的多樣化硬件環(huán)境中增強其實用性和效率。
6.2.1 訓練量化超向量
如圖 4(a) 所示,QAT 在 TrainableHD 中的應用使得現代量化方法能夠融入傳統(tǒng)的 HDC 訓練方法中。在訓練過程中,TrainableHD 對輸入特征和當前的基超向量進行一種稱為“偽量化”的量化模擬過程。此過程將其元素計算為 8 位整數(INT8)(即通過對超向量元素進行鉗位和舍入以生成 8 位整數版本的輸入),同時仍以浮點(FLOAT32)格式存儲它們。這種方法的目的是在迭代訓練更新期間建模量化對超向量的影響,而無需承擔實際 INT8 量化通常帶來的巨大計算成本。類別超向量同樣通過偽量化處理。
在訓練階段完成后,我們將訓練好的基超向量和類別超向量轉換為 INT8 表示。這一步使得整個推理過程都可以在 INT8 域中完成,從而有效降低計算開銷,如圖 4(b) 所示。
使用浮點量化訓練的挑戰(zhàn)在于如何準確設置量化參數。為了解決這一問題,TrainableHD 采用了一種仿射變換方法,通過縮放因子 s 和零映射值 z 來量化每個輸入 x:
6.2.2 QAT 性能優(yōu)化
我們的 QAT 方法旨在提高推理效率,盡管偽量化過程確實引入了額外的訓練開銷。鑒于 HDC 被討論為資源受限環(huán)境中在線學習解決方案的候選者[8–10, 28–31, 44, 47],這些額外成本在某些部署場景中可能會變得繁重。為了抵消主要由偽量化引起的額外開銷,我們開發(fā)了一種有針對性的優(yōu)化技術,稱為 漂移感知更新(DAU)*。DAU 的設計旨在戰(zhàn)略性地確定實施偽量化的最佳時機,從而優(yōu)化訓練過程。
讓我們回顧一下算法 1,它概述了 TrainableHD 的訓練方法。我們根據超向量類型的誤差(通過所選學習優(yōu)化器計算得出)調整基超向量和類別超向量,即 ,如第 4.2 節(jié)所述。鑒于 HDC 對噪聲的固有容忍性,基超向量和類別超向量中的微小差異不太可能對整體訓練結果產生實質性影響,這使我們可以選擇偶爾跳過偽量化步驟。
7 實驗結果
7.1 實驗設置
我們使用運行在 NVIDIA GeForce RTX 3090 上的 PyTorch 實現了 TrainableHD 框架的訓練過程。推理過程則在支持浮點和整數向量運算的各種加速平臺上實現,包括 CPU(Intel Xeon Silver 4110)、低功耗 GPU(Nvidia Jetson Xavier)和 FPGA(Xilinx Zynq-7000)。為了評估性能,我們?yōu)槊總€平臺使用了特定的工具:Intel RAPL 用于測量 CPU 上的執(zhí)行時間和功耗,Nvidia Nsight 用于 GPU 評估,而 Xilinx Vitis 工具包用于評估 FPGA。這些工具提供了全面的指標,以分析 TrainableHD 框架在不同硬件環(huán)境中的效率和有效性。我們的訓練框架已開源,并可在以下鏈接獲取:https://github.com/CELL-DGIST/HDZoo/trainableHD。該存儲庫提供了探索和實現我們方法所需的資源,以及將其與其他基于 HDC 的代表性學習策略進行基準測試的功能。
7.1.1 推理任務的實現方法
對于基于 CPU 的推理加速,我們利用了 Facebook 的 FBGEMM 庫,這是一種以支持優(yōu)化的 INT8 操作而聞名的先進解決方案。該庫利用 x86 SIMD 指令和多線程能力。我們進一步增強了 FBGEMM 庫,增加了對符號函數的支持。
鑒于基超向量和類別超向量在部署后保持不變,一旦完成訓練,我們預先安排了超矩陣元素的存儲順序。這種預先安排確保了在通用矩陣乘法(GEMM)操作期間的完全順序內存訪問模式,從而優(yōu)化了性能。
在 GPU 加速的情況下,我們的重點是利用 NVIDIA Jetson Xavier 中的 Tensor Core。我們擴展了 XCelHD [16](HDC 的 CUDA 實現),以支持 TrainableHD 框架的量化執(zhí)行。這一擴展涉及將 HDC 操作映射到 CUDA 的 cuBLAS API。此外,我們開發(fā)了一個原地元素更新函數,用于處理中間結果,從而在支持符號函數的同時避免非合并內存訪問的問題。
對于 FPGA 實現,我們提出的量化方法設計得既高度精確又高效,避免了以往工作中常見的資源密集型 DSP 單元的使用[10]。利用 Xilinx Vitis 框架,我們在一個主要依賴查找表(Look-Up Tables)進行計算的脈動陣列結構上實現了 GEMM 和歸約操作。通過將不變的基超向量和類別超向量預先加載到脈動陣列的緩沖區(qū)中,進一步優(yōu)化了這一方法,從而實現它們在多個輸入中的重復使用而無需額外的主機通信。這種主動加載策略顯著提高了基于 FPGA 的推理過程的效率。
7.1.2 基線與數據集
為了進行對比分析,TrainableHD 與三種不同的模型進行了基準測試:(1) 一種最先進的 HDC 學習方法(Baseline),它使用靜態(tài)非線性編碼器重新訓練類別超向量[13];(2) ManiHD(ManiHD),該方法將流形投影集成到 HDC 中,以克服靜態(tài) HDC 編碼器的問題[47];以及 (3) 使用 Ray Tune 優(yōu)化以實現最大準確率的深度學習模型(DNN)。這些深度學習模型配置了不同的超參數,包括最大為 64 的批量大小、五層架構深度和最多 512 個神經元,并在 50 個周期內進行訓練。
為了進行公平評估,TrainableHD、Baseline 和 ManiHD 分別重新訓練了 50 個周期。我們通過常見的超參數搜索經驗性地選擇了范圍在 內的學習率 。用于此評估的數據集詳見表 2,涵蓋了廣泛的實際應用場景。這些場景包括物聯網和邊緣系統(tǒng)[1, 3, 38, 39],例如基于心電圖的情緒檢測和人體活動識別,以及通常用于基準測試 HDC 學習的基于圖像的分類任務[6, 19, 25, 27],如人臉檢測和字符識別。
7.2 分類準確性
圖 5 展示了各種學習方法之間的準確性對比。對于 Baseline 和 TrainableHD,我們使用兩種不同的超向量維度(3K 和 10K)進行了測量。結果表明,TrainableHD 始終比采用非線性編碼器的最先進的 Baseline 方法實現了更高的準確性。例如,在 HACT 數據集的情況下,Baseline 在維度 D = 3,000 和 D = 10,000 下分別記錄了 57.28% 和 59.35% 的分類準確率。相比之下,TrainableHD 在 D = 3,000$ 時達到了 85.27% 的顯著更高準確率,在 D = 10,000 時達到了 86.16% 的準確率。我們觀察到,量化感知訓練(QAT)僅引入了相對較低的準確率損失,例如在 MNIST 數據集上為 0.69%,平均為 2.68%。
在相同超向量維度下比較準確率時,TrainableHD 平均比 Baseline 在 D = 3,000 和 D = 10,000 時分別高出 7.02% 和 4.86%。這些結果與經過微調以實現最佳準確率的最先進的深度學習模型相當。與 D = 3,000 時的 ManiHD 相比,TrainableHD 在除一個數據集外的所有數據集中均超越了 ManiHD,平均準確率提高了 9.68%。然而需要注意的是,ManiHD 使用了流形投影,這在推理過程中引入了顯著的開銷。
為了更深入地探討為什么 TrainableHD 超越了其他 HDC 學習方法,我們分析了訓練和測試準確率在各個周期中的變化。HDC 學習的一個顯著特點是其能夠在相對較少的周期內學習到高質量的模型。如圖 6 所示,Baseline 和 TrainableHD 都在初始周期中達到了較高的訓練準確率。盡管 Baseline 的訓練準確率(即針對訓練數據集)與 TrainableHD 相當,但 TrainableHD 在訓練周期中表現出更高的測試準確率。這是由于基于 Baseline 的 HDC 學習傾向于對訓練數據集過擬合。而 TrainableHD 在訓練的早期階段避免了這種過擬合,從而實現了更高的測試準確率——這是衡量魯棒在線學習實際預測性能的更準確指標。
7.3 效率評估
訓練效率 TrainableHD 的訓練效率與傳統(tǒng)深度神經網絡(DNN)進行了對比評估。在圖 7 中,我們展示了兩個版本的 TrainableHD 的結果:一個未使用量化感知訓練(QAT),另一個使用了 QAT,并與標準 DNN 模型進行對比。值得注意的是,未量化的 TrainableHD 平均訓練性能提高了 24.48 倍。通過引入量化(能夠生成 INT8 量化模型),進一步提升了推理部署期間的效率。盡管偽量化模擬引入了額外的計算需求,但使用 QAT 的 TrainableHD 仍然比 DNN 快 12.13 倍。
推理效率 圖 8 提供了 TrainableHD 在 GPU 上相對于 DNN 推理的速度提升和能效改進的對比分析。在本次評估中,TrainableHD 使用了 D = 3,000 的維度,其學習質量仍優(yōu)于使用 D = 10,000 的 Baseline 方法。與 DNN 相比,TrainableHD 展現了顯著更高的學習效率。例如,在相同的 GPU 平臺上,即使不使用量化,TrainableHD 的速度也比 DNN 快 56.4 倍,且能效高出 73 倍。當啟用量化時,TrainableHD 的性能額外提升了 3.1 倍,且沒有精度損失。
值得注意的是,TrainableHD 的輕量級框架使其在 CPU 上也能實現高效率,這對邊緣或云計算場景中的設備加速器不可用的情況非常有利。通過量化,TrainableHD 在 GPU 上的性能比 DNN 快 20.7 倍。此外,當在 FPGA 單元上實現時,TrainableHD 相較于 DNN 可提供高達 180.8 倍的速度提升和 167.8 倍的能效改進。
使用 FP32(和 INT8)量化的 TrainableHD 在性能上分別比 ManiHD 提升了 3.3 倍(和 16.1 倍)。這一改進尤其顯著,因為 ManiHD 為了實現更高精度需要承擔顯著的開銷,主要是由于流形投影帶來的預處理 CPU 開銷。
7.4 維度縮減
圖 9 展示了 TrainableHD 和 Baseline 在不同超向量維度下的推理準確率對比。HDC 的一個關鍵方面是可以通過降低維度來提高效率,但這通常以犧牲準確性為代價。HDC 的一個關鍵因素是保持足夠大的維度大小,以準確表示模型與編碼超向量之間的距離。
盡管較低維度通常會導致準確率下降,且由于類似于深度學習的內在隨機性元素,維度變化對準確率的影響較小,但 TrainableHD 在降低維度的同時仍表現出顯著的魯棒性,并確保了高準確率。例如,在 MNIST 數據集中,Baseline 在 D = 10,000 時達到了 97.34% 的測試準確率,而 TrainableHD 在顯著降低到 D = 1,000 的維度下仍實現了接近的 96.90% 準確率。平均而言,TrainableHD 在 D = 500 時相比 D = 10,000 的準確率損失僅為 0.99%。這一發(fā)現非常顯著,表明 TrainableHD 能夠在降低維度的情況下有效運行且不會顯著損失準確率。此外,TrainableHD 在 D = 500 時的準確率甚至超過了 Baseline 在 D = 10,000 時的準確率。這一對比突顯了 TrainableHD 在大幅降低超向量維度的情況下仍能保持高準確率的能力。
7.5 優(yōu)化算法評估
在評估各種優(yōu)化算法對 TrainableHD 的有效性時,我們實現了一系列算法,包括 Adagrad [4]、Adam [22]、RMSProp [42]、Momentum [37]、NAG [33] 和 SGD [40]。圖 10 展示了這些優(yōu)化器在不同訓練周期中實現的訓練和推理準確率。我們的觀察表明,Adam 算法為 TrainableHD 提供了最佳的整體性能。值得注意的是,與我們在[17] 中的早期版本相比,應用 Adam 算法使平均準確率提高了 1.06%。在訓練過程中,傳統(tǒng)上用于 HDC 領域的 SGD 優(yōu)化器表現出與其他復雜優(yōu)化器(如 Adam 和 Adagrad)相當的準確率和快速收斂能力。然而,在推理性能方面,Adam 算法在表 3 中的大多數數據集上均取得了高度準確的結果,從而優(yōu)于傳統(tǒng)的 SGD 方法。
有趣的是,AdaDelta 算法在訓練和推理階段均導致 TrainableHD 性能顯著下降。這突顯了 HDC 對優(yōu)化器的獨特需求,與深度神經網絡(DNN)的需求形成對比。AdaDelta 最初設計用于緩解 Adagrad [41] 中學習率逐漸減小的問題,主要通過專注于更近期的訓練數據進行更新。相反,HDC 的特點是其快速學習能力(如第 7.2 節(jié)所述),可能不需要長期的迭代訓練。因此,我們預計像 Adagrad 這樣利用早期訓練階段洞察的算法在 HDC 環(huán)境中會比 AdaDelta 更有效。
與我們在第 5.2 節(jié)中的討論一致,Adagrad 表現出具有競爭力的推理準確率,尤其是在重新訓練次數有限的情況下。例如,如表 3 所示,在學習的初始階段(例如第五個周期),Adagrad 在 12 個數據集中的 4 個上優(yōu)于其他優(yōu)化算法。這一觀察結果還指出了為特定數據集選擇合適優(yōu)化器的重要性,像 RMSProp 和 NAG 這樣的替代算法在某些條件下表現出潛在的更高準確率。這些發(fā)現強調了通過針對每個數據集的獨特特性進行戰(zhàn)略性優(yōu)化器選擇,充分利用 HDC 快速學習能力的優(yōu)勢。然而,經過多輪次廣泛重新訓練后,Adam 優(yōu)化器始終表現出高性能,展示了其在提升 HDC 模型學習效果方面的長期有效性。
接下來,我們考察了不同優(yōu)化算法對訓練執(zhí)行時間的影響。如表 4 所示,我們將各種優(yōu)化算法在 50 次重新訓練周期中的訓練時間與 SGD 提供的基線進行了比較,SGD 是計算成本最低的優(yōu)化器。值得注意的是,應用 NAG 算法被觀察到平均延長了約五倍的訓練時間。這一觀察結果表明,我們需要考慮一些高級優(yōu)化器引入的計算開銷,以在訓練效率和學習準確性之間取得平衡。例如,對于只能進行較少重新訓練周期的 HDC 模型,像 Adagrad 和 RMSProp 這樣的優(yōu)化算法將是首選,因為它們在不顯著影響執(zhí)行時間的情況下提供了學習質量的平衡改進。這一評估建議根據訓練程序的具體要求和現有的計算約束戰(zhàn)略性地選擇優(yōu)化算法,以確保模型準確率和訓練效率之間的最佳權衡。
7.6 加速策略的影響
7.6.1 編碼器間隔訓練(EIT)
如第 6.1 節(jié)所述,EIT 策略涉及定期進行編碼器訓練,而不是在每個周期都進行。我們通過測量使用和不使用 EIT 的推理時間來評估這種方法。圖 11 展示了每種情況下使用代表性數據集的訓練時間分解。研究發(fā)現,EIT 顯著減少了基超向量更新(標記為“Base Update”)和重復編碼過程(標記為“Encoding”)所需的時間。具體而言,我們的評估表明,EIT 分別將基更新和編碼的時間減少了 89.20% 和 69.89%。這證明了通過 EIT 技術實現的顯著效率提升。
EIT 策略旨在通過在非關鍵情況下選擇性跳過基超向量的重新編碼來提高訓練過程的效率。盡管這種方法可以顯著減少訓練時間,但由于它分層更新基超向量表示的確切值,可能會對準確性產生一定影響。在表 5 中,我們評估了在不同數據集上應用 EIT 對 TrainableHD 準確性的影響,并設置周期數 n = 5 以與非 EIT 場景進行直接比較。為了保持一致性,我們在每種數據集和優(yōu)化器組合中應用了相同的、在非 EIT 情況下能夠獲得最佳推理準確率的學習率。
我們的研究結果表明,在大多數評估案例中,EIT 技術在準確性和效率之間基本保持了令人滿意的平衡。然而,對于某些特定數據集,當與 Momentum 優(yōu)化器結合時,觀察到了不可忽略的準確率下降。這歸因于 Momentum 優(yōu)化器對學習率的敏感性(如我們在第 5.2 節(jié)中討論的那樣),在 EIT 條件下這種敏感性變得尤為關鍵。例如,使用每種數據集的標準學習率設置時,Momentum 優(yōu)化器的性能有所下降,這表明其有效性依賴于最優(yōu)參數配置。
通過進一步研究學習率的作用,我們發(fā)現對大多數優(yōu)化器而言的最佳默認設置并不一定適用于 Momentum 優(yōu)化器。我們觀察到,調整 Momentum 優(yōu)化器的學習率顯著提高了準確性。例如,在將學習率從后,TEX 數據集的準確率損失從 17.50% 減少到了 5.00%。這表明,通過參數優(yōu)化可以大幅減輕 EIT 的負面影響。
另一方面,我們的分析還表明,結合各種優(yōu)化算法使用 EIT 通常只會導致極小的準確率損失,例如,SGD 平均損失為 0.50%,Adagrad 為 0.43%,Adam 為 0.73%。這表明,通過仔細調整配置參數,優(yōu)化算法可以更有效地利用 EIT 帶來的好處,從而在不顯著犧牲模型準確性的情況下獲得 EIT 的效率提升。
7.6.2 QAT 的漂移感知更新(DAU)
如第 6.2 節(jié)所述,DAU 是我們在框架中實現的另一種優(yōu)化技術。它僅在超向量更新發(fā)生顯著變化時選擇性地應用模擬量化,從而減少不必要的計算工作量。為了評估 DAU 的有效性,我們比較了啟用和禁用 DAU 的場景,后者涉及在每次更新時持續(xù)進行 QAT 和偽量化。
如圖 12 所示,該圖分析了 10 個代表性數據集,結果表明 DAU 平均減少了 84.50% 的 QAT 開銷。這種減少對于在訓練期間保持高效率至關重要。此外,值得注意的是,使用 DAU 對準確性的影響非常小,這一優(yōu)勢歸因于 HDC 中使用的整體表示特性。
8 結論
本文介紹了 TrainableHD,這是一種創(chuàng)新框架,通過引入編碼器的動態(tài)訓練能力和集成自適應優(yōu)化算法,為高維計算(HDC)注入了新的活力。通過突破傳統(tǒng) HDC 中通常使用的靜態(tài)隨機生成編碼器的限制,TrainableHD 能夠基于學習數據的反饋進行適應和演化,這標志著與傳統(tǒng) HDC 方法的重大轉變。這種動態(tài)的編碼器訓練方法是提升 HDC 模型準確性和效率的關鍵因素。在訓練過程中引入自適應優(yōu)化算法進一步完善了 TrainableHD,優(yōu)化了超向量的訓練并提升了框架的整體效率。這一改進確保 TrainableHD 不僅保留了 HDC 的固有優(yōu)勢(如簡單的算術運算和高計算效率),還進一步提升了這些優(yōu)勢。TrainableHD 的另一項進步是實現了高效的量化,使得推理階段可以在低精度加速器上執(zhí)行。這一特性顯著增強了框架在實際場景中的適用性,尤其是在像 NVIDIA Jetson Xavier 這樣的低功耗平臺上,TrainableHD 在速度和能效方面均優(yōu)于最先進的深度學習模型。我們的全面評估表明,與傳統(tǒng)的 HDC 方法相比,TrainableHD 的準確率提高了多達 27.99%(平均提高 7.02%),且不會增加額外的計算成本。此外,TrainableHD 應用編碼器間隔訓練(EIT)和自適應優(yōu)化算法進一步提升了性能,在訓練效率和模型準確性之間實現了良好的平衡。
原文鏈接: https://dl.acm.org/doi/abs/10.1145/3665891
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.