机器学习李宏毅学习笔记33

文章目录

  • 前言
  • 一、神经网络压缩
  • 二、Network pruning----一种network compression技术
    • 1.移除不同单位的区别
    • 2.大乐透假说
  • 总结


前言

神经网络压缩(一)
类神经网络剪枝(pruning)


一、神经网络压缩

简化模型,用比较少的参数,但让效能差不多,这就是network compression这件事。有些情况下需要把模型用在resource constrain(资源有限)的情况下,比如说跑在智能手表上、小型无人机上等等。只有比较少的内存和计算能力,这时就需要比较小的模型,这种情况多用于需要及时响应并且保障隐私的情况下,不然就可以传到云端在把结果传回来。

二、Network pruning----一种network compression技术

有些参数是没有用的,network pruning就是要把这些没有用的参数找出来,并且丢掉。首先先train一个大的network,然后去评估这个network里每一个参数或者neural的重要性,看有没有那些参数是没在做事的。简单的评估方法就是看这个参数的绝对值,如果绝对值越大,表示对整个network的影响也越大。也可以用life long learning里面的思想,把参数的bi算出来,这样就知道每个参数是否重要。也可以把神经元当做单位,可以通过计算神经元输出不为0的次数。把不重要的参数(神经元)移除,这样就可以得到一个比较小的参数。移除参数后,正确率会下降一点。将没有被移除的参数做微调,可以在提高正确率。用训练资料,把修改过的network重新训练。训练后的可以再次进行评估、移除,不断重复。不能一次性移除大量参数,这样会对network产生比较大的影响,通过多次减去少量参数的方法进行减枝。
在这里插入图片描述

1.移除不同单位的区别

以参数为单位去掉后,network的形状可能是不规则的,这就导致了不好实作也不好用gpu加速。如果把去掉的位置补0的话,就没有真的把network变小。
在这里插入图片描述
使用network pruning可以去掉95%的参数,但是运算速度并没有加速。甚至多数情况下速度是变慢的。
在这里插入图片描述
这样看来用神经元作为单位是一种好的方法。使用神经元为单位进行pruning,去除一些神经元之后,network的架构依然是规则的,方便使用pytorch和gpu加速。
在这里插入图片描述

2.大乐透假说

既然小的network和大的network正确率差不多,为什么不直接train一个小的。一个大的network比较好train,直接train一个小的network没办法得到和大的network一样的正确率。
大乐透假说表示只要参数的数量越多,越容易训练。大的network可以看多是多个小的network的组合,训练一个大的network,相当于同时训练多个小的network,每一个小的network不一定能被成功的训练出来,但是只要有一个小的network成功,那么这个大的network就成功了。所以小的network越多,被成功训练起来的概率就越高。
如果用大的network随机初始化训练后,得到的进行剪枝得到小的network。这个小的network如果进行参数随机初始化就训练不起来,但是如果这个小的network用大的network的初始化参数就可以训练起来。

在这里插入图片描述


总结

视频学习地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=35&spm_id_from=333.880.my_history.page.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec

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

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

相关文章

软件安全技术复习内容

软件安全技术 边复习边写的,有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…

【工作记录】基于CSS+JS可拖拽改变大小、可吸附到边界的DIV

记录一段实现可拖拽、可自动吸附到边界的代码。 <!DOCTYPE html> <html lang"en"> <head><style>body {overflow: hidden;}#pane {position: absolute;width: 45%;height: 45%;top: 20%;left: 20%;margin: 0;padding: 0;z-index: 99;border…

Google禁止自动更新

前言&#xff1a; 为了使用selenium&#xff0c;必须要禁止google自动更新&#xff0c;要不然辛苦下的驱动&#xff0c;随着更新还得再下一遍。 解决&#xff1a; 1.打开服务 2.禁用google更新服务 然后就可以了

单片机学习12-串口通信

目录 串口通信实验 通信的基本概念 串行通信与并行通信 异步通信与同步通信 单工、半双工与全双工通信 通信速率&#xff08;比特率&#xff09; 单片机串口介绍 串口通信简介 串口相关寄存器 串口工作方式 方式 0 方式 1 方式 2 和方式 3 串口的使用方法 硬件设计…

vtk创建x,y,z轴

创建三维空间中的xyz轴 引言示例开发环境示例代码运行结果总结 引言 本文的示例实际上是vtk官网中的示例&#xff0c;只是稍做了一点改动。 示例 开发环境 使用QtCreator4.11.2来开发&#xff0c;基于Qt5.14.2。使用的vtk9.2。创建空项目。 示例代码 由于是空项目&#x…

开源大型语言模型(llm)总结

大型语言模型&#xff08;LLM&#xff09;是人工智能领域中的一个重要研究方向&#xff0c;在ChatGPT之后&#xff0c;它经历了快速的发展。这些发展主要涉及以下几个方面&#xff1a; 模型规模的增长&#xff1a;LLM的规模越来越大&#xff0c;参数数量显著增加。这种扩展使得…

抖音seo矩阵系统源码|需求文档编译说明(一)

抖音seo矩阵系统文章目录技术囊括 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架构文档 短视频矩阵系统源码开发锦囊囊括前言一、短视频账号矩阵系统开发者必备能力语言&…

计算机视觉 + Self-Supervised Learning 五种算法原理解析

计算机视觉领域下自监督学习方法原理 导语为什么在计算机视觉领域中进行自我监督学习&#xff1f; 自监督学习方法Generative methodsBEiT 架构 Predictive methodsContrastive methodsBootstraping methodsSimply Extra Regularization methods 导语 自监督学习是一种机器学习…

【React】React Hooks解析

React Hooks解析 React 16.8 认识和体验Hooks 为什么需要Hook? Hook是 React 16.8 的新增特性&#xff0c;它可以让我们在不编写class的情况下使用state以及其他的React特性&#xff08;比如生命周期&#xff09; 我们先来思考一下class组件相对于函数式组件有什么优势&…

期末复习【计算机网络】

期末复习【计算机网络】 前言推荐期末复习如何快速阅读电子书重点第1章 概述1.6 计算机网络的性能1.6.2 计算机网络的性能指标√ 1.7 计算机网络体系结构1.7.3 具有五层协议的体系结构√ 第2章 物理层2.3 物理层下面的传输媒体 *2.4 信道复用技术2.4.1 频分复用、时分复用和统计…

node笔记_读写excel

文章目录 ⭐前言⭐安装依赖⭐读取excel&#x1f496; 按行读取&#x1f496; 按列读取 ⭐写入excel⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于node读取excel内容 往期文章 node_windows环境变量配置 node_npm发布包 linux_配置node node_nvm安装配置…

vivo 自研鲁班分布式 ID 服务实践

作者&#xff1a;vivo IT 平台团队- An Peng 本文介绍了什么是分布式ID&#xff0c;分布式ID的业务场景以及9种分布式ID的实现方式&#xff0c;同时基于vivo内部IT的业务场景&#xff0c;介绍了自研鲁班分布式ID服务的实践。 一、方案背景 1.1 分布式ID应用的场景 随着系统的…