技术背景

本文分享内容来自于最新的一篇名为Multibody molecular docking on a quantum annealer的文章,这篇文章的核心思想,是使用QUBO(二次受限二元优化)模型来求解一个分子对接问题:

分子对接

如果我们考虑空间中有\(N\)个分子,这\(N\)个分子可以摆放在任意的位置,以任意的角度。那么这些不同的位置和角度,每一个都可以计算出来一个能量值,不论是使用分子力场的方法,还是使用第一性原理计算的方法。而这其中每一个能量较低的位置组合,都是一个潜在的分子对接形式。两个分子的对接就叫两体对接,两个以上分子的对接可以称为多体对接。目前大多数的分子对接软件支持的还是两体对接,随着分子数量的增长,多体对接的计算难易度有可能是随着分子数量指数增长的。具体的复杂度跟建模方式有关,例如,在这篇文章中用到的二元建模方法,采样空间就是指数增长的。

QUBO模型

QUBO(quadratic unconstrained binary optimization formulation)模型常常被应用于组合优化问题中,其哈密顿量(损失函数)的通用形式为:

\[H_{QUBO}=\sum_ih_i(b_i)b_i+\sum_{i>j}J(b_i,b_j)b_ib_j
\]

其中\(b_i\)是一个二元变量\(b_i\in\{0,1\}\)。使用QUBO模型解决问题的基本思路,首先要把问题映射到一个二元变量上。举一个最简单的例子,背包问题(Knapspack Problem)的二元建模,有\(M\)个物体和1个背包,如果我们决定把第\(j\)个物体放到背包中,那么对应的二元变量\(b_j=1\)。相反地,如果我们决定不把第\(j\)个物体放到背包中,那么就有\(b_j=0\)。最终完成QUBO模型的求解之后,我们会得到一串二元字符串\(000111000...10100111\),而这其中被标记为1的物体都会被放到背包里面。在我们这篇文章中要介绍的,就是如何使用QUBO模型来建模和求解多体分子对接的问题。

问题场景

这篇文章中求解的一个问题是三个\(\alpha\)螺旋的对接问题。因为主要是思想性的创新,所以用的体系简单一些,当然,这样也更加方便验证结果的正确性。而且做了一个降维的简化,实际上求解的是一个二维平面的对接问题:三个螺旋结构平行放置且没有错位:

QUBO建模

文章前面提到,我们要用QUBO模型来解决分子对接问题,首先要进行二元的建模,把问题转化为一个二元的模型。然后确定每一项所对应的系数,这样才能进入到模型的求解阶段。关于这个三螺旋的问题,QUBO模型研究的是这三个螺旋之间的两两相互作用(因为QUBO模型最高只能做到二次,对应的就是两体相互作用)。因为我们最终求解的目标是找到一些低能量的对接位点,因此我们可以启发性的使用相关的能量来作为系数。单点能好说,因为单个的分子不论放在什么位置,其能量只有内部结构决定。而两体相互作用能量(主要成分是范德华作用力)的参数需要结合QUBO建模来考虑。

这篇文章使用的方法是,对二维的空间进行打格点操作,把空间离散化。然后针对于每一个格点进行one-hot编码,例如说,2号螺旋在格点1而3号格点在格点2,那么对应的二元表述就是:

\[b_{(1-1)*2+0}=b_0=1;b_{(1-1)*2+1}=b_1=0\\
b_{(2-1)*2+0}=b_2=0;b_{(2-1)*2+1}=b_3=1
\]

之所以这里面one-hot只用到了2维,这是因为我们在处理三体问题时,其实可以把其中的一个螺旋作为中心点不动,因此实际上one-hot的维度是2维。这样一来,实际上我们的解要在\(2^{2G}\)的解空间中去寻找,这里\(G\)表示打的格点的数量,一般跟分子本身无关。可以类似的推导,如果是有\(N\)体的相互作用,那么最终解空间的大小就会是\(2^{(N-1)G}\),也就是我们作为的指数级别增长。

确定了建模方法之后,我们可以通过计算分子的单点能和格点中的两两相互作用能量,来获得QUBO模型的系数:

约束条件

聪明的小伙伴已经意识到了一个问题,在上一个章节中的建模方法,会导致一个问题是,解空间中包含了两个分子处在相邻格点甚至是同一个格点内这样的解。还有可能出现一种更加不合理的情况:得到的解里面可能只剩下一个分子,会出现分子丢失的问题,这是Non-Physical的解。为了避免此类问题,需要在建模中加上一个惩罚值Penalty。因为这里加惩罚项的主要目的是为了避免分子被抹去的问题,因此约束条件可以这样定义:

\[\sum_ib_i^x=1
\]

这里\(x\)表示第\(x\)个分子,翻译成大白话就是:遍历所有的网格,你必然能找到且只能找到一个分子\(x\)。如果对所有的\(x\)加上这一项,那么就能尽可能的确保结果中不出现Non-Physical的解。不仅如此,一般情况下约束条件要双向约束,也就是过犹不及,因此一般都会采用二次形式的约束条件:

