Page 96 - 《软件学报》2021年第9期
P. 96
2720 Journal of Software 软件学报 Vol.32, No.9, September 2021
向量 v 6 以及 N 6 的左兄弟节点 N 5 的子向量 v 5 .在第 2 层,由于 N 2 有一个子节点 N 4 ,因此利用子树上提方法将其
转换为新节点 N 10 ,并依次组成 v 3 和 v 10 .然后,将从第 4 层到第 1 层的所有向量合成为最终的特征向量.在这个例
子中,假设 m 大于 2 并且 n 大于 4,且所有层向量和最终特征向量用零向量填充.
在程序文本中,位置相近的代码块的上下文程序相似甚至多数是相同的,然而这些代码块在日志打印决策
上又往往是相反的.因此,如何从相似的程序文本中为不同的代码块提取不同的特征向量,成为通用日志打印位
置决策的关键问题.逆序组合方法考虑使用相对距离替代绝对距离,即使两个位置相近的代码块的上下文程序
是相似的,他们的对齐也是不同的.考虑图 4 中 N 3 和 N 6 是两个目标代码块,由于 N 6 的第一个左兄弟节点是 N 5 ,N 3
的第一个左兄弟节点是 N 10 ,因此,N 5 和 N 10 的子向量对齐.对于目标代码块 N 3 ,N 10 在最终特征向量的 N 3 同层排
布,然而对于目标块 N 6 ,N 10 排布在最终完整特征向量中 N 6 的父层向量部分中.
3.2 基于迁移学习的日志打印位置决策模型构建
如图 5 所示,日志打印位置决策模型包括一个特征迁移模型和一个分类模型.
• 特征迁移模型的输入是不同软件或组件的代码块特征向量集合;输出是一个新的特征向量集合,该集
合中的特征向量与输入的特征向量一一对应.特征迁移模型可以利用不同的特征空间的特征向量学
习到一个共享特征空间,进而将不同软件或组件的代码块特征向量映射到共享特征空间去;
• 分类模型的输入是共享特征空间的代码块特征向量,输出是对该代码块是否添加日志打印语句的决
策结果.
Fig.5 Logging point decision model
图 5 日志打印位置决策模型
下面分别介绍这两个子模型.
特征迁移模型采用两种经典的特征迁移算法——迁移成分分析算法(transfer component analysis,简称
TCA) [18] 和联合分配适配算法(JointDistribution adaptation,简称 JDA) [19] 将源系统特征向量和目标系统特征向量
映射到新的特征空间.TCA 算法假设源系统特征向量集合和目标系统特征向量集合分别为 X S 和 X T .TCA 利用
边缘概率分布来估计源系统特征向量和目标系统特征向量之间的差异.令一组数据集合 X 的边缘概率分布为
P(X),显然,P(X S )≠P(X T ).TCA 的目标是获取一个转换函数φ,使得 P(φ(X S ))≈P(φ(X T )).这样,φ(X S )和φ(X T )是独立且同
分布的.为计算该转换函数,TCA 首先使用最大均值差异(maximum mean discrepancy,简称 MMD)来衡量 P(X S )
和 P(X T )之间的距离,计算公式如下:
1 1 n 1 2 n
dist (X S , X T ) = ∑ φ (x ) − ∑ φ (x ) ,
n 1 i= 1 i S n 2 i= 1 i T
其中,n 1 和 n 2 表示训练向量和测试向量的数量.然后,TCA 引入一个计算内核获取满足 dist(X S ,X T )取最小值的最
优值.训练完毕后,X S 和 X T 分别由φ(X S )和φ(X T )取代.
同 TCA 不同,JDA 不但使用边缘概率分布来估计源系统特征向量和目标系统特征向量之间的差异,同时还
考虑两者之间的条件概率分布差异.条件概率分布可以被形式化为 P(Y S |X S )和 P(Y T |X T ).JDA 的目标是获取一个