2020 图算法工程师 面试基础、要点

2020 年 8 月 8 日 AINLP

这段时间面试连连,几轮下来的感受就是,好点儿的公司对细节抠的很细,希望求职者能够对使用的算法以及这个算法的其它触类旁通的领域都能够有系统的理解。


本文原创作者知乎链接为 https://www.zhihu.com/people/he-he-he-he-77-19-21

GNN 是近年来 AI 领域最热门的话题之一,但很多人都忽视了基础。

本文参照之前的:我们如何通过图算法来帮助提高机器学习算法的性能?以及【图算法:概览(https://zhuanlan.zhihu.com/p/64984300)】以及之前刘教授出的GNN系统介绍的书的基础知识部分进行总结;

图是一种数据结构,它对一组对象(节点)及其关系(边)进行建模。近年来,利用机器学习分析图形的研究越来越多,由于图的巨大表现力,即图可以作为包括社会科学(社会网络)、自然科学(物理系统、蛋白质-蛋白质相互作用网络、知识图谱)在内的各个领域的大量系统的外延。图作为机器学习的一种独特的非欧几里得数据结构,在 nodes 层面的分析中引起了人们的注意——包括了 node prediction、link prediction 和图聚类。图神经网络(GNNs)是一种基于深度学习的在图域上工作的方法,由于其令人信服的性能和高可解释性,GNN 近年来已成为一种广泛应用的图数据分析方法。在下面的段落中,我们将说明 GNN 的基本动机。

首先,GNNs 是由卷积神经网络(CNNs) LeCun 等人驱动的。CNN 能够提取和组合高分辨率特征的多尺度局部空间特征,这导致了几乎所有机器学习领域的突破和深度学习的革命。当我们深入到 CNN 和计算机视觉应用时,我们发现 CNN 的成功之处在于:局部连接、权值共享和多层的使用。这些对于解决图域问题也是非常重要的,因为:

  • 图是最典型的局部连接结构;
  • 与传统的谱图理论相比,权值共享降低了计算成本;
  • 多层结构(这里的意思是不同尺寸的卷积核)是处理不同层次模式的关键,它捕捉了不同大小的特征。

另一个动机来自图嵌入,它学习在低维向量中表示图节点、边或子图。在图分析中,传统的机器学习方法通常依赖于手工设计的特性,受到其不灵活和高成本的限制, 遵循表征学习的思想和词嵌入的成功,deepwalk,被认为是第一种基于表示学习的图形嵌入方法,将SkipGram模型应用于生成的随机游走,类似的方法,如node2vec、LINE和TADW也取得了突破,然而,这些方法有两个严重的缺点:

  • 首先,编码器中的节点之间没有共享参数,这导致了计算效率低下,因为它 意味着参数的数量随着节点的数量线性增长
  • 第二,直接嵌入方法缺乏泛化能力,这 意味着它们难以处理动态图或被推广到新图

关于GNN的部分暂时介绍到这边,下面主要总结一下基础知识:

图论:

图通常用 G=(V,E) 来表示, 其中 V 是顶点集,E 是边集,边 e 有两个顶点 u 和 v,被称为 u 和 v 通过 e 连接。在这种情况下,u 被称为 v 的邻居,或者换句话说,这两个顶点是相邻的,请注意,边可以是有向的,也可以是无向的, 如果所有边都是有向图,则图称为有向图,如果所有边都是无向图,则称为无向图。V 的度(degree),用 d(v) 表示,是与 v 连接的边数。

常见的graph的几种分类:

  1. 有向无向;
  2. 有权无权;
  3. 同构异构;

当然还有有环无环等分类方式,这里列出常见的分类方法,需要注意的是,graph 的这几种分类之间是相互重叠而不是互斥的。详细可见【图算法:概览(https://zhuanlan.zhihu.com/p/64984300)】

关于基本的图特征的构造:

  1. total degree:即与节点 V 相邻节点的数量,称为节点 V 的度;

  2. degree centrality:度中心性,即标准化的度,是使用节点 V 的度除以全图节点的数量得到的用以衡量节点度的相对大小,类似于结构化数据中做 0-1 标准化的操作;

  3. number of triangles:节点所在三角形的数量,即三个节点互相连通则称为一个三角形;

  4. local clustering score:局部聚类得分,2*v 节点所在三角形的数量/(节点 V 的度的平方-节点 v 的度),用于衡量节点 V 的两个邻节点互为邻居的概率

  5. Eigenvector Centrality:特征向量中心度(详细可见:所谓特征向量中心度 http://blog.sina.com.cn/s/blog_4c9dc2a10101b4y3.html)

  6. pagerank:特征向量中心度的一种变体,相对前者,pagerank 要出名多了。(详细可见:机器学习经典算法之PageRank https://www.cnblogs.com/jpcflyer/p/11180263.html)。pagerank能够实现的功能就是,“如果你的朋友很famous,那么你也会famous”。

比如说脉脉这个社交软件,它计算的就是个人在职场的影响力。如果你的工作关系是李开复、江南春这样的名人,那么你的职场影响力一定会很高。反之,如果你是个学生,在职场上被链入的关系比较少的话,职场影响力就会比较低。
同样,如果你想要看一个公司的经营能力,也可以看这家公司都和哪些公司有合作。如果它合作的都是世界 500 强企业,那么这个公司在行业内一定是领导者,如果这个公司的客户都是小客户,即使数量比较多,业内影响力也不一定大。
除非像淘宝一样,有海量的中小客户,最后大客户也会找上门来寻求合作。所以权重高的节点,往往会有一些权重同样很高的节点在进行合作。

  1. betweenness centrality:中介中心性,中介中心性指的是一个结点担任其它两个结点之间最短路的桥梁的次数。一个结点充当“中介”的次数越高,它的中介中心度就越大。如果要考虑标准化的问题,可以用一个结点承担最短路桥梁的次数除以所有的路径数量。

  2. closeness centrality:接近中心性,接近中心性需要考量每个结点到其它结点的最短路径的平均长度。也就是说,对于一个结点而言,它距离其它结点越近,那么它的中心度越高。一般来说,那种需要让尽可能多的人使用的设施,它的接近中心度一般是比较高的

最后是图的代数表示:

1. 领接矩阵A

对于一个简单的图 G=(V,E),具有 n 个顶点 V;可以用邻接矩阵来描述图:

显然,当 G 是无向图(实现的时候常当作双向图)时,这种矩阵是对称矩阵,下图中无向图 G5 和有向图 G6  的邻接矩阵分别为 A1 和 A2。

注意区分有向和无向,如果带权,则矩阵中的0-1就会被edge的权重所替代了。

2. 度矩阵D

一般来说,有向图要分出度的度矩阵和入度的度矩阵,但是很多时候为了方便,我们把有向图当作无向图来做,因此常常可以看到,无论是有向还是无向,都是一样计算所有的与节点相连的 edge 的权重之和,注意是权重不是直接计算节点,因为有权图表示不服;(但是应该一些场景的应用下还是会划分为出度和入度的度矩阵的)

3. 拉普拉斯矩阵

L=D-A (详细可见:邻接矩阵与拉普拉斯矩阵 https://blog.csdn.net/void_xinyue/article/details/105305901)

这里有个比较直观的例子:

给定一个graph:

其领接矩阵:

可以看出这是一个无向无权的graph;

则拉普拉斯矩阵为:

对称归一化拉普拉斯:

直接看上面的这个公式更好理解一些,可以看到对称归一化之后,对角元素全为1,之所以进行对称归一化主要是因为对称归一化之后的拉普拉斯矩阵有很多好的性质。

4. 随机游走标准化拉普拉斯矩阵

5. 关联矩阵

关联矩阵即用一个矩阵来表示各个点和每条边之间的关系。

对于一个无向图 G,p 为顶点的个数,q 为边数。bij 表示在关联矩阵中点 i 和边 j 之间的关系。若点 i 和边 j 之间是连着的,则 bij = 1. 反之,则 bij = 0.




欢迎加入AINLP技术交流群
进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注:技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,分享、点赞、在看三选一吧🙏

登录查看更多
25

相关内容

专知会员服务
64+阅读 · 2020年9月24日
专知会员服务
71+阅读 · 2020年8月25日
《神经架构搜索NAS》最新进展综述
专知会员服务
54+阅读 · 2020年8月12日
专知会员服务
41+阅读 · 2020年7月29日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
深度学习算法与架构回顾
专知会员服务
77+阅读 · 2019年10月20日
面经 | 算法工程师面试题汇总
极市平台
12+阅读 · 2019年10月14日
百面机器学习!算法工程师面试宝典!| 码书
程序人生
6+阅读 · 2019年3月2日
简述多种降维算法
算法与数学之美
8+阅读 · 2018年9月23日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
BAT题库 | 机器学习面试1000题系列(第226~230题)
七月在线实验室
9+阅读 · 2017年11月27日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
Arxiv
4+阅读 · 2019年9月5日
Arxiv
23+阅读 · 2018年10月1日
Arxiv
3+阅读 · 2018年2月22日
VIP会员
相关VIP内容
专知会员服务
64+阅读 · 2020年9月24日
专知会员服务
71+阅读 · 2020年8月25日
《神经架构搜索NAS》最新进展综述
专知会员服务
54+阅读 · 2020年8月12日
专知会员服务
41+阅读 · 2020年7月29日
NLP基础任务:文本分类近年发展汇总,68页超详细解析
专知会员服务
57+阅读 · 2020年1月3日
深度学习算法与架构回顾
专知会员服务
77+阅读 · 2019年10月20日
相关资讯
面经 | 算法工程师面试题汇总
极市平台
12+阅读 · 2019年10月14日
百面机器学习!算法工程师面试宝典!| 码书
程序人生
6+阅读 · 2019年3月2日
简述多种降维算法
算法与数学之美
8+阅读 · 2018年9月23日
深度学习面试100题(第81-85题)
七月在线实验室
16+阅读 · 2018年8月6日
机器学习、深度学习 知识点总结及面试题
全球人工智能
17+阅读 · 2018年1月4日
BAT题库 | 机器学习面试1000题系列(第226~230题)
七月在线实验室
9+阅读 · 2017年11月27日
BAT机器学习面试1000题系列(第36~40题)
七月在线实验室
8+阅读 · 2017年10月3日
卷积神经网络(CNN)学习笔记1:基础入门
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月16日
Top
微信扫码咨询专知VIP会员