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࿰…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Oracle11g安装包
Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
Java中栈的多种实现类详解
Java中栈的多种实现类详解:Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...

二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...