[NLP] ERNIE-GeoL 包含地理信息的预训练模型

1. 简介

  • ERNIE-GeoL由百度地图团队发表在KDD2022上,是一种融合了地理位置信息的预训练模型。ERNIE-GeoL模型的预训练数据来自于事先构建好的异构图(heterogeneous graph),异构图包含了丰富的地理信息。并且在2021年ERNIE-GeoL模型已经部署在百度地图服务中。
时空数据用于训练PTMs.png

2. ERNIE-GeoL 训练数据构建

  • 首先建立一个异构图:
    1)表示结点的集合;
    2)表示边的集合;
    3) 表示结点结点类型的集合,主要包括两类结点:Query, POI
    4) 表示边类型的集合,包含三种关系:Query与POI之间点击关系、POI起终点共现关系、POI位置近邻关系

2.1 POI结点和Query结点

  • Query结点,主要由文本信息组成;
  • POI结点,包含以下几种信息:1)POI名称;2)POI地址;3)POI类别。 通过分隔符[SEP]将几种信息隔离开来, 类似BERT模型中使用的方法,只是包含三种类型的信息。
POI结点信息.png

2.2 异构图边关系

  • 异构图边关系包含三种:1)Query与POI之间点击关系;2)POI起终点共现关系;3)POI位置近邻关系;
  • Query与POI之间点击关系: 通过搜索日志获取Query-POI之间的点击关系,每个POI取Top4搜索Query,并连接Query-POI之间的边;
  • POI起终点共现关系: 用户移动信息产生POI到访的搜索日志,那么起点POI和终点POI可以用于构建起终点共现关系。使用一个2-gram滑动窗口,在用户到访序列中滑动构建POI之间的起终点关系;
  • POI位置近邻关系: POI之间如果空间位置很近的话,会存在一定的关联。因此论文中将地球表面划分成网格,如果两个POI落在同一个网格中则建立他们之间的近邻关系。论文中使用S2 geometry库构建网格,选择S2库是因为它使用球面投影来避免平面投影带来的失真,从而保持地球的正确拓扑结构。S2库支持31个level构建网格,文中在构建近邻关系的时候选择level=15,大概覆盖的范围是200mx200m。
异构图构建.png

2.3 随机游走采样

  • 通过随机游走算法进行采样生成ERNIE-GeoL的训练样本,假设游走的长度为,则一条训练样本为:
    ,对于三种不同类型的边使用不同的随机游走概率。其中, 表示结点相邻结点中相应边的数量。 表示不同边对应的权重。
随机游走概率.png

3. ERNIE-GeoL 模型结构

  • ERNIE-GeoL模型结构中,主要包括两个组件:多层双向transformer encoder层和基于transformer的聚合层(TranSAGE)。TranSAGE聚合层其实就是一个mult-head attention层,输入是每个结点通过transformer encdoer层生成的CLS token对应的隐向量。
ERNIE-GeoL 模型结构.png
  • 下述公式中,表示第个head,表示线性投影层。最终输出层隐向量用于geocoding任务,隐向量用于MLM任务。
    TranSAGE聚合层计算过程.png

    CLS隐向量集合.png

4. ERNIE-GeoL 预训练任务

  • ERNIE-Geol预训练任务包含两个:MLM任务和Geocoding任务。
  • MLM任务: 采用的是一个whole word mask策略。使用百度地图成分分析模块,对句子进行分析识别出地理实体词。文档中的15%的地理实体词会被mask掉,其中70%的概率会被替换成[MASK] token,10%的概率会被替换成一个拼写错误的词(论文认为query中的词未在poi名称中出现是一个拼写错误的词),10%的概率保持该词不做任何变化。
  • Geocoding任务: 主要用于学习poi文本和地理坐标之间的关系。geocoding任务是预测最终poi是属于哪个S2网格,任务设置level=22此时覆盖的范围是2mx2m的网格。此时S2网格的数据非常的巨大,直接预测网格id是不现实的。所以论文采用一种方式对S2网格进行编码,如下图所示偶数level和奇数level之间的长度是一样的,只是最后一个字母有差别。所以最终,问题转化成预测三个label的问题:即偶数level最后一个字符、奇数level最后一个字符、和他们倒数第二个字符。
