[ICNN 1993] Optimal brain surgeon and general network pruning

news2024/11/18 19:32:56

Contents

Introduction

  • 作者提出 Optimal brain damage (OBD) 的改进 Optimal brain surgeon (OBS) 用于模型剪枝

Method

Optimal brain surgeon (OBS)

  • 类似于 Optimal brain damage (OBD),OBS 也 δ E \delta E δE 用泰勒公式展开
    在这里插入图片描述其中, E E E 为损失函数, w w w 为权重向量, H = ∂ 2 E / ∂ w 2 H=\partial^2E/\partial w^2 H=2E/w2 为 Hessian matrix. 类似于 OBD,为了简化上式,作者假设剪枝前模型权重已位于局部最小点从而省略第一项,假设目标函数近似二次函数从而省略第三项,但需要注意的是,不同于 OBD,这里作者并没有使用 “diagonal” approximation,不假设 H H H 为对角矩阵。这样上式就简化为了
    δ E = 1 2 δ w T ⋅ H ⋅ δ w \delta E=\frac{1}{2}\delta w^T\cdot H\cdot \delta w δE=21δwTHδw
  • 在剪枝过程中,对 w q w_q wq 进行剪枝可以表示为 δ w q + w q = 0 \delta w_q+w_q=0 δwq+wq=0,也可以被表示为
    在这里插入图片描述其中, e q e_q eq 为对应 (scalar) weight w q w_q wq 的单位向量。这样剪枝过程可以被表示为求解如下最优化问题
    在这里插入图片描述求解完成后对 w q w_q wq 进行剪枝即可。为了解上式,可以将其写为拉格朗日展式:
    在这里插入图片描述对其求解可以得到 optimal weight changeresulting change in error 分别为
    在这里插入图片描述
  • Optimal Brain Surgeon procedure. 可以看到,OBS 其实是 OBD 的推广,首先 OBS 不假设 H H H 为对角矩阵;其次在进行剪枝后,OBS 会对所有权重参数进行更新,从而对被剪枝的权重进行补偿,使得损失函数在剪枝后尽可能更小
    在这里插入图片描述在这里插入图片描述

Computing the inverse Hessian

  • 现在唯一的问题就是如何高效计算 H − 1 H^{-1} H1,为此作者提出了 outer-product approximation

计算 H H H

  • 现在考虑非线性网络 F F F
    在这里插入图片描述其中, i n \mathbf{in} in 为输入向量, w \mathbf{w} w 为权重, o \mathbf{o} o 为输出向量。训练集上的均方误差可以表示为
    在这里插入图片描述由此可以计算出 w \mathbf{w} w一阶导
    在这里插入图片描述注意上式中的 ∂ F ( w , i n [ k ] ) ∂ w ( t [ k ] − o [ k ] ) \frac{\partial F(\mathbf w,\mathbf {in}^{[k]})}{\partial \mathbf w}(\mathbf t^{[k]}-\mathbf o^{[k]}) wF(w,in[k])(t[k]o[k]) 为向量逐元素乘。进一步可以推出二阶导 / Hessian
    在这里插入图片描述
  • 下面对上式做进一步简化。假设模型已经达到了误差局部极小点,此时可以 t [ k ] − o [ k ] ≈ 0 \mathbf t^{[k]}-\mathbf o^{[k]}\approx\mathbf 0 t[k]o[k]0 可以忽略 (Even late in pruning, when this error is not small for a single pattern, this approximation can be justified, explained in the nest section),由此可得
    在这里插入图片描述
    在这里插入图片描述则得到了 Hessian matrix 的 outer-product approximation
    在这里插入图片描述其中, P P P 为训练集样本数, X [ k ] \mathbf X^{[k]} X[k] 为第 k k k 个样本的 n n n-dimensional data vector of derivatives. 假如网络有多个输出,则 X \mathbf X X
    在这里插入图片描述Hessian matrix 为
    在这里插入图片描述
  • 考虑模型只有单一输出的情况,我们可以遍历训练集,迭代地计算 H H H
    在这里插入图片描述其中, H 0 = α I H_0=\alpha I H0=αI H P = H H_P=H HP=H

