LLM面面观之Prefix LM vs Causal LM
1. 背景
关于Prefix LM和Causal LM的区别,本qiang在网上逛了一翻,发现多数客官只给出了结论,但对于懵懵的本qiang,结果仍是懵懵...
因此,消遣了多半天,从原理及出处,交出了Prefix LM和Causal LM两者区别的更为清楚的说明。
2. Prefix LM
Prefix LM,即前缀语言模型,该结构是Google的T5模型论文起的名字,望文知义来说,这个模型的”前缀”有些内容,但继续向前追溯的话,微软的UniLM已经提及到了。
Prefix LM其实是Encoder-Decoder模型的变体,为什么这样说?解释如下:
(1) 在标准的Encoder-Decoder模型中,Encoder和Decoder各自使用一个独立的Transformer
( 2) 而在Prefix LM,Encoder和Decoder则共享了同一个Transformer结构,在Transformer内部通过Attention Mask机制来实现。
继续展开下Attention Mask机制,马上主题就有解了!
与标准Encoder-Decoder类似,Prefix LM在Encoder部分采用Auto Encoding (AE-自编码)模式,即前缀序列中任意两个token都相互可见,而Decoder部分采用Auto Regressive (AR-自回归)模式,即待生成的token可以看到Encoder侧所有token(包括上下文)和Decoder侧已经生成的token,但不能看未来尚未产生的token。
下面的图很形象地解释了Prefix LM的Attention Mask机制(左)及流转过程(右)。

Prefix LM的代表模型有UniLM、T5、GLM(清华滴~)
3. Causal LM
了解了Prefix LM后,再来看Causal LM就简单的多了~
Causal LM是因果语言模型,目前流行地大多数模型都是这种结构,别无他因,因为GPT系列模型内部结构就是它,还有开源界的LLaMa也是。
Causal LM只涉及到Encoder-Decoder中的Decoder部分,采用Auto Regressive模式,直白地说,就是根据历史的token来预测下一个token,也是在Attention Mask这里做的手脚。
参照着Prefix LM,可以看下Causal LM的Attention Mask机制(左)及流转过程(右)。

Ps(图真是个好东西,一图胜万字呀)
4. 如何选取
两种结构均能生成文本,应该如何选择呢?只能说仁智见仁智。本qiang也搜寻了一番,有一篇google的论文,从理论上推导了Causal LM在情境学习(In-Context Learning)中比不上Prefix LM,感兴趣地客官可以看看论文。
5. 总结
一句话足矣~
前缀语言模型可以根据给定的前缀生成后续的文本,而因果语言模型只能根据之前的文本生成后续的文本。
6. 参考
(1) google T5: https://arxiv.org/pdf/1910.10683v4.pdf
(2) 微软UniLM: https://arxiv.org/pdf/1905.03197.pdf
(3) google理论评估PLM与CLM: https://arxiv.org/pdf/2308.06912.pdf

LLM面面观之Prefix LM vs Causal LM的更多相关文章
- Levenberg-Marquardt迭代(LM算法)-改进Guass-Newton法
1.前言 a.对于工程问题,一般描述为:从一些测量值(观测量)x 中估计参数 p?即x = f(p), ...
- Spring MVC学习笔记——用户增删该查和服务器端验证
建立一个动态web项目,起名为SpringMVC_crud 导包,其中包括jstl的一些包等 1.先写一个User.java,是用户类 文件User.java文件 package org.common ...
- Google proto buffer的安装/使用
protobuf安装/使用原本是要在官网上下载的:http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz可惜已被墙,幸好有好心人提供了以下 ...
- centos php php-fpm install
好记性不如烂笔头,把自己安装的步骤记录下来 1.下载php-5.2.8以及php-5.2.8-fpm-0.5.10.diff.gz,放到/usr/local/src目录 2.解压php-5.2.8到/ ...
- vmware虚拟机下ubuntu 13.04使用zeranoe脚本交叉编译ffmpeg
2013-07-01今天是建党节,习总书记指出,党的建设要以“照镜子.正衣冠.洗洗澡.治治病”为总要求.希望我们的党越来越纯洁,为人民谋福利.言归正传,每次项目中需要编译相应的ffmpeg,都很费时费 ...
- saltstack:使用教程之二高级模块用法Grains、Pillar
1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...
- Spring mvc 数据验证
加入jar包 bean-validator.jar 在实体类中加入验证Annotation和消息提示 package com.stone.model; import javax.validation. ...
- centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展
centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...
- USB HID设备报告描述符详解(转)
转自:http://group.ednchina.com/93/198.aspx. 参考:USB HID usage table 概述: 报告在这里意思是数据传输(data transfer),而 ...
- Nginx:承受3万并发连接数,胜过Apache 10倍
编者按:Nginx是目前比较重要的开源性负载均衡技术,新浪.网易.六间房等很多网站都将Nginx部署进自己的网站系统架构,并解决部分问题.本文是作者长期的实战经验,很有参考价值. 本文是我撰写的关于搭 ...
随机推荐
- 谷粒学院通用工具类R类
import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.HashMap; import ...
- 【C# 技术】C# 常用排序方式
前言 在最近的项目中经常会对C#中的数据进行排序,对于基本数据类型,其排序方式比较简单,只需要调用内置算法即可实现,但对于自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦,所以在本文章中将 ...
- ubuntu 之 安装mysql8
安装 1 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb 2 sudo apt-get update sudo apt ...
- Skywalking(8.7)安装以及docker镜像打包
Skywalking安装以及docker镜像打包 Skywalking版本:apache-skywalking-apm-es7-8.7.0 ES版本:7.17.2 一.下载Skywalking的安装包 ...
- WMTS地图服务每一层级分辨率
目录 1. 概述 2. 详论 2.1. Web墨卡托 2.2. 大地经纬度 3. 参考 1. 概述 WMTS地图服务每一层级的分辨率是多少?关于这个问题以前推算过,但总是忘记了.网上查询又是一堆废话, ...
- TextCNN和TextRNN:原理与实践
1.TextCNN原理 CNN的核心点在于可以捕获信息的局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似N-Gram的关键信息. (1)一维卷积:使用不同尺寸的kernel_size来模 ...
- MySQL篇:bug2_ Navicate无法添加或更新子行-外键约束失败
问题产生原因 Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构. 解决办法 解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 再添加值, 然 ...
- 视频编码耗时长、编码帧发送失败…DVPP视频编码问题典型案例分析
摘要:本期就分享几个关于DVPP视频编码问题的典型案例,并给出原因分析及解决方法 本文分享自华为云社区<DVPP媒体数据处理视频编码问题案例>,作者:昇腾CANN. DVPP(Digita ...
- Nacos 服务状态监听四种写发
监听服务的四种实现方式,以监听 Nacos 服务为例 1. 传统方式 public void subscribe() { try { NamingService namingService = Nam ...
- Filebeat的安装和使用(Windows)
Filebeat是什么 1.Filebeat是什么?Filebeat是用于转发和集中日志数据的轻量级传送工具. Filebeat监视用户指定的日志文件或位置,收集日志事件,并将日志数据转发到Elast ...