[NIPS 1989] Optimal brain damage (OBD)

news2024/11/25 22:47:11

Contents

  • Introduction
  • Method
    • Optimal Brain Damage
    • Computing the second derivatives
    • The Recipe
  • References

Introduction

  • 作者设计了一种模型剪枝策略,能够在尽量不影响模型精度的情况下丢弃模型中不重要的权重

Method

Optimal Brain Damage

  • 衡量权重重要性直观的方法就是删除该权重,然后观察损失的变化,变化越大则该权重越重要,但每次删除一个权重然后再重新计算损失代价太大了。一个替代方案是构建误差函数的 local model,用于预测改变权重向量时损失的变化量
  • 具体来说,就是将损失函数 E E E 用泰勒公式展开
    在这里插入图片描述在这里插入图片描述其中, δ U \delta U δU 为权重向量的 perturbation, δ u i ∈ δ U \delta u_i\in\delta U δuiδU g i ∈ G g_i\in G giG G G G 为 gradient of E E E with respect to U U U h i j ∈ H h_{ij}\in H hijH H H H 为 Hessian matrix of E E E with respect to U U U. 我们的目标就是找到删除后使得 E E E 增加最少的一组权重
  • 但上式其实是很难解的,因为 H H H 通常特别大,很难求解,为此作者引入了一些假设来简化问题:(1) “diagonal” approximation. 删除一组权重给 δ E \delta E δE 带来的影响等于单独删除每个权重给 δ E \delta E δE 带来的影响之和,因此等式右侧第三项的交叉项可以忽略;(2) “extremal” approximation. 假设模型剪枝之前训练已经收敛,因此模型参数向量处在 E E E 的一个局部极小点上,这样等式右侧第一项也可以忽略,此外,位于极小点也意味着 h i i h_{ii} hii 非负,参数向量的任何扰动都会使得 E E E 增加或保持不变;(3) “quadratic” approximation. 假设损失函数是近似二次函数 (nearly quadratic),因此等式右侧最后一项也可以忽略。至此上式可以简化为
    在这里插入图片描述也就是说,对于每个权重,我们只需要计算 h k k u k 2 / 2 h_{kk}u_k^2/2 hkkuk2/2 作为参数的 saliency,排序后选择 low-saliency parameters 进行剪枝即可,剪枝就是将权重值设为 0

Computing the second derivatives

  • 现在还剩下一个问题,就是如何高效计算出各个权重的二阶导 h k k h_{kk} hkk. 其实这个过程和反向传播计算梯度是类似的,只不过推导上要更加麻烦,这里就省略了

The Recipe

在这里插入图片描述

References

  • LeCun, Yann, John Denker, and Sara Solla. “Optimal brain damage.” Advances in neural information processing systems 2 (1989).

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

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

相关文章

0100-35227美国应用材料AMAT

​ 0100-35227美国应用材料AMAT 0100-35227美国应用材料AMAT 自动化系统所使用的各种类型plc中,有的是集中安装在控制室,有的是安装在生产现场和各电机设备上,它们大多处在强电电路和强电设备所形成的恶劣电磁环境中。要提高PLC控制系统可靠…

【Mysql】基础命令操作

本文首发于 慕雪的寒舍 mysql的基础命令 本文所用mariadb版本 mysql Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1sql语句的分类 DDL【data definition language】 数据定义语言,用来维护存储数据的结构。代表指令: create, drop,…

【QQ聊天界面-计算Frame Objective-C语言】

一、计算frame 1.我还是先把之前的代码保存一份, 我们刚才在第一份代码里面,其实无非就是 1)创建了个模型, 2)懒加载 3)把界面拖了一下 4)创建了一个自定义Cell 是不是就做了这四件事儿 2.那么,接下来,我们是不是要计算坐标了, 好,找到我们这个frame,在这个…

黑客松必备|如何快速注册参与Bear Necessities Hackathon

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松提供了一个有趣且竞争、同时还有奖励的环境以供构建者们探索Moonbeam的互操作功能和创建跨链应用。本次黑客松由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助,包含6个挑…

chatgpt赋能python:Python中Input函数的使用方法

Python中Input函数的使用方法 Python中的input()函数是一个内置函数,它可以用来从用户那里获取输入。它可以在编写Python程序时,和常量和变量一起使用。在本文中,我们将介绍Python中input()函数的使用方法。 什么是Input函数? …

Netty的高性能之道

1.背景 最近看到gitHub上有一个开源项目,通过使用 Netty4 Thrift 压缩二进制编解码技术,他们实现了 10W TPS(1K 的复杂 POJO 对象)的跨节点远程服务调用。相比于传统基于 Java 序列化 BIO(同步阻塞 IO)的…

