zoukankan      html  css  js  c++  java
  • Deep Graph Infomax(DGI) 论文阅读笔记

    代码及论文github传送门
    本文中出现的错误欢迎大家指出,在这里提前感谢w
    这篇文章先锤了一下基于random walk的图结构上的非监督学习算法,指出了random walk算法的两个致命缺点。
    1.以图的结构信息为代价,过分强调点之间的临近信息。(random walk算法的假设:相邻的节点更有可能具有相同的label)
    2.模型效果过多依赖超参的选择,即改变超参,模型的效果会急剧下降。
    后面这篇文章介绍了自己的非监督学习是基于mutual information的,关于mutual information这里有一篇很好的博客介绍它的含义,这对我们接下来论文的理解也有帮助。

    我靠我终于搞明白为什么paper里面一直在讲一个二分类问题,而它跑的实验却是一个多分类问题了,这个问题是我看了它的源码才知道的。
    这里面是两个不同的模型,在一开始的二分类使用的是交叉熵loss,目的是训练出来前面的GCN采样层的效果,让这个GCN层能够有效地提取图结构的信息。这里的二分类是指图中原有的点(正样本)和作者自己构造了一个假图的点(负样本)。
    训练完第一个模型后,下一个模型名字叫LogReg。它本质就是一个全连接层,使用xavier的方法进行全连接层的初始化。是将GCN层中提取出的特征描述(h_i)直接输入到全连接层,然后分为nb_classes类,做一个有监督的训练,训练这一层全连接层。在第二个模型中,前面的readout function和discriminator都没有用了!
    那么为什么说这个方法是一个无监督的方法呢?因为在第一个模型,represntation提取过程中,作者是自己构造的正样本和负样本训特征提取器的(也就是GCN)。这个过程是一个无监督的过程,至于后面全连接层的训练,并不是本文的重点,只是为了让提取的patch represetation发挥它的效果。
    根据后面给的效果图来看,这个方法的F1-score逼近或超过有监督学习的F1-score了,但是为什么基于这种方法可以获得较好的效果,我还是没有一个直观的理解。

    剩余东西,近几天更新

  • 相关阅读:
    面向对象编程(二)封装--构造方法,this关键字,static关键字,方法重载
    面向对象编程(四)继承,概念及super关键字,final关键字,Object类常见方法
    Python学习4--字符串
    python学习3--元祖
    数据挖掘概念与技术14--Star-Cubing
    Python学习2--列表
    数据挖掘概念与技术13--BUC
    数据挖掘概念与技术12--数据立方体的计算和多路数组聚集详解
    Python学习1--数据类型与循环要点
    数据挖掘概念与技术11--数据仓库的实现
  • 原文地址:https://www.cnblogs.com/1623-1017/p/11227234.html
Copyright © 2011-2022 走看看