吳雨芯,蔡 婷,張大斌
(1. 廣東白云學院大數據與計算機學院,廣州510450; 2. 中山大學數據科學與計算機學院,廣州510006;3. 重慶郵電大學移通學院大數據與軟件學院,重慶401520)
(?通信作者電子郵箱ct_dolphin@163.com)
隨著區(qū)塊鏈技術的不斷發(fā)展與應用,部署在區(qū)塊鏈平臺上的智能合約數量已呈指數型增長[1]。自智能合約白皮書正式發(fā)布之后,標志著未來幾年時間內智能合約將在數字身份、資產記錄、金融貿易、抵押貸款、數據共享、物聯網供應鏈等領域得到廣泛應用。目前Ethereum 平臺上已有超過200種智能合約應用,平均每月發(fā)布的智能合約數量接近10 萬個[2]。對區(qū)塊鏈用戶而言,如何在海量的智能合約應用中快速準確地選擇合適的應用服務,是目前亟待解決的重要問題。因此,設計有效的分類模型對智能合約實現自動分類是很有必要的。
智能合約自動分類可以為區(qū)塊鏈用戶提供應用服務的智能推薦,避免了人工篩選海量智能合約的巨大時間成本,還能夠對智能合約源代碼進行有效的組織和管理,有利于智能合約的分門別類與安全漏洞檢測[3]。智能合約分類本質上是合約源代碼文本分類,以下展示了一個Ethereum 平臺上的智能合約源代碼。
該合約代碼使用Solidity 編程語言實現,在滿足預設條件時,它會在相互不信任的區(qū)塊鏈參與者之間強制執(zhí)行。要將智能合約自動分類到對應的預定義類別中,主要面臨以下幾個問題:
1)智能合約源代碼不同于普通文本,傳統(tǒng)的文本特征表示會忽略源代碼中的語法規(guī)律和上下文行為信息;
2)由于智能合約源代碼中的關鍵詞可能出現在文本中的任意位置,如何捕獲對分類結果有重要意義的單詞順序、句法和語義規(guī)律是一個不小的挑戰(zhàn);
3)區(qū)塊鏈平臺中的每個智能合約都對應一個賬戶,合約賬戶信息包含了相關的合約地址、余額、代碼、相關交易、數據存儲等信息,在建立分類模型時只對合約源代碼進行特征提取將丟失關于智能合約的部分重要信息,影響模型的分類效果。
鑒于以上問題,本文提出一種基于層級注意力機制與雙向長短期記憶(Bidirectional Long Short-Term Memory,Bi-LSTM)神經網絡的智能合約自動分類模型HANN-SCA(Hierarchical Attention Neural Network with Source Code and Account)。在學習詞特征表示時,從合約源代碼和賬戶信息兩個角度出發(fā),利用雙向長短期記憶網絡最大限度地捕獲上下文信息和非連續(xù)詞之間的關聯,更好地學習雙向的語義依賴;在詞層面和句層面同時引入注意力機制,區(qū)別不同單詞和句子的注意力權重以構建智能合約文檔級特征表示。
智能合約自動分類可以建模為一個文本分類問題,目前對于智能合約自動分類問題的研究相對較少,其中,黃步添等[4]首次結合智能合約源代碼與交易信息,基于詞嵌入模型提取文本特征,利用長短期記憶(Long Short-Term Memory,LSTM)網絡生成全局向量表示,將向量輸入到前饋神經網絡中,由Softmax 層輸出分類結果。LSTM 可以很好地捕獲較長距離的依賴關系,通過訓練可以選擇性地記憶或遺忘部分不重要信息;但它不能捕獲從后到前的語義信息,這將對分類的準確度產生較大影響。根據句子輸入形式的不同,分布式句子表示模型主要分為基于詞序列和樹結構兩種類型:基于詞序列的模型考慮連續(xù)詞之間的關系,從單詞序列構造句子表示[5];基于樹結構的模型將每個單詞標記為語法解析樹中的一個節(jié)點,并以遞歸的方式從葉子到根學習句子表示[6]。因為深度學習中神經網絡模型在自然語言處理任務中的優(yōu)異表現,基于神經網絡模型學習分布式句子表示成為文本分類任務中的一種主流實現方法。
卷積神經網絡(Convolutional Neural Network,CNN)由于具備捕獲空間和時間的局部相關性以及通過匯聚提取更高層次關聯的能力,使得CNN 可以從連續(xù)的上下文窗口中對句子進行建模。Kim[7]在預先訓練的詞向量基礎上,利用卷積神經網絡進行句子級分類。該模型基于超參調節(jié)和靜態(tài)向量作為雙通道輸入,在卷積層使用多個具有不同窗口大小的過濾器進行特征提取,池化層將不同長度的句子表示成定長的向量表示。Dos 等[8]提出一種深度卷積神經網絡CharSCNN,聯合使用字符級、詞級和句子級表示對短文本進行情感分析。Zhang 等[9-10]將文本作為一種字符級的原始信號,直接使用簡單的卷積和池化操作處理不同長度的文本分類;但他們提出的卷積神經網絡模型深度較大,需要大量的訓練數據集。Johnson 等[11]比較了較淺的單詞級卷積神經網絡與較深的字符級卷積神經網絡在文本分類中的性能。Wang 等[12]使用大型分類知識庫將文本表示為一組向量,并將字符級特性合并到卷積網絡模型中,以捕獲細粒度的子單詞信息。
循環(huán)神經網絡(Recurrent Neural Network,RNN)在學習有序數據中的語義關系時具有天然優(yōu)勢,但RNN 遇到長句或文檔分類時,句子中位置靠后的單詞對句子中靠前單詞的感知能力逐漸下降。雖然LSTM 網絡[13-14]改進了這一問題,但它對于較長單詞序列的記憶能力仍然比較有限。Zhou 等[15]結合RNN 和CNN 的優(yōu)點,利用CNN 提取較高層次的短語特征表示,并將其輸入到LSTM 中得到句子向量表示。Tang 等[16]利用門控遞歸神經網絡自適應地將句子語義及其關系編碼到文檔表示中。針對LSTM 無法從后向前學習語義信息的問題,Zhou 等[17]提出一種雙向長短期記憶網絡(Bi-LSTM),利用二維卷積和二維池化操作進行特征采樣和文本表示。
針對句子編碼成固定長度向量后會成為模型整體性能提升的瓶頸問題,Bahdanau 等[18]首次在利用雙向循環(huán)神經網絡(Bidirectional Recurrent Neural Network,Bi-RNN)獲取語義特征過程中加入了注意力機制,提高了對長句子的翻譯效率和準確度。緊接著,Zhao 等[19]提出一種基于注意力機制的卷積神經網絡ATT-CNN,在沒有任何外部特征的情況下,利用注意機制自動捕獲長句子上下文信息和非連續(xù)詞之間的關聯,從而提高句子分類性能。Yang 等[20]提出一種基于層級注意力機制的文檔分類網絡,使用詞層面和句層面兩級的注意力機制,在構造文件表示時區(qū)別不同單詞和句子的注意力權重。針對RNN 及其衍生網絡模型中前后隱藏狀態(tài)存在依賴性,無法實現并行計算的問題,Vaswani等[21]提出一種完全依賴于注意力機制的網絡模型Transformer,結合自注意力和點積注意力機制計算不同位置權重。在多語言文檔分類任務中,Pappas 等[22]利用多任務學習和對齊的語義空間作為輸入,使用跨語言的共享編碼器和共享注意力機制,提出了一種單一多語言模型。Du 等[23]結合注意力機制,利用Bi-LSTM 捕獲句子中的關鍵單詞。
不同于上述工作,本文針對智能合約自動分類問題,利用Bi-LSTM 神經網絡從源代碼和賬戶信息兩個角度對智能合約建模,在層級注意力機制的作用下結合代碼特征與賬戶特征,作為神經網絡的輸入實現分類任務?;诓煌瑓^(qū)塊鏈平臺上智能合約數據集的實驗驗證了所提模型的有效性。
本文模型HANN-SCA 的整體框架如圖1 所示。模型網絡結構主要由詞嵌入層、Bi-LSTM 層、句表示層、文檔表示層、連接層和Softmax 層組成。為了最大限度地提取智能合約的特征信息,提高神經網絡分類性能,本文同時從智能合約源代碼和賬戶信息兩個角度建模:源代碼角度關注智能合約中代碼語義特征,賬戶信息角度關注智能合約賬戶特征;并且,在特征學習過程中分別在詞層面和句層面引入注意力機制,重點捕獲對智能合約有重要意義的單詞或句子。最后,連接代碼特征和賬戶特征生成智能合約文檔級特征表示,通過Softmax層完成分類任務。
圖1 HANN-SCA模型網絡框架Fig. 1 Network structure of HANN-SCA model
LSTM網絡可以處理任意長度的單詞序列,以遞歸的方式將一個轉換函數f 應用到內部隱藏狀態(tài)向量ht。隱藏狀態(tài)ht在t 時刻與當前輸入向量et以及前一隱藏狀態(tài)ht-1之間的關系如式(2)所示:
Bi-LSTM網絡層中包含多個LSTM單元,如圖2所示。
每個LSTM 單元中包含一個記憶單元ct和三個門控制器,分別是輸入門it,輸出門ot和遺忘門ft。對給定的輸入向量et、上一單元的隱藏狀態(tài)ht-1、上一單元的記憶狀態(tài)ct-1,當前單元的隱藏狀態(tài)輸出ht可計算如下:
圖2 LSTM單元結構Fig. 2 LSTM cell structure
其中:需要學習的參數包括權重矩陣W、U、V 和偏置向量bt、
在智能合約源代碼和賬戶信息中,句子里不同單詞對合約分類的結果貢獻度是不一樣的。例如,在一個娛樂類智能合約中,取名為“Player”的函數或變量相比其他單詞,對該合約所屬類別的預測能起到更加重要的作用。因此,本文在智能合約特征學習過程中從源代碼和賬戶信息兩個角度出發(fā),分別在詞層面和句層面引入注意力機制,進而提取對智能合約分類有重要意義的特征單詞和句子。
2.3.1 代碼注意力
2.3.2 賬戶注意力
在得到智能合約全局特征表示后,將d 作為最終輸入到Softmax 分類器的分類特征。首先將d 反饋到線性層中,從而將其投影到目標分類Q中。投影過程如式(19)~(21)所示:其中:Wl為權值矩陣;bl為偏置;M 為目標分類標簽數;示d在分類標簽Q 中的最大概率值。為了訓練分類模型中的參數,本文選擇交叉熵函數作為損失函數。損失函數如式(22)所示:
其中:pi(?)表示預測概率分布;qi()表示指標函數;N 為訓練數據集中的句子數;M 為目標分類標簽數;λ 為引入的L2正則化參數;θ表示Bi-LSTM 網絡層和線性層的一組訓練參數。本文選擇ADADELTA[25]隨機梯度下降更新規(guī)則來學習模型的參數。同時,為了避免過擬合問題,使用Dropout[26]隨機丟棄LSTM 單元的部分輸入,通過最小化損失函數來優(yōu)化訓練模型。
本文分別從3 個不同的區(qū)塊鏈平臺收集了總共35 101 個經過驗證的智能合約,并利用網站提供的API 獲取相關智能合約賬戶信息。數據集統(tǒng)計信息如表1所示。
表1 數據集統(tǒng)計信息Tab. 1 Dataset statistical information
根據文獻[4]對智能合約的分類,本文將智能合約應用分為娛樂(音樂、視頻、游戲和社交),工具,信息管理,金融(保險、融資、投資和貨幣等),彩票,物聯網,其他共7個類別。為了驗證HANN-SCA 的有效性,本文首先使用Dataset-E 數據集對模型進行訓練和測試,通過人工標記得到Dataset-E 數據集中智能合約各類別統(tǒng)計信息,如表2 所示。同時,為了體現HANN-SCA 模型在準確度和穩(wěn)定性上的優(yōu)勢,本文將HANNSCA與已有的7種模型在上述3個數據集上進行對比實驗。
表2 Dataset-E數據集中的智能合約類別統(tǒng)計Tab. 2 Smart contract category statistics in Dataset-E
與分類問題中常用的指標類似,本文使用正確率(Precision)、召回率(Recall)和F 值(F-score)三個度量指標來評價模型的性能。指標計算如下:
其中:out_tp 表示測試數據集中預測分類為陽性、實際也為陽性的智能合約個數;out_fp 表示預測為陽性、實際為陰性的個數;out_fn表示預測為陰性、實際為陽性的個數。
實驗選取Dataset-E 數據集的80%作為模型訓練集,20%作為測試集。表3顯示了7種智能合約類別的分類結果。
從表3 可以看出,整體93.1%的分類準確率驗證了HANN-SCA 模型的有效性。其中,物聯網和其他類別的智能合約相比金融、彩票、工具類等分類效果較差。這是因為:一方面,在Dataset-E 數據集中物聯網和其他類別的智能合約數量偏少,分類標簽數量不均衡;并且其他類別包含的隱含種類較多,有可能導致模型無法很好地學習到分類邊界。另一方面,金融類、彩票類、工具類的智能合約特征相對比較突出,更容易被模型所學習。
接下來,將模型HANN-SCA 與以下7 種基準模型在表1所示3個數據集上進行對比實驗。
1)W2V-SVM(Word to Vector-Support Vector Machine):使用Word2Vec方法對詞向量進行訓練,采用支持非線性分類的高斯核支持向量機作為分類器,結合One vs All策略進行多類分類。
2)CNN[7]:借助詞向量將句子編碼成二維矩陣,使用多個不同窗口大小的卷積過濾器提取特征,并將不同長度的句子表示成固定長度的向量表示。
3)C-LSTM(Convolutional-Long Short-Term Memory)[15]:一種CNN+LSTM 的方法。使用CNN 提取高層次特征表示,利用LSTM 學習長期依賴關系,生成句子向量表示。C-LSTM 模型既能捕獲短語的局部特征,又能捕獲句子的全局語義和時態(tài)語義。
4)W2V-LSTM(Word to Vector-Long Short-Term Memory)[4]:先將智能合約源代碼通過Word2Vec方法映射為詞向量表示,再將詞向量順序輸入LSTM 網絡得到全局代碼向量。同時,結合智能合約關聯交易信息,通過一個前饋神經網絡以及Softmax輸出分類標簽概率。
5)ATT-CNN(Attention-Convolutional Neural Network)[19]:該模型將句子中的每個單詞替換為它的向量表示,并創(chuàng)建句子矩陣。結合注意力機制,通過卷積和最大池化操作將句子向量映射到隱層特征空間表示,利用全連接層輸出標簽概率分布。
6)AT-LSTM(Attention-Long Short-Term Memory)[14]:通過LSTM 模型對句子進行建模,將LSTM 隱藏層與方面詞向量相結合,在注意力機制的作用下以加權和的方式生成句子最終表示。
7)ATT-BiLSTM(Attention-Bidirectional Long Short-Term Memory)[23]:結 合 注 意 力 機 制,使 用 雙 向LSTM 學 習 文 本特征。
表3 Dataset-E數據集的分類結果Tab. 3 Classification results on Dataset-E
基于Dataset-E、Dataset-N 和Dataset-EO 數據集,表4 給出了不同模型的實驗結果。
表4 HANN-SCA與不同模型實驗結果對比Tab. 4 Experimental results comparison of HANN-SCA with different models
實驗結果表明,HANN-SCA 模型在3 個數據集上均取得了不錯的分類效果,其中在Dataset-E 數據集上的分類效果最佳,達到93.1%的正確率,比ATT-BiLSTM 模型和文獻[2]提出的W2V-LSTM模型提高了2.1個百分點和4.2個百分點,顯示出較好的性能。總體來看,各模型在Dataset-N 數據集上的分類效果不如其他兩種數據集效果好,原因在于Dataset-N 數據集中訓練數據偏少,NEO 區(qū)塊鏈平臺中智能合約的賬戶信息描述相對Ethereum 和EOS 平臺來說不夠詳細,從而直接影響到各模型對智能合約所屬類別的預測。從表4 還可以看出,利用CNN 進行智能合約分類的效果略差于LSTM,這進一步驗證了LSTM 在具有上下文長期依賴關系的文本分類任務中的優(yōu)勢。
在沒有加入注意力機制的情況下,CNN 和LSTM 模型在Dataset-E 數據集上分別達到83.4%和87.8%的正確率,而加入注意力機制的ATT-CNN 和AT-LSTM 模型正確率達到了88.6%和89.6%,分別提高了5.2 個百分點和1.8 個百分點。這是因為在神經網絡模型中加入注意力機制后,模型在學習智能合約代碼特征和賬戶信息時會重點關注合約的關鍵特征,從而有效提高模型的分類正確率。
本文模型在3 個數據集上的分類效果均優(yōu)于ATTBiLSTM 模型,正確率分別提高了2.1 個百分點、2.3 個百分點和1.6 個百分點。這是由于HANN-SCA 模型從單詞和句子層面分別建模,使用兩層注意力機制對單詞特征和句子特征進行向量轉換。圖3 展示了Dataset-E 數據集中一個娛樂類(游戲)智能合約注意力可視化,其中顏色越深代表注意力權重越大。
另外,本文對比了HANN-SCA 與各模型在不同數據集上的穩(wěn)定性與運行時間效率。從圖4 可知,HANN-SCA 模型在訓練樣本達到50%左右時基本達到了穩(wěn)定;而其他幾種模型幾乎需要在訓練樣本達到70%以上才能趨于穩(wěn)定,說明了HANN-SCA模型在穩(wěn)定性上的優(yōu)勢。這是因為本文所提模型在對智能合約進行分類時,使用了兩層注意力機制獲取智能合約源代碼特征和賬戶信息特征,考慮了更全面的上下文語義關系依賴。
圖5 給出了HANN-SCA 與各模型訓練時間和測試時間對比,訓練與測試過程均在Intel Core i7-8550U CPU 上完成,將數據集的80%作為訓練集,20%作為測試集。從圖5(a)可以看出,W2V-SVM 訓練時間相比其他模型較短,原因是基于Word2Vec方法的SVM可以直接對詞向量進行訓練,支持非線性分類的高斯核能快速地完成分類。隨著CNN 中卷積層或LSTM 中隱藏層數量的增加,神經網絡訓練時間會相應增加,但注意力機制的引入會加快模型的收斂。
由圖5(b)可知,引入了注意力機制的模型在訓練完成后,測試時間會更短。原因在于注意力機制能更快速地提取文本中的關鍵特征,加速合約分類。從圖5(b)還可以看出,HANN-SCA 相比AT-LSTM 和ATT-BiLSTM 模型在數據集上的測試時間更短,這是因為Softmax 分類器在訓練和測試過程中降低了分類計算復雜度,從而有效地縮短了分類時間。
圖3 源代碼單詞級注意力可視化Fig.3 Word-level attention visualization of source code
圖4 HANN-SCA與不同模型穩(wěn)定性對比Fig.4 Stability comparison of HANN-SCA with different models
圖5 不同模型運行時間對比Fig.5 Comparison of running time of different model
針對智能合約自動分類任務,本文提出的HANN-SCA 模型結合層級注意力機制,利用Bi-LSTM 神經網絡從源代碼和賬戶信息兩個角度分別學習智能合約的特征表示,更全面地捕獲智能合約中雙向的上下文語義依賴。最后,整合兩個特征表示作為智能合約的最終表示,用于智能合約分類?;贒ataset-E、Dataset-N 和Dataset-EO 數據集的實驗結果表明,本文所提模型分類性能超過了傳統(tǒng)的SVM 模型和神經網絡基準模型,且具有更好的穩(wěn)定性。在未來的工作中,將進一步擴展智能合約數據集,使用層次化的分類標簽結構,處理更復雜、更完整的分類標簽信息。