1. 磐创AI-开放猫官方网站首页
  2. 机器学习
  3. TensorFlowNews

GAN在网络特征学习中的一些应用

GAN在网络特征学习中的一些应用

来源 | 计算机视觉战队

编辑 | 磐石

出品 | 磐创AI技术团队

【磐创AI导读】:本文授权转载自计算机视觉战队。主要介绍了GAN的一些实战。欢迎大家点击上方蓝字关注我们的公众号:磐创AI


首先来看看 GAN 现在能做到哪些惊艳的事呢?

GAN在网络特征学习中的一些应用

GAN 可以被用来学习生成各种各样的字体——也就是说,以后字迹辨认这种侦查手段很可能就不靠谱啦!这个工作还有很多动图,在 GitHub 上搜 zi2zi 这个 project 就可以。

GAN在网络特征学习中的一些应用

有了GAN,以后就不怕灵魂画手了!左边这么简单的“简笔画”,居然也可以直接生成出对应的蕴含丰富含义的完整图画呢。这个工作同时还可以用来做一些修正,比如可以把春天的山变成被白雪覆盖尖端的山——而这一切只需要一点点白色的涂抹。

可参考:机器人也会画漫画

有了GAN,不仅仅可以在有辅助的情况下作画,还可以在无辅助的情况下完成很多修饰!比如从分割图变成真实照片,从黑白图变成彩色图,从线条画变成富含纹理、阴影和光泽的图……这些都是用 pix2pix里的方法生成的。

GAN在网络特征学习中的一些应用

去年非常火爆的应用,脸萌当然也难不倒 GAN!想拥有自己的专属Q版定制头像吗?快去看看:

Yaniv Taigman, Adam Polyak, Lior Wolf. “Unsupervised Cross-Domain Image Generation”. ICLR 2017

基础知识:

严格来说,一个GAN 框架,最少(但不限于)拥有两个组成部分,一个是生成模型 G,一个是判别模型 D。在训练过程中,会把生成模型生成的样本和真实样本随机地传送一张(或者一个 batch)给判别模型 D。判别模型 D 的目标是尽可能正确地识别出真实样本(输出为“真”,或者1),和尽可能正确地揪出生成的样本,也就是假样本(输出为“假”,或者0)。这两个目标分别对应了下方的目标函数的第一和第二项。而生成模型的目标则和判别模型相反,就是尽可能最小化判别模型揪出它的概率。这样 G 和 D 就组成了一个 min-max game,在训练过程中双方都不断优化自己,直到达到平衡——双方都无法变得更好,也就是假样本与真样本完全不可区分。 

通过这样的巧妙设计,GAN 就拥有了一个非常吸引人的性质。GAN 中的 G 作为生成模型,不需要像传统图模型一样,需要一个严格的生成数据的表达式。这就避免了当数据非常复杂的时候,复杂度过度增长导致的不可计算。同时,它也不需要 inference 模型中的一些庞大计算量的求和计算。它唯一的需要的就是,一个噪音输入,一堆无标准的真实数据,两个可以逼近函数的网络。

而今天要说的是特征学习的主要内容:

网络特征学习(network representation learning / network embedding)是近年来兴起的一个特征学习的研究分支。

作为一种降维方法,网络特征学习试图将一个网络中的节点映射到一个低维连续向量空间中,并在该低维空间中保持原有网络的结构信息,以辅助后续的连接预测、节点分类、推荐系统、聚类、可视化等任务。 

Outline

GAN在网络特征学习中的一些应用

本次主要分为2个部分:

首先,介绍 Graph Representation Learning 的定义、应用、分类方法和相关代表作;

第二部分,介绍GraphGAN: Graph Representation Learning with Generative Adversarial Nets。    

关于GRL

GAN在网络特征学习中的一些应用

首先,介绍图特征学习或者网络特征学习。其主要目的在于,将图中每一个节点都映射到一个低维向量空间,并且在此空间内保持原有图的结构信息或距离信息。Graph Representation Learning 目前没有任何官方定义或名字,它也可以被称作 Network Embedding、Graph Embedding 或 GRL。  

如上图,左图有三个节点和三条边,其中的数字表示各边的权值 weight,我们通过 GRL 将其映射到一个二维空间中。可以发现,如果两个点之间的 weight 越大,那么它们之间的距离就越近。这就是 GRL 的精髓所在,即在低维空间中保持原有图的结构信息。