Geocoding网格token表示.png
Geocoding任务目标.png

5. 下游任务

5个下游任务.png

5.1 Query意图分类任务

  • Query意图分类任务在POI搜索中扮演中重要的角色,文中定义了四种搜索意图:1)搜索特定的POI;2)搜索特定类型的POI;3)搜索地址;4)公交路线规划;
  • 抽取线上6000条真实地Query数据并进行人工标注。Query意图分类任务使用向量接一个全连接层做分类任务,评估指标采用的是准确率。

5.2 Query-POI匹配任务

  • Query-POI匹配任务,主要用于识别POI列表中哪个POI与当前Query更加相关。文中定义了四种相关性:1)POI与Query精确匹配;2)高度相关;3)弱相关;4)不相关。 为了构建相关的数据集,随机抽取一些搜索Query,对于每一个Query从Top10排序结果中随机选取6个相关POI,另外随机抽取4个不相关POI。然后让人工给这10个POI打上相关性匹配标签。也是使用向量用于Query-POI匹配任务。

5.3 地址成分分析任务

  • 地址成分分析任务主要是对地址进行解析,打上对应的成分标签。百度地图设计了22个成分类型:9个是不同级别的地理区域,2个用于区分道路,3个用于区分不同类型POI,5个用于表示POI详细位置,另外3个附加词。在百度地图,基于规则的Geocoding系统和POI搜索中Query理解模块,都依赖于地址成分分析模块。
  • 为了构建该任务的数据集,文中使用了两个数据源:一个来自于百度地图geocoding服务每天处理的送货数据,另外一个来自于搜索日志中的Query数据,之后让标注人员对这两部分数据进行标注。
  • 该任务使用的是ERNIE-GeoL + CRF的结构,评估指标选用的是F1 score。

5.4 Geocoding任务

  • Geocoding任务的主要目标是给定一个地理文本输出其地理坐标。Geocoding任务是地图的一个基础服务,geocoding的输出结果能够给POI搜索服务提供重要特征。我们将百度地图geocoding服务处理处理的地址作为我们的训练集,通过geocoding服务处理得到坐标之后,就可以得到这个地址对应的S2 token。
  • 通过上述的方式可以构造大量的训练样本,因为geocoding服务不能做到100%正确,因此标注了2000条数据作为验证集和测试集。文中使用Accuracy@Nkm作为评估指标,意思是计算预测误差在N km之内的占比。

5.5 POI推荐任务

  • POI推荐任务,主要是给定用户历史访问的POI,推荐一个用户下一次可能访问的POI列表。文中使用了6个月百度地图北京的POI访问数据。使用一个滑动窗口在POI序列滑动,随机生成长度为3-6的子序列。子序列中最后一个POI作为label,其他POI作为历史POI。ERNIE-GeoL作为特征编码器,上层也是使用一个双塔模型。

6. 实验设置及结果分析

  • 数据集:文中使用了3个月的百度地图搜索日志,异构图包含4千万POI结点,1.2亿Query结点,1.75亿Query-POI点击关系,15.74亿POI起终点关系,3.63亿POI位置近邻关系。使用随机游走算法在异构图随机游走生成训练集,共包含8亿的训练数据,大约包含4千亿单词。每个训练样本包含10个结点。
  • baseline模型:BERT, RoBERTa,ERNIE
实验结果.png

7. 可视化分析

POI t-SNE降维分析.png
image.png

image.png

参考资料

  • 论文:ERNIE-GeoL: A Geography-and-Language Pre-trained Model and its Applications in Baidu Maps
    https://arxiv.org/pdf/2203.09127.pdf

你可能感兴趣的:([NLP] ERNIE-GeoL 包含地理信息的预训练模型)