本篇博文主要来源于对文章 Unwrapping The Black Box of Deep ReLU Networks: Interpretability, Diagnostics, and Simplification 的学习,同时还有部分内容摘自wiki百科。


什么是ReLU函数?

ReLU,全称为:Rectified Linear Unit,是一种人工神经网络中常用的激活函数,通常意义下,其指代数学中的斜坡函数,即
f ( x ) = max ⁡ ( 0 , x ) f(x)=\max(0,x) f(x)=max(0,x)
对应的函数图像如下所示:

而在神经网络中,ReLU函数作为神经元的激活函数,为神经元在线性变换 w T x + b \mathbf {w} ^{T}\mathbf {x} +b wTx+b 之后的非线性输出结果。换言之,对于进入神经元的来自上一层神经网络的输入向量 x x x,使用ReLU函数的神经元会输出
max ⁡ ( 0 , w T x + b ) \max(0,\mathbf {w} ^{T}\mathbf {x} +b) max(0,wTx+b)
至下一层神经元或作为整个神经网络的输出(取决现神经元在网络结构中所处位置)。


优势

相比于传统的神经网络激活函数,诸如逻辑函数(Logistic sigmoid)和tanh等双曲函数,ReLU函数有着以下几方面的优势:

  • 仿生物学原理:相关大脑方面的研究表明生物神经元的讯息编码通常是比较分散及稀疏的。通常情况下,大脑中在同一时间大概只有1%-4%的神经元处于活跃状态。使用线性修正以及正规化;(regularization)可以对机器神经网络中神经元的活跃度(即输出为正值)进行调试;相比之下,逻辑函数在输入为0时达到 0.5,即已经是半饱和的稳定状态,不够符合实际生物学对模拟神经网络的期望。不过需要指出的是,一般情况下,在一个使用ReLU的神经网络中大概有50%的神经元处于激活态。
  • 更加有效率的梯度下降以及反向传播:避免了梯度爆炸和梯度消失问题;
  • 简化计算过程:没有了其他复杂激活函数中诸如指数函数的影响;同时活跃度的分散性使得神经网络整体计算成本下降.

下面我们使用一个全部用ReLU函数的网络来进一步了解其结构的作用。


一个例子


上图为定义了一个使用ReLU激活函数的简单网络结构。其中 x 1 , x 2 x_1,x_2 x1,x2为两个输入变量,右侧为输出,中间为两个隐层,分别由两个与四个节点。这两个隐层的权重我们进行指定:

通过第一隐层后,ReLU函数会将整个输出的 [ − 1 , 1 ] × [ − 1 , 1 ] [-1, 1] \times [-1, 1] [1,1]×[1,1]的二维区域分为4个子区域,如下左图所示;而通过第二个隐层后,划分为11个子区域(下右图)。


经过简单的计算可以得到,多层仅用ReLU函数的神经网络,在每个区域之中都是一个线性函数的拟合,称之为局部线性模型。我们也可以通过下面的推导,看到这一结论。


局部线性模型(Local Linear Model, LLM)


Local Linear Profile

对每个区域中的每个变量,我们都可以定义一个 Local Linear Profile,其定义如下

联合截距项重要性与变量重要性

通过上述的分区域表达,我们可以构造出两种重要性排序指标。下面分别为,联合截距项重要性变量重要性

其能够分别看出每个区域的相对重要性,以及每个变量在总体网络结构中的重要性情况。


真实数据实验

这里以一个真实数据为例,选取前三十个LLMs,看看其对于原始真实数据拟合的表现。

上左图为原始的拟合情况,上右图为剖面图(profile plot),其中的每条线段都表示一个小区域中的拟合,没有重叠,因为在一维情况下所有的边缘区域都是不相交的。注意,在剖面图的底部,通过归一化核密度估计,对每个激活区域的样本分布分别进行平滑处理,为具体的分布情况。

对于二维双圆环数据集,我们可以通过下图看出具体的样本可解释性情况。


从上中图中,二维平面被划分成了500多个区域。在这种可视化中,大面积的蓝色区域代表没有训练实例的未知领域。上右图展示了一个特征的局部线性剖面图(前30个边际LLMs)如上右图所示。在这种高维情况下,局部激活区域对边际特征的投影可能相互重叠。


同样,在真实数据中,我们也可以看到每个变量的重要性情况,以及重要变量对应的不同区域的剖面图。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