论文阅读之Enhancing Transformer with Sememe Knowledge(2020)

2023-11-04

论文阅读

文章建议结合两种简单的方法将义原知识整合:
1)基于语言学假设,我们将聚合义原嵌入添加到每个词嵌入中以增强其语义表示;
2)我们使用义原预测作为辅助任务,帮助模型更深入地理解单词语义。

文章验证了我们的方法在与词级和句子级语义密切相关的几个中文 NLP 任务上的有效性。在预训练和微调的一般设置之后,实验表明使用半增强型 Transformer 在所有任务上都有一致的改进。

文章还发现,义原增强模型可以用较少的微调数据实现相同的性能,这是可取的,因为数据注释过程总是耗时且昂贵。



在这里插入图片描述
模型的基本架构图如上。
思路简单,使用义原embedding的均值来增强词向量的embedding(二者相加),然后经过原始的transformer对句子进行编码,然后进行多任务的学习:对下一个词的的义原的预测、对下一个词的预测、下游任务的学习。

Transformmer-SE

看看公式:
在这里插入图片描述
Xs就是义原的embedding,w就是词的embedding,左边的结果就是通过义原增强后的embedding了。

Transformer-SE就是这么简单,在embeding做点手脚即可。

Transformer-SP

义原预测任务旨在预测下一个词的义原,可以表述为多标签分类任务。受多任务学习 (Caruana, 1997; Collobert et al, 2011) 的启发,文章在 Transformer-SP 的语言建模任务之外添加了义原预测任务。

这项任务挑战了模型整合义原知识的能力,并且可以被视为语言建模的补充任务,因为预测下一个单词的义原与理解语义密切相关,而且它通常比直接建模下一句话。

就是说Transformer-SP在训练方式上做了手脚,或者就是说修改了损失函数,让损失考虑到义原的预测,从而使得模型训练获得义原信息从而模型对其他任务的效果。

我们先看一下变量的定义:
在这里插入图片描述
(w1,…,wT)表示输入的单词
然后经过embedding层向量化后就表示为H0 = (w1,…,wT)
其中T表示单词的个数,D表示的应该就是d_model(也就是相当于embedding_size)
h1L 表示第1个单词的向量表示
h2L 表示第1、2个单词的向量表示…以此类推

公式如下:
在这里插入图片描述
在这里插入图片描述
其中的hL 表示的是句子经过transform后的embedding表示。
p(w, s)表示的是下一个词w的义原s的概率。
那么义原预测的损失函数定义如下:
在这里插入图片描述

在这里插入图片描述
其中S是所有义原的集合。
g(wt,s)表示0,1二值函数,用于表示这个义原是否是下一个词的义原。
因为词的义原并不是唯一的,因此这就是多标签分类的损失函数了。

那么Transformer-SP的损失函数就可以定义如下了:
在这里插入图片描述
LSL表示下游任务的损失函数
LLM表示预测下一个词的损失函数
LPRE表示预训练的损失函数
L就表示优化了的下游任务的损失函数,也就是Transformer-SP的改进之处了。

那么transformer-SP就是说,在下游任务损失函数的基础上,加入了LPRE这么一个预训练的损失函数,就是使用预测下一个词和预测下一个词的义原这个任务来帮助词向量的训练,使得词向量融入义原知识,也就是论文标题说的义原知识增强的第二种方式了。

这篇文章代码写的挺正常的,可读性还是蛮强的,我们可以看看代码:
这是模型设置的两种损失函数
在这里插入图片描述
在这里插入图片描述
这个就是一个多标签的分类损失函数。
在这里插入图片描述
这就是交叉熵损失函数,分类常用的损失函数。

那么看一下模型损失函数调用的那块的代码:
在这里插入图片描述
loss_lm就是预测下一个词的损失函数,经典分类问题
loss_sp就是预测下一个词的义原的损失函数,多标签分类问题

实验结果

在这里插入图片描述
Transformer-SEP就是词进行义原增强,也用改进了的损失函数,即综合了SE和SP两种方法。

从实验结果看得出来,义原确实能够提示效果。

总结

读了这篇文章,大概知道义原的用法了。SE就是直接词向量加入义原embedding,SP是通过损失函数来进行义原融入词向量,SEP则是结合前两者。因此使用义原的精髓应该就是能够考虑义原embedding的训练吧。

参考

Enhancing Transformer with Sememe Knowledge
https://github.com/yuhui-zh15/SememeTransformer

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文阅读之Enhancing Transformer with Sememe Knowledge(2020) 的相关文章

