DAGs with NO TEARS: Continuous Optimization for Structure Learning
Zheng X., Aragam B., Ravikumar P. and Xing E. DAGs with NO TEARS: Continuous Optimization for Structure Learning. In Advances in Neural Information Processing Systems (NIPS), 2018.
概
有向图可以用邻接矩阵A∈{0,1}d×d来表示, 其中Aij=1 表示 node i 指向 node j. 进一步的, 我们想要表示有向无环图(DAG), 则A需要满足额外的性质, 保证无环.
现在的问题是, 有一堆观测数据X∈Rn×d, 如何通过这些数据推测其(特征之间的)关系, 即对应的A.
主要内容
首先, 假设特征之间满足一个线性关系:
Xj=wTjX+zj,
其中
W=[w1|w2|⋯|wd]∈Rd,
z为随机的噪声.
通过W可以推出相应的A=A(W), 即
Wij≠0⇔Aij=1,Wij=0⇔Aij=0.
故我们目标通常是:
minWℓ(W;X)=12n∥X−XW∥2F,s.t.A(W)∈D,
其中D表示有向无环图.
进一步地, 因为我们希望W是一个系数的矩阵(否则断然不是DAG), 故
F(W;X)=ℓ(W;X)+λ∥W∥1,
并
minWF(W;X)s.t.A(W)∈D.
显然现在的关键是如何处理A(W)∈D这个条件, 以前的方法通常需要复杂的运算, 本文提出一种等价的条件
h(W)=0,
满足
- h(W)=0当且仅当A(W)∈D;
- h(W)越小, 说明A(W)越接近无环图;
- h(W)是一个光滑函数;
- h(W)便于求导.
显然1是期望的, 2可以用于判断所得的W的优劣, 3, 4便于我们用数值方法求解.
等价条件的推导
tr(I−W)−1=d
Proposition 1: 假设W∈Rd×d+ 且 ∥W∥<1, 则A(W)能够表示有向无环图当且仅当
tr(I−W)−1=d.
proof:
A=A(W)能够表示有向无环图, 当且仅当
tr(Ak)=0⇔tr(Wk)=0,∀k=1,⋯
⇒
由于∥W∥<1(最大奇异值小于1), 故
tr(I−W)−1=tr(∑k=0Wk)=tr(I)=d.
⇐
tr(Wk)≥0, 故
tr(I−W)−1=d
当且仅当
tr(Wk)=0.
注: ∥W∥<1这个条件并不容易满足.
tr(eW)=d
注: eA=I+∑k=1Akk!.
Proposition 2: 假设W∈Rd×d+, 则A(W)能够表示有向无环图当且仅当
tr(eW)=d.
proof:
证明是类似的.
注: 此时对W的最大奇异值没有要求.
tr(Wk)=0
这部分的证明可能应该归属于DAG-GNN.
Proposition 3: 假设W∈Rd×d+ , 则A(W)能够表示有向无环图当且仅当
tr(Wk)=0,k=1,2,⋯,d.
proof:
⇒是显然的, 证明⇒只需说明
tr(Wk)=0,k=1,2,⋯,d⇒tr(Wk),k≥1.
假设W的特征多项式为p(λ)=∑dk=0βkλk,βd=1, 则有
p(W)=d∑k=0βkWk=0.
进一步有
Wd=−d−1∑k=0βkWk⇒Wd+1=−d∑k=1βkWk+1⇒tr(Wd+1)=−d∑k=1βktr(Wk+1)=0.
由归纳假设可知结论成立.
Corollary 1: 假设W∈Rd×d+ , 则A(W)能够表示有向无环图当且仅当
tr(I+W)d=d.
tr(eW∘W)=d
注: ∘ 表示哈达玛积, 即对应元素相乘.
上面依然要求W各元素大于0, 一个好的办法是:
Theorem 1: 一个矩阵W∈Rd×d, 则A(W) 能表示有向无环图当且仅当
tr(eW∘W)=d.
proof:
A(W)=A(W∘W).
tr(I+W∘W)d=d
Theorem 2: 一个矩阵W∈Rd×d, 则A(W) 能表示有向无环图当且仅当
tr(I+W∘W)d=d.
注: W∘W前面加个系数也是没关系的.
性质的推导
故, 此时我们只需设置
h(W)=tr(eW∘W)−d
显然满足1,2,3, 接下来我们推导其梯度
dh(W)=dtr(eW∘W)=tr(deW∘W)=tr(d∑k=1Mkk!)=∑k=1tr(dMkk!)=∑k=0tr(MkdMk!)=tr(eW∘W⋅d(W∘W))=tr(eW∘W⋅(2W∘dW))=tr(eW∘W∘2WT⋅dW)
故
∇h(W)=(eW∘W)T∘W.
注: 其中M=W∘W.
求解
利用augmented Lagrangian转换为(这一块不是很懂, 但只是数值求解的东西, 不影响理解)
minWmaxαℓ(W;X)+λ∥W∥1+ρ2|h(W)|2+αh(W),
具体求解算法如下:

代码
原文代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-05-27 Python Revisited Day 09 (调试、测试与Profiling)