2020 图算法工程师面试基础、要点
来源:图与推荐
本文约2700字,建议阅读5分钟。
为你总结面试必备的知识要点,助你面试成功。
这段时间面试连连,几轮下来的感受就是,好点儿的公司对细节抠的很细,希望求职者能够对使用的算法以及这个算法的其它触类旁通的领域都能够有系统的理解。
本文原创作者知乎链接为:
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的几种分类:
有向无向;
有权无权;
同构异构;
当然还有有环无环等分类方式,这里列出常见的分类方法,需要注意的是,graph 的这几种分类之间是相互重叠而不是互斥的。详细可见【图算法:概览
(https://zhuanlan.zhihu.com/p/64984300)】
关于基本的图特征的构造
total degree:即与节点 V 相邻节点的数量,称为节点 V 的度;
degree centrality:度中心性,即标准化的度,是使用节点 V 的度除以全图节点的数量得到的用以衡量节点度的相对大小,类似于结构化数据中做 0-1 标准化的操作;
number of triangles:节点所在三角形的数量,即三个节点互相连通则称为一个三角形;
local clustering score:局部聚类得分,2*v 节点所在三角形的数量/(节点 V 的度的平方-节点 v 的度),用于衡量节点 V 的两个邻节点互为邻居的概率;
Eigenvector Centrality:特征向量中心度(详细可见:所谓特征向量中心度 http://blog.sina.com.cn/s/blog_4c9dc2a10101b4y3.html)
pagerank:特征向量中心度的一种变体,相对前者,pagerank 要出名多了。(详细可见:机器学习经典算法之PageRank https://www.cnblogs.com/jpcflyer/p/11180263.html)。pagerank能够实现的功能就是,“如果你的朋友很famous,那么你也会famous”。
比如说脉脉这个社交软件,它计算的就是个人在职场的影响力。如果你的工作关系是李开复、江南春这样的名人,那么你的职场影响力一定会很高。反之,如果你是个学生,在职场上被链入的关系比较少的话,职场影响力就会比较低。
同样,如果你想要看一个公司的经营能力,也可以看这家公司都和哪些公司有合作。如果它合作的都是世界 500 强企业,那么这个公司在行业内一定是领导者,如果这个公司的客户都是小客户,即使数量比较多,业内影响力也不一定大。
除非像淘宝一样,有海量的中小客户,最后大客户也会找上门来寻求合作。所以权重高的节点,往往会有一些权重同样很高的节点在进行合作。
betweenness centrality:中介中心性,中介中心性指的是一个结点担任其它两个结点之间最短路的桥梁的次数。一个结点充当“中介”的次数越高,它的中介中心度就越大。如果要考虑标准化的问题,可以用一个结点承担最短路桥梁的次数除以所有的路径数量。
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.
编辑:文婧
2020 图算法工程师面试基础、要点相关推荐
- 软件测试工程师面试基础题(应届生和测试小菜必备)最基础的面试题
前言:[文章末尾给大家留下了大量的福利] 什么是测试? 答: (美国电器和电子工程师协会)IEEE提出的软件工程标准术语,使用人工和自动手段来运行或测试某个系统的过程,目的在于检验它是否满足规定的 ...
- 2020最新测试面试基础(一)
为什么要在一个团队中开展软件测试工作? 为了验证软件是否可用,是否可上线,同时避免此问题线上发生,避免公司发生损失 一份测试计划应该包括哪些内容? 项目背景.项目简介.项目目的.测试范围.人员分工.资 ...
- 2020运维面试基础问题总结(面完持更9.19)
目录 Linux基础 1.进程与线程间的区别 2.进程间的通信方式 3.CPU负载与使用率的关系 4.硬链接与软连接的区别 5.Linux系统的七个启动级别 6.Linux 开机启动过程 7.raid ...
- Java开发工程师面试-基础
文章目录 JDK.JRE.JVM有什么区别? 常用数字类型的区别 写出程序执行结果,并说明原因 编程题:随机生成30~100之间的整 面向对象的三大特征 接口和抽象类的异同 静态和实例变量(方法)的区 ...
- Java面试通关要点汇总集(基础篇之基本功,非原作者)
Java面试通关要点汇总集(部分解答) 说明 如果你有幸能看到的话, 1.本文整体框架来自@阿里.梁桂钊的博文,总结的非常不错.值得我们学习,它的博客部分做了解答. 2.由于自己能力有限,没能实现心中 ...
- 技术面试要点 —— 如何准备微软开发工程师面试?
最近越来越多的开发工程师朋友来找我帮忙内推,同时也会问我面试的流程和面试要点.所以今天我想聊一下微软开发工程师的面试要点和面试技巧,希望能帮助开发工程师朋友更好地准备面试. 『面试流程』 开发工程师的 ...
- 从编程基础到系统设计,这份数据工程师面试宝典全都有 | 资源
木易 发自 凹非寺 量子位 报道 | 公众号 QbitAI 面试职位之前,往往需要进行充分的准备,从理论知识到专业技能. 但是,作为数据工程师,每个人的侧重方向都不尽相同.那么,面对浩如烟海的准备材料 ...
- 视频教程-2020年软考信息安全工程师_基础知识精讲软考视频培训课程-软考
2020年软考信息安全工程师_基础知识精讲软考视频培训课程 河北师范大学软件学院优秀讲师,项目经理资质,担任操作系统原理.软件工程.项目管理等课程教学工作.参与十个以上百万级软件项目管理及系统设计工作 ...
- 2020年软考信息安全工程师_基础知识精讲免费视频-任铄-专题视频课程
2020年软考信息安全工程师_基础知识精讲免费视频-1480人已学习 课程介绍 根据新的软考信息安全工程师考试大纲和作者长期辅导考试的经验,对考试中的所有知识点进行了详细的讲解,为考试 ...
最新文章
- Datawhale浙大分享(附投票结果)
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )
- java paint方法哪个周期调用_关于一段java程序的小问题,paint函数是什么时候执行的,没有调用啊...
- 六大环节,教你如何从 0 到 1 搭建一场 A/B 测试
- VTK:超树网格源用法实战
- C# Winform 带优美外观的UserControl控件GroupBox
- C# 实验三 判断一个字符、判断三角形、千名学生、a+aa+aaa+aaaa、求数列相加、约瑟夫环
- [ZJJOI2013]K大数查询 整体二分
- asp:dropdownlist如何去掉三角箭头_科目二倒库打轮早会压库角,教练9图详解如何快速调车避免压线?...
- php获取本机ip外网地址,php获取本机ip(远程IP地址)
- ghost系统优化、精简、封装,光盘制作所有工具下载!!!
- udp push java ddpush_DDPush首页、文档和下载 - 任意门推送 - OSCHINA - 中文开源技术交流社区...
- 华三路由交换配置命令_h3c路由器配置命令
- Oracle 12c 中修改PDB数据库的日志归档模式
- excel 打开文件后自动卡死的解决方法
- 阿里软件测试面试记录
- Mysql中使用逗号隔开多张表生成的表实例
- 如何在ps中将图片素描化
- 生物信息学数据库资源 {#database}
- PPT里的图如何高质量的插入Word
热门文章
- 宏观经济学思维导图_巧用思维导图,提升初三化学专题复习课实效
- 070103_条件概率与贝叶斯公式,独立性
- 使用Angular CLI从蓝本生成代码
- [Zjoi2015]诸神眷顾的幻想乡
- 《C语言编程初学者指南》一2.9 理解运算符优先级
- Window 下 Redis 安装
- OpenStack平台功能性测试工具Tempest安装
- 如何查看crontab的日志记录
- Foundation ActionScript 3.0.With Flash CS3 And Flex ..
- python可变数量参数的平均值_Python Pandas:计算可变行数的滚动均值(移动平均值)...