【论文笔记】Initializing Models with Larger Ones

Abstract

介绍权重选择,一种通过从预训练模型的较大模型中选择权重子集来初始化较小模型的方法。这使得知识从预训练的权重转移到更小的模型。
它还可以与知识蒸馏一起使用。

权重选择提供了一种在资源受限的环境中利用预训练模型力量的新方法,希望能够成为大模型时代训练小模型的有用工具。

OscarXZQ/weight-selection (github.com)

1 Introduction

神经网络权重的初始化对于其优化至关重要,正确的初始化有助于模型收敛并防止梯度消失等问题。
本文引入一种权重初始化的方法解决该问题,使用大型预训练模型来训练小型模型。

引入了权重选择(weight selection),选择预训练大型模型的权重子集来初始化较小的模型。
使用权重选择来初始化小模型非常简单,与从头开始训练相比,不会增加额外的计算成本。

3 Weight Selection

给定预训练模型,目标是为同一模型系列中较小尺寸的模型获得有效的权重初始化。借用知识蒸馏中的术语,将预训练模型称为教师,将我们旨在初始化的模型称为学生。

3.1 Approach

模型可以通过增加嵌入维度或每个块中的通道数量来加宽,并通过堆叠更多层来加深。
它还使我们能够按照三个步骤执行权重选择:层选择、组件映射和元素选择。
![[Pasted image 20240303151432.png]]

图2:权重选择(Weight Selection),为了初始化预训练模型的较小变体,从预训练模型的相应组件中统一选择参数。

3.1.1 Layer Selection

第一步是从教师模型中选层。对于学生的每一层,教师模型中被选中的层都是用于初始化的数据来源。对于各个同性架构和分层架构,层选择的过程略有不同。

各向同性架构是指神经网络的每一层在整个模型中都表现出一致且统一的分层设计。

分层结构的特点是多尺度表示和嵌入维度的层次结构。分层结构通常具有不同规模和嵌入维度的阶段,如VGG这样的经典卷积网络逐渐减少空间维度,同时增加通道维度,捕获多尺度特征。

对于各向同性架构,我们选择教师的前 N N N层, N N N为学生模型的层数,记作前 N N N层选择(first- N N N selection)。
处理分层结构时,在每一个独立的阶段单独应用前 N N N层选择。

另一种方法是统一层选择(uniform layer selection),即选择教师中均匀间隔的层。

3.1.2 Component mapping

第二步,在学生和教师之间映射组件。上一步获得了从教师到学生的层的映射,将任务简化为用一个教师层初始化一个学生层。
得益于现代神经网络设计采用的模块化方法,同一系列模型中的层具有一组相同的组件,只是宽度不同。
因此,匹配相应组件的过程是自然的一对一映射。

组件(component):在人工智能领域中,神经网络的component通常指的是网络的组成部分,也可以理解为神经网络的各个层(layers)或模块(modules)。神经网络由许多不同类型的层组成,每一层都有自己特定的功能和参数。这些层可以分为输入层、隐藏层和输出层,其中隐藏层可以进一步细分为卷积层、池化层、全连接层等。

3.1.3 Element selection

建立组件映射后,下一步是用教师的较大对应组件来初始化学生的较小组件,使用uniform selection,从教师tensor中均匀选择间隔的元素,具体方法在下一部分介绍。

3.2 Methods for element selection

本节制定元素选择并介绍不同的选择标准。

考虑一个学生的权重tensor W s W_s Ws,想找到用于初始化的教师权重tensor W t W_t Wt。如果 W t W_t Wt具有shape: t 1 , t 2 , ⋯ , t n t_1,t_2,\cdots,t_n t1,t2,,tn,那么具有相同组件类型的 W s W_s Ws,在选择上也要跨过这 n n n个维度。
目标是选择 W t W_t Wt的子集来初始化 W s W_s Ws

下面讨论几种可能的元素选择方法,并在4.3节中对其表现进行比较。只要保持了一致性(如具有一致性的随机选择段落中所述),权重选择就可以达到类似性能的水平。推荐实践中使用uniform selection作为权重选择的默认值。

一致性(consistancy):通常指的是在模型训练、推断或应用过程中,确保系统行为和输出的稳定性和一致性。

  1. 数据一致性:确保数据在不同阶段(采集、预处理、训练、测试)的一致性,相同的数据在不同情况下应有相同的表现和输出。
  2. 模型一致性:确保模型在不同环境或输入下的行为一致,在不同硬件、软件或数据集上训练的模型应该产生相似的结果。
  3. 结果一致性:确保模型的输出在不同运行中保持一致,给定相同的输入或条件,模型应该产生相同的输出或行为。

3.2.1 Uniform selection (default)

