UniLM模型简单介绍

news/2024/10/18 2:27:23/

目录

一、概要

二、深入扩展

2.1 预训练任务

2.2 模型精调 


一、概要

如果将基于Transformer的双向语言模型(如BERT模型中的掩码语言模型)与单向的自回归语言模型(如BART模型的解码器)进行对比,可以发现,两者的区别主要在于模型能够使用序列中的哪部分信息进行每一时刻隐含层表示的计算。对于双向 Transformer,每一时刻隐含层的计算可以利用序列中的任意单词;而对于单向Transformer,只能使用当前时刻以及“历史”中的单词信息。基于这一思想,研究人员提出了单向Transformer结构的 统一语言模型 Unified LanguageModel,UniLM)。
不同于BART模型的编码器--解码器结构,UniLM只需要使用一个Transformer网络,便可以同时完成语言表示以及文本生成的预训练,进而通过模型精调应用于语言理解任务与文本生成任务。它的核心思想是通过使用不同的自注意力掩码矩阵控制每个词的注意力范围,从而实现不同语言模型对于信息流的控制。

二、深入扩展

2.1 预训练任务

UniLM 模型提供了一个统一的框架,可以利用双向语言模型、单向语言模型和序列到序列语言模型进行预训练。其中,基于双向语言模型的预训练使模型具有语言表示的能力,适用于语言理解类下游任务;而基于单向语言模型以及序列到序列语言模型的预训练任务使模型具有文本生成的能力。下图展示了不同的预训练任务对应的自注意力掩码模式

假设第 L 层 Transformer 的自注意力矩阵为AL,在UniLM中,AL可由下式计算

式中,QL、KL分别为第L层上下文表示经线性映射后得到的查询、键分别对应的向量:d是向量的维度。UniLM在原始自注意力计算公式的基础上增加了掩码矩阵M ∈ R(维度:n x n) ,n是输入序列的长度,M 是一个常数矩阵,定义如下

通过控制M,便可以实现不同的预训练任务。

(1)双向语言模型。输入序列由两个文本片段组成,由特殊标记 [EOS] 相隔。与 BERT 模型类似,在输入文本中随机采样部分单词,并以一定概率替换为[MASK]标记,最后在输出层的相应位置对正确词进行预测。在该任务中,序列中的任意两个词都是相互“可见”的,因此在前向传播过程中都能够被“注意”到。反映在Transformer模型中,则是一个全连接的自注意力计算过程,如图(a)所示。此时,对原始自注意力掩码矩阵不作任何变化,即M=0。
(2)单向语言模型。包括前向(自左向右)与后向(自右向左)的自回归语言模型。以前向语言模型(图(b))为例,对于某一时刻隐含层表示的计算,只能利用当前时刻及其左侧(前一层)的上下文表示。相应的自注意力分布是一个三角矩阵,灰色代表注意力值为0。相应的,掩码矩阵M在灰色区域处的值为负无穷(−∞)。
(3)序列到序列语言模型。利用掩码矩阵,还可以方便地实现序列到序列语言模型,进而应用于条件式生成任务。此时,输入序列由分别作为条件以及目标文本(待生成)的两个文本片段构成。条件文本片段内的词相互“可见” ,因此使用全连接的自注意力;对于目标文本片段,则采用自回归的方式逐词生成,在每一时刻,可以利用条件文本中的所有上下文表示,以及部分已生成的左侧上下文表示,如图(c)所示。在有关文献中,也将该结构称为前缀语言模型(PrefixLM)
与BART模型的编码器--解码器框架不同,这里的编码与解码部分共享同一套参数,而且在自回归生成的过程中,与条件文本之间的跨越注意力机制也有所区别。

2.2 模型精调 

(1)分类任务。对于分类任务,UniLM的精调方式与BERT类似。这里使用双向Transformer编码器(M=0),并以输入序列的第一个标记[BOS]处的最后一层隐含层表示作为文本的表示,输入至目标分类器,再利用目标任务的标注数据精调模型参数。
(2)生成任务。对于生成任务,随机采样目标文本片段中的单词并替换为[MASK]标记,精调过程的学习目标是恢复这些被替换的词。值得注意的是,输入序列尾部的[EOS]标记也会被随机替换,从而让模型学习什么时候停止生成。

http://www.ppmy.cn/news/47221.html

相关文章

c# 通过webView2模拟登陆小红书网页版,解析无水印视频图片,以及解决X-s,X-t签名验证【2023年4月15日】

一、c# WebView2简介 1.一开始使用WebBrowser,因为WebBrowser控件使用的是ie内核,经过修改注册表切换为Edge内核后, 发现Edge内核版本较低,加载一些视频网站提示“浏览器版本过低“,”视频无法加载“。 2.WebBrowser…

交互式shell脚本编程2

当你在终端环境下安装新的软件时,你可以经常看到信息对话框弹出,需要你的输入,比如:RHEL/CentOS自带的setup,对话框的类型有密码箱、检查表、菜单等等。他们可以引导你以一种直观的方式输入必要的信息,使用…

精通 TensorFlow 1.x:16~19

原文:Mastering TensorFlow 1.x 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如何实现目标。—…

UDS统一诊断服务【五】诊断仪在线0X3E服务

文章目录 前言一、诊断仪在线服务介绍二、数据格式2.1,请求报文2.2,子功能2.3,响应报文 前言 本文介绍UDS统一诊断服务的0X3E服务,希望能对你有所帮助 一、诊断仪在线服务介绍 诊断仪在线服务比较简单,其功能就是告诉…

【JavaEE】File、InputStream和OutputStream的使用

1.File 在计算机中目录结构如下: 而File就表示一个目录或者一个普通文件。 File表示目录: File表示普通文件: 我们先来看File的构造方法: 构造器描述File(File parent, String child)根据父目录 孩子文件路径,创…

玄子Share - 精选三套 JavaScript 练手项目

玄子Share - 精选三套 JavaScript 练手项目 1. 50 Projects in 50 Days - HTML/CSS and JavaScript 50 天 50 个前端练手项目 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dCWO6V2G-1682076972984)(./assets/image-20230421192413713.png)] [外链…

VUE3的使用

文章目录 一、Vue3基础语法1、Vue开发准备2、Vue的模板语法3、条件渲染4、列表渲染5、事件处理6、表单输入绑定 二、Components组件1、组件基础2、组件交互3、自定义事件的组件交互4、组件生命周期5、引入第三方组件 三、网络请求及路由配置1、Axios网络请求2、Axios网络请求封…

【rustdesk】rust入门及 windows尝试编译

rustup 微软建议用vs code开发 下载了64位的版本: vs code 插件 rust-analyer 介绍Better TOML,用于更好的展示.toml文件Error Lens, 更好的获得错误展示 One Dark Pro, 非常好看的Vscode主题 CodeLLDB, debugger程序 安装