前言:本期学习是由datawhale(公众号)组织,由子豪兄讲解的202302期CS224图机器学习的学习笔记。本次学习为图嵌入表示学习,主要通过无监督或半监督的方法让图中的信息表示为指定尺寸向量。不用人工完成特征工程,与下游任务无关。主要针对矩阵分解和随机游走两种方法讲解图嵌入表示学习的过程。
图嵌入特点
输入为图输出为向量。
低纬 向量维度小于节点数
连续 元素均为实数
稠密 不会出现0元素
输出的向量与下游任务无关,由算法自主学习特征。
基本框架
编码器
输入节点,输出向量。
解码器
将向量计算之间的关系,检查是否符合原图的特点。(点之间的关系是否保存完整)
相似度计算方法:随机游走计算两个节点之间重复路径。
![](https://i-blog.csdnimg.cn/blog_migrate/63d7145f5a7b1d43efb0756855feae64.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7b3822a4889416edb3cb8c2fa2090ac0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b6aaaa5298c5de47faed9755dae715e9.png)
编码器解码器组合的目标:
![](https://i-blog.csdnimg.cn/blog_migrate/e977d0afd041e6d8032a2a984adb9857.png)
随机游走算法
将图比作文章,随机游走序列就是句子。每个节点都是单词。随机游走的路径之间进行相似度计算,向量之间的积表示为相似关系。
![](https://i-blog.csdnimg.cn/blog_migrate/23020daf42410e75ffddaa072bf80e6b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/caeecbdfda705c508857ad57f6379365.png)
梯度下降方法让相似度达到最大化的思路是通过最大似然估计的角度,让预测准确度尽可能达到准确度最大值。
![](https://i-blog.csdnimg.cn/blog_migrate/efc8c88da992bcb10b751855af3e7f1f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/283b00c0de8e4f560a9512a4b270b200.png)
![](https://i-blog.csdnimg.cn/blog_migrate/407405cfa28a888a77ad64815293e4fb.png)
为了减少上式计算量,进行如下简化。将对数中分母部分的所有节点简化为部分节点计算(K个)。增加计算速度。
![](https://i-blog.csdnimg.cn/blog_migrate/dfd5e05505c82eeb9ca9983835df693d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/775db4bc74011022b3bea4abb7ed0c3d.png)
梯度优化
可以对每个节点求梯度后进行优化,也可对单一结单优化。
这里推荐折中方法,选择一批节点优化后迭代。
![](https://i-blog.csdnimg.cn/blog_migrate/5a4a7a0d60fd897a01a51ca67995a7d8.png)
Node2Vec方法
Node2Vec其实是有偏二阶随机游走的方法。在随机游走的基础上增加深度和广度的概率偏执。通过偏执完成对下一跳的选择。
![](https://i-blog.csdnimg.cn/blog_migrate/9af94bf63408b3a3c5f8164fc3144f3e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1ed9a9e1eaf74917ec0999c67cf8646.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2761c3bf8dd0db6af02c282c835df2d5.png)
矩阵视角分析图嵌入和随机游走
目标向量的表示
![](https://i-blog.csdnimg.cn/blog_migrate/0a4ecbafe5fda4bfaa4171b41ef152b5.png)
由于向量之间相乘并不是方阵相乘,进行二范数计算后得到相似度。
![](https://i-blog.csdnimg.cn/blog_migrate/ec88df7b431f264fa80104110b9b1d29.png)
随机游走
![](https://i-blog.csdnimg.cn/blog_migrate/227711b01e084adb179c942b69d01e11.png)
Node2vec
![](https://i-blog.csdnimg.cn/blog_migrate/869ab549e2593e0935d4c115d1ed3857.png)
总结
![](https://i-blog.csdnimg.cn/blog_migrate/047f0dfbe4fe49f9b1fc97aa0a536b9d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a4f5e19a0a69085948b21d9279d766df.png)
嵌入整张图
主要分为以下三步
![](https://i-blog.csdnimg.cn/blog_migrate/7d20a45880dee8d4c94595af83e4642d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/796fc6da93e4a3172f7fffe3dc78cb32.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0b854f03d77cf58388dca5e92e59bc98.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82979f16d046031034c911e24a5182d7.png)
核心思路,比如对四个节点连接求另一个节点,将三个节点进行堆叠求平均,再求出新的向量
![](https://i-blog.csdnimg.cn/blog_migrate/1d170c4171f6600422c635a8a37c7d1f.png)