SqueezeLM 的想法,压缩输入句子潜变量,生成下一句子

又搞了一段时间。还是感觉LongNet那种空洞注意力做编码器有搞头。
RetNet等AFT方法,直接生成太长的句子感觉有点难度,不过可以一句句生成,每次生成短句,这样感觉比较合适。

启发

受 MemroyTransformer 和 GLM 启发
想了一个类似T5的设计,包含编码器和解码器
只使用拼接和 CausalSelfAttention ,不使用 CrossAttention
可以等价省去 T5的解码器 里面的交叉注意力层

设计思路

流程文字

设定x输入为 1234567890
设定y目标为 0987654321
每个数字都是一个 token预先设定压缩比例为 0.3,即输入长度为10的token,后面会附加上3个压缩token
------------------编码器部分
输入序列
1234567890
在后面填入3个c压缩token,
得到1234567890ccc
经过 GPT2_Layer xN,使用ROPE绝对位置编码
取出后面3个c压缩的潜变量,作为编码器输出------------------
解码器部分
设定序列
0987654321
在前面填入s开始token,作为解码器输入序列
s0987654321
在后面填入e结束token,作为解码器输出序列
0987654321e获得 s0987654321 的 emb,然后在前面拼接上编码器的输出 c压缩潜变量
得到 cccs0987654321 的潜变量
经过 GPT2_Layer xN,使用ROPE绝对位置编码
移除前面的c压缩潜变量
得到 s0987654321 的潜变量
经过 output_embedding,获得解码器输出概率
将 解码器输出概率 与 解码器输出序列 0987654321e 计算Loss对 Loss 计算 Backward

流程图
在这里插入图片描述

已进行试验

也做了一些简单的实验,在不成方圆的 中日互译任务上。
与PF6(GPT_style)24层模型做对照。

PF6
ck44,1024维度,24层Decoder,验证准确率是 0.8251

SqueezeLM
ck47,1024维度,16层Encoder,8层Decoder,压缩率1/4,验证准确率是 0.8095
ck48,1024维度,12层Encoder,12层Decoder,压缩率1/5,验证准确率是 0.8050
ck49,1024维度,6层Encoder,6层Decoder,压缩率1/5,验证准确率是 0.8006
ck50,1024维度,6层Encoder,6层Decoder,压缩率1/10,验证准确率是 0.7896

其中,这几个权重拥有几乎相同的参数量ck44,ck47,ck48
参数量为260M

不过确实,相同参数量下,验证分数相比GPT类的,确实差了一点点

如果是训练过程中,使用随机压缩率,在大的区间,例如0.1-0.9之间随机变化,收敛会非常慢
如果让使用小区间,0.3-0.5,收敛速度也有点慢。
如果使用固定压缩率,例如0.3,收敛速度是最快的

扩展想法

  1. Encoder 上使用CausalAttention,每一个C压缩token可能包含了层级的关系,可能像矩阵的奇异值分解的那样。保留的奇异值越多,就越能还原原始矩阵
  2. C压缩token里面,可能储存了一部分答案,而不只是输入序列的压缩向量。如果把Encoder层设置为16,Decoder层数设置为8,可能可以让Decoder更多地负责生成句子能力,Encoder更加地负责生成目标句子的意义。
  3. 可以像DeepFake双头解码器那样。实现一对多翻译器,一个Encoder接着多个Decoder。实现另外一种多语言翻译模式,可以有效隔离不同语言,避免混淆。
  4. 解码器修改,或许可以换成RWKV或RetNet之类的AFT模型,从而实现O(1)自循环预测。
  5. 解码器目的修改,不要求解码器生成长篇大论,只需要生成一句话,然后再把生成这句话附加到编码器输入,再生成压缩潜变量,再由解码器生成下一句话。

变体

更之前,有设计过一个变体,是编码器和解码器并行的,每个编码器层的输出都会收集起来。
然后在解码器部分,每层解码器输入都会拼接上 来自编码器的输出。每经过一个解码器层后,就把之前的拼接上的编码器输入的给切掉,再拼接下一个编码器层的输出。数据处理非常麻烦。
不过幸好,初步训练后,发现这个很麻烦的操作,并不能增加分数,训练速度和分数都不够直接把编码器输出拼接到第一层解码器输入那样高。
所以该变体被存档了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的JSON操作

官网地址 1. MySQL json介绍 As of MySQL 5.7.8, MySQL supports a native JSON data type defined by RFC 7159 that enables efficient access to data in JSON (JavaScript Object Notation) documents. Automatic validation of JSON documents stored in JSON columns. …

MobaXterm通过SSH访问Ubuntu服务器遇到的一个问题

在Windows下的MobaXterm界面配置完ubuntuIP以后显示access denied,排查发现是因为在ubuntu那边忘记安装了SSH Serve,安装过程如下: 第一步:安装所需包 让我们从打开终端输入一些必要命令开始。 注意,在安装新的包或…

牛客 排座椅(贪心)

上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳。 同学们在教室中坐成了 M 行 N 列&…

C语言枚举与联合体详解

本篇文章带来枚举与联合体相关知识详细讲解! 如果您觉得文章不错,期待你的一键三连哦,你的鼓励是我创作的动力之源,让我们一起加油,一起奔跑,让我们顶峰相见!!! 目录 一…

