JTVAE( Junction Tree Variational Autoencoder )
Junction Tree Variational Autoencoder for Molecular Graph Generation
Year: 2018
Authors: Wengong Jin, Regina Barzilay, Tommi Jaakkola
Journal Name: ICML
Contributions
- 使用分子图自动设计分子结构
- 将整个任务分为编码(以连续方法表示分子)和解码(将连续的表示映射回分子图)
Junction Tree Variational Autoencoder
分子图和连接树提供了两个表示 z=[zT,zG]\bm{z} = [\bm{z}_{\mathcal{T}}, \bm{z}_G]z=[zT,zG] ,两者由编码器 q(zT∣T)q(\bm{z}_{\mathcal{T}} | \mathcal{T})q(zT∣T) 和 q(zG∣G)q(\bm{z}_{G} | G)q(zG∣G) 产生。两个解码器 p(T∣zT)p(\mathcal{T} | \bm{z}_{\mathcal{T}})p(T∣zT) 和 p(G∣T,zG)p(G | \mathcal{T}, \bm{z}_{G})p(G∣T,zG) 重构分子图。
Junction Tree
已知分子图 G=(V,E)G = (V, E)G=(V,E) ,连接树为 TG=(V,E,X)\mathcal{T}_G = (\mathcal{V}, \mathcal{E}, \mathcal{X})TG=(V,E,X) ,其中 X\mathcal{X}X 为特征字典, V={C1,...,Cn}\mathcal{V} = \{ C_1, ..., C_n \}V={C1,...,Cn} 。 Ci=(Vi,Ei)C_i = (V_i, E_i)Ci=(Vi,Ei) 为 GGG 的子结构,满足以下限制
- ∪iVi=V\cup_i V_i = V∪iVi=V , ∪iEi=E\cup_i E_i = E∪iEi=E
- 如果 CkC_kCk 在从 CiC_iCi 到 CjC_jCj 的路径上, Vi∩Vj⊆VkV_i \cap V_j \subseteq V_kVi∩Vj⊆Vk
Graph Encoder
每个节点 vvv 和边缘 (u,v)∈E(u, v) \in E(u,v)∈E 都有相对应的特征向量 xv\bm{x}_vxv 和 xuv\bm{x}_{uv}xuv 。定义 vuv\bm{v}_{uv}vuv 为从 uuu 到 vvv 的信息
vuv(t)=τ(W1gxu+W2gxuv+W3g∑w∈N(u)∖vvwu(t−1))\bm{v}_{uv}^{(t)} = \tau(W_1^g \bm{x}_u + W_2^g \bm{x}_{uv} + W_3^g \sum_{w \in N(u) \setminus v}\bm{v}_{wu}^{(t-1)}) vuv(t)=τ(W1gxu+W2gxuv+W3gw∈N(u)∖v∑vwu(t−1))
其中, τ\tauτ 为 RELU , vuv(t)\bm{v}_{uv}^{(t)}vuv(t) 表示第 ttt 轮迭代后的信息, vuv(0)=0\bm{v}_{uv}^{(0)} = 0vuv(0)=0 。 TTT 轮迭代后,将信息聚合为每个节点的隐向量
hu=τ(U1gxu+∑v∈N(u)U2gvvu(T))\bm{h}_u = \tau(U_1^g \bm{x}_u + \sum_{v \in N(u)} U_2^g \bm{v}_{vu}^{(T)}) hu=τ(U1gxu+v∈N(u)∑U2gvvu(T))
最终的图表示为 hG=∑ihi/∣V∣\bm{h}_G = \sum_{i} \bm{h}_i / |V|hG=∑ihi/∣V∣ 。 zG\bm{z}_GzG 从 N(μG,σG)\mathcal{N}(\bm{\mu}_G, \bm{\sigma}_G)N(μG,σG) 中采样, μG\bm{\mu}_GμG 和 logσGlog \bm{\sigma}_GlogσG 通过两个独立的仿射层根据 hG\bm{h}_GhG 计算得出。
Tree Encoder
对于每条边缘 (Ci,Cj)(C_i, C_j)(Ci,Cj) ,定义信息向量 mij\bm{m}_{ij}mij 和 mji\bm{m}_{ji}mji 。
mij=GRU(xi,{mki}k∈N(i)∖j)\bm{m}_{ij} = GRU(\bm{x}_i, \{ \bm{m}_{ki} \}_{k \in N(i) \setminus j}) mij=GRU(xi,{mki}k∈N(i)∖j)
GRU 的结构如下所示
sij=∑k∈N(i)∖jmkizij=σ(Wzxi+Uzsij+bz)rki=σ(Wrxi+Urmij+br)m~ij=tanh(Wxi+U∑k∈N(i)∖jrki⊙mki)mij=(1−zij)⊙sij+zij⊙m~ij\bm{s}_{ij} = \sum_{k \in N(i) \setminus j} \bm{m}_{ki} \\ \bm{z}_{ij} = \sigma (W^z \bm{x}_i + U^z \bm{s}_{ij} + b^z) \\ \bm{r}_{ki} = \sigma(W^r \bm{x}_i + U^r \bm{m}_{ij} + b^r) \\ \widetilde{\bm{m}}_{ij} = tanh(W \bm{x}_i + U \sum_{k \in N(i) \setminus j} \bm{r}_{ki} \odot \bm{m}_{ki}) \\ \bm{m}_{ij} = (1 - \bm{z}_{ij}) \odot \bm{s}_{ij} + \bm{z}_{ij} \odot \widetilde{\bm{m}}_{ij} sij=k∈N(i)∖j∑mkizij=σ(Wzxi+Uzsij+bz)rki=σ(Wrxi+Urmij+br)mij=tanh(Wxi+Uk∈N(i)∖j∑rki⊙mki)mij=(1−zij)⊙sij+zij⊙mij
其中, σ\sigmaσ 为 sigmoid 函数。信息传递之后,每个节点的隐向量
hi=τ(Woxi+∑k∈N(i)Uomki)\bm{h}_i = \tau(W^o \bm{x}_i + \sum_{k \in N(i)}U^o \bm{m}_{ki}) hi=τ(Woxi+k∈N(i)∑Uomki)
采样 zT\bm{z}_{\mathcal{T}}zT 的方法和图编码器类似。
Tree Decoder
解码过程在原分子的基础上,利用树采样继续扩展新的子结构,原分子的所有子结构均为根节点。
定义 E~t\widetilde{\mathcal{E}}_tEt 为到 ttt 时刻为止已经采样的边缘, hitjt\bm{h}_{i_t j_t}hitjt 为采样过程中产生的信息。
hitjt=GRU(xit,{hkit}(k,it)∈E~t,k≠jt)\bm{h}_{i_t j_t} = GRU(\bm{x}_{i_t}, \{ \bm{h}_{k i_t} \}_{(k, i_t) \in \widetilde{\mathcal{E}}_t, k \neq j_t}) hitjt=GRU(xit,{hkit}(k,it)∈Et,k=jt)
定义 ptp_tpt 为当前叶节点是否继续扩展的概率
pt=σ(ud⋅τ(W1dxit+W2dzT+W3d∑(k,it)∈E~thkit))p_t = \sigma(u^d · \tau(W_1^d \bm{x}_{i_t} + W_2^d \bm{z}_{\mathcal{T}} + W_3^d \sum_{(k, i_t) \in \widetilde{\mathcal{E}}_t} \bm{h}_{k i_t})) pt=σ(ud⋅τ(W1dxit+W2dzT+W3d(k,it)∈Et∑hkit))
定义
qj=softmax(Ulτ(W1lzT+W2lhij))q_j = softmax(U^l \tau(W_1^l \bm{z}_{\mathcal{T}} + W_2^l \bm{h}_{ij})) qj=softmax(Ulτ(W1lzT+W2lhij))
表示扩展节点 jjj 的特征 xj\bm{x}_jxj 在特征字典 X\mathcal{X}X 中的概率。当 jjj 为根节点时, hij=0\bm{h}_{ij} = 0hij=0 。训练时采用 teacher forcing 最小化交叉熵损失
Lc(T)=∑tLd(pt,p^t)+∑jLl(qj,q^j)L_c(\mathcal{T}) = \sum_t L^d(p_t, \hat{p}_t) + \sum_j L^l(q_j, \hat{q}_j) Lc(T)=t∑Ld(pt,p^t)+j∑Ll(qj,q^j)
Graph Decoder
因为相同的树所重构出的图并不唯一,定义 G(T)\mathcal{G}(\mathcal{T})G(T) 为树 T\mathcal{T}T 所能重构的图的集合。
G^=arg maxG′∈G(T)fa(G′)\hat{G} = \argmax_{G' \in \mathcal{G}(\mathcal{T})} f^a(G') G^=G′∈G(T)argmaxfa(G′)
其中, faf^afa 为评分函数。出于效率原因,作者按照树本身的解码顺序,一次扩展一个子结构进行计算。
假设根据树节点 CjC_jCj 新扩展的子结构为 CiC_iCi ,生成了子图 GiG_iGi ,子图所对应的向量表示为 hGi\bm{h}_{G_i}hGi ,评分函数为
fa(Gi)=hGi⋅zGf^a (G_i) = \bm{h}_{G_i} · \bm{z}_G fa(Gi)=hGi⋅zG
定义 uuu 和 vvv 为 GiG_iGi 中的两个原子。如果 v∈Civ \in C_iv∈Ci , αv=i\alpha_v = iαv=i 。如果 v∈Cj∖Civ \in C_j \setminus C_iv∈Cj∖Ci , αv=j\alpha_v = jαv=j 。设立 αv\alpha_vαv 是为了标注原子在树中的位置。仿照图编码器,定义 μuv\bm{\mu}_{uv}μuv 为从 uuu 到 vvv 的信息
μuv(t)=τ(W1axu+W2axuv+W3aμ~uv(t−1))μ~uv(t−1)={∑w∈N(u)∖vμwu(t−1),αu=αv,m^αuαv+∑w∈N(u)∖vμwu(t−1),αu≠αv.\bm{\mu}_{uv}^{(t)} = \tau(W_1^a \bm{x}_u + W_2^a \bm{x}_{uv} + W_3^a \widetilde{\bm{\mu}}_{uv}^{(t-1)}) \\ \widetilde{\bm{\mu}}_{uv}^{(t-1)} = \left\{ \begin{aligned} \sum_{w \in N(u) \setminus v} \bm{\mu}_{wu}^{(t-1)} & , & \alpha_u = \alpha_v, \\ \hat{\bm{m}}_{\alpha_u \alpha_v} + \sum_{w \in N(u) \setminus v} \bm{\mu}_{wu}^{(t-1)} & , & \alpha_u \neq \alpha_v. \end{aligned} \right. μuv(t)=τ(W1axu+W2axuv+W3aμuv(t−1))μuv(t−1)=⎩⎪⎪⎪⎨⎪⎪⎪⎧w∈N(u)∖v∑μwu(t−1)m^αuαv+w∈N(u)∖v∑μwu(t−1),,αu=αv,αu=αv.
计算 hGi\bm{h}_{G_i}hGi 的方法与图编码器相同。
学习图解码器参数以最大化在每个树节点处预测地面真实图 G 的正确子图 G i 的对数似然
该过程的损失函数为
Lg(G)=∑i[fa(Gi)−log∑Gi′∈Giexp(fa(Gi′))]L_g(G) = \sum_i \Big[ f^a(G_i) - log \sum_{G_i' \in \mathcal{G}_i} exp(f^a(G_i')) \Big] Lg(G)=i∑[fa(Gi)−logGi′∈Gi∑exp(fa(Gi′))]
其中, iii 为树的节点, GiG_iGi 为正确子图。
以我的理解, log∑Gi′∈Giexp(fa(Gi′))log \sum_{G_i' \in \mathcal{G}_i} exp(f^a(G_i'))log∑Gi′∈Giexp(fa(Gi′)) 放大了较大 fa(Gi′)f^a(G_i')fa(Gi′) 的影响,减少了较小 fa(Gi′)f^a(G_i')fa(Gi′) 的影响。所以,该损失函数倾向于使正确子图的分数无穷大,错误子图的分数为 0 ,但这样的话 fa(Gi)f^a (G_i)fa(Gi) 直接使用内积计算相似度是否不太合理?
Results
JTVAE( Junction Tree Variational Autoencoder )相关推荐
- 2018 ICML | Junction Tree Variational Autoencoder for Molecular Graph Generation
2018 ICML | Junction Tree Variational Autoencoder for Molecular Graph Generation Paper: https://arxi ...
- 【论文解读 WWW 2019 | MVAE】Multimodal Variational Autoencoder for Fake News Detection
论文题目:MVAE: Multimodal Variational Autoencoder for Fake News Detection 论文来源:WWW 2019 论文链接:https://doi ...
- 详解变分自编码器VAE(Variational Auto-Encoder)
前言 过去虽然没有细看,但印象里一直觉得变分自编码器(Variational Auto-Encoder,VAE)是个好东西.趁着最近看概率图模型的三分钟热度,我决定也争取把 VAE 搞懂. 于是乎照样 ...
- VARIATIONAL AUTOENCODER FOR SPEECH ENHANCEMENT WITH A NOISE-AWARE ENCODER
文章目录 0. 摘要 1. Introduction 2. Problem Formulation 2.1 Mixture model 2.2 Speech model 2.3 Noise model ...
- 【DL笔记】Tutorial on Variational AutoEncoder——中英文对照(更新中)
更新时间:2018-09-25 Abstract In just three years, Variational Autoencoders (VAEs) have emerged as one of ...
- 变分自动编码器(VAE variational autoencoder)
文章目录 自动编码器 AutoEncoder 变分推断 Variational Inference 变分自动编码器 Variational AutoEncoder 条件变分自动编码器 Conditio ...
- 变分自编码器(VAE,Variational Auto-Encoder)
变分自编码器(Variational auto-encoder,VAE)是一类重要的生成模型(Generative Model) 除了VAEs,还有一类重要的生成模型GANs VAE 跟 GAN 比较 ...
- Unsupervised Anomaly Detection via Variational Auto-Encoder for Seasonal KPIs in Web Applications
Unsupervised Anomaly Detection via Variational Auto-Encoder for Seasonal KPIs in Web Applications 网络 ...
- 【Donut论文】Unsupervised anomaly detection via variational auto-encoder for seasonal kpis...
简述 本文提出的 Donut,基于 VAE(代表性的深层生成模型)的无监督异常检测算法,伴有理论解释,可以无标签或偶尔提供的标签下学习. 本文贡献 1,Donut 里的三项技术:改进的 ELBO,缺失 ...
最新文章
- 首次发现:你的大脑“指纹”,全球独一份
- 什么是HTTP Headers?
- Liunx中环境变量的配置profile,environment,barshrc
- 解决 'config.h' file not found。升级xcode 新版本导致旧的RN项目打开报错 解决方法。...
- java操作数据库挂死_如何在Java程序中处理数据库超时与死?
- 图方法:二分无向图的联通子图查找
- pythonlistsort函数_python用List的内建函数list.sort进行排序
- mysql -连表查询
- 东芝服务器报错误代码维修,东芝复印机错误代码和维修代码
- 如何获取手机app的签名
- C语言·XDOJ练习·拼数字
- Hyperledger Besu环境搭建(Linux)
- Linux系统下安装Adobe Flash Player插件观播放视频
- 第4周收录188起融资,国内物流暴涨,国外40起过亿元大额融资 | 潜在周报
- python脚本创建拓扑_Mininet自定义拓扑总结
- 基于贝叶斯分类器的社区UGC反垃圾模型
- 「实在RPA·人社数字员工」促进人力社保数字办公战略转型
- 商业模式画布的介绍例子
- 二维离散变换由c语言编写,离散余弦变换(DCT)的DSP程序设计与实现
- Jlink V9刷入自动升级固件
热门文章
- 西游记中三位隐居世外的高人
- 用c语言实现的字符串升序排序
- 中国锂电池电解液行业竞争状况及发展规划分析报告(2022-2027年)
- 精通正则表达式笔记二---正则表达式基础概念?,+,*,{ },\,“ “,时间,小结
- Dreamweaver网页设计代码大全
- 视频教程-SEO实战课程之站群优化-其他
- 震惊!!!一个关于c语言图形化界面编程的小游戏
- 分数加减法 java,Java——分数加减法
- Win10年度更新准RTM版推送 免费升级仅剩4天
- 第一百零六期:长相不讨AI喜欢面试就会挂?全球百万求职者经历AI“看脸”面试