精读Slot Machines: Discovering Winning Combinations of Random Weights in Neural Networks

摘要

        本文从网络的初始化和优化上下手,提出一种不是改变权值,而是选择权值的方法。作者发现,只需要给每层连接提供少量选择,如8个,便可取得十分具有竞争力的结果,而且再微调这些权值组合后,便可超过baseline

方法

架构

        本文方法大致流程分三步。第一步是初始化权值,但是相比于传统方法只给每两个节点之间分配一个权值,本文的方法会给每两个节点之间分配K个权值;第二步前向传播,和传统方法基本一致,而权值的选择是根据每个权值的学习分数;第三步,更新每个权值的分数,不论是否在前向传播中使用,但不更新改变任何一个具体的权值。之后重复第二,三步。

权值选择

        如上文所述,前向传播中要对于每个连接,从K个权值中选择一个权值,本文利用的是一个函数p,输入K个数后,K会返回一个位于1到K之间的下标。本文提出了两种p,一个是选出分数值最大的,被称为贪婪选择(Greedy Selection, GS),另一种是多项式分布,p~Mult(s1,s2...sK),s为权值的分数,Mult为多项式分布。(这里没懂,服从分布怎么就能返回一个整数下标了?)这种方法称为概率采样(Probabilistic Sampling, PS)。

反向传播

        在反向传播阶段,每一对节点之间的连接的更新,都直接利用最后一层的损失函数,因为p的梯度在任何一对节点之间几乎都为0。针对每个权值,更新的公式为

         而其中,sijk为j节点连到i节点的第k个权值的分数,α为学习速率,倒置的Δ的计算公式如下

        L为损失函数。i在第l层,j在第l-1层,h(x)j即为j的激活后的输出,Wijk为j节点连到i节点的第k个权值。a(x)i为第i层的pre-activation,与之对应的是传统的post-activation,传统的方法是计算出连接之后,即计算完卷积之后,再输入到BN和激活函数中,而pre-activation是先输入到激活函数,再计算卷积。而这里的a(x)i就是第一次激活后,还未算卷积的输出。

实验

        作者的目的是探究随机初始化权值的网络能否取得良好的性能,所以第一个实验和未训练过的网络进行了对比,因为本文网络训练了200个epochs,所以毫不意外的碾压式胜利

        之后,作者对比了用传统方法训练的网络,本文网络取得了十分相当的表现,部分情况还超过了传统网络。而且横轴是K的选取,可以发现,当K太多时,网络性能反而会下降。

        作者还对比了进行相同计算量时网络性能的对比。个人感觉是作者以为本文的方法能节约计算量(因为看摘要时我也是这么想的。。。),结果尬尴的是两者不相上下,而且本文方法在大部分时间其实还弱于传统方法。估计原因是计算更新分数还是太耗费计算量了

        在训练效率上打不过,作者便探索如何进一步提高网络性能。作者发现,将训练过的网络进行微调后,可以打过传统方法。下图中,横轴是计算量,纵轴是准确率,红色为传统方法,绿色为未微调的本文方法,蓝色未微调后的本文方法,可见,相同计算量时,微调可以提高本文模型性能。

         作者还对比了进行不同个训练epochs后,再进行微调的模型的性能

        最后,作者对比了两种权值选择策略,第一个图显示了网络变化幅度,用贪婪选择的网络能更快地确定参数,快速减少每一次训练的权值改变数量。第二张图对比了性能,GS全面优于PS。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值