随机推荐

  • WEB安全-RCE代码及命令执行漏洞

    WEB安全 RCE代码及命令执行漏洞 摘要 RCE概述 远程代码执行 eval 案例 远程命令执行 system shell exec 与 exec 案例 靶场案例 墨者靶场黑盒功能点命令执行 应用功能 墨者靶场白盒代码及命令执行 代码分析
  • make编译内核驱动模块

    make编译内核驱动模块 方法一 obj m hello world o KDIR home july7 prj Firefly RK3308 kernel 内核源码路径 PWD shell pwd 获取当前目录的变量 all make C
  • java 获取当前服务器CPU,JVM,内存等信息

    借助于 Hyperic Sigar 是一个收集系统各项底层信息的工具集 没啥技术含量 参考 https support hyperic com display SIGAR Home 下载地址 http sourceforge net pro
  • #ifndef 与 #pragma once 的使用方法

    ifndef 与 pragma once 都能让头文件只编译一次 避免重复编译 新版本的代码建议使用 pragma once 这样只要编译一次就可以了 但是很多老编译器不支持该语法 很尴尬 ifndef则需要每次使用的时候进行一次编译 速度
  • 概率论【离散型随机变量】--猴博士爱讲课

    第二课 离散型随机变量 1 6 求分布律里的未知数 2 6 根据X的分布律写Y的分布律 一维随机变量函数的分布 注意 3 6 根据 X Y 的分布律写Z的分布律 4 6 根据 X Y 的分布律写边缘分布律 边缘分布 5 6 X与Y相互独立时
  • python训练预测_python中NARX的示例-训练和预测 - python

    是否有使用Python中的NARX模型训练和预测 推断数据的端到端示例 有图书馆PyNeurgen NARX PyNeurgen library 但是PyNeurgen的文档不是很完整 该OP似乎已经编写了Keras实现 但是代码缺少用于推
  • CLion2021.2配置qt环境

    文章参考文档 使用CLion开发Qt Qt5 9 1 CLion2020 3 Clion中Cmake构建出现复制文件错误的解决办法 Clion 创建 Qt UI Class 踩坑 文章目录 1 前言 2 QT安装与环境变量的配置 3 工具链
  • Spring系列之@EnableAsync & @Async 实现方法异步调用

    1 本文内容 详解 EnableAsync Async 主要分下面几个点进行介绍 作用 用法 获取异步执行结果 自定义异步执行的线程池 自定义异常处理 线程隔离 源码 原理 2 作用 spring容器中实现bean方法的异步调用 比如有个l
  • 代码随想录算法训练营19期第44天

    完全背包 视频讲解 带你学透完全背包问题 和 01背包有什么差别 遍历顺序上有什么讲究 哔哩哔哩 bilibili https programmercarl com E8 83 8C E5 8C 85 E9 97 AE E9 A2 98 E
  • 数据工具sqoop用法之mysql与hive数据导入导出

    一 pom org apache hive hive jdbc 1 1 0 org apache hadoop hadoop common 2 6 0 org mybatis mybatis 3 4 6 mysql mysql connec
  • 别再无聊地显示隐藏了,Vue 中使用过渡动画让你的网页更有活力

    点击上方 前端Q 关注公众号 回复加群 加入前端Q技术交流群 Vue 是一款流行的前端框架 支持过渡动画的实现是其中的一项重要特性 在 Vue 中 使用过渡动画可以为用户提供更加友好的用户体验 下面我将为大家介绍一下子如何在 Vue 中实现
  • Python报错解决:local variable ‘xxx‘ referenced before assignment

    local variable xxx referenced before assignment 指的是 xxx 局部变量没有被声明 一般有如下两种情况 第一种是变量没有赋值 def test print a 这里a没有赋值 应该改成如下形式
  • 漂亮大气的企业文化宣传ppt模板

    和PPT打交道多年 从什么都不会的小白 到如今PPT制作小达人 关于有哪些好用的PPT模板资源 我还是很清楚的 学做ppt的时间成本确实是挺高的 因为这是一个需要长期磨练的技术活 故而 如若我们时间赶 任务重的话 可不必亲力亲为将自己磨练成
  • 如何使用Java操作TensorFlow

    简介 机器学习在全球范围内越来越受欢迎和使用 它已经彻底改变了某些应用程序的构建方式 并且可能会继续成为我们日常生活中一个巨大的 并且正在增加的 部分 没有什么包装且机器学习并不简单 它对许多人来说似乎非常复杂并常常令人生畏 像谷歌这样的公
  • Dubbo 与 Spring Cloud 完美结合

    概述 可能说起来Dubbo 很多人都不陌生 这毕竟是一款从2012年就开始开源的Java RPC框架 中间由于各种各样的原因停止更新4年半的时间 中间只发过一个小版本修了一个小bug 甚至大家都以为这个项目已经死掉了 竟然又在2017年9月
  • 【入门基础】写给小白看的入门级 Java 基本语法

    众所周知 Java 是一门面向对象的编程语言 它最牛逼的地方就在于它是跨平台的 你可以在 Windows 操作系统上编写 Java 源代码 然后在 Linux 操作系统上执行编译后的字节码 而无需对源代码做任何的修改 01 数据类型 Jav
  • 高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

    幂等概念来自于数学 在计算机科学中 幂等表示一次后 或多次请求某一资源 应该有同样的影响效果 在业务表现上一般是同样的数据效果 下面就常用的业务场景 来聊聊幂等的技术方案 数据层 索引与事务 根据业务需要 给表添加唯一索性或组合索引 防止产
  • python中import requests是什么意思_pycharm 中 import requests 报错

    一 使用Pycharm来抓取网页的时候 要导入requests模块 但是在pycharm中 import requests 报错 原因 python中还没有安装requests库 解决办法 1 先找到自己python安装目录下的pip 2
  • 【项目实战】与单元测试有关的Maven插件介绍 - maven-surefire-report-plugin插件说明

    一 maven surefire report plugin插件介绍 maven surefire report plugin插件是Maven的一个插件 它用于生成基于JUnit和TestNG的单元测试报告 该插件通过解析测试结果文件 生成
  • 论文阅读之Enhancing Transformer with Sememe Knowledge(2020)

    文章目录 论文阅读 Transformmer SE Transformer SP 实验结果 总结 参考 论文阅读 文章建议结合两种简单的方法将义原知识整合 1 基于语言学假设 我们将聚合义原嵌入添加到每个词嵌入中以增强其语义表示 2 我们使