王 灿,王 冬
(1.山东科技大学 计算机科学与工程学院,山东 青岛 266590;2.山东省滕东生建煤矿,山东 滕州 277522)
区块链技术不断突破,应用也越来越广泛,尤其是布置在区块链上的智能合约分类呈指数级增长[1]。智能合约白皮书的出现,预示其在数据共享、物联网供应链、金融贸易等方面运用十分广泛,是走在前沿的技术。目前存有最多智能合约应用的平台是Ethereum,该平台每月都会发布智能合约,其数量已经达到10 万个[2]。虽然区块链用户数目还不是很多,分布也不广,但未来区块链用户会像现在拥有数据流量用户一样涌来,其带来的各种复杂疑难问题需要及时解决。因此,设计出满足智能合约的自动分类模型非常必要。
针对智能合约的自动分类模型研究很多。智能合约分类首先要建立一个模型,这个模型要以文本分类为中心。目前研究智能合约分类著作较少,尤其是源代码与用户信息方面的研究内容很少。
在研究文献中发现,分类算法模型[3]用到文本分类中,如支持向量机SVM[4-5]、决策树[6]、朴素贝叶斯算法[7]等可提高文本分类的实用价值。在文本分类算法中,传统机器学习在进行文本分类时需要进行特征工程[8]。黄步添等[9]首次将智能合约源代码与交易信息结合,在词嵌入模型中提取出文本特征。长短期记忆(Long Short-Term Memory,LSTM)[10]网络生成全局向量。为将向量输入到前馈神经网络中,需要通过Softmax 层输出分类结果,但这并没有解决RNN[11]的梯度问题,同时计算量大,耗费时间。Kim[12]提出卷积神经网络(Convolutional Neural Network,CNN)模型,这种模型基于一种双通道输入原理,将超参调节和静态向量作为输入通道,由此提取出不同特征,最后将不同长度的句子通过向量表示。CNN 模型具备捕获时间和空间的局部相关性,以及通过汇聚提取更高层次关联的能力,有助于实现从连续的上下文窗口句子进行建模。但是模型完成工作量及占用内存大,效率较低。文献[13]提出W2V-SVM 模型,基于Word2Vec 方法训练词集合,再通过高斯核支持向量机结合One vs All 算法实现特征分类。这种模型内存占用不大,但准确率不高。文献[14]提出将CNN 和LSTM 相结合的算法模型。该模型通过CNN 实现高层特征提取,采用LSTM 按照依存关系进行分类,可在短时间内快速捕获到集合特征,但前期的特征提取工作效率还有待改进。
LSTM[15-16]模型优点在于能捕获较长距离的依赖关系,并在训练过程中就能筛选出不重要的信息将其遗忘,缺陷是不能捕获从后到前的语义信息,影响智能合约分类的准确性。因此,可利用LSTM 捕获有选择性的记忆或遗忘部分不重要的信息,进而实现稳定性与高效率。本文提出的结合注意力的Bi-LSTM 模型能有效解决以上模型存在的不足。该模型主要通过Bi-LSTM 人工智能算法结合注意力机制,快速对智能合约进行有效信息[17]的捕获和提取,智能捕获关键特征,从而提高智能合约分类的效率和准确度。
模型Bi-LSTM 框架如图1 所示,包括词嵌入层、Bi-LSTM 层、层级注意力机制、Softmax 层、句表示层、连接层。智能合约特征信息需要最大程度地提取,这样有助于提高智能合约分类功能,优化效果。本文基于源代码和用户信息建模。由于源代码涉及到代码语义特征,而用户信息涉及到账户特征,因此需要学习两大特征,关注其之间的联系,还要在词层面和句层面引入注意力机制,捕获到有重要意义的句子和单词。最后通过Softmax 层完成分类任务,将两大特征生成智能合约。智能合约自动分类模型需要运用词嵌入层、Bi-LSTM、层级注意力机制、Softmax 层结构进行仿真模拟。
在词嵌入层中,源代码特征和账户信息特征要以单词为单位分割,分割之后还要转化为向量表示。给定一个智能合约D,包含源代码C 和账户信息A,利用模型Word2Vec 将单词S 中的W1反映到二维向量空间,通过下式生成词向量表示:
得到的词向量结果直接包含了语义特征,在词嵌入层中完成。
Fig.1 Intelligent contract automatic classification model图1 智能合约自动分类模型
Bi-LSTM 在处理单词排序问题时,会运用一个转换函数实现排序长度,以递归方式将一个转换函数f 应用到内部隐藏状态向量ht,隐藏ht在t 时刻与当前输入向量et以及前一隐藏状态ht-1之间的关系。
Bi-LSTM 层由各种各样的LSTM 单元组成,每个单元都包含一个记忆单元ct和3 个门控制器,分别是输入门it、输出门t0和遗忘门ft。对给定的输入向量et,可计算上一单元的隐藏状态ht-1、上一单元的记忆状态ct-1以及当前单元的隐藏状态输出th。
在测试源代码和账户信息的智能合约分类中发现,如果引入层级注意力机制会大大提高捕获关键信息的准确性,这样有助于智能合约分类的准确性,加强其稳定性。不同单词对智能合约的贡献程度不同,比如说一个取名为“Maker's”的变量和函数中,其分类预测作用要比其它变量和函数更大,因此需要引入层级注意力机制以提高智能合约分类的正确性。引入了注意力机制的模型在训练完成后的测试时间会更短,原因在于注意力机制能更快速地提取文本中的关键特征,加速合约分类,有效把握关键特征,提高分类准确性。
在得到智能合约全局特征表示后,将d 作为最终输入到Softmax 分类器的分类特征。首先将d 反馈到线性层中,将其投影到目标分类Q 中。
本文从3 个不同的区块链平台收集总共35 101 个经过验证的智能合约,并利用网站提供的API 获取相关智能合约账户信息。根据文献[14]可知智能合约在7 个领域运用广泛,分别是娱乐(音乐、视频、游戏、社交)、工具、信息管理、金融(保险、融资、投资、货币等)、彩票、物联网、其它。为验证Bi-LSTM 的有效性,通过这7 个方面依次进行模型测试,从而得到速度数据,以此判断模型是否全面有效,对比实验数量按金融、娱乐、工具、彩票、信息管理、其它、物联网从大到小排列。
与分类问题常用指标类似,本文使用正确率(Preci⁃sion)、召回率(Recall)和F 值(F-score)3 个度量指标评价模型性能。
基于Dataset-E、Dataset-N 和Dataset-EO 数据集,给出不同模型的实验结果。为更有说服力地体现本文算法效果,在仿真中分别引入W2V-SVM、CNN[12]、C-LSTM[18]、W2V-LSTM[9]、ATT-CNN[19]、AT-LSTM[20]、ATT-BiLSTM[21]这7 种不同算法模型。对这些模型进行仿真,采用正确率(Precision)、召回率(Recall)和F(F-score)评估各模型的分类效果。
基于Dataset-E 的实验结果如表1 所示。
Table 1 The experimental results based on the Dataset-E表1 基于Dataset-E 的实验结果
基于Dataset-EO 的模型实验结果如表2 所示。
Table 2 The experimental results based on the Dataset-EO表2 基于Dataset-EO 的实验结果
基于Dataset-N 的模型实验结果如表3 所示。
其中效果最明显的是Dataset-E,其次是Dataset-EO,最后是Dataset-N。CNN 和LSTM 模型在Dataset-E 数据集上分别达到83.4% 和87.8% 的正确率,而加入注意力机制的ATT-CNN 和AT-LSTM 模型正确率分别达到88.6%和89.6%,分别提高了5.2% 和2.2%。加入注意力机制的Bi-LSTM 模型正确率在Dataset-E、Dataset-N 和Dataset-EO 数据集上分别达到89.8%、87.9% 和85.0%,比同样条件下传统的CNN 模型提高了6.4%、5.5% 和3.7%,此结果源于注意力机制引用。智能合约分类中引入注意力机制,使智能合约捕获到最关键特征,因而效率迅速提高。
Table 3 The experimental results based on Dataset-N表3 基于Dataset-N 的实验结果
将Bi-LSTM 模型在3 个数据集上进行对比实验,结果如图2、图3 所示。
Fig.2 Precision_Recall curves of four models图2 四种模型的Precision_Recall 曲线
Fig.3 Precision_Recall curve of three models图3 三种模型的Precision_Recall 曲线
分析模型的Precision_Recall 曲线可更直观地看出,加入注意力机制的长短期记忆网络模型分类效果更好,更加合理。实验结果表明本文提出的智能合约分类更智能地捕获到了最关键特征,提高了效率和准确度。
针对区块链技术的智能合约自动分类问题,本文研究了注意力和双向长短期记忆神经网络,运用Bi-LSTM 神经网络从源代码和账户信息两个角度进行分类,通过其特征表示,对智能合约语义特征进行更大程度的捕获,最终将特征整合表示,以利于智能合约运用。在3 个数据集进行实验,结果显示文本模型具有更高的稳定性和完整性,收敛速度也大幅加快。同时,智能合约分类问题还需进一步研究,以实现更优的智能合约分类,达到更高效率。