docker harbor 私有仓库

docker 的本地自带的私有仓库 安装本地私有仓库的镜像 docker pull registry 下载镜像 vim /etc/docker/daemon.json 配置配置文件 也可以只写第一个也行 { "insecure-registries": ["192.168.86.50:5000"] } systemctl restart docker 重…

问题总结!常用插件Pytest的测试用例的一些问题

目录 前言: 失败重跑 Pytest-rerunfailures 用例执行顺序 Pytest-ordering 重复执行 Pytest-repeat 多重断言 Pytest-assume 前言: Pytest是Python中的一个流行的测试框架,它提供了许多功能强大的插件来支持自动化测试。 失败重跑 Pyt…

第1讲:XMLHttpRequest详解(ajax基础)

XMLHTTPRequest对象 XMLHTTPRequest对象,是基于XML的HTTP请求。XMLHTTPRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通讯。自从浏览器提供了XMLHTTPRequest这个接口之后,ajax操作就此诞生。 AJAX Asynchronous JavaScript and X…

Exploit/CVE-2010-0738

打开JBoss的潘多拉魔盒:JBoss高危漏洞分析 *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。 前言 JBoss是一个基于J2EE的开放源代码应用服务器&#xff0…

盖雅工场联合福达企业资源系統 (DynaSys) 成功举办 SAP SuccessFactors Day 活动

2023年5月31日,由DynaSys主办、盖雅工场协办的SAP SuccessFactors Day活动在香港半岛酒店成功举行。本次活动旨在为在港企业分享员工体验和劳动力管理解决方案,并以行业标杆案例为指引,帮助企业客户在全球市场中更好地制定人力资源管理策略。…

Linux下socket网络编程实战思考

socket网络编程是每个服务端开发人员必会技能,但是目前市面上各种web服务器容器,屏蔽了很多底层实现,导致很多socket通信细节被屏蔽,本文结合在linux下C语言socket通信说明一下网络通信的一些注意点。 目录 1.多进程模型tcp服务…

Windows11安装mysql8.0.32步骤

1、下载mysql安装包 下载地址:https://dev.mysql.com/downloads/mysql/ 2、添加配置文件 mysql安装文件目录下新建一个文件名:my.inimy.ini文件中复制如下内容: [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 ---这里输入你安装…

Linux中的C/C++语言调试工具 GDB

Linux中的C/C语言调试工具 GDB GDB(GNU Debugger)是一个功能强大的调试器,用于调试和分析程序的执行过程。它是GNU项目的一部分,可以在多个操作系统上使用,包括Linux、Unix和Windows。 GDB主要用于调试编译后的可执行…

大模型扎堆「赶考」,语文还是国产AI行,文言文能力超过95%考生

量子位 | 公众号 QbitAI ChatGPT诞生后的第一场全国高考,考生忙,大模型们也很忙。 这不,高考还没结束,AI挑战高考题就成了刷屏热搜话题,各家大模型都被拉出来写起了高考作文,甚至是参与整场考试。 &#…

【MySQL事务】保证数据完整性的利器

1、事务的认识 事务:事务就是将多个SQL给打包在一起,组成一个整体。组成这个整体的各个SQL,要么全部成功,要么全部失败。 举例说明: 情人节到了,滑稽老铁打算给他女朋友小美发给红包,但是他又害…

msvcp140.dll重新安装的解决方法(一键安装方法)

msvcp140.dll电脑文件中的dll文件,即动态链接库文件,若计算机中丢失了某个dll文件,就会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错,其安装方法:1、打开浏览器输入“【dll修复程序…

[Diffusion] Speed is all your need

论文简要总结 刚读了下speed is all you need这个论文, https://arxiv.org/pdf/2304.11267.pdf 只是用的SD1.4没有对网络进行改造。 只做了4个改动 1 是对norm采用了groupnorm (GPU shader加速) 2 采用了GELU (GPU shader加速) 3 采用了两种attention优化,是partiti…

一个简单的MCU内存管理模块(附源码)

现在非常多的的MCU性能都还不错,同时用户也会去扩展一些外部RAM,那么如何高效便捷的管理这些内存是一个重要话题。 今天给大家分享一份源码:基于无操作系统的STM32单片机开发,功能强大,可申请到地址空间连续的不同大小…

如何应对公民开发者的挑战?低代码流程自动化助你打造高效系统

如今,企业越来越倾向于采用公民开发作为提升流程自动化和数字化转型的手段。这种方法让非程序员(如客户和员工),有机会为特定任务创建自己的应用程序。它还使公司能够快速调整以适应客户偏好或业务需求。 尽管这种方法有很多好处&…