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

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

内容简介:向传播是常用的学习算法,但它存在一些缺陷,如过于敏感、依赖大量条件和约束。来自加州大学圣地亚哥分校的研究科学家 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 数据集上的学习曲线。


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

查看所有标签

猜你喜欢:

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

Python编程快速上手

Python编程快速上手

Albert Sweigart / 王海鹏 / 人民邮电出版社 / 2016-7-1 / 69.00元

如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不......一起来看看 《Python编程快速上手》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具