本技术涉及智能家居,例如涉及一种用于神经网络模型的剪枝方法及装置、电子设备。
背景技术:
1、目前,神经网络的应用已经普及到日常生活的许多领域,包括视觉识别、语音识别、自然语言处理等,但同时增加了对计算资源的要求。为了解决这个问题,不同的模型压缩和优化技术也应运而生。其中剪枝技术是其中一种重要的方法,剪枝技术通过删除神经网络模型中无关或者不重要的神经元或连接以减小模型规模。
2、为了实现神经网络模型的压缩和优化,相关技术公开了一种神经网络模型的结构化剪枝方法,包括:按照设定排序标准对所有神经元的网络权重进行排序;根据排序结果确定网络权重的比例,并确定比例最小的权重;删除比例最小的权重对应的神经元以实现结构化剪枝操作。
3、在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
4、相关技术虽然能降低神经网络模型的复杂度,但是,上述结构化剪枝方法倾向于均匀处理所有神经元或者所有网络层,这使得对特定任务至关重要的网络层或者神经元被剪枝,导致神经网络模型的性能有所下降。因此,结构化剪枝方法不能在不同任务需求和计算资源限制下取得最优全局性能。
5、需要说明的是,在上述背景技术部分公开的信息仅用于加强对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
1、为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
2、本公开实施例提供了一种用于神经网络模型的剪枝方法及装置、电子设备,以精确去除神经网络模型中对性能贡献小的网络单元,同时保留对性能贡献大的网络单元,并最大程度保持模型性能甚至优化模型性能。
3、在一些实施例中,所述剪枝方法,包括:确定每个网络单元在前向传播阶段对神经网络模型性能的第一贡献度;确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度;根据第一贡献度和/或第二贡献度,确定每个网络单元对神经网络模型性能的目标贡献度,其中,目标贡献度表示网络单元对神经网络模型性能的贡献大小;根据每个网络单元对神经网络模型性能的目标贡献度,确定需要剪枝的目标网络单元,并进行剪枝操作以获得新的神经网络模型。
4、在一些实施例中,根据第一贡献度和/或第二贡献度,确定每个网络单元对神经网络模型性能的目标贡献度,包括:将第一贡献度与第一比例系数α作乘积,确定第一参考贡献度;将第二贡献度与第二比例系数β作乘积,确定第二参考贡献度;确定第一参考贡献度与第二参考贡献度的和值作为目标贡献度;其中,0<α≤1,0<β≤1。
5、在一些实施例中,根据每个网络单元对神经网络模型性能的目标贡献度,确定需要剪枝的目标网络单元,并进行剪枝操作以获得新的神经网络模型,包括:确定目标贡献度小于贡献度阈值的网络单元为需要剪枝的目标网络单元;将目标网络单元从神经网络模型中移除,获得新的神经网络模型。
6、在一些实施例中,在网络单元为神经元的情况下,确定每个网络单元在前向传播阶段对神经网络模型性能的第一贡献度,包括:确定每个神经元的评估指标为权重;获得第i个神经元与前一层网络层中各神经元对应的权重,并构建第i个神经元对应的权重向量wi;其中,i表示神经网络模型中神经元的序号,i=1,3,...,n,n表示神经元的总数量;根据第i个神经元对应的权重向量wi,确定第i个神经元在前向传播阶段的评价函数f(i);其中,f(i)=||wi||;对评价函数f(i)进行标准化处理,获得第i个神经元在前向传播阶段对神经网络模型性能的第一贡献度。
7、可选地,对评价函数f(i)进行标准化处理,获得第i个神经元在前向传播阶段对神经网络模型性能的第一贡献度,包括:f(i)=||wi||/σ||wi||。其中,i=1,3,...,n,n表示神经元的总数量,f(i)表示第i个神经元在前向传播阶段对神经网络模型性能的第一贡献度。
8、在一些实施例中,在网络单元为神经元的情况下,确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度,包括:在前向传播阶段获得每个神经元的神经元参数的当前值,神经元参数包括权重;在反向传播阶段,获得每个网络单元的神经元参数以当前值为基准值的更新幅度;根据每个神经元的神经元参数的更新幅度以及迭代次数,确定每个神经元的神经元参数更新幅度的平均值;确定每个神经元参数更新幅度的平均值为每个神经元在模型训练阶段对神经网络模型性能的第二贡献度。
9、在一些实施例中,在网络单元为网络层的情况下,确定每个网络单元在前向传播阶段对神经网络模型性能的第一贡献度,包括:确定每个网络层的评估指标为激活比例;其中,激活比例表示在前向传播阶段当前网络层被激活的神经元数量与当前网络层的所有神经元数量的比值;获得前向传播阶段第j个网络层被激活的神经元数量n(j);将n(j)与sum_n0(j)作比值,获得第j个网络层的激活比例;其中,sum_n0(j)表示第j个网络层的所有神经元数量;确定第j个网络层的激活比例为第j个网络层在前向传播阶段对神经网络模型性能的第一贡献度。
10、可选地,获得前向传播阶段第j个网络层被激活的神经元数量n(j),包括:获得第t次前向传播阶段第j个网络层被激活的神经元数量nl(t,j);获得所有前向传播阶段第j个网络层被激活的神经元总数量sum_nl(j);其中,sum_nl(j)=σnl(t,j),t=1,2,...,t,t1表示前向传播的总次数;将sum_nl(j)与前向传播的总次数t1作比值,确定前向传播阶段第j个网络层被激活的神经元数量n(j)。
11、在一些实施例中,在网络单元为神经元的情况下,确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度,包括:获得第s次模型训练阶段第i个神经元的输出值ela(s,i),输出值表示以sigmoid函数为激活函数下第i个神经元的输出值;获得所有模型训练阶段第i个神经元的输出值总数量sum_ela(i);其中,sum_ela(i)=σela(s,j),s=1,2,...,t2,t2表示模型训练的总次数;将sum_ela(i)与模型训练的总次数t2作比值,获得第i个神经元的平均输出值ave(i);确定第i个神经元的平均输出值ave(i)为第i个神经元在模型训练阶段对神经网络模型性能的第二贡献度。
12、可选地,在网络单元为网络层的情况下,确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度,包括:获得第j个网络层每个神经元的平均输出值的和值,并确定第j个网络层每个神经元的平均输出值的和值为第j个网络层在模型训练阶段对神经网络模型性能的第二贡献度。
13、在一些实施例中,还包括:进行剪枝操作以获得新的神经网络模型后,输入训练数据集至新的神经网络模型进行模型训练,获得微调后的神经网络模型;输入验证数据集对微调后的神经网络模型进行验证,并获得验证指标;在验证指标表示不符合预期模型性能的情况下,返回确定每个网络单元的第一贡献度和第二贡献度,并再次基于第一贡献度和第二贡献度进行剪枝操作,直至验证指标符合预期模型性能。
14、在一些实施例中,所述装置,包括处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如上述的用于神经网络模型的剪枝方法。
15、在一些实施例中,电子设备,包括:设备本体;如上述的用于神经网络模型的剪枝装置,安装于所述设备本体。
16、本公开实施例提供的用于神经网络模型的剪枝方法、装置和电子设备,可以实现以下技术效果:
17、本公开实施例可实现自适应剪枝策略,精确去除神经网络模型中对性能贡献小的网络单元,同时保留对性能贡献大的网络单元。不仅能够降低模型复杂度,减少计算资源需求,而且由于保留性能贡献大的网络单元,能够在最大程度保持模型性能甚至优化模型性能。
18、以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本技术。
1.一种用于神经网络模型的剪枝方法,其特征在于,包括:
2.根据权利要求1所述的剪枝方法,其特征在于,根据第一贡献度和/或第二贡献度,确定每个网络单元对神经网络模型性能的目标贡献度,包括:
3.根据权利要求1所述的剪枝方法,其特征在于,根据每个网络单元对神经网络模型性能的目标贡献度,确定需要剪枝的目标网络单元,并进行剪枝操作以获得新的神经网络模型,包括:
4.根据权利要求1所述的剪枝方法,其特征在于,在网络单元为神经元的情况下,确定每个网络单元在前向传播阶段对神经网络模型性能的第一贡献度,包括:
5.根据权利要求4所述的剪枝方法,其特征在于,在网络单元为神经元的情况下,确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度,包括:
6.根据权利要求1所述的剪枝方法,其特征在于,在网络单元为网络层的情况下,确定每个网络单元在前向传播阶段对神经网络模型性能的第一贡献度,包括:
7.根据权利要求6所述的剪枝方法,其特征在于,在网络单元为神经元的情况下,确定每个网络单元在模型训练阶段对神经网络模型性能的第二贡献度,包括:
8.根据权利要求1至7任一项所述的剪枝方法,其特征在于,还包括:
9.一种用于神经网络模型的剪枝装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至8任一项所述的用于神经网络模型的剪枝方法。
10.一种电子设备,其特征在于,包括:
