Merging of neural networks

Merging of neural networks

  • 论文链接:https://arxiv.org/pdf/2204.09973v2.pdf
  • 源码链接:https://github.com/fmfi-compbio/neural-network-merging

简介

典型的神经网络训练从随机初始化开始,并进行训练,直到在某些局部最优中达到收敛。最终结果对开始的随机种子非常敏感。因此,人们可能要多次进行实验以避免碰到不幸种子。最终选择的网络正是具有最佳验证精度的实验。
本文认为启动种子之间的差异可能通过在每次初始化中在隐藏层中选择稍微不同的特征来解释。人们可能会有一个问题,能以某种方式为网络训练选择更好的特征?一种方法是训练更大网络然后通过通道剪枝选择最重要通道。在许多情况下,训练一个随后被剪枝的大网络可能是令人望而却步的,因为将网络宽度增加两倍会导致FLOPs增加4倍,并且还可能需要改变一些超参数。
在这里本文提出一种替代方法。本文将训练两个相同大小的网络并将其合并为一个网络,而不是训练一个更大的网络并对其进行剪枝。思想是每个训练运行都会陷入不同的局部最优,因此在每一层中都有不同的滤波器集合。然后,本文可以选择一组比原始网络更好的滤波器,并获得更好的精度。

本文方法

本文训练策略包括三个阶段:

  1. 训练两个教师,
  2. 融合流程:创建一个学生包含如下字步骤:
    a) 教师逐层连接成一个大学生模型,
    b) 学习大学生模型神经元重要性,
    c) 大学生模型压缩。
  3. 大学生模型微调。
    教师的训练和学生模型的微调只是通过反向传播对神经网络的标准训练。后文描述如何从两个教师那里获得一个学生模型。

把教师模型层层连接为一个大学生模型

大学生模型墨迹两个教师模型并在最后一层对他们预测进行平均。这个阶段只是网络转换没有任何训练。如图3所示。卷积层的合并是在通道维度上进行的。线性曾的连接时在特征维度中类似完成的。本文将这个模型称为大学生模型,因为他的宽度是原来的两倍。
在这里插入图片描述

大学生模型神经元的学习重要性

本文希望大学生模型会在每层只使用一半的神经元。因此,在去除了不重要神经元后,将使用原始架构。除了学习神经元相关性,还希望这两个计算流相互连接。
有多种方式寻找最相关通道。可以将分数分配给各个通道,也可以使用辅助损失指导网络选择最相关通道。本文选择后者方法。它利用L0损失。
定义 ℓ \ell 是有k输入特征的线性层。 g i g_{i} gi是分配给 f i f_{i} fi的门。门可以是开 g i = 1 g_{i}=1 gi=1(学生使用特征)或关 g i = 0 g_{i}=0 gi=0(学生不使用特征)。在计算层的输出前,首先将输入乘以门,既不是计算 W f + b Wf+b Wf+b,而是计算 W ( f ⋅ g ) + b W(f\cdot g)+b W(fg)+b。为了使本文模型只是用想要一半特征想要满足 1 n ∑ 1 k g k = 1 2 \frac{1}{n}\sum_{1}^{k}g_{k}=\frac{1}{2} n11kgk=21
该方法问题是 g i g_{i} gi是离散的,不能使用梯度下降训练。为了克服这个问题,本文使用Learning sparse neural networks
through l_0 regularization中随机门和 L 0 L_{0} L0连续松弛。随机门包含概率为0的非0随机变量: P [ g i = 0 ] > 0 P[g_{i}=0]>0 P[gi=0]>0,非0概率为1 P [ g i = 0 ] > 1 P[g_{i}=0]>1 P[gi=0]>1。重参数化技巧使得门分布可由梯度下降训练。
为了鼓励大学生模型只使用层的一半特征,使用一个辅助损失:
L h a l f ℓ = ( 1 2 − 1 k ∑ 1 k P [ g i > 0 ] ) 2 L_{half}^{\ell}=(\frac{1}{2}-\frac{1}{k}\sum_{1}^{k}P[g_{i}>0])^{2} Lhalf=(21k11kP[gi>0])2
尽管本文损失函数迫使模型恰好打开一半的门,但它们损失促使模型使用尽可能少的门。
因此本文优化 L = L E + λ ∑ l L h a l f ℓ L=L_{E}+\lambda\sum_{l}L_{half}^{\ell} L=LE+λlLhalf。其中 L E L_{E} LE是数据集上误差损失测量拟合,新的超参数 λ \lambda λ是误差损失和辅助损失重要性比例。
超参数 λ \lambda λ很敏感,需要适当调整。在训练开始时,不能太大,否则学生会以概率为0.5将每个门设置为关闭。在训练结束时,不能太小,否则学生会忽视辅助损失,又例如误差损失。他将使用该层一半以上神经元,并在压缩后显著降低性能。
本文在一个单独的层中实现了门。使用两个门层设计,一个用于二维双通道另一个用于一维通道。门层位置至关重要。例如如果门层正好位于BatchNorm之前,其效果(将通道乘以0.1)将被BatchNorm抵消。

