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.mfbz.cn/a/378364.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏:https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…

提速MySQL:数据库性能加速策略全解析

提速MySQL:数据库性能加速策略全解析 引言理解MySQL性能指标监控和评估性能指标索引优化技巧索引优化实战案例 查询优化实战查询优化案例分析 存储引擎优化InnoDB vs MyISAM选择和优化存储引擎存储引擎优化实例 配置调整与系统优化配置调整系统优化优化实例 实战案例…

midnightsun-2018-flitbip:任意地址写

题目下载 启动脚本 启动脚本如下,没开启任何保护 #!/bin/bash qemu-system-x86_64 \-m 128M \-kernel ./bzImage \-initrd ./initrd \-nographic \-monitor /dev/null \-append "nokaslr root/dev/ram rw consolettyS0 oopspanic paneic1 quiet" 2>…

Bpmn-js自定义Palette元素

Bpmn-js作为一个流程编辑器,常规的我们可以将其划分为几个功能区域,每个区域对应的负责不同的功能实现,bpmn-js的设计给我们留下了大量的留白和可扩展区域,其每一部分都可进行组合拼装,同时也支持我们的各种不同层次需…

龙年到,好运绕!想在春节期间开融资融券账户,哪家证券公司支持且利率最低?

融资融券交易是一种杠杆交易,投资者可以借入资金进行股票交易,这样可以放大投资收益的同时也增加了风险。下面是一些融资融券交易的技巧: 选择合适的股票:选择具有投资价值和潜在增长空间的股票进行交易,同时要关注市场…

Map 集合

Map集合 1. 概述2. 方法3. 代码示例4. 输出结果5. 注意事项 实现类: HashTable、HashMap、TreeMap、Properties、LinkedHashMap 其他集合类 具体信息请查看 API 帮助文档 1. 概述 Map是Java中的一种数据结构,用于存储键值对(key-value pair&…

学生速看:免费领取一台阿里云学生服务器2024申请入口

2024年阿里云学生服务器免费领取,先完成学生认证即可免费领取一台云服务器ECS,配置为2核2G、1M带宽、40G系统盘,在云服务器ECS实例过期之前,完成实验与认证任务,还可以免费续费6个月,阿里云百科aliyunbaike…

【知识整理】管理即服务,识人、识己

1. 背景 一个人的力量是有限的,如何规模化生产,人员的规模化组织,如何提升合作的规模和效率。 管理的本质: 1、服务他人? 2、激发主动性? 3、氛围宽松? 上面是理念, 1、那如何…

MacOS上怎么把格式化成APFS的U盘或者硬盘格式化回ExFAT?

一、问题 MacOS在更新MacOS Monterey后或者更高系统后发现,格式U盘或者硬盘只有4个APFS选项,那么我们该如何将APFS格式成ExFAT? 二、解答 将APFS的U盘或者硬盘拓展成MacOS的拓展格式即可,操作步骤如下 1、电脑接入U盘或者硬盘 2…

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

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

【递归】【前序中序后序遍历】【递归调用栈空间与二叉树深度有关】【斐波那契数】Leetcode 94 144 145

【递归】【前序中序后序遍历】【递归调用栈空间与二叉树深度有关】Leetcode 94 144 145 1.前序遍历&#xff08;递归&#xff09; preorder2.中序遍历&#xff08;递归&#xff09;inorder3.后序遍历&#xff08;递归&#xff09;postorder4. 斐波那契数 ---------------&…

洞察 Electric Capital 2023 年开发者报告,找准未来 Web3 开发趋势

作者&#xff1a;Electric Capital 编译&#xff1a;TinTinLand 原文链接&#xff1a;https://www.developerreport.com/developer-report 近期&#xff0c;Electric Capital 发布了 2023 年年度加密开发者报告&#xff0c;对 818k 开源存储库中的 4.85 亿次代码提交进行分析…

【C语言】通过socket看系统调用过程

一、通过socket看系统调用过程 在Linux操作系统中&#xff0c;系统调用是用户空间与内核空间之间交互的一种方式。当一个应用程序需要执行操作系统级别的任务时&#xff0c;比如创建一个网络套接字&#xff08;socket&#xff09;&#xff0c;它必须通过系统调用请求内核来执行…

JavaSE——数组(1/2)-数组的定义和访问(静态初始化数组、动态初始化数组、案例练习)

目录 数组的定义和访问 静态初始化数组 数组的访问 数组的遍历 案例练习 动态初始化数组 案例练习 数组是什么 数组就是一个容器&#xff0c;用来存储一批同种类型的数据。 例子&#xff1a; 20&#xff0c;10&#xff0c;80&#xff0c;60&#xff0c;90 int[ ] arr …

STM32/C51开发环境搭建(KeilV5安装)

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统&#xff0c;与汇编相比&#xff0c;C语言在功能上、结构性、可读性、可维护性上有明显的优势&#xff0c;因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等…

第59讲订单数据下拉实现

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;/*** 订单查询 type值 0 全部订单 1待付款 2 待收货 3 退款/退货* param type* return*/RequestMapping("/list")public R list(Integer type,Integer page,Integer pageSize){System.out.pri…

【C++基础入门】七、指针(定义和使用、所占内存空间、空指针和野指针、const关键字修饰指针、指针和数组、指针和函数)

七、指针 7.1 指针的基本概念 指针的作用&#xff1a; 可以通过指针间接访问内存 内存编号是从0开始记录的&#xff0c;一般用十六进制数字表示可以利用指针变量保存地址 7.2 指针变量的定义和使用 指针变量定义语法&#xff1a; 数据类型 * 变量名&#xff1b; 示例&…

统一身份认证系统架构设计与实践总结

随着互联网的快速发展和应用的普及&#xff0c;人们在各个网站和应用上需要不同的账号和密码进行身份认证。为了解决这个问题&#xff0c;统一身份认证系统应运而生。本文将总结统一身份认证系统的架构设计与实践经验&#xff0c;帮助读者了解如何设计和实现一个高效、安全的统…

一、OpenAI API介绍

Open AI API可以应用到任何的业务场景。 文本生成 创造助理 嵌入数据 语音转化 图片生成 图片输入 1. 核心概念 1.1 Text generation models OpenAI 的文本生成模型(通常被称为generative pre-trained transformers 模型简称&#xff1a;GPT),有GPT-4和G…

《学成在线》微服务实战项目实操笔记系列(P1~P83)【上】

史上最详细《学成在线》项目实操笔记系列【上】&#xff0c;跟视频的每一P对应&#xff0c;全系列12万字&#xff0c;涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳&#xff0c;参考这篇&#xff0c;相信会带给你极大启发。 一、前期准备 1.1 项目介绍 P2 To C面向…