文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190355
中文引用格式: 萬迪凱,豐大軍. 神經網絡關聯存儲器的設計及應用[J].電子技術應用,2019,45(11):10-12,16.
英文引用格式: Wan Dikai,Feng Dajun. The design and application of neural network associative memory system[J]. Application of Electronic Technique,2019,45(11):10-12,16.
0 引言
神經網絡和深度學習的發展給語言、圖像以及個性化推薦[1-2]等領域帶來了突破的進展,但是神經網絡的存儲能力一直是一個重大的缺陷。目前的神經網絡深度越來越深,參數數量也越來越多,橫掃自然語言處理多項任務的BERT模型[3]的參數數量更是達到了3億以上。如此多的參數就帶來了神經網絡訓練上的困難。同時參數數量的增加也會帶來額外的計算開銷,將模型應用到小型嵌入式等計算能力低的設備中去就要減少參數數量,如對模型進行剪枝優化[4]。要達到減少參數數量的目的,可以給神經網絡裝配一個大容量的存儲器,將一些神經網絡學習過程中的知識記錄下來,等需要時再進行提取,直觀上可以降低神經網絡需要學習的參數量。
知識有兩種,一種是觸類旁通、舉一反三的邏輯推理能力;一種是死記硬背的知識點。大容量的存儲器用來存儲這兩類知識,以便在需要的時候進行存儲。然而知識點之間并不是孤立存在的,它們是聯系著的,回想下人類思考的過程,在思考一個問題時往往會把相關的問題以及相關的方法都聯想起來。為了模擬人類的這一能力,就需要存儲器具有關聯能力,即邏輯上這些被存儲的東西之間構成一張立體的網絡圖,互相聯系,能進行關聯性存儲。當一個輸入到達時,此時如若能將相關的知識提取出來作為當前輸入的輔助輸入,則可以增強當前神經網絡的能力。本文旨在設計一個適合于神經網絡使用的大容量的關聯存儲系統,并通過設計神經網絡將自然語言語句向量嵌入后加以關聯存儲進行實際應用。
1 總體設計
設計整體分為關聯存儲器的設計和自然語言語句向量嵌入兩部分。關聯存儲器主要用來存儲經過向量表示后的語句的語義,并能進行動態更新和關聯性查詢。自然語言語句向量嵌入主要負責把語句進行有意義的向量化,其通過訓練一個seq2seq的神經網絡模型來達到此目的,系統的總體架構圖如圖1所示。
關聯存儲器持久化采用的數據庫是REmote DIctionary Server(Redis)數據庫。Redis是一個開源的、使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。它通常被稱為數據結構服務器,因為值可以是字符串、哈希、列表、集合和有序集合等類型。
2 關聯存儲器的設計
神經網絡的向量一般維度都較高,且需要存儲的向量個數通常較多,采用通常的存儲方式,每進行一次相關性查詢,需要兩兩比較,所需要的時間復雜度為O(N2),其中N為存儲的向量的個數。要想在神經網絡的海量數據訓練過程中使用關聯存儲器,這樣的時間復雜度是無法接受的。為了解決這個問題,有兩種方法可供選擇,一種是LSH(局部敏感性哈希)[5],另一種是Hopfield神經網絡[6]。
2.1 局部敏感性哈希
局部敏感性哈希的提出用以解決在大量向量中找到相似的向量而不用兩兩比較。局部敏感性哈希將兩個原本相似的長向量經過哈希后,其哈希向量仍然保持相似性,其原本用在比較文本之間的相似性上,不同的相似性度量對應不同的哈希函數,但并不是所有的相似性度量都有對應的哈希函數。哈希函數族的原始定義如下:
從S空間變換到U空間的函數族H如果滿足以下兩個條件:
(1)如果p∈B(q,r1),那么P(h(q)=h(p))≥p1;
(2)如果pB(q,r2),那么P(h(q)=h(p))≤p2。
則稱函數族H是(r1,r2,p1,p2)敏感的,其中B(q,r1)代表與q距離小于r1的點集合,P函數代表概率,h是從H中任選的哈希函數。
也就是說,如果兩個點p、q足夠接近,那么它們哈希之后的值也大概率一樣;如果兩個點p、q相距較遠,那么它們哈希之后的值就大概率不一樣。
有了敏感性哈希函數后,通過與或操作可以控制兩個向量被映射到同一個哈希桶中的概率。
通過局部敏感性哈希可以將原來需要O(N2)復雜度的查詢操作減少到O(N)。
2.2 Hopfield神經網絡
Hopfield神經網絡通過引入物理學中的能量函數的概念旨在構建一個聯想的記憶系統,其基本結構如圖2所示。
其中,Vi、Vj分別為神經元i、j的輸出。
給定所有的神經元一個初始的值,該神經網絡最終會達到能量局部最低的狀態,整個網絡就像一個動力系統,傾向于保持能量處于一個較小的狀態,就像物理學中水往低處走的現象。能量的局部極小值可能有很多個,給定神經元以不同的初始值能量可能會收斂到不同的局部最小值。給極小值附近的點施加一個輕微的擾動,它還是會回到極小值點,由于該神經網絡的這個特點,可以把它用在聯想記憶上。聯想記憶系統存儲著一系列記憶向量的集合。只要給聯想記憶網絡一個相關的記憶向量,它就能正確恢復出原來存儲的記憶向量,例如聯想記憶系統存儲著一句話,可能只需要幾個詞語就能聯想起整句話。
要讓上述網絡存儲不同的記憶向量,就要讓這些需要記憶的向量都變成能量方程的局部最小值點。因此需要尋找一種方法可以讓任意點都成為局部極小值點。此外學習規則還需要滿足以下兩條性質:
(1)局部性,即某個權重的更新要只依賴與它相鄰的兩個神經元;
(2)能增量學習,即記憶某個新模式(向量)不必依賴原來的向量,權重的更新只依賴于它的舊值和新的要記憶的模式。
Hebbian學習規則如下:
當神經元輸出0/1時,有:
其中,s代表迭代步。這個學習規則的意思是同時激發的兩個神經元傾向于形成強的連接關系。
雖然Hopfield神經網絡提供了模擬人類記憶的模型,但是其存儲效率較為低下,N個神經元的完全圖大概能存儲0.15N個記憶向量,總共存儲了0.15N2 bit的數據。而構建一個這樣的神經網絡需要的存儲量為N(N-1)個權重向量,設每個權重的值范圍為[-M,M],則需要N(N-1)log(2M+1)位來存儲這些權重。因此,本文選取了局部敏感性哈希作為關聯存儲器的實現。
3 自然語言語句向量嵌入
為了將語句存儲進關聯存儲器中去,首先要將文字表達的語句轉換為向量,為此本文設計神經網絡模型,將語句嵌入為向量。
3.1 模型結構
模型的基礎結構為seq2seq模型[7],如圖3所示,分為編碼器和解碼器,編碼器將向量編碼為語義向量,將生成的語義向量輸入解碼器解碼為所需要得到的輸出語句。現在常用的seq2seq結構的編碼器和解碼器一般由堆疊的LSTM或GRU組成,并且帶有attention和beam search,目的并不是為了得到更高的精確度,而是為了獲取更加精確的中間向量表示。由于LSTM會生成狀態向量c和隱藏層輸出h,這兩者均輸入到解碼器,如果是堆疊的多層LSTM,那么就會有多個這樣的(c,h)組。由于無法判斷使用那個可以較好地代表中間語義向量,因此編碼器和解碼器只是采用單層的簡單的RNN,這樣編碼器就只生成一個單一的狀態向量傳遞到解碼器,通過語料訓練后可以得到有意義的語句向量表示。本文采用Cornell Movie-Dialogs Corpus[8]當作訓練語料庫進行訓練,該語料庫包含從原始電影腳本中提取的大量元數據豐富的虛構對話集合,該語料集共囊括617部電影,電影人物角色數量達到9 035個,共有10 292對電影角色之間的220 579次對話,總計304 713個對話片段。對于對話片段,相似的回答往往對應相似的提問,根據語料庫構建問答對,將提問當作輸入傳入編碼器,生成語義向量,再將該語義向量作為初始狀態輸入到解碼器中去,解碼器的目標是生成正確的回答。編碼器和解碼器的結構如圖4所示。雖然在訓練過程中分別訓練了編碼器和解碼器,但是實際使用時只用到了訓練好的編碼器,編碼器和解碼器一起訓練是為了讓編碼器產生的語義向量更加準確。
3.2 模型訓練
本次訓練采用單個NVIDIA Tesla P100 GPU,使用TensorFlow開源庫作為基本框架進行模型搭建。損失函數采用交叉熵損失函數,優化器選用Adam優化器,共計訓練30輪,18 720批次,學習率為0.002。訓練過程中的損失函數的下降曲線如圖5所示。
4 結束語
本文主要介紹適用于神經網絡的關聯存儲器的設計,并設計實驗對實際的語句進行向量嵌入并存儲到關聯存儲器中,其性能指標達到了設計要求。
參考文獻
[1] 徐中輝,呂維帥.基于卷積神經網絡的圖像著色[J].電子技術應用,2018,44(10):19-22.
[2] 字云飛,李業麗,孫華艷. 基于深度神經網絡的個性化推薦系統研究[J].電子技術應用,2019,45(1):14-18,22.
[3] DEVLIN J,CHANG M W,LEE K,et al.Bert:Pre-training of deep bidirectional transformers for language understanding[J].arXiv Preprint arXiv:1810.04805,2018.
[4] 馬治楠,韓云杰,彭琳鈺,等.基于深層卷積神經網絡的剪枝優化[J].電子技術應用,2018,44(12):119-112,126.
[5] DATAR M,IMMORLICA N,INDYK P,et al.Locality-sen-sitive hashing scheme based on p-stable distributions[C].Proceedings of the Twentieth Annual Symposium on Computational Geometry.ACM,2004:253-262.
[6] HOPFIELD J J.Neural networks and physical systems with emergent collective computational abilities[J].Proceedings of the National Academy of Sciences,1982,79(8):2554-2558.
[7] SUTSKEVER I,VINYALS O,LE Q V.Sequence to sequence learning with neural networks[C].Advances in Neural Information Processing Systems,2014:3104-3112.
[8] DANESCU-NICULESCU-MIZIL C,LEE L.Chameleons in imagined conversations:a new approach to understanding coordination of linguistic style in dialogs[C].Proceedings of the 2nd Workshop on Cognitive Modeling and Computational Linguistics. Association for Computational Linguistics,2011:76-87.
作者信息:
萬迪凱,豐大軍
(華北計算機系統工程研究所,北京100083)