Junction Tree Variational Autoencoder for Molecular Graph Generation

Year: 2018
Authors: Wengong Jin, Regina Barzilay, Tommi Jaakkola
Journal Name: ICML

Contributions

  1. 使用分子图自动设计分子结构
  2. 将整个任务分为编码(以连续方法表示分子)和解码(将连续的表示映射回分子图)

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 的子结构,满足以下限制

  1. ∪iVi=V\cup_i V_i = V∪i​Vi​=V , ∪iEi=E\cup_i E_i = E∪i​Ei​=E
  2. 如果 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)​=τ(W1g​xu​+W2g​xuv​+W3g​w∈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​=τ(U1g​xu​+v∈N(u)∑​U2g​vvu(T)​)

最终的图表示为 hG=∑ihi/∣V∣\bm{h}_G = \sum_{i} \bm{h}_i / |V|hG​=∑i​hi​/∣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∑​mki​zij​=σ(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}hit​jt​​ 为采样过程中产生的信息。
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}) hit​jt​​=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⋅τ(W1d​xit​​+W2d​zT​+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τ(W1l​zT​+W2l​hij​))

表示扩展节点 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 max⁡G′∈G(T)fa(G′)\hat{G} = \argmax_{G' \in \mathcal{G}(\mathcal{T})} f^a(G') G^=G′∈G(T)argmax​fa(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)​=τ(W1a​xu​+W2a​xuv​+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′​∈Gi​​exp(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 )相关推荐

  1. 2018 ICML | Junction Tree Variational Autoencoder for Molecular Graph Generation

    2018 ICML | Junction Tree Variational Autoencoder for Molecular Graph Generation Paper: https://arxi ...

  2. 【论文解读 WWW 2019 | MVAE】Multimodal Variational Autoencoder for Fake News Detection

    论文题目:MVAE: Multimodal Variational Autoencoder for Fake News Detection 论文来源:WWW 2019 论文链接:https://doi ...

  3. 详解变分自编码器VAE(Variational Auto-Encoder)

    前言 过去虽然没有细看,但印象里一直觉得变分自编码器(Variational Auto-Encoder,VAE)是个好东西.趁着最近看概率图模型的三分钟热度,我决定也争取把 VAE 搞懂. 于是乎照样 ...

  4. 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 ...

  5. 【DL笔记】Tutorial on Variational AutoEncoder——中英文对照(更新中)

    更新时间:2018-09-25 Abstract In just three years, Variational Autoencoders (VAEs) have emerged as one of ...

  6. 变分自动编码器(VAE variational autoencoder)

    文章目录 自动编码器 AutoEncoder 变分推断 Variational Inference 变分自动编码器 Variational AutoEncoder 条件变分自动编码器 Conditio ...

  7. 变分自编码器(VAE,Variational Auto-Encoder)

    变分自编码器(Variational auto-encoder,VAE)是一类重要的生成模型(Generative Model) 除了VAEs,还有一类重要的生成模型GANs VAE 跟 GAN 比较 ...

  8. 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 网络 ...

  9. 【Donut论文】Unsupervised anomaly detection via variational auto-encoder for seasonal kpis...

    简述 本文提出的 Donut,基于 VAE(代表性的深层生成模型)的无监督异常检测算法,伴有理论解释,可以无标签或偶尔提供的标签下学习. 本文贡献 1,Donut 里的三项技术:改进的 ELBO,缺失 ...

最新文章

  1. 首次发现:你的大脑“指纹”,全球独一份
  2. 什么是HTTP Headers?
  3. Liunx中环境变量的配置profile,environment,barshrc
  4. 解决 'config.h' file not found。升级xcode 新版本导致旧的RN项目打开报错 解决方法。...
  5. java操作数据库挂死_如何在Java程序中处理数据库超时与死?
  6. 图方法:二分无向图的联通子图查找
  7. pythonlistsort函数_python用List的内建函数list.sort进行排序
  8. mysql -连表查询
  9. 东芝服务器报错误代码维修,东芝复印机错误代码和维修代码
  10. 如何获取手机app的签名
  11. C语言·XDOJ练习·拼数字
  12. Hyperledger Besu环境搭建(Linux)
  13. Linux系统下安装Adobe Flash Player插件观播放视频
  14. 第4周收录188起融资,国内物流暴涨,国外40起过亿元大额融资 | 潜在周报
  15. python脚本创建拓扑_Mininet自定义拓扑总结
  16. 基于贝叶斯分类器的社区UGC反垃圾模型
  17. 「实在RPA·人社数字员工」促进人力社保数字办公战略转型
  18. 商业模式画布的介绍例子
  19. 二维离散变换由c语言编写,离散余弦变换(DCT)的DSP程序设计与实现
  20. Jlink V9刷入自动升级固件

热门文章

  1. 西游记中三位隐居世外的高人
  2. 用c语言实现的字符串升序排序
  3. 中国锂电池电解液行业竞争状况及发展规划分析报告(2022-2027年)
  4. 精通正则表达式笔记二---正则表达式基础概念?,+,*,{ },\,“ “,时间,小结
  5. Dreamweaver网页设计代码大全
  6. 视频教程-SEO实战课程之站群优化-其他
  7. 震惊!!!一个关于c语言图形化界面编程的小游戏
  8. 分数加减法 java,Java——分数加减法
  9. Win10年度更新准RTM版推送 免费升级仅剩4天
  10. 第一百零六期:长相不讨AI喜欢面试就会挂?全球百万求职者经历AI“看脸”面试