谈谈激活函数以零为中心的问题

今天在讨论神经网络中的激活函数时,陆同学提出 Sigmoid 函数的输出不是以零为中心的(non-zero-centered),这会导致神经网络收敛较慢。关于这一点,过去我只是将其记下,却并未理解背后的原因。此篇谈谈背后的原因。

神经元

 

图片来自:https://zhuanlan.zhihu.com/p/25110450

如图是神经网络中一个典型的神经元设计,它完全仿照人类大脑中神经元之间传递数据的模式设计。大脑中,神经元通过若干树突(dendrite)的突触(synapse),接受其他神经元的轴突(axon)或树突传递来的消息,而后经过处理再由轴突输出。

在这里,诸x_i{} 是其他神经元的轴突传来的消息,诸w_i{} 是突触对消息的影响,诸 w_i{}x_i{}则是神经元树突上传递的消息。这些消息经由神经元整合后()再激活输出(f(z))。这里,整合的过程是线性加权的过程,各输入特征x_i{} 之间没有相互作用。激活函数(active function)一般来说则是非线性的,各输入特征x_i{} 在此处相互作用。

Sigmoid 与 tanh

此篇集中讨论激活函数输出是否以零为中心的问题,因而不对激活函数做过多的介绍,而只讨论 Sigmoid 与 tanh 两个激活函数。

Sigmoid 函数

Sigmoid 函数的一般形式是

 

这里,参数a 控制 Sigmoid 函数的形状,对函数基本性质没有太大的影响。在神经网络中,一般设置a=1 ,直接省略。

Sigmoid 函数的导数很好求

   

 

图片来自:https://zhuanlan.zhihu.com/p/25110450

tanh 函数

tanh 函数全称 Hyperbolic Tangent,即双曲正切函数。它的表达式是

   

双曲正切函数的导数也很好求

   

 

图片来自:https://zhuanlan.zhihu.com/p/25110450

一些性质

Sigmoid 和 tanh 两个函数非常相似,具有不少相同的性质。简单罗列如下

  • 优点:平滑
  • 优点:易于求导
  • 缺点:幂运算相对耗时
  • 缺点:导数值小于1,反向传播易导致梯度消失(Gradient Vanishing)

对于 Sigmoid 函数来说,它的值域是(0, 1),,因此又有如下特点

  • 优点:可以作为概率,辅助模型解释
  • 缺点:输出值不以零为中心,可能导致模型收敛速度慢

此篇重点讲 Sigmoid 函数输出值不以零为中心的这一缺点。

收敛速度

这里首先需要给收敛速度做一个诠释。模型的最优解即是模型参数的最优解。通过逐轮迭代,模型参数会被更新到接近其最优解。这一过程中,迭代轮次多,则我们说模型收敛速度慢;反之,迭代轮次少,则我们说模型收敛速度快。

参数更新

深度学习一般的学习方法是反向传播。简单来说,就是通过链式法则,求解全局损失函数对某一参数w的偏导数(梯度);而后辅以学习率\eta ,向梯度的反方向更新参数w 。

   

考虑学习率\eta 是全局设置的超参数,参数更新的核心步骤即是计算 。再考虑到对于某个神经元来说,其输入与输出的关系是

   

因此,对于参数w_i{} 来说,

   

因此,参数的更新步骤变为

   

更新方向

由于w_i{} 是上一轮迭代的结果,此处可视为常数,而\eta 是模型超参数,参数w_i{} 的更新方向实际上由决定。

又考虑到 对于所有的w_i{} 来说是常数,因此各个 w_i{} 更新方向之间的差异,完全由对应的输入值x_i{} 的符号决定。

以零为中心的影响

至此,为了描述方便,我们以二维的情况为例。亦即,神经元描述为

 

现在假设,参数 w_0{},w_1{}, 的最优解w_0{}^*{},w_1{}^*{} , 满足条件

   