计算 H − 1 H^{-1} H1

  • 根据 Woodbury identity 可知,
    在这里插入图片描述将其代入 H H H 的迭代式可知,
    在这里插入图片描述其中, H 0 − 1 = α − 1 I H^{-1}_0=\alpha^{-1}I H01=α1I H P − 1 = H − 1 H_P^{-1}=H^{-1} HP1=H1 α \alpha α ( 1 0 − 8 ≤ α ≤ 1 0 − 4 10^{-8}\leq\alpha\leq 10^{-4} 108α104) 为 a small constant needed to make H 0 − 1 H^{-1}_0 H01 meaningful.
  • 实际上,上述迭代求解出的 H P − 1 H_P^{-1} HP1 ( H + α I ) (H+\alpha I) (H+αI) 的逆。原来的拉格朗日展式为
    在这里插入图片描述如果将 H H H 替换为 ( H + α I ) (H+\alpha I) (H+αI),则相当于是加上了正则项 α ∥ δ w ∥ 2 \alpha\|\delta\mathbf w\|^2 αδw2,可以避免剪枝后权重向量值更新过大,同时也保证了将 δ E \delta E δE 用泰勒公式展开时忽略高次项的合理性

The ( t − o ) → 0 (\mathbf t-\mathbf o)\rightarrow 0 (to)0 Approximation

  • Computational view. H \mathbf H H 在剪枝前通常是不可逆的, ( t − o ) → 0 (\mathbf t-\mathbf o)\rightarrow 0 (to)0 的近似可以保证 H − 1 \mathbf H^{-1} H1 的计算是有良好定义的. In Statistics the approximation is the basis of Fisher’s method of scoring and its goal is to replace tlie true Hessian with its expected value and hence guarantee that H \mathbf H H is positive definite.
  • Functional justifications. (这里没看太明白) Consider a high capacity network trained to small training error. We can consider the network structure as involving both signal and noise. As we prune, we hope to eliminate those weights that lead to “overfitting.” i.e., learning the noise. If our pruning method did not employ the ( t − o ) → 0 (\mathbf t-\mathbf o)\rightarrow 0 (to)0 approximation, every pruning step (Eqs. 9 and 8) would inject the noise back into the system, by penalizing for noise terms. A different way to think of the approximation is the following. After some pruning by OBS we have
    reached a new weight vector that is a local minimum of the error. Even if this error is not negligible, we want to stay as close to that value of the error as we can. Thus we imagine a new effective teaching signal t ∗ \mathbf t^* t, that would keep the network near this new error minimum. It is then ( t ∗ − o ) (\mathbf t^*-\mathbf o) (to) that we in effect set to zero when using Eq. 11 instead of Eq. 10.

References

  • Hassibi, Babak, David G. Stork, and Gregory J. Wolff. “Optimal brain surgeon and general network pruning.” IEEE international conference on neural networks. IEEE, 1993.

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

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

相关文章

霍夫变换(Hough Transform)

文章目录 1. 什么是霍夫变换2. 霍夫直线检测2.1 霍夫直线检测的具体步骤2.2 霍夫直线检测的优缺点2.3 OpenCV中霍夫直线检测的应用2.3.1 标准霍夫检测2.3.2 概率霍夫检测 3. 霍夫圆检测4. 源码仓库地址 1. 什么是霍夫变换 霍夫变换(Hough Transform)是图像处理中的一种特征提取…

Spring Data Redis的使用

Redis的valus值的五种数据类型 问题:Windows下出现Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。 解决方法为在Redis-x64-3.2.100目录下打开两个cmd窗口,分别输入 命令redis-server.exe redis.windows…

【Go知识点】Gorm Hook 无侵入实现 数据表防篡改

一、前言 Hi,开门见山的说,这次给大家带来的是关于 Gorm Hook 机制的落地场景,笔者也是在Gorm官方文档中了解到有Hook机制的存在,不过一直没有找到过太多合适的场景来使用。 最近刚好在做一块新业务的设计,因为涉及到…

PL2303HXA自2012已停产,请联系供货商的解决办法

