蚂蚁金服提新概率图模型GLN,正确率提升8.2%,具备可解释性 | NeurIPS 2019
作者 | 蚂蚁金服
编辑 | Jane
出品 | AI科技大本营(ID;rgznai100)
【导读】一年一度的国际顶级学术会议NeurIPS 2019将于12月8日至14日在加拿大温哥华举行。作为人工智能和机器学习领域最顶级的盛会之一,每年都会吸引来自全世界的AI大牛、学者、技术爱好者参会。今天为大家推荐的这篇论文是蚂蚁金服的技术专家对入选论文《Retrosynthesis Prediction with Conditional Graph Logic Network》做出的深度解读。
1. 前言
逆合成分析是有机化学中重要的几个问题之一。给定一个产物,该分析过程需要给出可能用来参与生成该产物的反应物。该方向近年来得到了来自化学和计算机科学领域的关注。在这篇文章中,我们提出一个叫做条件图逻辑网络(Conditional Graph Logic Network, GLN)的新模型来解决这个问题。该模型通过图神经网络学习如何应用化学反应的模板,并且隐式地考虑到了结果的可行性以及重要性。为了降低计算代价,我们提出一种层次化的高效采样方法。在标准数据集中,我们的正确率相比于当前最好的方法提升了8.2%,同时我们的方法也能够提供相关的可解释性分析。
2. 简介
逆合成规划的目的是找到一系列反应使得能够产生给定的目标产物。由于该过程是从生成物出发寻找反应物,可能的搜索空间理论上是所有可能的化学反应。所以通常解决该问题需要经验丰富的化学家的创造力。这个规划问题最基本的问题是单步合成,即给定生成物,确立相应的用来反应的反应物。这个基本问题实际上是化学反应预测的逆问题。例如在图1中,反应预测问题通过给定的反应物预测生成物。由于生成物所需要的原子都来自于反应物中,该过程可以视作是一种演绎推理。然而在逆合成反应中,我们需要猜出这些原子的超集,所以也可以视作一种溯因推理。
图 1 化学反应和对应的逆合成模板
在当前基于计算机的方法中,有很大一类是通过选取合适的逆合成模板来完成,但是表达能力有限。另外最近也有一些基于机器翻译技术的方法。不过由于缺乏相应的化学先验,往往需要大量的训练数据才能得到好的效果。
所以在这篇文章中,我们提出了一个新的概率图模型,通过提取逆合成模板的逻辑规则来降低配分函数(partition function)的计算空间。同时我们结合了图神经网络以提升表达能力和泛化能力,以及使用层次化采样加速训练。在下文中,我们首先介绍相关的背景知识,然后提出我们的图模型以及对应的层次化分解。具体的参数化设计以及细节分析可以参考原文。
3. 逆合成模板与逻辑规则
一个化学反应可以看做是从N个反应物 到生成物的过程。在这个过程中产生变化的原子形成了反应中心(reaction center),在计算化学中逆合成模板对应了子图重写规则:
参考图1,我们使用子图作为 O 的反应中心,同时
对应了生成物的中心。
4. GLN概率图模型
我们用来表示子图匹配函数。上面模板的对应的逻辑表达是:
由于未知化学反应的不确定性,符合模板规则的化学反应可能发生或不发生。为了对这种不确定性进行建模,我们建立以下的图模型:我们使用作为模板评分函数,另外我们用
作为反应物打分函数。对应以上两个逻辑表达式,我们有:
于是通过以上两步概率建模,对应的联合条件概率模型变为:
该模型也非常容易通过额外的反应类别信息进行拓展:
图 2 GLN的推断过程。图中三个虚线框分别代表了逆合成模板,反应中心子图以及所有分子的集合。不同颜色代表了不同的逆合成路径。虚线路径代表了可能的没有发现过的逆合成路线。
4.1 分拆
由于可能的模板数量有很多,直接对模板概率进行建模会比较困难。通过重新观察上面的逻辑表达式,我们发现可以进一步分拆模板评分函数为:
同时对应的模板匹配概率变为:
具体来说,我们将采样过程分拆为先对
采样,再对
进行采样。
4.2 优化
给定化学反应数据集,我们通过最大似然估计来训练模型参数:
对应的梯度为:
由于用MCMC得到蒙特卡洛梯度比较耗费时间,我们使用importance sampling作为替代。
5 实验
以下我们将呈现论文中的一些主要结果。更多的分析请参考原论文。
图 3标准数据集实验结果
我们在一个包含5万个化学反应的数据集中进行了如上图所示的实验。我们对比了两种不同条件下的实验结果。在表3的上半部分,我们对比了当反应类型不确定情况下的逆合成预测准确率。可以看到我们的方法比第二好的方法提升了8.2%。在表3下半部分,我们也对比了在反应类型作为先验知识的情况下的效果。
图 4 GLN预测的可视化分析
在图4中,我们对模型预测的反应中心进行了可视化的分析。可以看到,模型概率最大输出与真实的反应中心非常吻合。这间接说明了我们的模型学习到了一部分反应过程的知识。
(*本文为AI科技大本营整理文章,转载请微信联系 1092722531)
◆
精彩公开课
◆
推荐阅读
2020大数据十大趋势发布!华为、阿里、滴滴、百度、京东、讯飞等顶尖专家齐聚BDTC
多模态人物识别技术及其在爱奇艺视频场景中的应用 | 公开课笔记
远场语音识别错误率降低30%,百度提基于复数CNN网络的新技术
微软张若非:搜索引擎和广告系统,那些你所不知的AI落地技术
激辩:机器究竟能否理解常识?
Instagram个性化推荐工程中三个关键技术是什么?
从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的
华为将正式起诉美国联邦通信委员会;谷歌技术故障导致美国三大航空公司网站短暂宕机;英特尔拟20亿美元买以色列AI芯片公司……
2020年,区块链开发者还有哪些期待?
你点的每个“在看”,我都认真当成了AI
相关文章:

Java外观模式
外观模式:隐藏系统的复杂性,并向客户提供了一个客户端可以访问系统的接口,这种类型的设计模式属于结构型模式,他向现有的系统添加一个接口,来隐藏系统的复杂性 这种模式设计到一个单一的类,该类提供了客户请…

【spring框架】spring整合hibernate初步
spring与hibernate做整合的时候,首先我们要获得sessionFactory。我们一般只需要操作一个sessionFactory,也就是一个"单例",这一点很适合交给spring来管理。下面的代码演示如何创建一个JDBC DataSource 和Hibernate SessionFactory:…

PyTorch简介
PyTorch是一个针对深度学习,并且使用GPU和CPU来优化的tensor library(张量库)。最新发布的稳定版本为1.9,源码在https://github.com/pytorch/pytorch 。它支持在Linux、Mac和Windows上编译和运行。调用Python接口可以通过Anaconda或Pip的方式安装&#x…

Java 责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者…
2019嵌入式智能国际大会圆满落幕,7大专场精彩瞬间释出!
全球第二大市场研究机构MarketsandMarkets报告称,2019年全球AIoT市场规模为51亿美元,到2024年,这一数字将增长至162亿美元。5G元年,人工智能开始更多地转向应用智能。基于此,12月6-7日,由哈尔滨工业大学&am…

ubuntu12.04 alternate win7 双系统安装
ubuntu alternate的安装比desktop复杂一点,因为alternate的安装过程有个步骤是检测cd-rom,如果你是刻盘安装,自然没问题,但是,现在的安装一般是将系统刻到U盘里,或者在硬盘中划出一个分区,将其制作成启动盘. 这里我是用U盘安装的... 安装前的准备: 1)在硬盘上分出一个空闲分区:…

C/C++包管理工具Conan简介
Conan是一个开源的、跨平台的、去中心化的C和C包管理器,它的源码在https://github.com/conan-io/conan ,License为MIT,最新发布版本为1.38.0,由Python实现。版本更新较频繁,但保持向前兼容。 Conan特点: (1…
神经架构搜索在视频理解中研究进展的综述
作者 | Michael S. Ryoo 研究员与 AJ Piergiovanni 学生研究员(Google 机器人团队)来源 | TensorFlow(ID:TensorFlow_official)视频理解一直是项颇具挑战性的难题。视频中包含时空数据,因此要提取特征表示需…

Java命令模式
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令…

关于本分类(codeforces-好题系列)
前前后后花了将近半个月,终于将吴神的十场cf的50题目补完了,看到了各种技巧和DP的好题,为了方便以后查阅,新增一个分类便于查找,当然本分类的题目其他分类一般都有,先去吃个饭,回来刷题解转载于…

Conan客户端简单使用示例
在https://blog.csdn.net/fengbingchun/article/details/118443862 中对Conan进行了简单介绍,这里调用openssl的接口,写一个简单的test来说明Conan的使用步骤: (1).首先添加一个conanfile.txt文件,内容如下:依赖项为op…

