本篇博文主要来源于对文章 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函数作为神经元的激活函数,为神经元在线性变换 wTx+b\mathbf {w} ^{T}\mathbf {x} +bwTx+b 之后的非线性输出结果。换言之,对于进入神经元的来自上一层神经网络的输入向量 xxx,使用ReLU函数的神经元会输出
max⁡(0,wTx+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激活函数的简单网络结构。其中x1,x2x_1,x_2x1​,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)如上右图所示。在这种高维情况下,局部激活区域对边际特征的投影可能相互重叠。


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

深入理解ReLU函数(ReLU函数的可解释性)相关推荐

  1. PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ 激活函数是神经网络中的重要组成部分.在多层神经网络中,上层节点的输出和下层节点的输入之间有一个函数关系.如果这个函数我们设置为非线性函数,深层网络的表达能 ...

  2. 【笔记】ReLU和LeakyReLu函数

    [笔记]ReLU和LeakyReLu函数 ReLU ReLu全称为修正线性单元,是神经网络中最常用的激活函数:其公式如下 y i = { x i i f x i ≥ 0

  3. 深度学习激活函数中的线性整流函数ReLU及其变种

    线性整流函数ReLU         线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元, 是一种人工神经网络中常用的激活函数(activation functi ...

  4. 多角度理解sigmoid,relu和tanh激活函数

    sigmoid激活函数 函数表达式: 函数图像: 通过该图,可以看出对于sigmoid激活函数的一下几个特点: 1.当输入大于零时,输出一定大于0.5 2.当输入超过6时,输出将会无限接近于1,该函数 ...

  5. php内核函数手册,深入理解PHP内核(五)函数的内部结构,深入理解内部结构

    深入理解PHP内核(五)函数的内部结构,深入理解内部结构 php的函数包括用户定义的函数.内部函数(print_r count...).匿名函数.变量函数($func = 'print_r'; $fu ...

  6. python怎么用gamma函数_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  7. 正确理解以下名词及其含义:(1)源程序,目标程序,可执行程序(2)程序编辑,程序编译,程序连接(3)程序,程序模块,程序文件 (4)函数,主函数,被调用函数,库函数

    正确理解以下名词及其含义: (1)源程序,目标程序,可执行程序. ​ 源程序:指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令 ​ 目标程序:为源程序经编译可直接被 ...

  8. 什么是函数的副作用——理解js编程中函数的副作用

    什么是函数副作用? 函数副作用是指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响.副作用的函数不仅仅只是返回了一个值,而且还做了其他的事情,比如: 1.修改了一个变量2.直接修改数据结 ...

  9. logistic回归的一些直观理解(1.连接函数 logit probit)

    logistic回归的一些直观理解(1.连接函数 logit probit) 前面写了一些读书笔记是关于用logit回归做二分类问题后的效果评价,基本上已经可以告一段落.然后打算回过头来整理一下log ...

  10. gamma分布_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

最新文章

  1. 【Kotlin】Kotlin 委托 ( 使用 by 关键字进行接口委托 )
  2. DNS扫盲系列之五:域名配置ZONE文件
  3. oracle rollup 小计,Oracle Group By 用法之 —— Rollup (小计功能)
  4. 美团股价盘中涨幅超7% 市值重回2万亿港元关口
  5. ie检查服务器证书吊销,浏览器弹出“该站点安全证书吊销信息不可用是否继续”解决方法...
  6. 大话西游之程序员做项目
  7. 论坛指定portal.php,去除Discuz论坛域名后面的/forum.php或portal.php
  8. [Java] ActionEvent 事件处理
  9. php工程师各大公司要求
  10. js点击页面其他地方如何隐藏div元素菜单
  11. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
  12. 新书即将上市:《善用佳软:高效能人士的软件应用之道》
  13. VSCode SSH 远程连接
  14. 电脑录麦克风声音软件的选择
  15. Empire简介及安装
  16. 一文揭秘:「政府之眼」与「加密世界透视者」Chainalysis
  17. 学生上课睡觉班主任怎么处理_学生上课睡觉老师应该怎么办?
  18. 怎么将图片批量重命名为姓名?
  19. 阿里云南京云栖大会举行 给制造业升级下猛药
  20. coreos 安装 mysql_技术|手把手教你在 CoreOS 上构建你的第一个应用

热门文章

  1. C语言函数指针编程练习
  2. sql server 2005 外围应用配置器错误 - 计算机 localhost 在网络上不存在,或无法远程配置该计算机
  3. yolov5 Detected call of `lr_scheduler.step()` before `optimizer.step()`.
  4. vue单页面通过prerender-spa-plugin插件进行SEO优化
  5. Labview 前面板放置照片
  6. 逆运动学:RRR型 2D 三轴机械臂的IK求解 | 机械臂运动学笔记(二)
  7. (菜鸟要飞系列)五,基于Asp.Net MVC5的后台管理系统(添加数据表的分页功能)...
  8. [STM32学习]——一文搞懂I2C总线
  9. FFmpeg 从零开始开发简单的音视频播放器(四)
  10. php show.bs.popover,POP提示 (Popover)