热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bert获得词向量_SemBERT:BERT的语义知识增强

点击上方“MLNLP”,选择“星标”公众号重磅干货,第一时间送达转载自公众号|Andy的写时间至此,GLUEleaderboard上模型基

点击上方“MLNLP”,选择“星标”公众号

重磅干货,第一时间送达

c94b155b04aba93cd55d9d46e0587840.png

转载自公众号 | Andy的写时间

至此,GLUE leaderboard 上模型基本都公布了细节,上次是阿里的 ALICE,这次是云从科技和上交的 SemBERT。重新看了看 Leaderboard,却发现榜首已不是 RoBERTa,而成了 Adv-RoBERTa(ensemble),来自微软和UMD(马里兰大学)。

6e6bbd83b15ac42f90d7b8f8b7b19032.png

Adv-RoBERTa 只公布了粗略信息

We adopt an improved adversarial training approach to fine-tune the pre-trained RoBERTa_large models on each task, using the same data and number of training iterations as RoBERTa.Results are based on ensembles of 7 models.

大概就是在 RoBERTa 下游任务中加入了对抗性训练方法,结果是七个模型集成的表现,单一模型表现可能还得等更详细结果放出。

回归正题,关于 SemBERT,其实是 NLP 发论文很通常的一条路线,就是对某些通用模型,将语言学的一些知识给结合进去,从而获得些提高,之前研究过的 linguistic-aware NMT 就是差不多思路。而 SemBERT 就是想把 Semantic Role Labeling (SRL,语义角色标注) 的知识给结合进 BERT(实际不是从 BERT 模型内部)。

关于如何结合 SRL 的知识,我想请大家从第一人称视角出发,来思考这个问题。这样之后发文也可以参考这种思路。

获得 SRL 标注

首先对于一批语料,我们怎样获得 SRL 的知识呢?

  • 方法一,花钱请标注;

  • 方法二,找现成的最好 SRL 标注工具,自动标注。

显然方法一过于昂贵,而方法二更加经济实惠,而且想要多少有多少。

于是用目前最好的模型,参考 Deep Semantic Role Labeling: What Works and What’s Next,在英文的 OntoNotes v5.0 上训练,然后获得 SRL 标注器,在 CoNLL-2012 测试集上 F1 分能达到 84.6%。

融合多种语义标签(Semantic Labels)

对于同一句话,语义标签有多种标法,可以将这个当作从不同角度看待一句话

29f841a186a82d919aff2912cd97d2e0.png

于是首先就需要解决如何获得各个角度语义标签更深层次信息,还有怎么将不同角度的语义标签信息结合到一起

针对第一条获得更深层次信息,我们只需要对各个标签建立向量表,取向量,之后简单地用一个双向 GRU(BiGRU) 模型来获得深层的全局双向信息即可。

3d29d2108c46ab9eb1b030eb5a6991e1.png

对于第二条,怎么将不同角度语义信息结合起来,就更简单,直接拼接起来,过个全连接层

d12b795b82c9af9e9e0b6a82fd4480fc.png

最后就获得了需要文本对应语义标签信息。

f453342c606dca4442ba05aa8f28e8c6.png

对齐 SRL 和 BERT 的粒度

有了每个词对应的 SRL 信息向量后,最简单的结合就是直接和 BERT 的输出向量拼起来。但当你准备拼的时候,就突然发现问题了,这特么怎么对不上,就像你拿着两孔插头去插三孔插座一样。

aed9050a1a0b9e48c161749abdae9586.png

原来 BERT 词表用了 BPE(Byte Pair Encoding),会把词分成子词(subword)。

于是需要思考一下,怎样将子词向量结合成一个词向量。当然,粗暴一些就直接 pooling 一下,average 或 max 都随意。

要高级一些,那就用 RNN 或 CNN,可以像这里一样,直接用 CNN 卷一下,过个 ReLU,再 max pooling

a99a20d3b5bcd10f2c64b74ccb62a84b.png

于是就获得了各个词所对应的 BERT 输出向量了。

合体!!!

粒度对齐,就到了最后一步了,将 SRL 向量和 BERT 向量合体!

I have a Sem, I have a BERT, I have a SemBERT.

