美文网首页
[NLP] ERNIE-GeoL 包含地理信息的预训练模型

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

作者: nlpming | 来源:发表于2022-04-14 23:13 被阅读0次

    1. 简介

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

    2. ERNIE-GeoL 训练数据构建

    • 首先建立一个异构图G=(V, E, O_V, R_E)
      1)V表示结点的集合;
      2)E表示边的集合;
      3)O_V 表示结点结点类型的集合,主要包括两类结点:Query, POI
      4)R_E 表示边类型的集合,包含三种关系: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的训练样本,假设游走的长度为n,则一条训练样本为:
      D = (v_1, v_2, ..., v_n ),对于三种不同类型的边使用不同的随机游走概率。其中,|N(e_{v,u})| 表示结点u相邻结点中相应边的数量。\lambda_i 表示不同边对应的权重。
    随机游走概率.png

    3. ERNIE-GeoL 模型结构

    • ERNIE-GeoL模型结构中,主要包括两个组件:多层双向transformer encoder层和基于transformer的聚合层(TranSAGE)。TranSAGE聚合层其实就是一个mult-head attention层,输入是每个结点通过transformer encdoer层生成的CLS token对应的隐向量。
    ERNIE-GeoL 模型结构.png
    • 下述公式中,j表示第j个head,Q-Linear, K-Linear表示线性投影层。最终输出层h_{CLS}隐向量用于geocoding任务,h_{context}隐向量用于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意图分类任务使用h_{CLS}向量接一个全连接层做分类任务,评估指标采用的是准确率。

    5.2 Query-POI匹配任务

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

    参考资料

    相关文章

      网友评论

          本文标题:[NLP] ERNIE-GeoL 包含地理信息的预训练模型

          本文链接:https://www.haomeiwen.com/subject/tgdzsrtx.html