Pretraining Language Models with Text-Attributed Heterogeneous Graphs
Pretraining Language Models with Text-Attributed Heterogeneous Graphs
EMNLP
推荐指数:#paper/⭐⭐#
贡献:
- 我们研究了在更复杂的数据结构上预训练LM的问题,即,TAHG。与大多数只能从每个节点的文本描述中学习的PLM不同,我们提出了一个新的预训练框架,使LM能够捕获不同节点之间的拓扑连接。
- 作者引入了一个拓扑感知的预训练任务去预测文本图的节点是否在文本图中。这可以使得LM可以利用高阶的信号
- 作者设计了一种文本增强策略来丰富无文本节点的语意信息,以缓解文本不平衡问题
异构文本属性图介绍(TAHGs)
G = ( V , E , U , R , X ) \mathcal{G}=(\mathcal{V},\mathcal{E},\mathcal{U},\mathcal{R},\mathcal{X}) G=(V,E,U,R,X),依次分别代表:节点属性,边,节点类型,边类型,节点文本描述。
模型架构
第一个模块提取目标节点的上下文,比国内通过联合优化LM和异构图神经网络来预测哪些节点涉及文本图。第二个模块是为了引入节点不平衡的文本描述。值得注意的是,当预训练结束之后,我们只使用PLM在下游任务上测试。
拓扑捕获阶段
这一部分,如上所示,我们的目的是捕获节点之间的一阶和高阶信息。
首先,我们定义context图。(及一个节点的邻域图)。 G u K \mathcal{G}_{u}^{K} GuK代表节点u的K阶内邻居集合。当K大于2,及捕获高阶信息。
Context 图预测(Context Graph Prediction)(GCP)
TAHGs包含多阶邻居信息。和大多数PLM对单个文本进行预训练不同,我们提出了上下文图预测来训练LM捕获丰富的关系信息。
首先,我们得到节点V的表征如下:
H G = f H G N N ( G ) ∈ R ∣ V ∣ × d , H^{\mathcal{G}}=f_{HGNN}\left(\mathcal{G}\right)\in\mathbb{R}^{|\mathcal{V}|\times d}, HG=fHGNN(G)∈R∣V∣×d,其初次输入是通过下面的式子(文本编码)得到的。
f H G N N ( ⋅ ) f_{HGNN}(\cdot) fHGNN(⋅)可以表示任何异构图神经网络。
之后,我们编码文本图节点u的描述通过LM:
h L M u = M E A N ( f L M ( X u ) ) ∈ R d , \boldsymbol{h}_{LM}^u=\mathrm{MEAN}(f_{LM}\left(X_u\right))\in\mathbb{R}^d, hLMu=MEAN(fLM(Xu))∈Rd,
为了捕获节点u的异构性,我们引入了一个映射头在PLM的最后一层。下一步,我们预测节点v是否在context 图中:(这是一个二分类问题)
y ^ u , v = sigmoid ( h L M u ⊤ W ϕ ( v ) H v G ) \hat{y}_{u,v}=\operatorname{sigmoid}\left(\boldsymbol{h}_{LM}^{u}{}^{\top}\boldsymbol {W}_{\phi(v)}\boldsymbol{H}_{v}^{\mathcal{G}}\right) y^u,v=sigmoid(hLMu⊤Wϕ(v)HvG)
y u , v = 1 y_{u,v}=1 yu,v=1如果 G u K G_u^K GuK包含v,否则为0。
预训练策略
在这个工作中,我们使用BERT以及R-HGCN。
预测上述所有节点的context graph 概率是很困难的( y u , v y_{u,v} yu,v),因此我们使用负样本采样去优化上述公式。为了生成负样本,我们采样k个邻居对于每个跳,负样本从 V ∖ V u K \mathcal{V}\setminus\mathcal{V}_{\boldsymbol{u}}^{K} V∖VuK中采样,负样本比是5(一个正样本对应5个负样本)。对于GCPtask,我们使用MLM任务去帮助LMs更好的处理文本。最终的优化目标为:
L u = L u M L M + L u C G P = − log P ( X ~ u ∣ X u ∖ X ˉ u ) − ∑ v ∈ V u K log y ^ u , v − ∑ i = 1 5 E v i ′ ∼ P n ( V ∖ V u K ) log ( 1 − y ^ u , v i ′ ) , \mathcal{L}_{u}=\mathcal{L}_{u}^{MLM}+\mathcal{L}_{u}^{CGP}=-\log P(\tilde{X}_{u}|X_{u\setminus\bar{X}_{u}})-\sum_{v\in\mathcal{V}_{u}^{K}}\log\hat{y}_{u,v}-\sum_{i=1}^{5}\mathbb{E}_{v_{i}^{\prime}\sim P_{\boldsymbol{n}}(\mathcal{V}\setminus\mathcal{V}_{\boldsymbol{u}}^{K})}\log\left(1-\hat{y}_{u,v_{\boldsymbol{i}}^{\prime}}\right), Lu=LuMLM+LuCGP=−logP(X~u∣Xu∖Xˉu)−∑v∈VuKlogy^u,v−∑i=15Evi′∼Pn(V∖VuK)log(1−y^u,vi′),
X ~ u \tilde{X}_{u} X~u代表扰动的节点,原始文本的masking rate是40%。 P n ( ⋅ ) P_n(\cdot) Pn(⋅)代表正太噪音分布。
文本增强策略
TAGs中有文本丰富的图,也有textless的图。textless的图不足以反映他们的语意,因此我们涉及了一种文本增强策略来解决这个问题。这个策略首先根据TAHGs中的链接结合其邻居的文本描述,来丰富无文本节点的语意,然后通过LM来增强文本。
具体的是,对于text-rich的节点u,我们可以使用token作为输入: M u M_{u} Mu=
[ C L S ] X u [ S E P ] [\mathrm{CLS}]X_{u}\mathrm{[SEP]} [CLS]Xu[SEP]。对于text-less的节点u,我们可以拼接它的文本和k个邻居采样的文本作为输入: M u M_{u} Mu= X u [ S E P ] X N u 1 [SEP] ... [SEP] X N k [ S E P ] , X_{u}\mathrm{~[SEP]~}X_{\mathcal{N}_u^1}\text{ [SEP] ... [SEP]}X_{\mathcal{N}^k} \mathrm{~[SEP],} Xu [SEP] XNu1 [SEP] ... [SEP]XNk [SEP],
通过如上的增强,我们可以将PLM的输入从 X X X更替为 M u M_u Mu
下游任务的微调
在下游任务中,我们抛弃了HGNN,只使用预训练的LM来生成语意信息通过LM编码器。我们探索了不同的headers(映射头)。对于下游任务,LM是冻结的,只有header会被微调。
实验结果+我自己的分内心:
从表2可以看出,作者提出的GCP好像么有啥特别大的效果(数值上与w/ RGCN对比)。但是,作者的方法又比其他人的方法好一点点,那么,其原因可能是:作者提出的第二部分:文本增强起作用了。这个文本增强的方法,也类似于24年唐杰组的虚拟节点
从该表可以看出,TAS的性能其实比neighbors only 和textless-only两者较高的的高一丢丢。可以猜测,TAS的最大的作用是增强了其的稳定性
相关文章:
Pretraining Language Models with Text-Attributed Heterogeneous Graphs
Pretraining Language Models with Text-Attributed Heterogeneous Graphs EMNLP 推荐指数:#paper/⭐⭐# 贡献: 我们研究了在更复杂的数据结构上预训练LM的问题,即,TAHG。与大多数只能从每个节点的文本描述中学习的PLM不同&…...
什么是将应用放在边缘服务器上创建?应用不是在用户手机上吗?边缘计算究竟如何优化?通过两个问题来辨析
元宇宙应用虽然可以在用户的手机等终端设备上运行,但大部分的计算和数据处理任务并不是完全在手机上完成的。元宇宙的运行需要庞大的计算资源和大量的数据交互,而这些是手机等终端设备难以独自承担的。因此,元宇宙应用需要借助边缘数据中心等…...
uni-app 系统学习,从入门到实战(二)—— 项目结构解析
全篇大概 2000 字(含代码),建议阅读时间 10min 一、UniApp 目录结构详解 UniApp 基于 Vue.js 开发,其目录结构遵循约定大于配置的原则,以下是一个标准项目的核心目录结构: pages # 页面目录(核…...
滴水逆向_引用_友元函数_运算符重载
作业: 运算符号重载实现。 struct Person { public:int x;int y; public:Person(){this->x 10;this->y 20;}Person(int x, int y){this->x x;this->y y;}//申明友元函数void Printf(const Person& p){printf("%d %d",p.x,p.y);}/…...
java医院多维度综合绩效考核源码,医院绩效管理系统,支持一键核算和批量操作,设有审核机制,允许数据修正
医院绩效考核管理系统,java医院绩效核算系统源码,采用多维度综合绩效考核的形式,针对院内实际情况分别对工作量、KPI指标、科研、教学、管理等进行全面考核。医院可结合实际需求,对考核方案中各维度进行灵活配置,对各维…...
科普:HTTP端口80和HTTPS端口443
你会发现,有的网址不带端口号,怎么回事? HTTP协议默认端口:HTTP协议的默认端口是80。当用户在浏览器中输入一个没有指定端口的以http://开头的网址时,浏览器会自动使用80端口与服务器建立连接,进行超文本数…...
uniapp打包生产证书上架IOS全流程
第一步:生成生产证书 上传CSR文件,windows系统电脑无法上传csr文件可以参考这个: windows下创建ios打包证书的详细流程_香蕉云编 下载生产证书 下载下来的cer生产证书在香蕉云编cer文件上传栏上传,然后生成p12文件 生成p12文件…...
山东大学软件学院nosql实验一环境配置
环境:前端vue后端springboot 软件环境: MongoDB MongoDBCompass 实验步骤与内容: 在官网下载安装包(最新版) 配置环境环境变量 在“高级系统设置-环境变量”中,可以将MongoDB添加到环境变量Path中(D:\…...
【2024 CSDN博客之星】大学四年,我如何在CSDN实现学业与事业的“双逆袭”?
前言: Hello大家好,我是Dream。不知不觉2024年已经过去,自己也马上迈入23岁,感慨时间飞快,从19岁刚入大学加入CSDN,到现在大学毕业已经整整四年了。CSDN陪伴我走过了最青涩的四年大学时光,在这里…...
【Windows 同时安装 MySQL5 和 MySQL8 - 详细图文教程】
目录 建议 8.0的版本用图形化工具安装 0.下载 1.安装 2.配置环境变量 1. 下载 mysql8.0 和 mysql5.7的压缩包 2. 解压到本地 3. 安装MySQL8.xx.xx 第一步 配置环境变量 第二步 新建配置文件 第三步 MySQL 数据库初始化 第四步 临时密码 第五步 安装并开启mysql80服…...
[Python学习日记-83] 操作系统的介绍
[Python学习日记-83] 操作系统的介绍 简介 操作系统介绍 简介 本篇开始我们要学习网络编程的进阶知识,即并发编程(多进程编程),从字面意思可以看出,进程就是正在执行的一个过程,也就是说进程是对正在运行…...
软考——WWW与HTTP
1.万维网(world wide web) 是一个规模巨大的、可以资源互联的资料空间。由URL进行定位,通过HTTP协议传送给使用者,又由HTML来进行文件的展现。 它的主要组成部分是:URL、HTTP、HTML。 (1)URL…...
算法-数据结构-图-邻接表构建
邻接表的基本概念 顶点(Vertex): 图中的每个顶点用一个节点表示。 每个顶点存储一个链表或数组,用于记录与该顶点直接相连的其他顶点。 边(Edge): 如果顶点 A 和顶点 B 之间有一条边…...
Docker(Nginx)部署Vue
简介:目标使用docker将vue生成的dist文件,结合nginx生成镜像,然后运行; 1、首选确保vue项目正确运行,并能正确打包dist文件; 2、查看已经生成的dist文件 3、将dist文件打包为rar文件或者zip文件…...
ubuntu22.04的docker容器中安装ssh服务
ubuntu22.04的docker容器中安装ssh服务,以便外部可以连接到容器中操作。 rootnode15:~# cat /etc/issue Ubuntu 22.04.5 LTS \n \l rootnode15:~# docker ps|grep qwen 7d3c36c37d36 vllm/vllm-openai:v0.7.3 "python3 -m …...
卷积这个词在卷积神经网络中应该怎么理解
卷积的定义 数学概念: 在数学上,卷积是一种操作,通常用于两个函数之间的运算。对于图像处理而言,这些函数通常是输入图像和一个称为“卷积核”或“滤波器”的小矩阵。 在CNN中的应用: 卷积操作是通过滑动窗口…...
设计模式教程:迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是设计模式中的一种行为型模式,它允许顺序访问一个集合对象中的元素,而无需暴露集合对象的内部结构。换句话说,迭代器模式提供了一个方法,能让你遍历集合中的元素,…...
C语言学习【1】C语言关于寄存器的封装
目录 1.封装寄存的C语言的语法volatile:unsigned int:*pGpiobOdrvolatile unsigned int * 2.进一步C语言的封装 在嵌入式中,底层一定是操作寄存器,我有一个理念,凡事一定要想清楚,把任何知识点融入自己的理解之中&…...
鸿蒙app 开发中的 == 和 === 的区别
在鸿蒙 App 开发中,如果你使用 JavaScript 或 TypeScript 进行编码, 和 是用于比较值的运算符,它们的主要区别在于比较的严格程度,下面为你详细介绍: 1. (宽松相等运算符) 比较规则࿱…...
【算法】冒泡排序
目录 一、算法概述 二、算法原理 1. 核心思想 2. 排序过程演示 三、标准实现代码 四、时间复杂度分析 五、优化策略 1. 提前终止优化 2. 记录最后交换位置 六、算法特性 七、实际应用 八、扩展思考 九、总结 一、算法概述 冒泡排序(Bubble Sort࿰…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