对于 W t W_t Wt的第 i i i维,从 t i t_i ti中均匀间隔地选择 s i s_i si
比如,想使用 4 × 6 4\times 6 4×6的线性层 W t W_t Wt来初始化 2 × 3 2\times 3 2×3的线性层 W s W_s Ws,沿着第一个维度选择 1 , 3 1,3 1,3数据(均匀从 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4中选择2个),沿着第二个维度选择 1 , 3 , 5 1,3,5 1,3,5切片(均匀从 1 , 2 , 3 , 4 , 5 , 6 1,2,3,4,5,6 1,2,3,4,5,6中选择3个)。

3.2.2 Consecutive selection

对于 W t W_t Wt的第 i i i维,从 t i t_i ti中选出连续的 s i s_i si条数据。
对于具有分组组件的架构,连续选择会选择一些整个组,同时忽略对比。
对于没有这种分组组件的架构,连续选择相当于均匀选择。

3.2.3 Random selection (with consistency)

对于所有权重tensor,对于 W t W_t Wt的第 i i i维,选择 s i s_i si大小的 t i t_i ti的随机子集。
通过验证实验得到,一致性(为所有权重矩阵选择相同的指数)是权重选择达到最佳性能的关键。
保持一致性的动机源自于残余连接的存在——添加到教师模型中的神经元应该将其操作保留在学生当中。

此外,保持一致性可以在元素选择过程中保留完整的神经元,因为只选择了一致的位置。
均匀选择和连续选择本质上保持了一致性,它们都是具有一致性的随机选择的特殊实例。

3.2.4 Random selection (without consistency)

对于所有权重tensor,对于 W t W_t Wt的第 i i i维,选择 s i s_i si大小的 t i t_i ti的随机子集。

该方法不需要为每一个权重tensor选择相同的索引。设计这个方法用来测试保持一致性的重要程度。

4 Experiments

![[Pasted image 20240303164937.png]]
表3:与经典初始化方法的比较,使用Cifar-100数据集测试多种初始化方法的准确度,具有一致性的权重选择方法优于经典的初始化方法。

5 Analysis

5.1 Reduction in training time

weight selection可以显著减少训练时间。直接测量了使用不同数量的epochs,使用weight selection训练ViT-T省去的时间,将结果展示在图4(a)。有weight selection后,只需要1/3的epoch数量即可打到传统初始化方法的表现。

![[Pasted image 20240303165556.png]]
图4:更快地训练。和随机初始化比较,在Cifar-100上,ViT-T只需要1/3的epoch就可以达到其相同的表现。和在ImageNet-1K上预训练+微调对比,weight selection可以在预训练的第60个epoch达到其表现,省区6.12倍的时间。

5.2 Comparison with transfer learning

通过实验来找到预训练所需的训练预算,以匹配权重选择的准确性。在本实验中,我们在ImageNet-1K上以不同的epoch数训练ViT-T,然后在Cifar-100上微调300个 epoch。如图 4b 所示,在 ImageNet-1K 上进行 60 轮预训练才能在Cifar-100上达到相同的性能。在此设置下,与通过预训练达到相同性能相比,权重选择速度提高了6.12倍,且无需访问用于预训练的数据集。

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

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

相关文章

【Linux】软件管理yum | 编辑器vim | vim插件安装

目录 1. Linux软件管理yum 1.1 什么是软件包 1.2 查看软件包 1.3 如何安装软件 1.4 如何卸载软件 2. Linux编辑器vim 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2.6 插件安装 1. Vim-Plug 3. coc.nvim …

如何自己系统的学python

学习Python是一项很好的投资,因为它是一种既强大又易于学习的编程语言,适用于多种应用,如数据分析、人工智能、网站开发等。下面是一个系统学习Python的步骤建议: 基础准备 安装Python: 访问Python官网下载最新版本的…

微信小程序-生命周期

页面生命周期 onLoad: 页面加载时触发的方法,在这个方法中可以进行页面初始化的操作,如获取数据、设置页面状态等。 onShow: 页面显示时触发的方法,在用户进入页面或从其他页面返回该页面时会调用此方法。可以在此方法中进行页面数据刷新、动…

Onenote软件新建笔记本时报错:无法在以下位置新建笔记本

报错现象: 当在OneNote软件上,新建笔记本时: 然后,尝试重新登录微软账户,也不行,提示报错: 解决办法: 打开一个新的记事本,复制粘贴以下内容: C:\Users\Adm…

Mysql中的事务

什么是事务: 多条sql语句,要么全部成功,要么全部失败。 事务的特性: 1:原子性(Atomic): 组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有操作都成功,整个事务才会…

C++调用lua函数

C 调用Lua全局变量(普通) lua_getglobal(lua, "width");int width lua_tointeger(lua,-1);lua_pop(lua,1);std::cout << width << std::endl;lua_close(lua); 这几行代码要放到lua_pcall(lua, 0,0,0);之后才可以. C给lua传递变量 lua_pushstring(lua, …

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景&#xff0c;而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时&#xff0c;难免要和 Excel 打交道。Python处理Excel 常用的系列库有&#xff1a;xlrd、xlwt、xlutils、openpyxl ◈xlrd &#xff0d; 用于读取 Exce…

Rocky 9 安装 R-CytoTRACE

官网给出的详细指南&#xff0c;只是可能大家打不开或者懒得去看E文。 第一步&#xff0c;下载CytoTRACE安装包。 wget https://cytotrace.stanford.edu/CytoTRACE_0.3.3.tar.gz 第二步&#xff0c;打开R或者Rstudio-server # 安装依赖包 if (!requireNamespace("Bioc…

视频云平台——搭建SRS5平台支持GB28181视频流的推送

&#x1f4e2;欢迎点赞 &#xff1a;&#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff0c;赐人玫瑰&#xff0c;手留余香&#xff01;&#x1f4e2;本文作者&#xff1a;由webmote 原创&#x1f4e2;作者格言&#xff1a;新的征程&#xff0c;我们面对的不仅…

谨用ArrayList中的subList方法

谨用ArrayList中的subList方法 规范一&#xff1a; ArrayList 的 subList 结果不可强转成 ArrayList&#xff0c;否则会抛出 ClassCastException 异常&#xff1a; public static void test7() {List<Integer> list new ArrayList<>();list.add(1);list.add(2);…

JavaWeb—— SpringBootWeb综合案例(登录功能、登录校验、异常处理)

案例-登录认证 目录 案例-登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1…

程序员眼中的“祖传代码”

引言 在IT界&#xff0c;特别是在Java项目中&#xff0c;“祖传代码”通常指的是那些经过长时间积累、由多位开发者共同维护、且蕴含深厚技术沉淀的代码片段或模块。这些代码可能存在于项目的核心模块&#xff0c;也可能是一些辅助性的工具类。它们承载着项目的历史&#xff0…

Matlab 多项式插值(曲线拟合)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 由于对曲线拟合有些兴趣,这里就找了一些资料从最基本的方法来看一下曲线拟合的效果: 二、实现代码 % **********

python科学计算库之Numpy库的使用的简单习题

Numpy库 Numpy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python库&#xff0c;用于进行科学计算。它提供了一个高性能的多维数组对象&#xff08;ndarray&#xff09;及用于处理这些数组的各种工具和函数。由于其高效和灵活的数据结构以及丰富的功能&#x…

Google 地图 API 教程--干货(1/2)

Google Maps API 教程 在本教程中我们将学习如何使用谷歌地图API V3创建交互式地图。 什么是 API? API = 应用程序编程接口(Application programming interface)。 API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,…

案例介绍:汽车售后服务网络构建与信息抽取技术应用(开源)

一、引言 在当今竞争激烈的汽车行业中&#xff0c;售后服务的质量已成为品牌成功的关键因素之一。作为一位经验丰富的项目经理&#xff0c;我曾参与构建一个全面的汽车售后服务网络&#xff0c;旨在为客户提供无缝的维修、保养和配件更换服务。这个项目的核心目标是通过高效的…

状态机实现双击、短按、长按等按键识别检测算法

1、按键识别算法的作用 按键识别算法在不同的技术和应用背景下有不同的作用&#xff0c;但其核心目标都是准确、可靠地检测和区分用户通过物理或虚拟按键所执行的操作。按键识别算法在各类电子设备及系统中起到至关重要的作用&#xff0c;它确保了人机交互的有效性和准确性&…

Vue前端+快速入门【详解】

目录 1.Vue概述 2. 快速入门 3. Vue指令 4.表格信息案例 5. 生命周期 1.Vue概述 1.MVVM思想 原始HTMLCSSJavaScript开发存在的问题&#xff1a;操作麻烦&#xff0c;耦合性强 为了实现html标签与数据的解耦&#xff0c;前端开发中提供了MVVM思想&#xff1a;即Model-Vi…

Mysql-主从架构篇(一主多从,半同步案例搭建)

主从架构 主从架构有什么用&#xff1f; 通过搭建MySQL主从集群&#xff0c;可以缓解MySQL的数据存储以及访问的压力。 数据安全&#xff08;主备&#xff09;&#xff1a;给主服务增加一个数据备份。基于这个目的&#xff0c;可以搭建主从架构&#xff0c;或者也可以基于主…

redis进阶(一)

文章目录 前言一、Redis中的对象的结构体如下&#xff1a;二、压缩链表三、跳跃表 前言 Redis是一种key/value型数据库&#xff0c;其中&#xff0c;每个key和value都是使用对象表示的。 一、Redis中的对象的结构体如下&#xff1a; /** Redis 对象*/ typedef struct redisO…