这也就是说,我们希望w_0{} 适当增大,但希望 w_1{}适当减小。考虑到上一小节提到的更新方向的问题,这就必然要求x_0{}x_1{} 符号相反。

但在 Sigmoid 函数中,输出值恒为正。这也就是说,如果上一级神经元采用 Sigmoid 函数作为激活函数,那么我们无法做到x_0{}x_1{}符号相反。此时,模型为了收敛,不得不向逆风前行的风助力帆船一样,走 Z 字形逼近最优解。

   

如图,模型参数走绿色箭头能够最快收敛,但由于输入值的符号总是为正,所以模型参数可能走类似红色折线的箭头。如此一来,使用 Sigmoid 函数作为激活函数的神经网络,收敛速度就会慢上不少了。

转载自:https://liam.page/2018/04/17/zero-centered-active-function/

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ABAP面试大全 目录 1. 报表知识 6 1.1 基础知识 6 1.1.1 报表事件,有哪些? 6 1.1.2 报表选择画面 7 1.2 ALV报表 8 1.2.1 ALV报表实现的流程 8 1.2.2 显示ALV常用的两个FM 8 1.2.3 如何设置ALV中的热键 8 1.2.4 ALV显示中的小计 8 1.2.5 FM ALV 和 OO ALV的比较 8 1.3 WRITE LIST 8 2. 数据库知识 9 2.1 基础知识 9 2.1.1 ABAP数据字典有哪些对象或元素? 9 2.1.2 据库提交确认和数据库回滚取消语句 9 2.1.3 什么是LUW 9 2.1.4简述modify 、insert、update对数据库表做操作时的影响 9 2.1.5 要描述域、数据元素、表字段之间的关系 9 2.1.6数据字典有几种缓冲方式,适用范围? 9 2.2 ABAP和数据库 10 2.2.1 ABAP 数据表的主索引是什么?索引的好处与坏处?与建索引的注意事项! 10 2.2.2 ABAP透明表有哪几种数据类(data class)?对数据的存储有什么影响? 10 2.2.3 SAP中有几种表,他们的区别是什么? 10 2.2.4什么是簇表(cluster table)?举出知道的簇表。 10 2.2.5找数据库表,有哪些常用的方法。 10 2.2.6如何建立数据库锁对象,激活锁对象产生的Function Module的名字为什么,在何处查看锁表的情况? 10 2.2.7更新 FM 分为 V1 和 V2,那么首先会执行哪一种更新类型呢?每种类型又是以哪种模式(异步、同步或本地)执行的呢? 11 2.2.7使用OPEN SQL注意原则 11 2.3 与表相关 11 2.3.1 MM模块有哪些常用表格 11 2.3.2 HR模块知识:HR里面存储HR主数据主要用到了哪些表? 11 2.3.3 HR模块知识:HR程序在开发中常用的两个逻辑数据库是什么?分别对其进行描述 12 2.3.4 HR模块知识:HR模块里面,如何修改HR的信息类型,具体如何实现 12 2.3.5财务模块:财务模块开发中常用的表有哪些,简单举例说明: 12 2.3.6 PM 常用的TABLE 12 2.3.6 inner join 与 left-outer join的区别? 13 3. 权限相关 14 3.1 什么是权限对象(Authorization Objects)?在 ABAP 程序中使用哪条语句进行授权检查? 14 3.2 与权限对象有关的事务代码有哪些? 14 4. DIALOG 15 4.1 DIALOG 中的几个事件 15 4.2 何在TABLE CONTROL中实现选中一行或多行的效果 15 4.3 DIALOG 开发的常用几个控件是什么? 15 5. BDC 16 5.1 BDC录屏的事务代码 16 5.2 BDC与BAPI之间的区别 16 5.3 BDC录屏的注意事项 16 5.4谈谈BDC的运行模式和更新模式 16 6. 增强 17 6.1什么叫增强?有哪些方式进行增强? 17 6.1.1 User EXIT 17 6.1.2 Customer exit 17 6.1.3 BADI 17 6.1.4 Enhancement Spot 17 6.2如何建立增强? 17 6.3与增强相关的事务代码有哪些 18 6.4如何进行数据库表字段的增强?Append和Include的方式有何区别? 18 7. SMARTFORMS 19 7.1谈谈SmartForm中,Template和Table表格的区别 19 7.2 SMART FORM如何实现公司LOG打印,其步骤是什么? 19 7.3 smartform 中如何控制段落、单个字符输出格式? 19 8. RFC和 BAPI 20 8.1 RFC 20 8.1.1什么是RFC,有哪些通信模式? 20 8.1.2 RFC中涉及到常用的事务代码有哪些? 20 8.1.3根据调用方式的不同,RFC接口提供了什么样的服务? 20 8.1.4 RFC接口的具体功能包括哪些? 20 8.1.5在通过CALL FUNCTION语句进行远程功能调用的基本模式有哪些 20 8.1.6怎么创建一个支持远程调用的RFC 21 8.1.7怎么调用一个SAP标准RFC 21 8.1.8怎样建立RFC程序?RFC程序传递的参数都是传递值还是引用?如何建立函数组? 21 8.1.9怎么来维护这个DESTINATION(远程目标) 21 8.2 BAPI 21 8.2.1什么是BAPI?你使用过哪些BAPI实现什么功能? 21 8.2.2什么是业务对象类型?它包含哪些主件? 21 8.2.3如何创建一个BAPI? 22 8.2.4编写BAPI的注意事项有哪些? 22 8.2.5谈谈与BAPI相关的事务代码。 22 8.3 RFC 和BAPI的相同之处和不同之处 22 8.3.1 RFC和BAPI的区别? 22 9.其他 23 9.1 基础知识 23 9.1.1 CHECK、EXIT、RETURN命令的区别? 23 9.1.2初始化内表有几种方式? 23 9.1.3 一个程序如何调用另外一个程序 24 9.1.4 在一个程序中如何调用其他事物代码 24 9.1.5在进行画面跳转时,CALL SCREEN与LEAVE TO SCREEN的区别? 24 9.1.6 LOOP 循环和系统字段? 24 9.1.7 MESSAGE消息有哪些类型,含义?如何自定义MESSAGE消息类? 24 9.1.8 ABAP中,如何自定义异常类?如何捕捉异常? 24 9.1.9什么是事物变式?事务变式有什么用? 25 9.1.10 RANGE 25 9.1.11对于FIELD SYMBOL赋值将使用 25 9.1.12 Perform 调用子程序时,using ,tables,changing 3个参数分别有什么影响? 25 9.1.13如何在程序间传送数据? 25 9.2 延伸 26 9.2.1自定义搜索帮助有几种方式?如何实现 26 9.2.2怎么创建number range 26 9.2.3 function module中,如何给出错误消息? 26 9.2.4如何优化ABAP程序? 26 9.2.5前导的处理方式 27 9.2.6 程序事件和系统事件 27 9.2.7如何建立一个外部数据库的连接 27 9.2.8怎样从文件服务器上读取文件?和写文件到文件服务器上? 27 9.2.9 SAP 包括哪些传输技术 27 9.2.10如何将内表数据转换成一个XML文件? 28 9.2.11怎么导出一个WSDL文件? 28 9.2.12怎么导入一个WSDL文件? 28 9.2.13创建后台程序的TCODE是什么,如何在程序里面调用后台程序 28 9.2.14 webservice 28 9.2.15什么叫BTE (Business Transaction Event),BTE的两种类型? 28 9.2.16现阶段接口开发使用的技术 29 9.2.17将一个RFM(Remote-Enabled Module)创建一个WEB SERVICE都有什么相关的事务代码? 29 9.2.18 esb使用 29 10.常用T-CODE 30

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值