中国人工智能学会通讯——深度嵌入概率图模型:从材料设计、个性化医疗到推荐系统和知识推理

  1. 云栖社区>
  2. CCAI>
  3. 博客>
  4. 正文

中国人工智能学会通讯——深度嵌入概率图模型:从材料设计、个性化医疗到推荐系统和知识推理

行者武松 2017-09-01 11:04:00 浏览1736
展开阅读全文

image

今天我想讲四个应用,它们看起来很不相关,但是我会讲讲它们是怎样连在一起的,特别是你可以用图来表示不同的应用。我会介绍一些机器学习里比较前沿的方法,那就是怎么把图表示成向量的结果。

第一个应用是关于材料科学,或者是应用到药品的设计方面。这个材料是一些分子结构,每一个节点都是不同的原子。显然它能通过图的形式联结在一起,问题就是分子的空间很大,怎么寻找有用的分子去制药,或者去做很好的材料?如果用机器学习的方法做,那么怎样去学习表达这些分子结构,怎样通过这些表达的特征来学习一个非常好的预测模型,从而帮你找到很好的药物。第二个

image

第二个应用是关于推荐系统。通常情况下,对于推荐系统你会很自然地想到矩阵分解的方法,但是在这里面,我们也可以使用在图上推理的方法,用这种方法解决这个问题。

image

第三个问题和知识推理有关系。特别地,我会在一个带有时间的知识库上,有一个叫做GDELT,也就是从实时新闻抽取一些知识,每个抽取知识包括subject(一个关系),还有一个Object以及知识点的时间。知识的图是随时间进行变化的,那怎么在上面进行建模和推理?

image

第四个是关于医疗方面的。很多情况下现在医疗的records都是记录了一些每次你去医院的病征,所谓Medical Record,这些病征是通过图联系在一起的,你也希望通过图进行表征向量,进行推理。

image

我会从第一个开始讲,当然还有很多其他问题,这里不涉及。这都是和图有关的,需要对这些图上的节点和边进行向量表征进行推理。有时图不仅是图,实际上很多情况下在图上还有一些动态信息。比如,你有一个社交网络,人并不是一个死的节点的人,会产生很多事件,很多时间上的一些信息。这时我们同时也想对这个图结合时间上的信息进行建模。我这里要讲的就是一个通用的方法,对图甚至图上的动态信息进行一个向量化的过程。

image

大多数的机器学习方法都是基于向量的数据进行建模和学习的。而图是一种组合优化的离散结构,一开始不容易用那些机器学习的方法来建模。那么,我们首先要解决的问题就是怎么把图这样的离散结构表达成一些向量结构。这和计算机或者是数学里的一个非常基本的难题有关,就是Graph Isomorphism的问题——比较两个图是不是不同,有多少不同。

我现用材料科学的例子来讲这个问题。比如,我想比较两个分子有什么不同。人们已经用了一些传统的方法来解决这个问题,比如如何表达这个图,用的非常好的方法是一个基于子树的比较:可以想象假如我有一个图,每个节点有不同的类型,最简单的方法可以看看节点的类型,数一下有多少的节点是类型一、多少的节点是类型二。节点是图上最简单的子树(零层子树),也可以想象成比较复杂的子树,比如说一层、两层,甚至更多层的子树。

image

举个例子,这两个图是不同的,怎么看出不同?节点的类型完全一样,可是子树不一样。有一个算法可以帮你系统地比较子树。你可以把节点的类型变成子树的类型,然后把子树(1,11)的类型简化成2,然后看简化以后的节点各类型个数,如果节点二的数目不一样,那两个图就不太一样了。这样下来,我只看第一层的指数,数一下不同节点的类型,它们实际上是一样的,并没有告诉这两个图的不同,所以我就会再生长到下一层的指数;再做一次简化节点的指数类型,就会得到5、6、7、8、9、10这样的一个节点类型,你只要数一下节点7、8、10的个数就会发现不同。这就是通过每个节点进行生长,数一下不同子树的个数就可以知道两个图有多么不同。这个实际上是一个叫做Weisfeiler-Lehman的Graph Isomorphism检测算法。这个算法不断地增加维数来对图的表示做了一个向量的表征,相当于你看节点原来的那个类型时,就数一下节点一类型的数目,你可以看二层子树类型,三、四甚至更高层子树类型。这样循环地把每个图表现成一个向量的方式,每一个向量的维数就是对应的一种子树。

image
image
image

但是这种方法有一个问题,因为我们这里还有一个200多万的dataset,节点有六种类型,但是若想看它的一至六层的子树个数,如果生长就会发现它的子树个数是1.3 billion,而且你是需要这么高的维数得到这么好的预测结果。

image

我们创造了一种新的在图上深度学习的算法来提取图的向量表征。在这个方法中,初始化每个节点向量表征,根据图的结构进行非线性的过程,对每个节点进行不同的操作。我们用这种方法做了各种各样的实验,这个200万的数据可以做到2 406维的表征,也可以得到很好的结果,0.096的拟合误差,模型和以往一样精确,但是模型参数比以往小了10万倍。

image

第二个例子是推荐系统的。当一个用户买了一件东西,或者看了一个电影,你知道他是什么时候买的、什么时候看的,其实数据是有一个时间轴在那里。我们的做法是看成在一个图上的一个问题,事实上这个数据是这样的,用户跟商品交互是一个bipartite graph。你用类似的方法想对每个用户和每一商品学一个向量表征。对于每个用户来说,怎么定义它的向量表征呢?因为每个用户看了一些特定的视频或者点了进去,或者买了一些特定的东西,你就对这个用户有了更多的了解;或者是一个产品是因为有一群特定的人买了它,因此你对它有更好的了解,所以就是希望在学习你的向量表征时,把用户和产品进行交互的用户信息考虑进去。我们的深度学习方法就可以抽取这些信息到向量表征里。

第三个例子里随时变化的知识的图也是同样问题。

image
image

最后的一个例子里,你去医院时,医生给你的症状跟知识库是有关系的,现有的知识库会说这些症状是怎么联系的,当然我们希望看到一个向量的表征。你也可以用我们图上的深度学习算法来提取症状的向量表征,从而得到更好的结果。

image

总结一下,我们发现基于图的向量表征深度学习,在几个和图有关的机器学习问题上有了很大提高。当然还有很多其他的信息也可以整合到这里,比如客户买一个有介绍的东西你可以把这些方法整合一起,得到每个节点更好的向量表征。我相信,用这些方法也可以把图像文本,甚至声音上的信息放在一起学习得到更好的向量表征。

image

(本报告按现场速记整理)

image

博士,佐治亚理工学院教授,于 2008 年在澳大利亚悉尼大学和国家信息与通信技术实验室(NICTA)获得计算机博士学位,主攻机器学习中核方法的研究。在嵌入方法、非参数模型、核方法、网络和时空动态模型、优化和大规模算法方面取得重要研究成果。曾获多个美国国家和国际奖项。

网友评论

登录后评论
0/500
评论
行者武松
+ 关注
所属团队号: CCAI