大学生模型的压缩

在学习完重要性之后,为每一层选择一半最重要神经元。然后通过只保留选定的神经元压缩每一层。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

GEE数据——美国农业部LANDFIRE (LF)数据集2.3.0版本

地面火灾数据集 LANDFIRE (LF),即 "地貌火灾和资源管理规划工具",是美国农业部森林服务局、美国内政部地质调查局和大自然保护协会的野地火灾管理项目之间的共享项目。前言 – 人工智能教程 LANDFIRE (LF) 图层是利用基于大量实地参考数据、…

【芯片设计- RTL 数字逻辑设计入门 14 -- 使用子模块实现三输入数的大小比较】

文章目录 三输入数的大小比较问题分析verilog codeTestBench Code综合图仿真波形图 三输入数的大小比较 在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层…

时间序列预测 —— DeepAR 模型

时间序列预测 —— DeepAR 模型 DeepAR 模型是一种专门用于处理时间序列概率预测的深度学习模型,它可以自动学习数据中的复杂模式,提高预测的准确性。本文将介绍 DeepAR 模型的理论基础、优缺点,并通过 Python 实现单步预测和多步预测的完整…

JavaScript滚动事件

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 滚动是网页交互不可或缺的一部分。监听页面和元素的滚动事件,可以帮助…

数解 transformer 之 self attention transformer 公式整理

句子长度为n;比如2048,或1024,即,一句话最多可以是1024个单词。 1, 位置编码 可知,E是由n个列向量组成的矩阵,每个列向量表示该列号的位置编码向量。 2, 输入向量 加入本句话第一个单词的词嵌入向量是, 第…

汽车零部件MES系统解决方案

汽车零部件行业现状 随着全球汽车产业不断升级,汽车零部件市场竞争日趋激烈,从上游的钢铁、塑料、橡胶等生产到下游的主机厂配套制造,均已成为全球各国汽车制造大佬战略目标调整的焦点,其意欲在汽车零部件行业快速开疆扩土&#x…

EMC学习笔记(二十二)降低EMI的PCB设计指南(二)

降低EMI的PCB设计指南(二) 1.电源和地概述2.电感量3.两层板和四层板4.单层和双层设计中的微控制器接地5.信号返回地6.模拟、数字信号与大功率电源7.模拟电源引脚和模拟参考电源8.四层板电源设计参考注意事项 tips:资料主要来自网络&#xff0…

Go语言的100个错误使用场景(30-40)|数据类型与字符串使用

前言 大家好,这里是白泽。 《Go语言的100个错误以及如何避免》 是最近朋友推荐我阅读的书籍,我初步浏览之后,大为惊喜。就像这书中第一章的标题说到的:“Go: Simple to learn but hard to master”,整本书通过分析100…

