線性代數(shù)存在于幾乎所有的科學(xué)和工程領(lǐng)域,比如統(tǒng)計(jì)學(xué)、物理學(xué)、信號(hào)處理,和機(jī)器學(xué)習(xí)。線性代數(shù)中最核心的一個(gè)操作是解不同的矩陣方程,包括解線性方程組和特征向量等。在傳統(tǒng)計(jì)算機(jī)上,解矩陣方程需要一些精心設(shè)計(jì)的算法,如高斯消元法、LU分解法,然后在多項(xiàng)式時(shí)間內(nèi)(比如O(N3),N是矩陣行/列數(shù))獲得方程解。
在大數(shù)據(jù)時(shí)代,人們要處理的數(shù)據(jù)呈爆發(fā)式增長(zhǎng),而很多數(shù)據(jù)處理本質(zhì)是一個(gè)矩陣方程問題,如谷歌的網(wǎng)頁排序(PageRank算法)、利用超級(jí)計(jì)算機(jī)模擬量子效應(yīng)(解薛定諤方程)。隨著摩爾定律的失效,以及由于馮諾依曼架構(gòu)存儲(chǔ)、計(jì)算分離的固有限制,想更快、更省地完成數(shù)據(jù)處理變得越來越難,而計(jì)算的時(shí)間和能耗效率在大數(shù)據(jù)時(shí)代顯得尤為重要。
近年來,存內(nèi)計(jì)算(in-memory computing)興起,通過在存儲(chǔ)單元內(nèi)完成計(jì)算將顯著提高計(jì)算效率。一個(gè)典型的存內(nèi)計(jì)算例子是利用阻變存儲(chǔ)器(或稱憶阻器)的交叉陣列一步完成矩陣-向量乘法的運(yùn)算,從而快速完成包括訓(xùn)練神經(jīng)網(wǎng)絡(luò)在內(nèi)的大數(shù)據(jù)任務(wù)。然而,一步解矩陣方程,如線性方程組Ax = b,仍然是一個(gè)挑戰(zhàn)。在我們最新的PNAS文章里,我們報(bào)道了利用交叉存儲(chǔ)陣列,通過引入反饋電路,可以一步解線性方程組和矩陣的特征向量,進(jìn)而實(shí)現(xiàn)一步解微分方程,包括傅里葉方程、薛定諤方程,和一步完成谷歌的網(wǎng)頁排序。
對(duì)于解線性方程組Ax = b,我們采用的電路如圖1(a)所示。電路中包含了一個(gè)交叉存儲(chǔ)陣列,陣列中每一個(gè)行線和列線之間有一個(gè)阻變存儲(chǔ)器件,它的電導(dǎo)值一一對(duì)應(yīng)于矩陣中的一個(gè)元素值。已知向量b由行線的輸入電流表示,通過運(yùn)算放大器(運(yùn)放)引入的負(fù)反饋機(jī)制將使行線虛接地,從而列線上運(yùn)放的輸出電壓可以表示未知向量x的解值。由于矩陣A以非易失的形式存儲(chǔ)在交叉陣列中,一旦施加輸入電流,相應(yīng)的線性方程組就能一步得到解答。實(shí)驗(yàn)中,我們存儲(chǔ)的矩陣A如圖1(a)所示。圖1(b)給出了一個(gè)相應(yīng)的線性方程組的實(shí)驗(yàn)解,以及它的解析解??梢钥吹?,實(shí)驗(yàn)解十分接近解析解(相對(duì)誤差在3%),從而證明了我們方案的可行性。逆矩陣也是線性代數(shù)中一項(xiàng)非常重要的內(nèi)容,它也可以通過求解多個(gè)線性方程組獲得,實(shí)驗(yàn)解和解析解的比較如圖1(c)所示。
圖1. 線性方程組求解電路及求解結(jié)果。
阻變存儲(chǔ)器件的電導(dǎo)值只能為正數(shù),因此圖1(a)的電路只適用于解系數(shù)為正的線性方程組。為了使我們的方案具有普適性,即,解任意實(shí)數(shù)的線性方程組,我們進(jìn)一步拓展了電路,如圖2(a)所示。圖中利用了兩個(gè)交叉陣列和反相器,實(shí)現(xiàn)了兩個(gè)正矩陣之間的差,從而能夠代表任意實(shí)數(shù)矩陣?;谠撈者m的線性方程組求解電路,利用有限差分法,我們求解了一個(gè)微分方程。如圖2(b)所示,在兩個(gè)電極之間施加一個(gè)電壓,電極之間導(dǎo)線上的溫度分布可以用一維靜態(tài)傅里葉方程來描述。圖2(c)給出了該微分方程的電路解,可以發(fā)現(xiàn)與方程的解析解完美重合,從而證明了我們的電路用于快速求解實(shí)際問題的可靠性。
圖2. 針對(duì)任意實(shí)數(shù)矩陣的線性方程組求解電路,及求解熱傳導(dǎo)的一維傅里葉方程。
基于交叉存儲(chǔ)陣列和運(yùn)放的負(fù)反饋機(jī)制,我們還能求解矩陣方程Ax =λx,λ為矩陣的特征值,x為相應(yīng)的特征向量。電路如圖3(a)所示,矩陣A依然由交叉陣列表示,λ由跨阻放大器的跨導(dǎo)表示,反相器的輸出電壓即為待解的x,從而實(shí)現(xiàn)一步求解特征向量。需要注意的是,圖3(a)電路用于求解正特征值的特征向量,而假如求解負(fù)特征值的特征向量,將反相器移去即可,負(fù)特征值的絕對(duì)值依然由跨阻放大器的跨導(dǎo)表示。和線性方程組求解電路一樣,特征向量求解電路也可以拓展到任意實(shí)數(shù)矩陣。谷歌公司的網(wǎng)頁排序算法(PageRank)本質(zhì)上就是求解一個(gè)隨機(jī)矩陣的最大特征值的特征向量,因此,我們的電路可以用于一步實(shí)現(xiàn)網(wǎng)頁排序,而不需要繁復(fù)的迭代算法,從而為搜索引擎提供加速。圖3(b)表示了各科技巨頭公司的Wikipedia網(wǎng)頁之間的連接情況(網(wǎng)頁i指向網(wǎng)頁j代表網(wǎng)頁i引用網(wǎng)頁j),圖3(c)則給出了電路解的排序結(jié)果和解析解之間的比較,可以發(fā)現(xiàn)二者排序一致。
圖3. 特征向量求解電路及PageRank。
薛定諤方程HΨ= EΨ是量子力學(xué)的基礎(chǔ),為了獲得一個(gè)量子系統(tǒng)的波函數(shù)分布,必須求解相應(yīng)的薛定諤方程。作為一個(gè)微分方程,薛定諤方程可以通過有限差分法轉(zhuǎn)化為一個(gè)特征向量問題。圖4(a)是一個(gè)一維量子勢(shì)阱,為了求解它的基態(tài)波函數(shù),我們將待求解的波函數(shù)離散化,從而將哈密頓量H轉(zhuǎn)化為一個(gè)矩陣,基態(tài)能量E則是最小特征值(負(fù)數(shù)),而離散化Ψ則是待求解的特征向量。圖4(b)給出了該波函數(shù)的電路解,可以看到它很好地描述了一維量子勢(shì)阱基態(tài)的波函數(shù)分布,因此證明了我們的電路具有很大的潛力用于加速模擬量子系統(tǒng),比如在新型材料合成和新型藥物開發(fā)等領(lǐng)域。
圖4. 利用特征向量求解電路解一維量子勢(shì)阱的基態(tài)波函數(shù)。
在我們的工作中,通過利用非易失的阻變存儲(chǔ)器(憶阻器)交叉陣列和引入負(fù)反饋機(jī)制,常見的線性代數(shù)問題,包括解線性方程組、解特征向量、解微分方程可以在一步內(nèi)完成,從而顯著提高計(jì)算速度,同時(shí)降低計(jì)算能耗,為未來的存內(nèi)計(jì)算系統(tǒng)應(yīng)用于實(shí)際的大數(shù)據(jù)問題中打下了堅(jiān)實(shí)基礎(chǔ)。
該工作由來自意大利米蘭理工大學(xué)的一支團(tuán)隊(duì)完成,團(tuán)隊(duì)專注于利用新型存儲(chǔ)器件加速傳統(tǒng)計(jì)算和機(jī)器學(xué)習(xí)的開發(fā)。孫仲博士為論文的第一作者,Daniele Ielmini教授為論文的通訊作者。