• 08-GNN 图机器学习之图神经网络


    图神经网络

    node embedding
    回顾了之前node2vec的例子以及深度学习卷积的一些基础
    浅层encoder的局限性:
    参数数量O(v):节点间没有共享参数,每个节点有自己的embedding
    不能表征未见过的节点
    没有综合考虑节点特征
    本节学习图神经网络,多层的非线性的


    那么,在图中,如何做卷积?
    如果输入是邻接矩阵,那么模型不能适配各种规模的网络;对节点的顺序也没有敏感性


    图的深度学习基础

    起初,对于一个图G
    V:节点集合
    A:邻接矩阵
    X:节点的特征向量
    图卷机网络
    思路:图的邻居定义计算图
    信息传播→计算节点特征


    邻居聚合:局部网络邻居
    intuition:节点通过神经网络,从邻居聚合信息
    intuition:网络的邻居定义计算图→每个节点基于自身的邻居定义计算图

    深度模型:多层结构
    模型可以是任意深度的:
    节点在每一层都有embedding
    第0层的embedding是输入特征x
    第k层的embedding得到的信息是通过经过k跳的节点而得

    关键的区分在于信息通过不同的层是如何聚合的?
    基础的方法:平均+神经网络

    第0层初始化为节点的特征
    公式如下

    那么如何训练模型?定义损失函数?
    模型参数
    W B 
    随机梯度下降,训练得到参数

    非监督的学习
    相似的节点有相似的embedding
    监督学习:训练模型用于节点分类
    例如,药品是否有毒




    模型设计:
    定义邻居聚合函数;定义loss函数;训练:生成节点的embedding





    聚合参数是所有节点共享的
    因此可为未见过的节点生成embedding;甚至是为相近的全新网络生成embedding






    图卷积网络和GraphSAGE

    有比平均更好的聚合方法吗?

    对每一层的embedding进行L2正则化
    不相加而是拼接

    3中聚合方法:平均;池化;LSTM
    小结:


    高效的实现
    通过对稀疏矩阵的操作

    更多的图卷积网络


    Graph Attention Network (GAT)

    所有节点一视同仁

    每个节点的贡献力是否可以使用权重来区分
    例子:
    引用网络


    应用例子
    拼趣:Pinterest采用的是瀑布流的形式展现图片内容,无需用户翻页,新的图片不断自动加载在页面底端,让用户不断的发现新的图片。
    Pinterest堪称图片版的Twitter,网民可以将感兴趣的图片在Pinterest保存,其他网友可以关注,也可以转发图片。索尼等许多公司也在Pinterest建立了主页,用图片营销旗下的产品和服务。
    为每个节点生成一个embedding
    从相邻的节点借用信息


    给用户推荐相关的pins


    使用小贴士
    数据预处理是非常重要的:正则化;变量规模的初始化;网络数据的清洗
    训练优化器
    relu可以获得较好的成效
    输出层不需要激活函数
    每一层需要偏置
    GCN的层在64或128已经很好了,不需要过深
    模型:
    在训练集上需要过拟合!!
    仔细检查loss函数
    仔细检查可视化


























































  • 相关阅读:
    余额宝数据架构阅读
    VS提示This function or variable may be unsafe,The POSIX name for this item is deprecated
    VS中新建QT空项目找不到头文件的问题
    指针
    循环for do while continue break,达夫设备
    GUI程序弹出控制台打印输出信息
    ctime、chrono以及所有和时间有关的内容
    python安装
    文件:fstream,FILE,CFile,filesystem,以及路径目录
    C++异常处理、Dump文件、断言、静态断言、日志文件
  • 原文地址:https://www.cnblogs.com/combfish/p/12271485.html
Copyright © 2020-2023  润新知