一、概述 PL2303 是Prolific 公司生产的一种高度集成的接口转换器,可提供一个RS232 全双工异步串行通信装置与USB 功能接口便利连接的解决方案。PL2303具有多个历史版本,早期的版本是PL2303HX, 近年有PL2303HXA、PL2303HXC、PL2303HXD(D版本…

SpringCloud01:SpringCloud介绍、服务提供者、服务消费者

SpringCloud和SpringBoot的关系 SpringBoot专注于快速、方便地开发单个个体微服务,SpringCloud关注全局的治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:管理配置、服务发现、断路器、路由…

GO-slice详解

GO-slice详解 简介 slice(切片)是go中常见和强大的类型,这篇文章不是slice使用简介,从源码角度来分析slice的实现,slice的一些迷惑的使用方式,同时也讲清楚一些问题。 slice的底层实现是数组&#xff0c…

(转载)基于蚁群算法的三维路径规划(matlab实现)

1 理论基础 1.1 三维路径规划问题概述 三维路径规划指在已知三维地图中,规划出一条从出发点到目标点满足某项指标最优,并且避开了所有三维障碍物的三维最优路径。现有的路径规划算法中,大部分算法是在二维规划平面或准二维规划平面中进行路…

微服务框架

流量入口Nginx 在上图中可以看到,Nginx作为整个架构的流量入口,可以理解为一个外部的网关,它承担着请求的路由转发、负载均衡、动静分离等功能。作为一个核心入口点,Nginx肯定要采用多节点部署,同时通过keepalived来实…

(八)CSharp-泛型类和参数约束(1)

一、C# 中的泛型 泛型(generic)特性可以让多个类型共享一组代码。 泛型类型不是类型,而是类型的模板。 C# 提供了5种类型:类、结构、接口、委托和方法。 泛型类 泛型的主要优点: 性能 类型转换时,非泛型的…

2018~2019 学年第二学期《信息安全》考试试题(B 卷)

北京信息科技大学 2018 ~2019 学年第 2 学期 《信息安全》课程期末考试试卷 B 课程所在学院:计算机学院 适用专业班级:计科 1601-06,重修 考试形式:(闭卷) 一. 选择题(本题满分 10 分,共含 10 道小题,每小题 1 分) 网络中存在的安全漏洞主…

虚拟环境创建、配置及激活

虚拟环境创建、配置及激活 前言 一、虚拟环境是什么? 虚拟环境(Virtual Environment)是在计算机上使用特定版本的编程语言(如python 3.9)和其所需包及依赖项的一种方法(如pandas 2.4),它可以被看作是一个隔…

基于html+css的图展示121

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

chatgpt赋能python:Python中如何快速删除字符串

Python中如何快速删除字符串 在Python编程中,字符串操作是非常常见的。有时候我们需要从字符串中删除一些无用的字符,以便更方便地处理数据。在本文中,将介绍Python如何快速删除字符串。 删除特定字符 Python中可以使用replace()函数快速替…

【深度学习炼丹大杀器——mlrunner初体验(以mmdetection为例)】

深度学习炼丹大杀器——mlrunner初体验(以mmdetection为例) 自动化炼丹,告别手动运行的烦恼~ 0.引言 了解深度学习的人都知道,炼丹是一种很玄学的事,并且还存在以下问题: 效率:在训练模型时&…

Seata服务端的启动过程 学习记录

1.ServerRunner ServerRunner类实现了CommandLineRunner与DisposableBean接口,将会在Spring容器启动和关闭的时间,分别执行 run 和 destory 方法。 而seata服务端的启动过程,都藏在run方法中 2.整体流程 io.seata.server.Server#start pu…

基于html+css的图展示120

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【JMeter压力测试】通过jmeter压测surging

目录 前言 环境 下载配置源码 JMeter和JDK下载 JDKJmeter安装 Jmeter非GUI运行压测 结尾 前言 surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针…

最新版CleanMyMac X4.13.4中文版Mac清理软件

cleanmymac是一款强大的Mac系统垃圾清理工具,可以清除Mac系统多余的语言包,系统缓存,应用程序!可智能清理mac磁盘垃圾和多余语言安装包,快速释放电脑内存,轻松管理和升级Mac上的应用。同时CleanMyMac X可以强力卸载恶意软件,修复系统漏洞&…

EXCEL函数2(统计函数,逻辑函数及其余函数)

统计函数 1、COUNT(单元格范围): 计算单元格范围的行数,比如用光标选中一定范围内的单元格,那么只要单元格里面有值,那么count函数便会将有值的单元格的数量统计出来 2、COUNTA(单元格范围&am…

msf渗透测试学习-与永恒之蓝漏洞案例

MSF是Metasploit Framework的缩写,是一款广泛使用的渗透测试工具,具有强大的攻击功能。它提供了一个模块化的平台,通过将各种攻击载荷、漏洞利用和辅助工具组装在一起,可用于模拟各种攻击,测试系统安全性,也…