Adaptive LLM Transformer²

看到了一个不错的论文https://arxiv.org/pdf/2501.06252


TRANSFORMER-SQUARED: SELF-ADAPTIVE LLMS 挺有意思的,是一家日本AI公司SakanaAI的论文(我以前写过他们的不训练提升模型的能力的文章,感兴趣可以去翻)它家有Lion Jones坐镇,也是attention is all you need的作者之一,这篇论文的继承了他们家的传统,重视算法(没什么卡,2024年中旬好像才有了第一台自己的8卡H100),脑洞比较大。

主要说用新的微调SVF方法来解决传统的SFT,尤其是基于Lora的问题,传统SFT包括lora的主要问题是,分不清下游任务,而且灌注知识的时候对原始权重也有影响,好不容易灌进去新的东西,对别的任务类型也会有影响。

于是论文用了SVD的方法,Singular Value Decomposition) 将一个矩阵分解形成3个矩阵的点乘的积W = UΣV^⊺。

图片

就是把W分解了,分解成一个U一个V一个Σ,其中 U ∈ R^(m×r) 和 V ∈ R^(n×r) 是半正交矩阵,(U和W你就可以理解为Lora里的低秩分解)Σ ∈ R^(r×r) 是一个对角矩阵,其对角线上的元素是 W 的奇异值,奇异值 σᵢ 表示对应的奇异向量对(uᵢ, vᵢ)对输出的贡献程度。

这么做的目的是干啥呢?是为了后面的SVF奇异值微调 (Singular Value Fine-tuning)做准备

图片

SVF 不是直接修改权重矩阵 W,而是学习一个向量 z ∈ R^r,然后通过修改 W 的奇异值来修改 W 的行为


 

对于每个权重矩阵 W,SVF 学习一个向量 z,该向量独立地修改 W 的每个奇异分量,产生一个新的权重矩阵 W' = UΣ'V^⊺,其中 Σ' = Σ ⊗ diag(z),diag(z) 是一个对角矩阵,其对角线上的元素为 z 的元素

这种方法通过缩放奇异值,而不是直接操作权重矩阵,来对权重矩阵 W 进行精细的控制,SVF 可以使用强化学习 (RL) 进行训练,直接针对任务性能进行优化,无需依赖大型的带有“解释性文本”的数据集


 

说人话就是把W权重给劈开了,更细化了,比如W权重矩阵里面可能有管数学的,管语文的,管历史的

在训练的时候SVF 学习一组z向量,每个下游任务对应一个z向量,然后通过z不就是能算出来Σ吗,Σ是相当于一个信号放大器,比如要训语文的时候z就是[0,1,0.7], 训练数学的时候就是[1,0.5,0]这种的, SVF利用RL在预定义的下游任务集上学习这些z。

学习到的z向量使Transformer^2能够适应各种新的下游任务,同时仅引入最少量的附加参数,就学z就够了。

训练完了就到了推理了,推理的时候先通过prompt之类分析你到底是啥任务,比如历史,就给历史的z,然后拿z+原来的基础网路就能推理了

想法还是挺天才的,效果也是不错,模型参数越大,效果越好

图片

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

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

相关文章

优化代码性能:利用CPU缓存原理

在计算机的世界里,有一场如同龟兔赛跑般的速度较量,主角便是 CPU 和内存 。龟兔赛跑的故事大家都耳熟能详,兔子速度飞快,乌龟则慢吞吞的。在计算机中,CPU 就如同那敏捷的兔子,拥有超高的运算速度&#xff0…

linux 函数 sem_init () 信号量、sem_destroy()

&#xff08;1&#xff09; &#xff08;2&#xff09; 代码举例&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <semaphore.h> #include <unistd.h>sem_t semaphore;void* thread_function(void* arg) …

分库分表技术方案选型

一、MyCat 官方网站&#xff0c;技术文档 MyCat是一款由阿里Cobar演变而来的用于支持数据库读写分离、分片的数据库中间件。它基于MySQL协议&#xff0c;实现了MySQL的协议和能力&#xff0c;并作为代理层位于应用和数据库之间&#xff0c;可以隐藏底层数据库的复杂性。 原理…

