权值简化(1):三值神经网络(Ternary Weight Networks)

三值神经网络:

本文是对中科院两位科研工作者的文章的理解翻译:

    就目前而言,深度神经网络的层数和训练时间变得越来越多。一方面,人们想要在处理器上面下功夫,但是处理器的处理速度也十分有限。造成目前一个比较深的神经网络的训练时间有时候往往需要一到两周,基于目前的困难,就有人提出了解决方式。

    首先,在神经网络训练的整个训练过程中,最占用时间的无疑是乘法操作。是浮点型数据的乘法尤其消耗计算量,往往需要很多个Clock。那么,如果把所有全连接的权值全部变成1,或者-1的话,乘法运算就变成了简单的加减法,这无疑是非常节约计算时间的。目前的权值简化策略大概分为两种,Binary和Ternary。Binary是把权值简化为1和-1,而Ternary是把权值简化为1,-1,0两者的区别是什么呢?Binary在比较简单的库表现比较好比如说MNIST, CIFAR-10,但是在比较复杂的库比如说ImageNet上表现相对于Ternary有差距。

    其次,讲一下三值神经网络的具体的实现,算法见下图:


这个算法的核心是只在前向和后向过程中使用使用权值简化,但是在update是仍然是使用连续的权值。

简单的说就是先利用公式计算出三值网络中的阈值:


也就是说,将每一层的权值绝对值求平均值乘以0.7算出一个deta作为三值网络离散权值的阈值,具体的离散过程如下:


    这样,我们就可以把连续的权值变成离散的(1,0,-1),那么,接下来我们还需要一个

    alpha参数,具体干什么用后面会说:这个参数的计算方式如下:


  |I(deta)|这个参数指的是权值的绝对值大于deta的权值个数,计算出这个参数我们就可以简化前向计算了,具体简化过程如下:



可以看到,在把alpha乘到前面以后,我们把复杂的乘法运算变成了简单的加法运算,从而加快了整个的训练速度。下面我们可以看看我们做得三值神经网络的效果如何:


   可以看到,其实三值网络在ImageNet这种库上面,虽然效果好于二值网络但是还是不够准确,实际的工作中我们可以考虑在准确率到达一定程度后,再去使用简化权值网络达到加快训练时间同时保护识别精度的效果。
原文:https://www.researchgate.net/publication/303270485_Ternary_Weight_Networks?ev=auth_pub
 



  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值