小知识,大挑战!本文正在参与“ 程序员必备小知识 ”创作活动
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
先上论文地址
Bandyopadhyay S, Lokesh N, Murty M N. Outlier aware network embedding for attributed networks[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 12-19. Bandyopadhyay S, Vivek S V, Murty M N. Outlier Resistant Unsupervised Deep Architectures for Attributed Network Embedding[C]//Proceedings of the 13th International Conference on Web Search and Data Mining. 2020: 25-33.
1.背景介绍
现有的属性图上节点的embedding研究有了很大进展,往往利用深度学习,流行的gcn获得了很大的突破,但是如果属性图本身有异常点,这些异常点会严重影响最后的embedding学习结果。本文就是在属性图上学习异常点感知的embedding表示。
2.异常定义
首先,这篇文章定义了什么样子是异常(我觉得这一步是论文后续发展的关键,定义好一个合理异常,才有后面的工作)
同一种颜色属于一个community。正常情况下一个commnuity的团体在属性和结构上更加相似(紧密)。 异常a(结构异常):属性上属于红色的community(正常),结构上和其它community的节点有连接。 异常b(属性异常):结构上属于红色的community(正常),属性上和其它community的属性比较相似,也就是说在 只从属性上看, 这个节点并不完全遵从红色社区的模式。 异常c(综合异常):节点上属于绿色社区,属性上属于蓝色社区。也就是在 属性上和结构上都存在异常。
3.问题定义
G = (V,E,C), where V = {v1,v2,··· ,vN} ,A是邻接矩阵(N_N),C是内容矩阵(N_K), 图上的研究问题的一个通病A是非常稀疏的,本论文的问题是想要学习好的向量表示的同时做出异常检测工作。(有些异常检测方法无法针对稀疏性换模型)最终获得节点的低维表示。 该问题是个无监督场景(没有任何异常标签信息)下的异常检测问题。下面无论内容还是结构异常检测部分,都是基于重构损失的。
4模型
4.1 Learning from the Link Structure
A是邻接矩阵。G是低维表示,即我们想要最终学习到的。H是个变换矩阵。 动机是这样的:目前表示学习获得的隐向量,损失函数是基于重构损失,也就是上面的式子平方项。但是因为这种学习只能够记住大部分的模式,异常点的定义本身就是与其它点“differ significant from others”,异常点可能对这个损失做出了很大的贡献,因此作者的想法就是 让异常点 对最终的损失做出较小的贡献。极端情况下我们擦除这些异常点,不就是一个很好的表示学习过程了吗?
4.2Learning from the Attributes
一样的想法
4.3 Connecting Structure and Attributes 上面是单独考虑结构或者属性。我理解 上面2个损失函数可以分别对a异常和b异常做出很好的结果。针对第三种异常,联合异常。如果单看属性,不存在异常。如果单看结构,不存在异常。同时考虑就存在异常了。因此:对结构特征和属性特征做约束,因为是一个节点的不同表示,具有约束性。
G和U可能不对齐。因此 Embedding Transformation and Procrustes problem 乘了一个带约束的正交矩阵做 特征对齐!!! 也就是 Procrustes problem(百度了一下经常用于图像领域的pixel 对齐). 个人理解对W不做约束也行,后面就没闭式解了,估计作者也试过~
4.4 联合损失
4.5 更新 固定其它参数,一次更新一个。 4.6 G, H, U, V G的更新:
求个导数=0,高等代数基础就可以推出来。 其它类似
4.7 更新W
转换成了 Procrustes problem,直接闭式解。 4.8 更新 O 转换成了带有等式约束的拉格朗日问题。
高等代数知识求解~ 4.9 算法流程: ONE
5. 实验!!!!
初始化:G和U用矩阵分解得到的表示。 数据集
异常点设置方式(注入异常): 1.计算每类节点的class 分布 2.根据概率选择一类节点当作结构上的异常 3.在这类节点中种植一个节点,让这个节点(m+10%)的边和别的类别相连。m是这个类别下的平均度数。 4.内容和这个类别语义上相同。(the content of the structural outlier node is made semantically consistent with the keywords sampled from the nodes of the selected class) 下游任务实验结果: 异常检测任务,节点分类,节点聚类 Outlier Detection, Node Classification Node Clustering
AANE算法有时候和它相当
SEANO是个半监督,但是没有这篇文章的好。但是AANE在citeseer数据集表现更好。 后面要看下这个算法。
6 总结和贡献:!
1.第一篇 异常点感知的embedding学习。(说白了就是在学习向量的时候考虑异常点的影响) 2.用了Procrustes problem解决对齐问题。 、 3.实验表现很好
7.接下来作者继续做了一些改进型的工作发在了wsdm上。
作者分别提出了2个算法Done和Adone。 贡献点在于 1.用一个AE的隐向量代替了G和U。 2.用判别器去代替Procrustes problem,通过最小化判别器的损失,让2个AE生成出来的隐向量维度对齐!!!很聪明!!!
实验: 异常检测任务:
dominant效果很好,是个半监督的方法,后面要看下~
有异常的时候Adone就很好~ 节点分类
因为作者在DONE的基础上提出了对抗性模块,所以验证了adversial模块的有效性!
专注机器学习与风控算法前沿进展,分享数据挖掘比赛,机器学习,反作弊,推荐系统等技术文章。 快来关注我一起学习呀!