神经网络稀疏性调研

背景

人工智能在诸多领域都取得了突破性进展,例如计算机视觉,nlp等。但是,各种机器学习模型存在一个很致命的问题:神经网络巨大的计算量+访存量,这对性能提出了较高的要求(能耗、延时、访存等)。一种可行的解决方案:充分利用机器学习模型中的稀疏性。所谓的稀疏性是指在计算中不必要,没用的计算。通过减少计算量,就可以保证降低不必要的存储和计算,提升机器学习模型部署时的性能。

稀疏性的分布

根据稀疏性的来源,我们可以基本分为以下几类。

  • 科学计算和传统的机器学习
  • 神经网络:神经网络(CNN,DNN)中存在大量的不需要计算的数据。例如大量的非零权重,dropout,一些典型模型构建和操作(如Relu,dropout)等操作将大量零值引入到activation中。为了解决这些不必要的计算,一些主流神经网络压缩技术(如稀疏化和量化)通过对神经网络模型参数的稀疏化来压缩模型大小。稀疏化就是跳过不必要的计算,包含剪枝。量化是指将需要浮点数表示的小数用int或者二值来表示。一般稀疏性分为权重和activation两种。
  • 输入数据
    神经网络稀疏性

CNNs

用于图像(自动驾驶)。CNN的特征是包括大量的全连接层(FC)和卷积层(Conv),前面的层提取低纬的信息(图像中物体的边缘),后面的层提取高维的信息(分类)。CNNs的稀疏性主要来源于

  • 激活函数:例如relu会引入大量的中间变量的稀疏性。
  • Dropout:这个是为了解决过拟合的问题。目前有target dropout和weight dropout等,这些会一如fc和conv的稀疏性。
  • 参数的稀疏性:一般会利用一些剪枝的算法。根据剪枝出来的粒度可以分为

Structured sparsity / unstructured sparsity

结构化稀疏就是指我们需要剪掉的计算的分布是有一定规律的,这种对硬件更加友好,但是在影响模型的精度方面是有很大的负面影响的;非结构化稀疏是指我们需要剪掉的计算的分布没有什么规律,因此我们可以剪掉完全的0值,这样对精度的影响很小,但是这种会对硬件的加速非常不友好。
结构化稀疏根据粒度可以分为下面的几个方面:

  • vector-level:它相对于细粒度更大,属于对卷积核内部的剪枝,例如剪掉一行或者一列。
  • kernel-level:即去除某个卷积核的
  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
稀疏BP神经网络是一种能够自动选择重要连接并剔除无用连接的神经网络。下面是一种实现稀疏BP神经网络的方法: 1. 初始化网络:首先,初始化神经网络的权重和偏置。可以使用随机初始化方法,如高斯分布或均匀分布。 2. 前向传播:将输入数据通过网络进行前向传播,计算每个神经元的输出值。可以使用激活函数(如sigmoid函数)来引入非线。 3. 计算稀疏:在前向传播过程中,通过某种方法计算每个神经元的稀疏度量。一种常用的度量是平均激活值(average activation)。具体而言,计算每个神经元在训练样本上的平均激活值,并与一个预先设定的稀疏目标进行比较。 4. 反向传播:根据网络输出和目标值之间的差异,使用反向传播算法计算每个权重和偏置的梯度。 5. 更新权重和偏置:使用梯度下降法或其他优化算法,根据计算得到的梯度更新网络的权重和偏置。 6. 剪枝连接:根据稀疏度量选择要剪枝的连接。可以使用阈值来决定哪些连接被认为是无用的,然后将这些连接的权重设置为零或删除它们。 7. 调整网络结构:根据剪枝的连接,调整网络的结构。可以删除无用的神经元或重新连接其他神经元。 8. 重复步骤2-7:重复进行前向传播、反向传播、剪枝和调整网络结构的步骤,直到达到稀疏目标或收敛。 请注意,这只是一种实现稀疏BP神经网络的方法之一,具体的实现可能会有所不同。此外,还有其他方法可以实现稀疏,如L1正则化、自适应学习率等。可以根据具体问题和需求选择适合的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值