582b69ce0e61b28d714014dd308a4233.png

两个向量直接拼起来就行了,然后喂到下游任务 finetune 什么。

b821427017a83464eb23d3c4d88eb24b.png

推荐阅读:

方程组的几何解释 [MIT线代第一课pdf下载]

常用的 Normalization 方法:BN、LN、IN、GN

PaddlePaddle实战NLP经典模型 BiGRU + CRF详解

2ef3f577e145e2df82b8df4101da9488.png




推荐阅读
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • 在 CentOS 7 系统中,为了扩展根目录(/)的存储空间,本文详细介绍了从虚拟机硬盘扩容到文件系统调整的全过程。通过具体的操作步骤,成功解决了因空间不足导致的 GNOME 桌面无法正常登录的问题,为用户提供了一套完整的解决方案。 ... [详细]
  • 决策树在鸢尾花数据集上对不同特征组合的分类效果分析及模型性能比较
    本文探讨了决策树算法在鸢尾花数据集上的应用,分析了不同特征组合对分类效果的影响,并对模型性能进行了详细比较。决策树作为一种层次化的分类方法,通过递归地划分特征空间,形成树状结构,每个节点代表一个特征判断,最终达到分类目的。研究结果表明,不同特征组合对模型性能有显著影响,为实际应用提供了重要参考。 ... [详细]
  • 数据压缩与编解码技术优化
    编码的种类  编码(Encoding)在认知上是解释传入的刺激的一种基本知觉的过程。技术上来说,这是一个复杂的、多阶段的转换过程,从较为客观的感觉输入& ... [详细]
  • Python彻底搞懂中文乱码问题
    本文转自:https:blog.csdn.netjoyfixingarticledetails79971667感谢作者!前言曾几何时Python中文乱码的问题困扰了我很多很多年,每 ... [详细]
  • SpringCloud配置中心Config 配置报错 Cannot clone or checkout repository
    SpringCloud-config报错Cannotcloneorcheckoutrepository1.创建仓库2.生成到本地3.SpringCloud-yml配置4.启动Clo ... [详细]
  • 如何在jieba分词中加自定义词典_常见中文分词包比较
    1jiebajieba.cut方法接受三个输入参数:需要分词的字符串;cut_all参数用来控制是否采用全模式;HMM参数用来控制是否使用HMM模型ji ... [详细]
  • 上期使用LSTM做短文本分类效果不如CNN,或许有朋友会问什么场景下LSTM能体现出序列性的优势,本期使用双向LSTM-CNNs-CRF实现SequenceLabeling。CRF ... [详细]
  • CCF 100w+奖池大赛启动!百度高级工程师带你玩转NLP 、CV赛题!
    2021年大数据与AI领域年度盛事——第九届CCF大数据与计算智能大赛已开赛近一个月,你的队伍是否已荣登top榜!百度发布NLP领域“千言-问题匹配鲁棒 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 本题库精选了Java核心知识点的练习题,旨在帮助学习者巩固和检验对Java理论基础的掌握。其中,选择题部分涵盖了访问控制权限等关键概念,例如,Java语言中仅允许子类或同一包内的类访问的访问权限为protected。此外,题库还包括其他重要知识点,如异常处理、多线程、集合框架等,全面覆盖Java编程的核心内容。 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 深入解析下一代互联网协议:IPv6在网络架构中的应用与优势
    随着互联网的迅猛发展,IPv4的32位地址资源在2011年2月宣告枯竭,导致互联网服务提供商(ISP)无法再申请新的地址段。为应对这一挑战,下一代互联网协议IPv6应运而生,并在网络架构中展现出显著的优势。本文深入解析了IPv6在提升网络容量、增强安全性及简化管理等方面的独特价值,探讨了其在网络架构中的应用前景和实际效益。 ... [详细]
  • 在 Linux 环境下,深入探讨 GTK+3.0 的高级开发技巧,涵盖组件定制、事件处理及多线程应用等核心内容,帮助开发者提升应用界面的交互性和性能。 ... [详细]
  • OpenCV 2.4.9 源码解析:级联分类器的错误率与尺寸分析 ... [详细]
author-avatar
liunian007
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有