BP不用算梯度,这样的线性反向传播也能Work!

栏目: 数据库 · 发布时间: 7年前

内容简介:向传播是常用的学习算法,但它存在一些缺陷,如过于敏感、依赖大量条件和约束。来自加州大学圣地亚哥分校的研究科学家 Mehrdad Yazdani 对误差项的线性反向传播进行研究,该方法在前向传播中使用非线性激活函数,但是在反向传播中使用线性激活函数,因此它可以确保梯度流的正常传递,同时节约计算成本。本论文仅研究误差项的线性反向传播,即忽略非线性梯度流带来的单元饱和。本文将这一学习规则称为线性反向传播(Linear Backprop)。因为不用计算梯度,除了确保持续的梯度流以外,Linear Backprop

向传播是常用的学习算法,但它存在一些缺陷,如过于敏感、依赖大量条件和约束。来自加州大学圣地亚哥分校的研究科学家 Mehrdad Yazdani 对误差项的线性反向传播进行研究,该方法在前向传播中使用非线性激活函数,但是在反向传播中使用线性激活函数,因此它可以确保梯度流的正常传递,同时节约计算成本。

反向传播算法 (Backprop)是很多机器学习算法中主要使用的学习算法。但是在实践中, 深度神经网络 中的反向传播是一种非常敏感的学习算法,它的成功取决于大量条件和约束。约束的目的是避免产生饱和的激活值,这么做的动机是 梯度消失 会导致学习过程中断。特定的权重初始化和尺度变换 方案(如 批归一化 )可确保神经元的输入激活值是线性的,这样梯度不会消失,能够流动。

本论文仅研究误差项的线性反向传播,即忽略非线性梯度流带来的单元饱和。本文将这一学习规则称为线性反向传播(Linear Backprop)。因为不用计算梯度,除了确保持续的梯度流以外,Linear Backprop 在计算成本高昂的情况下仍然可以使用。该研究的早期结果表明,使用 Linear Backprop 进行学习与使用 Backprop 不相上下,且能够节约梯度计算的成本。

这篇 Linear Backprop 接受为 NIPS/NeurIPS 2018 关于紧凑神经网络的 Workshop 论文,该研讨会关注构建紧凑和高效的神经网络表征。具体而言,其主要会讨论剪枝、量化和低秩近似等神经网络压缩方法;神经网络表示和转换格式;及使用 DNN 压缩视频和媒体的方式。

该 Workshop 的最佳论文是机器之心曾介绍过的 Rethinking the Value of NetworkPruning ,这篇论文重新思考了神经网络过参数化的作用,该论文表示剪枝算法的价值可能在于识别高效结构、执行隐性的架构搜索,而不是在过参数化中选择「重要的」权重。Hinton 等研究者也在 Workshop 论文中提出一种 神似剪枝的TargetDropout ,它类似于将剪枝嵌入到了学习过程中,因此训练后再做剪枝会有很好性质。

论文:Linear Backprop in non-linear networks

BP不用算梯度,这样的线性反向传播也能Work!

论文地址: https://openreview.net/pdf?id=ByfPDyrYim

长期以来,人们认为具备非多项式和非线性单元的 深度神经网络 是万能函数逼近器。但是,在神经网络研究的早期阶段,并不清楚学习算法能从权重的最优集合中发现什么。Frank Rosenblatt 的开拓性研究本质上仅学习了多层感知器输出层的权重,且随机保持输入层权重不变,而 Fukushima 使用赫布型学习(Hebbian learning)。反向传播一经引入神经网络研究即获得了巨大成功,目前仍是最常用的学习算法。 

尽管那么成功,反向传播是一种高度敏感的学习算法,在实践中要想使之发挥作用还需要大量技巧。反向传播的问题在于:容易饱和的激活函数、合适的学习率、批大小、epoch 数量等。研究人员付出了很多努力来避免神经元或单元的饱和。饱和单元的主要问题是梯度消失,进而导致学习中断。因此,研究人员进行了大量尝试来确保神经元的输入激活值是线性的,包括引入正则化方法(如 L2 惩罚项)、批归一化和权重初始化。还有一些解决方案从激活函数入手,限制饱和区域来确保梯度流。Gulcehre 等人的研究《Noisy activation functions》对具备非饱和区域的激活函数进行了大量探索,因为这些非饱和区域能提供梯度。

梯度流是学习的必要因素,因此本论文主要研究学习算法都是在确保更优的线性梯度流。线性反向传播算法(见 Algorithm 2)可以确保所有区域的梯度流都能正常传递,因此可用作替代学习算法。与反向传播(见 Algorithm 1)相比,线性反向传播中的前向传播过程是相同的。该网络架构具备非线性激活函数,因此仍然是高度非线性的,但我们在计算损失函数时只考虑线性反向传播误差。由于在线性反向传播中,激活函数的导数不用计算(Algorithm 2 中红色字),因此线性反向传播与反向传播相比节约了计算量 O(ml)。

换一种方式思考本论文提出的学习规则:研究者引入了一个正则化项,使计算梯度时仅计算线性梯度,不考虑非线性组件。也就是说,在推断阶段使用深度非线性网络,但训练阶段中损失函数本质上被裁剪成一个深度线性神经网络。前向传播的计算和反向传播无异,但反向传播仅使用线性反馈项。

近期多项研究出于生物可解性考虑反向传播的变体。[Lillicrap et al., 2016] 展示了使用随机权重的学习过程是可行的。[Baldi and Sadowski, 2016] 考虑了很多赫布型学习算法和误差反向传播学习算法。线性反向传播与 Bengio 等人 2013 年提出的 Straight Through Estimator 有一些相似处,但前者提出对任意激活函数应用估计器。

如前所述,线性反向传播不计算梯度,因此节约了很多计算成本。线性反向传播学习算法支持计算资源有限的情况。实验结果表明在特定条件下,线性反向传播的性能与反向传播相当。

如下图红色所示,线性反向传播算法在传递损失函数的梯度时,因为是线性函数,所以不需要另外再求梯度。

BP不用算梯度,这样的线性反向传播也能Work!

1.1 合成数据示例

BP不用算梯度,这样的线性反向传播也能Work!

图 1:(左)相同的 MLP 架构使用反向传播和线性反向传播时在 5 个样本上的过拟合情况。(中)MLP 使用 50 种不同的权重随机初始化在相同的 5 个点上预测和目标之间的 MSE。(右)使用 sigmoid激活函数进行训练后,单元激活值的直方图。

1.2 在 CIFAR-10 上的VGG和 ResNet 二值神经网络

BP不用算梯度,这样的线性反向传播也能Work!

图 2:VGG19 在 CIFAR-10 数据集上的学习曲线。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Introduction to Computation and Programming Using Python

Introduction to Computation and Programming Using Python

John V. Guttag / The MIT Press / 2013-7 / USD 25.00

This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides student......一起来看看 《Introduction to Computation and Programming Using Python》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码