神经网络裁剪技术 ------ 显著性(Distinctiveness)

本文介绍了一种基于显著性分析的神经网络裁剪技术,该技术可通过去除冗余参数缩小模型规模,同时保持模型性能。文章详细阐述了通过计算隐藏层神经元之间的向量角来进行裁剪的过程。

前言

随着深度学习技术的不断发展,其逐步应用到愈发复杂的现实背景当中。为了处理复杂的现实问题,人们所使用的神经网络模型变得越来越深(隐藏层 hidden layer 数目增加),亦或者是越来越大(单个隐藏层内包含的隐藏神经元 hidden unit 的数量增加),从而导致了计算量增加,计算时间增加,以及参数占用的内存增加。为了控制模型的大小,人们使用各种方法尽可能减少参数的使用,比如减少隐藏层数目或者减少单个隐藏层中隐藏神经元的数目,但隐藏单元的减少意味着减少该模型可能从输入数据中提取到的特征数目(每一个隐藏神经元的作用可认为是提取一个独立的特征)。

一开始选择适当的模型结构以及隐藏单元的数目往往取决于设计者的经验,并没有固定准确的方法可供参考。因此,人们通常会将神经网络设计成稍大一点,以保证拥有足够或者过多的参数提取必要的特征,即便这种方法存在着过拟合的风险。本文将介绍一种网络裁剪技术,可用于除去已训练深度神经网络的冗余参数,从而得到规格相对较小,又能保证特征提取的模型,该方法也可用于预实验,为深度神经网络模型的结构设计提供参考。

需要说明的是,本文的实验是根据 T. GedeonD. Harris 的论文 Network reduction techniques 介绍的方法进行的,有兴趣的朋友可以阅读文末提供的参考文献。

原理说明

要介绍如何利用显著性(Distinctiveness)对神经网络进行裁剪,我们先简单复习以下神经网络的基本内容。

神经网络结构

上图是一个简单的三层神经网络(3-layer Neural Network)或者也叫两层神经网络(2-hidden-layer Neural Network)。它有三个网络层,分别是输入层(input layer)、隐藏层(hidden layer)和输出层(output layer),其大小分别为3、5和2。对于这个模型,我们可以简单的理解就是,它有一个隐藏层,可以提取输入样本中简单的或者说低维度的特征,比如直线、曲线之类的。隐藏层中具有5个隐藏神经元,可以认为它们分别提取不同的简单特征。

但是,如果输入层接收到样本是一个极其简单的对象,隐藏层中可能只需2个或者3个神经元,模型就能得到很好的结果,而5个隐藏单元则会导致冗余,可能某两个或三个单元提取了同一个特征,增加了运算量和运算时间,甚至还会造成过拟合。那在这种情况下,我们就可以参考每个隐藏单元的显著性(Distinctiveness)来决定,如何确定模型的大小,以及保留哪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值