TCP/IP协议详解(二)

目录内容 TCP协议的可靠性 TCP的三次握手 TCP的四次挥手 C#中,TCP/IP建立 三次握手和四次挥手常见面试题 在上一篇文章中讲解了TCP/IP的由来以及报文格式,详情请见上一篇文章,现在接着来讲讲TCP/IP的可靠性以及通过代码的实现。 在TCP首部的…

Xilinx AXI VIP使用教程

AXI接口虽然经常使用,很多同学可能并不清楚Vivado里面也集成了AXI的Verification IP,可以当做AXI的master、pass through和slave,本次内容我们看下AXI VIP当作master时如何使用。 新建Vivado工程,并新建block design,命…

postgresql四种逻辑复制的状态

准备 CreateCheckpoint,或者bgwriter启动时,或者创建logicalreplicationslot时都会调用LogStandbySnapshot 记录一个XLOG_RUNNING_XACTS类型的日志。日志中记录了所有提交的事务的xid(HistoricSnapshot) 启动(SNAPBUILD_BUILDING_SNAPSHOT&…

C# 匿名方法和Lambda表达式

一.匿名方法 1.匿名方法的演变 匿名方法是为了简化委托的实现,方便调用委托方法而出现的,同时,匿名方法也是学好lambda表达式的基础。在委托调用的方法中,如果方法只被调用一次,这个时候我们就没有必要创建具名方法&…

HCIP OSPF的优化总结

OSPF优化 OSPF优化主要目的就是为了减少LSA的更新量,而可以实现者这效果有两种方法 1、路由汇总,可以减少骨干区域的LSA更新量; 2、做OSPF特殊区域,可以减少非骨干区域的更新量。 OSPF的汇总分为两种 1、域间路由汇总 区域间…

专访伊士曼中国区高管赵志伟:以创新应对新能源汽车后市场变化

受访人:伊士曼高性能膜事业部中国区商务总监赵志伟 新能源汽车发展至规模化阶段,以贴膜、保养维修为主的后市场产业迎来快速崛起,新能源消费者在汽车贴膜、改装和养护领域也表现出比燃油车更高频的需求度。 作为一家全球特种材料公司&#x…

【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入介绍基本介绍类图出场角色 案例实现案例一类图代码实现 案例二类图代码实现 外观模式在Mybatis源码中的应用总结文章说明 案例引入 在家庭影院中,要享受一场电影,需要如下步骤: 直接用遥控器:统筹各设备开关开…

WPF实战学习笔记27-全局通知

新建消息事件 添加文件:Mytodo.Common.Events.MessageModel.cs using Prism.Events; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Diagnostics;namespace Mytod…

蓝海卓越计费管理系统远程命令执行

活着,就要时刻准备承受磨难! 漏洞描述 蓝海卓越计费管理系统存在命令调试页面,导致攻击者可以远程命令执行 漏洞复现 访问 debug.php页面 远程调试命令执行 /debug.php漏洞证明 文笔生疏,措辞浅薄,望各位大佬不吝…

P1427 小鱼的数字游戏

题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字 a i a_i ai​(长度不一定,以 0 0 0 结束),记住了然后反着念出来(表示结束的数字 0 0 0 就不要念出来了)。这对小鱼的那点…

iOS--通知、代理、单例模式总结

通知 概要 观察者和被观察者都无需知晓对方,只需要通过标记在NSNotificationCenter中找到监听该通知所对应的类,从而调用该类的方法。并且在NSNotificationCenter中,观察者可以只订阅某一特定的通知,并对齐做出相应操作&#xf…

最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践

前言 知识点 定级:入门级GlusterFS 和 Heketi 简介GlusterFS 安装部署Heketi 安装部署Kubernetes 命令行对接 GlusterFS 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100…

【Java面试丨消息中间件】Kafka

一、kafka是如何保证消息不丢失 1. 介绍 使用kafka在消息的收发过程都有可能会出现消息丢失 (1)生产者发送消息到broker丢失 (2)消息在broker中存储丢失 (3)消费者从broker接收消息丢失 2. 生产者发送消…

在其他jdk语言中调用java

JVM中运行的各种语言底层互通,先天上就具备混合编程的优势。Java在JVM中的老大地位不可撼动,所以诸如Groovy,Kotlin,Scala,Clojure等都可以无痛调用。 文章目录 在Groovy中调用Java在Kotlin中调用java在scala中调用jav…

小程序picker 在苹果手机不兼容 bug,按month时在iPhone 显示不正确及自动定位时间问题

如下图&#xff1a;点击弹出时间列表&#xff1a;日历控件点击选择显示1年1月 解决: 加上起始时间字段 <picker mode"date" value"{{date}}" start"1970-09-01" end"2030-09-01"></picker> 问题二&#xff1a; 还是&a…

【MySQL】事务与隔离级别详解

【MySQL】事务 事务的概念为什么要有事务引擎对事务的支持事务的提交方式事务的操作准备正常事务操作&#xff1a;启动、回滚、提交非正常事务总结 事务的隔离级别隔离性隔离级别隔离级别的查看设置隔离级别会话级别全局级别 隔离级别的具体体现读未提交 Read Uncommitted读提交…