【Rust日报】2024-02-08 Loungy:使用 Rust 和 GPUI 开发的 MacOS 启动器

Mira Screenshare:基于 Rust 和 WebRTC 的高性能屏幕分享工具 一群大学生宣布推出了他们的期末项目:Mira Screenshare,一个开源、高性能的屏幕共享工具,由 Rust 和 WebRTC 构建。此项目支持 4k 60 FPS 和 110ms 端到端延迟的屏幕…

这种学习单片机的顺序是否合理?

这种学习单片机的顺序是否合理? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!&#xff01…

图像处理之《鲁棒图像隐写术:隐藏频率系数中的信息》论文精读

一、文章摘要 隐写术是一种将秘密信息隐藏到公共多媒体对象中而不会引起第三方怀疑的技术。然而,大多数现有的工作不能提供良好的抗有损JPEG压缩鲁棒性,同时保持相对较大的嵌入容量。提出了一种基于可逆神经网络的端到端鲁棒隐写系统。该方法将秘密信息…

【开源】基于JAVA+Vue+SpringBoot的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

【Python中Selenium元素定位的各种方法】

1、元素定位操作: 2、创建浏览器驱动操作,导入By模块: from selenium import webdriver # 用于界面与浏览器互动 from selenium.webdriver.common.by import By # 用于元素定位 driver webdriver.Chrome() # 调用Chrome类,创…

知识图谱与图神经网络融合:构建智能应用的新前沿

目录 前言1 知识图谱表示学习1.1 典型模型1.2 下游任务 2 图神经网络与知识图谱表示学习2.1 Compgcn:合成图卷积模型2.2 知识图谱嵌入在归纳设置下的推进 3 图神经网络与知识图谱构建3.1 关系抽取的进阶应用3.2 结构信息补全与知识图谱的完整性 4 图神经网络与知识图…

基于css-vars-ponyfill实现换肤

文章目录 一、换肤二、换肤调研2.1、ElementUI2.2、ant.design 三、换肤痛点和思考四、换肤架构五、换肤技术选型和实现5.1、该方案的亮点和规则5.2、核心原理5.3、色组 & 色值平台设计5.4、获取在当前主题自定义变量颜色 六、总结七、最后 一、换肤 网站或者应用一键切换…

【大厂AI课学习笔记】【1.5 AI技术领域】(8)文本分类

8,9,10,将分别讨论自然语言处理领域的3个重要场景。 自然语言处理,Natual Language Processing,NLP,包括自然语言识别和自然语言生成。 用途是从非结构化的文本数据中,发掘洞见,并访问这些信息&#xff0…

Flume安装部署

安装部署 安装包连接:链接:https://pan.baidu.com/s/1m0d5O3Q2eH14BpWsGGfbLw?pwd6666 (1)将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下 (2)解压apache-flume-1.10.1-bin.tar.gz…

【Spring框架】Spring事务同步

目录 一、什么是Spring事务同步 二、 事务同步管理器 2.1 TransactionSynchronizationManager事务同步管理器 2.1.1 资源同步 2.1.2 事务同步 2.1.3 总结 三、事务同步管理器保障事务的原理 四、spring事务为何使用TransactionSynchronizationManager spring源码实现 …

书生·浦语大模型第三课作业

基础作业: 复现课程知识库助手搭建过程 (截图) 进阶作业: 选择一个垂直领域,收集该领域的专业资料构建专业知识库,并搭建专业问答助手,并在 OpenXLab 上成功部署(截图,并提供应用地址&#x…

【Web】基于Mybatis的SQL注入漏洞利用点学习笔记

目录 MyBatis传参占位符区别 不能直接用#{}的情况 in多参数值查询 like %%模糊查询 order by列名参数化 MyBatis传参占位符区别 在 MyBatis 中,#{} 和 ${} 都是用于传参的占位符,但它们之间有很大的区别,主要体现在两个方面&#xff1a…