\[f(b^x)=(\sum_ib_i^x-1)^2=\sum_{i>j}2b_i^xb_j^x-\sum_ib_i^x+1=0
\]

要说明的是,这里约束条件只是作为一个目标,我们希望把\(f(b^x)\)这个约束条件优化到0,但实际上我们只能确保\(f(b^x)\)被加到QUBO模型完整的损失函数内的时候,得到完整的损失函数的最小值。

建模的最后,我们要得到带有惩罚值\(\gamma\)的最终哈密顿量(损失函数):

\[H_{MBD}=H_{QUBO}+\gamma f(b^x)=\sum_{x\in X'}\sum_{i=1}^{T}(h(b_i^x)-\gamma)b_i^x+\sum_{x\geq y}\sum_{i>j}(J(b_i^x,b_j^y)+\delta)b_i^xb_j^y
\]

其中\(\delta\)有:

\[\delta=\left\{
\begin{matrix}
2\gamma, x=y\\
0, otherwise
\end{matrix}
\right.
\]

因为我们建模的时候固定了一个中心的\(\alpha\)螺旋,所以建模中的约束条件实际上是针对于可移动的单体目标的,这个集合被设定为\(X'\)。

求解QUBO模型

当QUBO建模完成后,QUBO模型的求解过程是固定的,目前而言有三种主流的方法:使用退火机求解、使用模拟退火算法求解、使用QAOA算法求解,其中QAOA算法相当于退火算法的一个离散化版本,但是因为可以在量子计算机上面进行求解,所以退火机求解和QAOA求解算法可以重点关注下。而这篇文章里面用到的是退火机和模拟退火,退火机使用的是加拿大公司Dwave的硬件,亚洲地区用光学做的退火机可能更多一些。

退火的大致原理,就是构造一个简单的哈密顿量\(H_0\)和对应的本征态\(|{\psi_0}\rangle\),以及目标哈密顿量\(H_{MBD}\)和目标量子态\(|{\psi_{MBD}}\rangle\),通过准静态过程实现\(H_{t}=\lambda H_0+(1-\lambda)H_{MBD}\)。根据绝热近似(adiabatic approximation)理论,我们最终可以制备出来目标哈密顿量的量子态,从而实现对目标哈密顿量的求解。在前面的文章中我们实现过使用绝热演化/量子退火算法求解矩阵本征态以及量子绝热算法求解最大切割问题,感兴趣的读者可以跳转去看一下退火算法的相关实现,这里不做赘述。

总而言之我们最终会得到一个本征量子态。而所谓的量子态在这个问题求解中的含义,其实对应的是一个求解空间的子空间。在这个子空间中进行采样,有更高的概率可以获得最终的最优解,并不是说这个量子态就是最终解了。而如果是通过退火机和量子计算机的体系来实现的话,可以做到高效的采样,从而做到更加快速的得到最优解。在我们引用的这篇文献中,重点介绍了一下惩罚值对于采样结果的影响,从而指导采样结果的选取。其实对于更多的工程问题而言,惩罚值的选取更多的依赖于经验,是一个经验参数。

文献里面的基本结论是这样的:如果惩罚值选取的过小,那么没办法区分开Physical的解和Non-Physical的解;如果惩罚值过高,则很难采样采到能量较低(较优)的Physical解;因此,适中的惩罚值会是一个更好的选择:

文献中还有一些更进一步的测试结果,还包含了退火机和模拟退火算法的效果比对,感兴趣的读者可以自行下载文献进行阅读。

总结概要

本文主要分享了文献Multibody molecular docking on a quantum annealer中的主要建模思路和初步的测试结果,可以实现QUBO模型求解多体分子对接的问题。在目前常见的分子对接软件中,更多的是实现的两体对接,多体对接的采样空间有可能会随着分子数量的增长而指数增长。而借助于量子退火机或者是量子计算机来求解这样的一个问题,不失为一个较好的思路。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/qubo_docking.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

参考文献

  1. "Multibody molecular docking on a quantum annealer". Mohit Pandey, Tristan Zaborniak, Hans Melo, Alexey Galda, and Vikram Khipple Mulligan

基于QUBO模型的多体分子对接的更多相关文章

  1. 生信云实证Vol.12:王者带飞LeDock!开箱即用&一键定位分子库+全流程自动化,3.5小时完成20万分子对接

    LeDock是苏黎世大学Zhao HongTao在博士期间开发的一款分子对接软件,专为快速准确地将小分子灵活对接到蛋白质而设计.LeDock优于大部分商业软件,在Astex多样性集合上实现了大于90% ...

  2. 大前端学习笔记整理【一】CSS盒模型与基于盒模型的6种元素居中方案

    概览 CSS盒模型,规定了元素框来处理元素的 内容.内边距.边框和外边距的方式 元素部分是指内容部分,也是最实际的内容,包围内容的称之为内边距,内边距外围是边框,边框外围就是外边距:且外边距是透明的, ...

  3. 中国快递包裹总量的预测-基于SARIMA模型

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  4. 基于RBAC模型的通用企业权限管理系统

    1. 为什么我们需要基于RBAC模型的通用企业权限管理系统 管理信息系统是一个复杂的人机交互系统,其中每个具体环节都可能受到安全威胁.构建强健的权限管理系统,保证管理信息系统的安全性是十分重要的.权限 ...

  5. 京东评论情感分类器(基于bag-of-words模型)

    京东评论情感分类器(基于bag-of-words模型) 近期在本来在研究paraVector模型,想拿bag-of-words来做对照. 数据集是京东的评论,经过人工挑选,选出一批正面和负面的评论. ...

  6. 微软BI 之SSAS 系列 - 基于雪花模型的维度设计

    基于雪花模型的维度以下面的 Product 产品与产品子类别,产品类别为例. DimProduct 表和 DimProductSubcategory 表有外键关系,而 DimProductSubcat ...

  7. AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测

    AIOps探索:基于VAE模型的周期性KPI异常检测方法 from:jinjinlin.com   作者:林锦进 前言 在智能运维领域中,由于缺少异常样本,有监督方法的使用场景受限.因此,如何利用无监 ...

  8. 基于WSAAsyncSelect模型的两台计算机之间的通信

    任务目标 编写Win32程序模拟实现基于WSAAsyncSelect模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递.客户端向服务器端发送"请输出从1到1000内所有 ...

  9. 基于Select模型通信程序的编写,编译和执行

    任务目标 编写Win32程序模拟实现基于Select模型的两台计算机之间的通信,要求编程实现服务器端与客户端之间双向数据传递.客户端向服务器端发送"计算从1到100的奇数和",服务 ...

  10. 基于EPOLL模型的局域网聊天室和Echo服务器

    一.EPOLL的优点 在Linux中,select/poll/epoll是I/O多路复用的三种方式,epoll是Linux系统上独有的高效率I/O多路复用方式,区别于select/poll.先说sel ...

随机推荐

  1. win上vscode出现undefined reference to `__imp_WSACleanup'

    示例代码 #include <iostream> // 推荐加上宏定义 #define WIN32_LEAN_AND_MEAN #include <winsock2.h> #i ...

  2. 5、mysql优化--索引使用情况、索引的结构

    避免索引失效 1). 全值匹配 ,对索引中所有列都指定具体值. 2). 最左前缀法则 如果索引了多列,要遵守最左前缀法则.指的是查询从索引的最左前列开始,并且不跳过索引中的列. 3). 范围查询右边的 ...

  3. 从零开始学Spring Boot系列-集成mybatis

    在Spring Boot的应用开发中,MyBatis是一个非常流行的持久层框架,它支持定制化SQL.存储过程以及高级映射.在本篇文章中,我们将学习如何在Spring Boot项目中集成MyBatis, ...

  4. TLS原理与实践(二)

    主页 个人微信公众号:密码应用技术实战 个人博客园首页:https://www.cnblogs.com/informatics/ 引言 在上一篇博客中,我们通过<一文读懂TLS1.2协议](ht ...

  5. 新零售SaaS架构:什么是线上商城系统?

    零售商家为什么要建设线上商城 传统的实体门店服务范围有限,只能吸引周边500米内的消费者.因此,如何拓展服务范围,吸引更多消费者到店,成为了店家迫切需要解决的问题. 缺乏忠实顾客,客户基础不稳,往往是 ...

  6. aardio ide 字体 及设置

    需求 aardio ide 只支持一个字体,英文字体肯定是Fira 但是中文字体不好,所以只好将两个字体合并上使用. 有教程.但是我发现已经有合并好的,就拿来使用吧放到fonts目录里面 代码 imp ...

  7. IntentGC-A Scalable Graph Convolution Framework Fusing Heterogeneous Information for Recommendation-KDD19

    一.摘要 网络嵌入的显著进步导致了最先进的推荐算法.然而,网站上的用户-物品交互(即显式偏好)的稀疏性仍然是预测用户行为的一个很大的挑战. 虽然,已经有研究利用了一些辅助信息(如用户间的社会关系)来解 ...

  8. idea的使用操作

    怎么让idea中的方法之间显示横线 点击setting 选择Editor 选择Appearance 选择Show method separators 效果: 如果设置idea的标签页可以多行显示 点击 ...

  9. JavaScript利用反射实现方法注入

    1. 引言 反射是一种能够在程序运行时动态访问.修改某个类(对象)中属性和方法的机制 JavaScript在ES6中提供了Reflect 这一个内置的对象,它提供拦截 JavaScript 操作的方法 ...

  10. JavaScript知识总结 ES6篇

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. let.const.var的区别 (1)块级作用域:块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域 ...