Java解释器模式
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。 意图:给定一个语言&…
为什么鲜有炫富的程序员?看看中国各阶级收入统计表
网上那些口口声声随随便便就能年入百万的,听听就行。作为开发者,可以不参加双11,但是花钱最多的地方就是买电子产品和“买课”。他们的炫富就是:你根本不知道有多贵的机械键盘,为了赚钱和幸福,又买了多少大…

HQL中的Like查询需要注意的地方
public List getOrgan(String organCode, String organName) { String hsql; List list; if (organCode ! null && organCode.length() > 0) { hsql "from Ab31 where bae002 ? and aab061 like ?"; list getHibernateTemplate().find…

深度神经网络中的Batch Normalization介绍及实现
之前在经典网络DenseNet介绍_fengbingchun的博客-CSDN博客_densenet中介绍DenseNet时,网络中会有BN层,即Batch Normalization,在每个Dense Block中都会有BN参与运算,下面对BN进行介绍并给出C和PyTorch实现。 Batch Normalization即…
韬光养晦的Sony AI,凭什么与Google和Facebook平起平坐?
作者 | 藏狐来源 | 脑极体(ID:unity007)伴随着感恩节气氛的日渐浓重,面对只剩下最后一个月份额的2019,奋进的、错失的,都已尘埃落定,是时候迎来盘点得失、清理思绪的冬藏时节了。整体来看&#…

Java迭代器模式
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 意图:提供一种方法顺序访问一个聚合对象中各个元…

Linux下搭建高效的SVN
第一种安装方式:svn下载:http://archive.apache.org/dist/subversion/需要的包yum install gcc gcc-cyum install expat-develyum install openssl-develhttp://labs.renren.com/apache-mirror//httpd/httpd-2.2.22.tar.gz //最好用2.2版本http://subver…

通过Windows10上的VS Code打开远端Ubuntu上的项目操作步骤
Ubuntu版本要求是16.04及以上版本。这里以16.04为例。 在Ubuntu上安装OpenSSH server,执行:$ sudo apt-get install openssh-server 在Windows 10 1803上安装Windows OpenSSH Client(注:Windows早期版本则需要安装Git for Windows)࿱…

Java中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。 意图:用一个中…
那些打着AI万金油旗号的产品欺骗大众,如何识别?
作者 | Arvind Narayanan译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)如今,很多打着AI名号售出的产品都属于万金油系列,没什么实质性的功能。为什么会这样?我们应该如何识别这类AI?幻灯片上是评估性格和工…
分享一款jQuery全屏滚动页面特性案例
分享一款jQuery全屏滚动页面特性案例。我们在来往官网,或者小米官网都会看到全屏滚动页面的一些例子。可以说全屏滚动页面越来越受欢迎。它们就像是竖着的图片轮转一样。这样的页面有很多,如:iPhone 5C页面:http://www.dowebok.co…
后深度学习时代的一大研究热点?论因果关系及其构建思路
作者 | Bernhard Schlkopf译者 | Kolen编辑 | Jane出品 | AI科技大本营(ID:rgznai100)尽管机器学习在现阶段取得了很大成功,但是相比于动物所能完成的工作,机器学习在动物擅长的关键技术上表现不尽人意,比如…

Java观察者模式
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 意图:定义对象间的一种一对多的依赖关系,当一…

Python3中None用法
1.None是一个空值,空值是Python里的一个特殊值,用None表示。可以将None赋值给任何变量。 var None; print(var) # None if var is None:print("var has a value of None") # print else:print("var:", var) 2.None有自己的数据类型…

try finally 中的return
2019独角兽企业重金招聘Python工程师标准>>> public class Test { public static int test1() { int x 1; try { return x; } finally { x; } } public static int test2() { int x 1; try { return x; } finally { return x; } } public st…
我用Python破解了同事的加密压缩包
作者 | 朱小五来源 | 凹凸玩数据(ID: alltodata)又是一杯奶茶。事情的经过是这样的:又是奶茶,行吧行吧。快点开工,争取李大伟回来之前搞定。李大伟说是6位数字密码那么我们可以利用python生成全部的六位数字密码#生成从…

Ubuntu上通过android toolchain交叉编译Valgrind操作步骤
关于Valgrind的介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/50196189. 这里介绍下在Ubuntu 16.04上通过android toolchain如android-ndk-r14b交叉编译Valgrind源码的操作步骤: 1. 从 https://valgrind.org/ 下载最新的版本3.17.0&…

Java状态模式
在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 意图:允许对象在内部…

Red Hat 5.8 CentOS 6.5 共用 输入法
pick up from http://jingyan.baidu.com/article/20b68a885a3607796cec622c.html