Application

GAN在网络特征学习中的一些应用

Graph Representation Learning 的应用相当广泛,它可以被用于链路预测、 节点分类、推荐系统、视觉、知识图谱表示、聚类、Text Embedding 以及社会网络分析。  

GRL分类方法

GAN在网络特征学习中的一些应用

将 GRL 的方法按照不同分类来进行介绍: 

第一种叫同构图,即图中的节点和边都只有一种,比如引用网络,其中的节点表示每篇 paper,边表示引用关系。  

第二种是异构图,即网络中的节点和边不止一种,一般分为2种情况:  

  1. 多媒体网络。比如有的 paper 就考虑过一张图具备图像和文本两种节点,以及图像文本、图像图像和文本文本这三种边。

  2.  知识图谱。图中节点表示的是实体,边表示的关系。每一个三元,HRT 都表示头节点 H 和尾节点 T 有关系 R。由于关系 R 可以有很多种,因此 KG 也属于一种异构图。  

第三种是 Graph with side information,side information 即为辅助信息。这种图是指除了边和点之外,节点和边都会带有辅助信息,比如边和点都有 label,边和点都有 attribute,或者 note 有 feature。  它们的区别在于 label 是类别型的,attribute 可以是离散的,也可以是连续的,而 feature 就可能是文本或图像等更复杂的一些特征。  

第四种是 Graph Transformed from non-relational data,即从非关系型数据中转换成的图,一般是指在高维空间中的一些数据。

GAN在网络特征学习中的一些应用

上图是我整理的 GRL 方法代表作。按照时间顺序可将它们分为三类,第一类是传统方法,包含 PCA、LDA、MDS 等降维方法。

GraphGAN

Motivation 1

GAN在网络特征学习中的一些应用

前文将 Network Embedding 的方法归为三类,而我们在 GraphGAN 里将其分为两类,第一类叫生成式模型,第二类叫判别式模型。  生成式模型是指,假定在图中存在一个潜在的、真实的连续性分布 Ptrue(V|Vc)。对于给定的 Vc 而言,我们可以看到 Vc 跟四个节点相连接,图中除了 Vc 之外还有五个节点。Ptrue(V|Vc) 就是指在除了 Vc 之外其他节点上的分布。  假设图中对于每个 Vc 都有这么一个分布,那么图中的每条边都可以看作是从 Ptrue 里采样的一些样本。这些方法都试图将边的似然概率最大化,来学习 vertex embedding。我们之前提到的 DeepWalk 和 Node2vec 都属于生成式模型。

Motivation 2

GAN在网络特征学习中的一些应用

判别式模型是指,模型试图直接去学习两个节点之间有边的概率。这种方法会将 Vi 和 Vj 联合作为 feature,然后输出的是 edge 的概率 P(edge|Vi, Vj)。这种方法的代表作是 SDNE,以及 DASFAA 上的一篇 PPNE。  

这样分类之后,一个很自然的想法是,判别式模型和生成式模型能否进行联合。这两者其实可以看作是一个硬币的两面,他们是相互对立又相互联系的。

Motivation 3

GAN在网络特征学习中的一些应用 

受以上工作启发,我们提出了 GraphGAN,它是一个在网络生成学习中将生成模型和判别模型加以结合的框架。

GraphGAN Framework

GAN在网络特征学习中的一些应用

通过上图可以看出,我们在每一步的迭代中,从 Ptrue 中 sample 出来了一些跟 Vc 真实相邻的绿点,然后从 G 中又生成了一些跟 Vc 相连的蓝点。我们将绿点作为正样本,将蓝点作为负样本来训练 D,在得到 D 之后,再用 D 中的信号去反过来训练 G。这就是之前所说的 policy gradient 过程。我们不断重复这个过程,直到生成器 G 和 Ptrue 极为接近。  

在刚开始的时候,G 相对比较差,因此对于给定的 Vc 而言,G sample 的点都是一些离 Vc 很远的点。随着训练的不断进行,G sample 的点会逐渐向 Vc 接近,到最后 G sample 的点几乎都变成了真正跟 Vc 相邻的点,也就是 G 和 Ptrue 已经很难被区分了。

接下来,我们来讨论一下 G 的实现过程。一种最直观的想法是用 softmax 来实现 G,也就是将 G(v|VC) 定义成一个 softmax 函数。这种定义有如下两个问题:首先是计算复杂度过高,计算会涉及到图中所有的节点,而且求导也需要更新图中所有节点。这样一来,大规模图将难以适用。另一个问题是没有考虑图的结构特征,即这些点和 Vc 的距离未被纳入考虑范围内。  