【智力测试——二分、前缀和、乘法逆元、组合计数】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int mod 1e9 7; const int N 1e5 10; int r[N], c[N], f[2 * N]; int nr[N], nc[N], nn, nm; int cntr[N], cntc[N]; int n, m, t;void init(int n) {f[0] f[1] 1;for (int i …

SSM开发(八) MyBatis解决方法重载

目录 一、Mybatis能否支持方法重载? 二、解决 MyBatis 方法重载问题的几种方法 解决方法一: (注解方式) 将重载方法命名为不同的方法名 解决方法二:采用@SelectProvider注解 解决方法三:使用 MyBatis 的 标签和动态 SQL 来构建不同参数的 SQL 查询 三、总结 一、Myb…

IBM DB2常用命令(windows版),包含建库、建表、增删改查等命令

安装IBM DB2可以参考我上篇博客&#xff1a;IBM Db2 & IBM Db2 Data Management Console(可视化管理工具)的下载与安装&#xff08;简洁版&#xff09;-CSDN博客 使用管理员权限打开cmd窗口 G: cd G:\IBM\SQLLIB\BIN db2cmd首先&#xff0c;在服务端需要配置好服务名、监…

Flutter Scaffold 页面结构

Material是一套设计风格&#xff0c;提供了大量的小部件&#xff0c;这里用Material风格搭建一个常见的应用页面结构。 创建Material应用 import package:flutter/material.dart;class App extends StatelessWidget {overrideWidget build(BuildContext context) {return Mat…

【C++】string类(上):string类的常用接口介绍

文章目录 前言一、C中设计string类的意义二、string类的常用接口说明1. string类对象的常见构造2. string类对象的容量操作2.1 size、capacity 和 empty的使用2.2 clear的使用2.3 reserve的使用2.4 resize的使用 3. string类对象的访问及遍历操作3.1 下标[ ] 和 at3.2 迭代器it…

一文讲解Java中的ArrayList和LinkedList

ArrayList和LinkedList有什么区别&#xff1f; ArrayList 是基于数组实现的&#xff0c;LinkedList 是基于链表实现的。 二者用途有什么不同&#xff1f; 多数情况下&#xff0c;ArrayList更利于查找&#xff0c;LinkedList更利于增删 由于 ArrayList 是基于数组实现的&#…

[原创](Modern C++)现代C++的关键性概念: <format>标准库提供的格式化std::format

常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse、C Bui…

STM32 DMA+AD多通道

接线图 代码配置 ADC单次扫描DMA单次转运模式 uint16_t AD_Value[4]; //DMAAD多通道 void DMA_Config(void) {//定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 DMA_InitTypeDef DMA_In…

浅谈《图解HTTP》

感悟 滑至尾页的那一刻&#xff0c;内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂&#xff0c;但此刻却觉得她是如此清晰而可爱的呈现在哪里。 介绍中说&#xff0c;《图解HTTP》适合作为第一本网络协议书。确实&#xff0c;它就像一座桥梁&#xff0c;连接…

Alibaba开发规范_异常日志之日志规约:最佳实践与常见陷阱

文章目录 引言1. 使用SLF4J日志门面规则解释代码示例正例反例 2. 日志文件的保存时间规则解释 3. 日志文件的命名规范规则解释代码示例正例反例 4. 使用占位符进行日志拼接规则解释代码示例正例反例 5. 日志级别的开关判断规则解释代码示例正例反例 6. 避免重复打印日志规则解释…

自动化软件测试的基本流程

一、自动化测试的准备 1.1 了解测试系统 首先对于需要测试的系统我们需要按照软件需求说明书明确软件功能。这里以智慧养老系统作为案例进行测试&#xff0c;先让我们看看该系统的登录界面和用户管理界面。 登录界面&#xff1a; 登录成功默认界面&#xff1a; 用户管理界面…

Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)

文章目录 一、环境准备二、安装Ollama2.1 访问Ollama官方网站2.2 下载适用于Windows的安装包2.3 安装Ollama安装包2.4 指定Ollama安装目录2.5 指定Ollama的大模型的存储目录 三、选择DeepSeek R1模型四、下载并运行DeepSeek R1模型五、常见问题解答六、使用Chatbox进行交互6.1 …

Android 深入探究 JSONObject 与 JSONArray:Android 中的数据解析与数组操作全解析

在现代软件开发中&#xff0c;数据的传输和存储形式多种多样&#xff0c;而 JSON&#xff08;JavaScript Object Notation&#xff09;以其简洁、易读、便于解析的特点&#xff0c;成为了最常用的数据格式之一。在 Android 开发中&#xff0c;JSONObject和JSONArray同样是处理 …

机器学习day5

自定义数据集 使用tensorflow框架实现逻辑回归并保存模型&#xff0c;然后保存模型后再加载模型进行预测 代码 import tensorflow as tf import numpy as np# 1. 自定义数据集 data [[-0.5, 7.7], [1.8, 98.5], [0.9, 57.8], [0.4, 39.2], [-1.4, -15.7], [-1.4, -37.3], [-1…

计算机网络中常见高危端口有哪些?如何封禁高危端口?

保障网络安全&#xff0c;从封禁高危端口开始&#xff01; 在计算机网络中&#xff0c;端口是设备与外界通信的“大门”&#xff0c;但某些端口因常被黑客利用而成为高危入口。封禁这些端口是防御网络攻击的关键一步。本文将详解 10个常见高危端口&#xff0c;并提供多平台封禁…

ZK-ALU-在有限域上实现左移

先看在实数域上实现左移, 再看在有限域上的实现 左移-整数 计算机中的左移计算&#xff08;<< 操作&#xff09;通常由处理器的硬件电路直接支持&#xff0c;因此效率非常高。在编程语言中&#xff0c;左移操作可以通过位移运算符&#xff08;例如 C/C 中的 <<&a…

CommonJS

CommonJS 是由 JavaScript 社区于 2oo9 年提出的包含模块、文件、IO、控制台在内的一系列标准。Node.js 的实现中采用了 CommonJS 标准的一部分&#xff0c;并在其基础上进行了一些调整。我们所说的 CommonJS 模块和 Node.js 中的实现并不完全一样&#xff0c;现在一般谈到 Com…