神经网络(NNs)已经成为多产在过去的十年里,现在电力行业机器学习。在乳房,我们得到用于各种目的,包括检测和预测对象运动无人驾驶车辆,更快地应对客户,构建更好的地图。
虽然许多NNs执行很好他们的任务,网络本质上是复杂的系统,他们的培训和操作仍知之甚少。出于这个原因,努力更好地理解网络属性和模型的预测正在进行,乳房和在更广泛的科学界。
虽然之前研究分析了网络训练过程中,它仍然在很大程度上仍然是一个黑盒:数以百万计的参数调整通过简单的规则在训练,但我们认为这个过程本身仍然是标量的损失数量有限,它提供了一个严格限制视角丰富和高维的过程。例如,它可能是一个网络的一部分执行所有的学习,另一部分是无用的,只是观察失去永远不会透露。
在我们的论文中,LCA:损失变化分配进行神经网络训练在NeurIPS 2019,我们提出一个方法称为损失变化分配(LCA),提供了丰富的窗口到神经网络的训练过程。LCA分配损失超过单个参数的变化,从而测量每个参数学习多少。使用LCA,我们提出三个有趣的关于噪音,对神经网络层的贡献和层同步。的研究人员和从雷竞技是骗人的业人员被邀请我们的代码尝试这种方法在自己的网络。
我们的方法
揭示的一个方法详细研究了神经网络的训练过程是衡量多少每个可训练的参数的神经网络“学习”在任何时候。在这里,我们认为“学习”网络的变化压低训练集的损失。注意,我们考虑整个训练集上的损失,不仅一批;尽管SGD批量驱动参数更新,我们测量学习对整个训练集。
假设我们正在训练一个网络,在从一个训练迭代参数向量
来
。由于这种运动,减少损失,说,1.85到1.84。在这种情况下
网络,我们可能会说“学会”了一幅减少损失。我们可以通过一阶近似这变化的损失泰勒近似:![]()
看起来没有意义的近似数量,我们可以直接计算,但近似不是我们的最终目标:我们使用近似标量损失的变化分解成各个组件。在这种情况下,方程的右边是两个向量的点积与长度等于参数的数量。我们可以将这个点积分解成其组成加式:
在哪里
在参数向量或梯度向量索引。通过测量在每次迭代的训练,我们能够分配标量损失个别参数的变化。我们称之为衡量损失变化分配(LCA):多少参数迭代的运动导致损失上升或下降。这里有一些直观的LCA的属性:
- 如果一个参数梯度为零或不移动,零LCA,如图1所示。
- 如果一个参数有一个非零梯度和负梯度方向移动,它有一个消极的LCA,如图1所示。我们称这些参数“帮助”,因为他们在一个迭代降低损失。
- 如果一个参数波动的正方向的梯度,它是“伤害”通过增加损失。这可能是由于一个嘈杂mini-batch或者势头导致参数错误的方向移动。
脚踏实地的LCA组件的属性,这意味着他们和实际损失的变化(与一些近似方法的修改考虑曲率,并保证准确性,作为解释完全我们的论文)。在整个培训过程中,我们为每一个参数和迭代测量LCA。如果我们对参数求和,得到的总损失的变化在每个迭代中,如果我们对迭代求和,得到的总LCA每个参数。
通过培训显微镜可视化
如上定义的LCA的测量,我们可以使用它作为一个显微镜培训过程等一些示例网络训练数据集MNIST或CIFAR-10。MNIST,我们训练两个网络:FC,三层完全连接网络和网络两个卷积LeNet层两个完全连接层紧随其后。20-layer CIFAR-10,我们火车ResNet剩余的网络。所有网络博客已经被训练使用SGD和动量(见雷竞技到底好不好用我们纸结果从其他网络和优化)。
在下面的视频中,我们直接可视化LCA数据,每一帧显示所有参数在给定的LCA迭代。FC表示在这个例子中,每个像素代表一个参数,在层。(参见:视频LeNet。)
视频1。我们动画第一MNIST 400次迭代的俱乐部训练。绿色值表示- LCA(帮助),红色值显示积极的LCA(伤害)。
在上面的视频中,我们看到几个趋势:
- 迭代1 - 10:开始时,损失是急剧减少,我们看到很多绿色的参数。
- 迭代10 - 100:几个迭代中,我们看到一个嘈杂的绿色和红色,表明有些参数是帮助和其他伤害。
- 迭代100 +:一旦失去其最终值附近,我们可以看到,大部分像素都接近白色,显示的参数不再显著帮助或伤害。
部分S2在我们的论文提供更多直接可视化的例子。这样的可视化是吸引人的和可以帮助表面缺陷或确定死亡神经元和无用的参数,但很难获得更多定量的结论。为了更好地理解更高级别的LCA模式,我们下一个尝试几定量聚合。
结果1:培训是吵了
我们考虑的第一个聚合LCA的分布值在所有参数和迭代。下面的图2显示了ResNet LCA分布,与绿色酒吧代表组件帮助损失和红酒吧代表组件的伤害:
LCA分布有一些有趣的特性。这个阴谋之前,我们已经知道这个分布的意思是:平均LCA(总损失的变化)/(参数的数量*训练步数)。在图2中,运行所反映出的意思是-2.4 e-9,蓝线。鉴于e-9 -2.4的意思是,我们可能期望一个狭窄的高斯分布值。我们看到的是一个非常广泛的分布。事实上,它是如此之大,以至于在这个级别的细节就很难分辨其均值为0。这意味着,而不是所有网络参数在一个方向推动合作网络对低损失,培训过程参数之间充满了竞争,帮助和伤害。LCA也是沉重的跟踪:如果系统,直方图的日志空间需要倒抛物线的形状。
我们可以量化这一张力通过计算权重的比例,帮助(绿色)而不是伤害(红色)。我们发现只有50.7%的权重帮助为这个网络在给定迭代。换句话说,几乎一半以上的参数是帮助在任何给定的时间随着网络列车;其余的都是朝着错误的方向发展!
惊人数量的积极LCA-parameters朝着错误的direction-raises一些额外的问题:
- 我们训练一个网络越来越长,损失最终将停止下降,参数的百分比,帮助将极有可能收敛到50%。因此,我们问:这近50%比例出现只是因为网络是训练有素的太久?下面的图3表明,事实并非如此:比例仅略高于50%最多点在培训、和略高,但仍低于60%的早期的迭代期间最大的学习。
- 接下来,考虑到许多参数帮助反对伤害许多参数,我们问一些参数是否帮助,如果是这样,他们是其他人所抵消伤害吗?换句话说,有一些“英雄”参数,帮助几乎所有的时间,反对“恶棍”参数,造成持续的伤害?图3 b显示了没有:参数帮助通常只有53%的时间,和参数,帮助至少仍然帮助48%的时间。
这两个观测结果在很大程度上可能是由于振荡的患病率在训练。在图4中,下面,我们显示了运动,潜在的梯度,以及由此导致的两个示例LCA随着时间参数。你可以清楚地看到振荡在这些图表:
除了振荡重量和梯度,图4还披露,一个参数的运动和底层梯度往往一起波动。这表明,振荡是由参数来回摆动在局部最小值而不是mini-batch噪音。
虽然只有两个参数如图4所示,振荡是普遍的在训练和网络的:例如,在运行中,体重平均每7迭代值改变了方向,每10个迭代梯度改变标志。事实上,即使我们调整学习速率,批量大小,在价值观和动量,使网络训练相当不错,我们还观察到普遍的振荡和测量参数中,几乎有一半的伤害(见我们纸详情)。
通过这些实验LCA显示第一个了解神经网络训练:在任何给定的时间将近一半的参数是伤害,或旅游对梯度训练。整个网络学习,只是因为许多嘈杂的LCA组件的平均值略有负面。
结果2:一些层倒退
虽然我们可以用我们的方法来研究低级,总LCA per-parameter LCA,我们也可以在更高级别的故障。我们希望看到不同的见解这种方式;有很多的噪音参数水平,但总的来说,网络学习。总LCA的方法之一是在每一层及以上所有参数。这个措施多少每一层学习训练的过程中,显示了两个网络在图5中,如下:
如果我们每一层的LCA正常化的数量参数,不出所料,我们看到一个逆效应,平均参数在小层有更多的LCA。接下来,我们看看ResNet是否表现出不同的行为:
而FC和LeNet不透露任何惊人的结论,我们注意到一些关于ResNet异常。第一个和最后一个层有积极的LCA,这意味着他们的动作实际上增加了培训过程的损失!虽然我们已经观察到单个参数伤害,我们预计LCA求和时要负大群因为平均LCA是负的。然而,这并非如此这些伤人的层,它始终有积极的LCA每次运行(假定值< 1的军医10分)。
这个奇怪的结果,我们想知道:如果一个层伤害,如果我们冻结层初始化呢?通过阻止权重移动,我们可以停止伤害或帮助。这使网络整体表现更好?我们尝试这种技术与第一层,但由此产生的损失不是更好:即使我们阻止第一层伤害,其他层没有能够帮助。出于这个原因,第一层的参数运动是很重要的,尽管其积极的LCA。然而,如果我们冻结的最后一层,如图7所示,它可以提高网络的整体性能,从而降低整体的损失。
这些结果表明,冻结的最后一层是更好。先前的研究已经发现的好处冻结的最后一层或把它不同。LCA提供了原则性的提示,最后一层最好冻以及解释发生了什么问题在第一时间:这是平均伤害。
要理解为什么一层会损害首先,我们考虑一些可能的原因。mini-batch梯度是整个训练集的无偏估计量梯度,所以mini-batch噪声本身并不能解释总LCA积极。我们先前观察到的参数振动是另一个可能的解释,但没有其他因素,振荡不应该导致错误的方向漂移,因此这并不占总LCA积极。
排除这些选项后,我们假设的解释与不同层的速度响应优化器。由于融合的因素,如果层学习不同的延迟,最后一层可以不断地落后于其他层,稍微的阶段。层种族把损失减小到最低限度,推迟了最后一层可能会收集LCA。
幸运的是,我们可以测试这个假设直接调整每一层的延迟通过优化器的动力。自动力
是一个过去的指数加权平均梯度,梯度平均我们使用吗
迭代。到目前为止,我们一直使用动量0.9每层,相应推迟9迭代;0势头会延迟为0。如果我们减少的势头只是最后一层,我们能够减少的相对延迟最后一层相比,其他层。
我们可以运行相同的网络与不同级别的层延迟,从0到9的迭代,而我们的所有其他层以恒定延迟9。据猜测,最后一层是延迟越少,就越会有帮助!从伤害帮助几乎是线性的转变对延迟。此外,其他层更延迟对最后一层,他们伤害更多,因为他们现在落后,最后一层独占鳌头,如图8所示,如下:
从这些实验中,LCA显示不同层次不同,有些人甚至移动平均梯度和伤害。查看培训通过镜头的信息延迟似乎有效。在一起,这些结果表明,每层优化调整可能是有益的。
结果3:层是同步的
现在我们已经看着每一层的总学习,自然的下一步是研究不同层时学习。之前研究分辨层代表的广泛模式收敛,但运用LCA,我们可以检查layerwise学习规模较小。
LCA方法的一个有用的特性是它使我们能够分析任何损失函数我们关心的。我们可以利用这个优势,将训练集损失分成10个单独的损失(每个地面实况类),我们提供更细粒度的视图到培训过程中,让我们来确定当每一层学习概念对分类有用的(在这种情况下,每个类MNIST)。
为了确定学习时间分辨率高,我们定义了一个“峰值的时刻学习”为一层和一个类作为一个局部最小值的LCA层和类。换句话说,该类损失降低了由于运动这一层迭代t大于减少由于运动在迭代t + 1或t - 1。
我们把学习的前20名的峰值时刻每层MNIST-FC和每一个类在图9中,如下:
奇怪的是,我们经常看到的三个点在一条直线可见性(红色突出显示),这意味着所有三层学习在同一个类相同的迭代。精确对齐的高峰时刻学习的平均数量明显高于预期的数量如果我们假设层独立进步(p < 0.001)。
同步这些点不能简单地解释为个别批次造成大型同步网络因为重量运动的变化在我们也同步S18(图美国纸),迭代的重量运动峰值和峰值LCA通常不一致。每层梯度和类也同步(图S15纸),这是另一个令人惊讶的观察:每个类训练集变得陡峭的损失对所有层在同一迭代,这无疑有助于使同步学习成为可能。
这给我们带来了我们最后的结论:层学习同步在微尺度。
结论和未来的工作
我们已经介绍了损失变化分配(LCA)方法和证明,通过聚合LCA以不同的方式,我们可以发现吵闹的训练,发现某些奇怪的流动对梯度层,并揭示了增量学习的跨层同步。
在我们的病人报纸上,我们详细说明我们的研究结果,分析网络和优化,并讨论这项工作可能的地方。例如:
- 到目前为止讨论的所有实验用训练集。如果我们跟踪验证LCA,我们可以比较训练LCA和验证LCA测量哪些参数导致过度拟合。这种分析可以使目标正规化。
- LCA可以用来识别权重不帮助,因此目标修剪或初始化。
- 除了识别层冻结,LCA可以识别的一个重要的诊断工具理想hyperparameters或配置不佳的网络架构。
- 更好的优化器可能会考虑到参数层频繁振荡或实现可调每层hyperparameters。
可能性是众多,LCA可以使用任何参数化模型。如果你感兴趣的工作,你想了解更多,看看我们纸,使用我们的代码尝试你自己的网络,如果你想从事这类研究挑战超级人工智能,雷竞技是骗人的在我们的团队申请角色。
我们期待着学习任何额外的想法应用LCA !
看看超级人工智能的最新研究雷竞技是骗人的m.lharmeroult.com/雷竞技是骗人的research/。







