您的位置:首页 > 娱乐 > 明星 > 焦作官网网站推广工具_青岛网页搜索排名提升_seo的概念是什么_360搜索网址是多少

焦作官网网站推广工具_青岛网页搜索排名提升_seo的概念是什么_360搜索网址是多少

2025/3/11 5:35:50 来源:https://blog.csdn.net/m0_37970224/article/details/145975670  浏览:    关键词:焦作官网网站推广工具_青岛网页搜索排名提升_seo的概念是什么_360搜索网址是多少
焦作官网网站推广工具_青岛网页搜索排名提升_seo的概念是什么_360搜索网址是多少

一、前言

本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!!

二、大纲

  1. Network Pruning(网络剪枝)
  2. Knowledge Distillation(知识蒸馏)
  3. Parameter Quantizationl(参数量化)
  4. Architecture Design(架构设计)
  5. Dynamic Computation(动态计算)

三、网络剪枝(Network Pruning)

概念
通俗解释:一个训练好的神经网络模型里面是会有一些冗余的神经元(neurons)和权重(weights),把不重要的权重和神经元去掉,期待模型的性能只出现略下降低,这就是模型剪枝的概念。

流程
在这里插入图片描述
说明:
step1:预训练一个大的模型;
step2:评估重要性(weights 和 neural);
step3:移除不重要的权重和神经元,从而缩小了模型;
step4:再次对剪枝好的模型进行fine-tune;
step5:循环2-4步骤,直至模型足够小,准确率没损失多少时候停下来,从而得到剪枝后的小模型。

剪枝的对象主要有两种:

  • Weight pruning(权重剪枝)
  • Neuron pruning(神经元剪枝)

面向权重的剪枝
在这里插入图片描述
操作:把不重要的权重拿掉,网络架构会变得不规则(神经元所连接的权重并没有全部被删除,而是保留的一部分的权重,就成了稀疏矩阵),导致不好用pytorch去实现网络架构,另外GPU也不太好加速。如果把不需要的权重置为0的话,其实还是得存储相应的神经元和为零的权重,达不到剪枝的效果。

面向神经元的剪枝
在这里插入图片描述
操作:去掉神经元,那自然和神经元连接的权重也被去掉了,这样就不存在稀疏矩阵,神经网络的架构也比较规律(每一层的维度你知道的),使用pytorch也比较好实现,也容易使用GPU进行加速。

为啥不直接训练一个小网络?
为什么不直接训练一个小点的网络就完事了呢?
因为,众所周知小网络更难学得好,大网络更容易被优化。可参见(需墙):https://www.youtube.com/watch?v=_VuWvQUMQVk

还有一种称为大乐透理论(Lottery Ticket Hypothesis)
何为大乐透理论?
在这里插入图片描述
基本思想:大网络可以拆解成很多的小网络,只要小网络中有一个表现得好的话,整体效果就会比较好。形象比喻就是“一人得道,鸡犬升天”,也像是大乐透似的,大网络就像是多买了几组,可能性变多了,当然更容易中奖。

在这里插入图片描述

剪枝后的模型如果是给定一组随机权重,那达到和原始大网络模型差不多的效果是比较难的,这里是需要一个找最优参数的过程,但是如果是直接让剪枝后的模型沿用母模型的权重,那还是能train得起来,效果和母模型差不多。为什么会这样?我的个人理解是上图右下角的红色权重模型拥有全局观,因为它是从母模型中分离出来且保留权重的,我愿称之为见过世面。而右上角的绿色权重模型是随机权重,我称之为还是婴儿期的模型,跌跌撞撞的很难冲破极限。

后来有人研究,发现其实是和初始参数的正负号有关系
再后来,也有研究学者说明大乐透理论还是比较有局限性的使用场景。

四、知识蒸馏(Knowledge Distillation)

通俗解释:让小模型学习大模型的行为可以看做是知识蒸馏。
在这里插入图片描述
上图说明:
有两个神经网络,Teacher Net(Large) 和 Student Net(Small),假设Teacher Net输入一张手写数字辨识图片1,输出机率分布为“1”:0.7,“7”:0.2,“9”:0.1,我们期待Student Net输入同样的图片1,输出的机率分布和Teacher Net输出结果越接近越好,这就是知识蒸馏,即小网络学习大网络的行为。

通常而言,Teacher Net可以不只是1个,它可以是多个模型输出的平均值,这一招就叫做Ensemble。

还有一个不一样的地方,就是改写了softmax,引入了Temperature,使得输出更加平滑。
在这里插入图片描述

五、参数量化(Parameter Quantizationl)

通俗解释:在模型存储上做文章,用更少的字节表示一个值,对落在同一区间的权重值做聚合。

基本思想:

  • Using less bits to represent a value(用更少的字节来表示一个值)
  • Weight clustering(权重聚合)

在这里插入图片描述
对落在同一区间(区间是自定义)的数值求和取平均进行存储,形成一个编码表。

六、架构设计

Depthwise Separable Convolution(深度可分离卷积)
将标准的CNN卷积换成深度可分离卷积(Depthwise Separable Convolution)
什么是标准的CNN?
在这里插入图片描述
说明:
上图输入通道为2的feature map,每个卷积核也必须和输入的通道数一致,图上有4个卷积核即得到4张卷积后的特征图,总参数量为3×3×2×4 = 72。

什么是深度可分离卷积?

  • Depthwise Convolution
    每个卷积核的通道数为1,不再和输入的通道数一致,而是每个卷积核负责1个通道,具体动画演示一下:
    在这里插入图片描述
    那通道和通道之间的关系又是怎么被考虑进来的呢?那就是Pointwise Convolution。

  • Pointwise Convolution
    基本思想就是用大小为1×1的卷积核,但是通道数要和输入feature map的通道数一致,具体过程如下图:
    在这里插入图片描述
    这样做的好处是参数量得到了减小。
    具体减少了多少呢?
    设输入的通道数为 I,输出的通道数为 O,卷积核大小为 k,对比两种方式:
    在这里插入图片描述
    最终的普通卷积和可分离卷积的参数关系如下:
    参数比 = 1 / O + 1 / ( k × k ) 参数比 = 1/O+1/(k×k) 参数比=1/O+1/(k×k)

还有一种方法是在两个隐藏层中间再架一层小层以减少参数,这种方法称之为Low rank approximation。

  • Low rank approximation
    在这里插入图片描述
    浅浅代入一组值算一下,确实参数量变少了。

七、动态计算

概念:模型根据资源或者环境现状来调整其大小。

  • Dynamic Depth(动态调整深度)
    例如:在手机上安装人工智能软体,在手机低电量时候期望不要整个模型都跑一遍,而是跑个一两层就停下来,下图所示:
    在这里插入图片描述

这件事情又应该如何实现呢?
step1:先完整的训练一个神经网络;
step2:把每一层的结果抽出来,单独训练每一层输出和真值的差距;
step3:期望每一层的输出,还有整体的输出,和真值越接近越好,这是目标;
根据环境情况,设置用哪几层,或者是训练下去,让机器自己决定。

  • Dynamic Width(动态调整宽度)
    在这里插入图片描述
    同样的思路,只不过是把深度改成了宽度。

  • Computation based on Sample Difficulty
    根据输入的简易程度,模型自己决定要用几层。
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com