第二种方法是使用层次 softmax,具体来说就是组织了一棵二叉树,然后将所有节点都放在叶节点的位置,再将当前的 Vc 从根开始计算。由于从根到每个叶结点都存在唯一路径,因此这个计算可以转换成在树的路径上的计算,即它的计算复杂度为 logN ,N 代表树的深度。这种做法虽然可以简化计算,但它仍然没有考虑到图结构特征。  

第三种方法是 Negative Sampling。这种方法其实是一个优化方法,它并没有产生有效的概率分布,并且同样没有考虑图的结构特征信息。

Graph Softmax

GAN在网络特征学习中的一些应用

在 GraphGAN 中,我们的目标是设计出一种 softmax 方法,让其满足如下三个要求。第一个要求是正则化,即概率和为 1,它必须是一个合法的概率分布。第二个要求是能感知图结构,并且能充分利用图的结构特征信息。最后一个要求是计算效率高,也就是 G 概率只能涉及到图中的少部分节点。

GraphGAN 算法


GAN在网络特征学习中的一些应用

GraphGAN 的算法如上,输入是一些超参数,我们想输出生成式模型 G 和判别式模型 D。第 3-12 行是算法的每一次迭代过程。在每一次迭代过程中,我们都重复用生成器来生成 s 个点,并用这些点来更新 θG 的参数。  

随后,再重复构造正负样本来训练 D,这样做是出于稳定性的考虑。因为我们知道 GAN 的训练稳定性是一个重要问题。  

实验

GAN在网络特征学习中的一些应用

我们的实验数据集一共是如上五个。Baseline 选用的是DeepWalk,LINE,Node2vec 和 Struc2vec。

GAN在网络特征学习中的一些应用

我们将 GraphGAN 用到了如下三个测场景中,第一个是 link prediction,预测两个点之间是否有边的概率。图 4 展示的是 GraphGAN 的学习曲线,对于生成器而言,在训练大概十轮之后就很快趋于稳定,并且后续一直保持性能。  

对于 D 来说,它的性能是先上升,之后出现缓慢的下降。这和我们之前所描述的 GAN 框架也是相吻合的。表 1 展示了 GraphGAN 在两个数据集上都得到了最好的结果。

GAN在网络特征学习中的一些应用

GAN在网络特征学习中的一些应用

第二个测试场景是 Node Classification,在这个场景中我们想对节点进行分类,我们用的数据集是 BlogCatalog 和 Wikipedia。在这样的数据中,我们的方法取得了最好的效果。

  第三个测试场景是推荐。所用的数据集是 MovieLens,我们的方法也取得了最好的效果。  

总结

GAN在网络特征学习中的一些应用

本文提出的 GraphGAN 是一种结合了生成模型和判别模型的框架。其中生成器拟合 Ptrue,判别器尝试去判别两个点之间是否有边。  

G 和 D 实际上是在进行一个 minmax game,其中 G 试图去产生一些假的点。这些假的点不能被 D 所判别,而 D 试图去将真实值跟假的点分别开来,以避免被 G 所欺骗。  

此外,我们还提出了一种 Graph Softmax 作为 G 的实现,克服了 softmax 和层次 softmax 的缺陷,具备三个良好性质。

文章内容摘自于:https://zhuanlan.zhihu.com/p/33227420?group_id=939237804522323968,如果有兴趣的朋友,可以去进一步学习!

写在最后:欢迎大家点击下方二维码关注我们的公众号,点击干货资源专栏发送关键字“资源”获取更多资源推荐。关注我们的历史文章,和小编一起畅游在深度学习的世界中。

GAN在网络特征学习中的一些应用


最后给大家送波福利,七月在线机器学习集训营课程免费试听了!!!

扫描下方海报二维码,领取免费试听课程,课程红包!


GAN在网络特征学习中的一些应用

GAN在网络特征学习中的一些应用


GAN在网络特征学习中的一些应用 点击下方 |  | 了解更多

磐创AI:http://www.panchuangai.com/ 智能客服:http://www.panchuangai.com/ TensorFlow:http://panchuang.net 推荐关注公众号:磐创AI

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2018/04/25/596672c832/

发表评论

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息