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://www.mzph.cn/news/674332.shtml

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

相关文章

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

Sublime Text 3配置 Node.js 开发环境

《开发工具系列》 Sublime Text 3配置 Node.js 开发环境 一、引言二、主要内容2.1 初识 Sublime Text 32.2 初识 Node.js2.3 接入 Node.js2.3.1 下载并安装 Node.js2.3.2 环境变量配置 2.4 配置 Node.js 开发环境2.5 编写 Node.js 代码2.6 运行 Node.js 代码 三、总结 一、引言…

【MySQL】-11 MySQL 架构及优化原理

MySQL 架构及优化原理 1 MySQL逻辑架构2 MySQL逻辑架构整体分为三层 :3 MySQL查询过程MySQL 整个查询执行过程,总的来说分为 5 个步骤 :3.1 客户端/服务端通信协议3.2 查询缓存3.3 查询优化3.4 查询执行引擎3.5 返回结果给客户端 4 查询系统性能1 分析查询语句2 索…

05 06 Verilog基础语法与应用讲解

05. 1. 位操作 计数器实验升级&#xff0c;设计8个LED灯以每个0.5s的速率循环闪烁&#xff08;跑马灯&#xff09; 1.1 方法1&#xff1a;使用移位操作符<<来控制led灯的循环亮灭 设计代码 Verilog中&#xff0c;判断操作的时候不加位宽限定是可以的&#xff0c;比如i…

学习Android的第七天

目录 Android EditText 输入框 设置默认提示文本 范例 获得焦点后全选组件内所有文本内容 范例 限制EditText输入类型 android:inputType 值列表 范例 设置最小行&#xff0c;最多行&#xff0c;单行&#xff0c;多行&#xff0c;自动换行 范例 设置文字间隔 范例 …

React环境配置

1.安装Node.js Node.js官网&#xff1a;https://nodejs.org/en/ 下载之后按默认选项安装好 重启电脑即可自动完成配置 2.安装React 国内使用 npm 速度很慢&#xff0c;可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。 ①使用 winR 输入 cmd 打开终端 ②依…

WordPress如何自建txt文本经典语录并随机显示一句话经典语录?

前面跟大家分享的『WordPress集成一言&#xff08;Hitokoto&#xff09;API经典语句功能』一文中就提供有自创API&#xff0c;其中懿古今顶部左上角显示的经典语录用的就是自建一个txt文本文件&#xff0c;然后再在前端网页指定位置随机显示语录。具体操作方法如下&#xff1a;…

Hadoop-生产调优

第1章 HDFS-核心参数 1.1 NameNode内存生产配置 1&#xff09;NameNode 内存计算 每个文件块大概占用 150 byte&#xff0c;一台服务器 128G 内存为例&#xff0c;能存储多少文件块呢&#xff1f; 128 * 1024 * 1024 * 1024 / 150byte ≈ 9.1 亿G MB KB Byte 2&#xff09…

Leetcode 279 完全平方数

题意理解&#xff1a; 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c…

FPGA_工程_按键控制的基于Rom数码管显示

一 信号 框图&#xff1a; 其中 key_filter seg_595_dynamic均为已有模块&#xff0c;直接例化即可使用&#xff0c;rom_8*256模块&#xff0c;调用rom ip实现。Rom_ctrl模块需要重新编写。 波形图&#xff1a; 二 代码 module key_fliter #(parameter CNT_MAX 24d9_999_99…

Filter 实现过滤符合条件的请求并落库

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、配置过滤器类 二、定义数据表、实体类、Mapper 2.1 DDL 2.2 实体类 2.3 Mapper 三、创建一个过滤器 四、实现 Nacos 配置…

通用的网站炫酷底部美化代码分享

网站炫酷底部美化代码介绍 这段代码采用了最新的前端技术&#xff0c;确保在各种浏览器和设备上都能完美展现。它包含响应式设计元素&#xff0c;这意味着无论用户是通过电脑、平板还是手机访问您的网站&#xff0c;底部都能呈现出最佳的效果。 此外&#xff0c;我们还特别注…

电子电器架构 —— 网关测试脚本分析

电子电器架构 —— 网关测试 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何 消耗你的人和事,多看一眼都是你的不对。非…

海外云手机的核心优势

随着5G时代的到来&#xff0c;云计算产业正处于高速发展的时期&#xff0c;为海外云手机的问世创造了一个可信任的背景。在资源有限且需求不断增加的时代&#xff0c;将硬件设备集中在云端&#xff0c;降低个人用户的硬件消耗&#xff0c;同时提升性能&#xff0c;这一点单单就…

微软.NET6开发的C#特性——类、结构体和联合体

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展&#xff0c; 进行了多次重大创新&#xf…

14 归并排序和其他排序

1.归并排序 2.计数排序 1. 归并排序 基本思想 建立在归并操作上的一种排序算法,采用分治法的一个典型应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;将两个有序表合成一个称为二路归并。 原数组无序&#xff0c;以中间分割为两个数组&#xff0c;…

vue 实现 手机号中间4位分格输入框(暂无选中标识

vue 实现 手机号中间4位分格输入框 效果图 <!--4位分格输入框--> <!--<template><div><div style"display: flex;"><div class"phone-input"><inputv-for"(digit, index) in digits":key"index"…

SQL--多表查询

我们之前在讲解SQL语句的时候&#xff0c;讲解了DQL语句&#xff0c;也就是数据查询语句&#xff0c;但是之前讲解的查询都是单 表查询&#xff0c;而本章节我们要学习的则是多表查询操作&#xff0c;主要从以下几个方面进行讲解。 多表关系 项目开发中&#xff0c;在进行数据…

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

【Rust】——Hello_cargo

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…