通过深度神经网络实现可扩展性因果图学习
写在前面
这是一篇CIKM(B类)2019年的论文,用神经网络做因果图学习,和我的研究方向相关,因此做一下笔记。
太长不看版:
输入: m × n m\times n m×n的矩阵,表示 m m m个变量的 n n n步时序列
输出: m × m m\times m m×m的矩阵,表示各变量之间的关联程度(包含非线性)
思想:通过时序预测做自监督训练
过程:
- 向网络输入 m × l m\times l m×l的矩阵,l表示预测需要的时序长度
- 通过改版的ResNet,得到多层 m × p m\times p m×p的矩阵,表示单节点非线性变量
- 各矩阵转置经过 m × k , k × k , k × m m\times k, k \times k, k \times m m×k,k×k,k×m的矩阵,得到多个考虑不同变量影响的变量 m × p m\times p m×p
- 将各矩阵拼接在一起,通过MLP得到 m × t m\times t m×t的多节点非线性变量,再通过一个相同维度的 R R R模拟回归系数,然后做点积,得到预测结果
- MSE作为 l o s s loss loss并反向传播更新参数
- 训练结束后3中的三个矩阵相乘作为近似的关联矩阵
背景介绍
复杂系统中的因果图学习是非常重要的。现有的方法主要聚焦的是基于预先设定的核或者数据分布而做的因果图学习(也就是说需要具备一定的领域知识),或者只研究了系统中特定的单个目标对剩余节点的影响。同时,现有方法大多只能对线性因果关系进行发掘。而数据的非线性性会给因果图学习带来较大的影响,使得现有方法失效。
从数学上来说,因果图学习的输入是 X = { X ( 1 , ∗ ) , X ( 2 , ∗ ) , . . . , X ( m , ∗ ) } ∈ R m × n X=\{X(1, *), X(2, *),...,X(m,*)\}\in\mathbb R ^ {m\times n} X={
X(1,∗),X(2,∗),...,X(m,∗)}∈Rm×n,即有m个变量,每个变量有一个长度为n的序列。输出则是 A ∈ R m × m A\in\mathbb R^{m \times m} A∈Rm×m的非负有向矩阵。如果 A ( i , j ) A(i,j) A(i,j)远大于 0 0 0,那么说明第 i i i个变量是第 j j j个变量的影响因子之一。什么是非线性关系?论文中举了一个比较好的例子:
X ( 3 , t 3 ) = X ( 1 , t 1 ) 2 + l o g ( X ( 2 , t 1 ) ) + X ( 1 , t 2 ) X ( 3 , t 1 ) + X ( 1 , t 1 ) 3 c o s ( X ( 3 , t 2 ) ) X(3,t_3)=X(1,t_1)^2+log(X(2,t_1))+X(1,t_2)^{X(3,t_1)}+ X(1,t_1)^3cos(X(3,t_2)) X(3,t3)=X(1,t1)2+log(X(2,t1))+X(1,t2)X(3,t1)+X(1,t1)3cos(X(3,t2