原创文章,转载请说明来自《老饼讲解神经网络》:www.bbbdata.com
关于《老饼讲解神经网络》:
本网结构化讲解神经网络的知识,原理和代码。
重现matlab神经网络工具箱的算法,是学习神经网络的好助手。
目录
为什么BP神经网络一般使用tansig,相信这是很多人的困惑。
我们不妨来分析tansig和logsig的属性、特性、导数等方面,
试图找出为什么倾向使用tansig的原因.
01. 公式分析
公式
tansig和logsig公式如下:
分析
从两者的公式来看,两者并无多大差异,
tansig只是在logsig的基础上进行拉伸平移操作。
两者都依赖指数计算,计算复杂度上无差异。
因此,公式层面上,并不构成倾向选择tansig的理由。
02. 特性分析
特性
当tansig自变量为一维时,它是一条S形曲线。
● 它的取值区间为 (-1,1)
● tansig非线性部分主要集中在【-1.7,1.7】之间,
● 在【-1.7,1.7】外,tansig逐渐趋向饱和。
当logsig自变量为一维时,它是一条S形曲线。
● 它的取值区间为 (0,1)
● logsig非线性部分主要集中在【-1.7,1.7】之间,
● 在【-1.7,1.7】外,logsig逐渐趋向饱和。
分析
从特性的对比,我们并没有发现两者有质的区别,
因为tansig就是将logsig进行拉伸,平移到【-1,1】的取值区间。
在特性上并没有发现太大的区别,
唯一的区别是,两者取值范围不一样。
03. 导数分析
导数
tansig的导数为:
logsig的导数为:
分析
通过导数的对比,
它们两者都可以用自身的值求得导数值,
计算量也一致,
因此,导数上tansig也没有更大的优势,
并不构成倾向使用tansig的原因
直逼真相
通过以上方方面面的分析,我们几乎看不到tansig比logsig的优势好在哪。
那为什么要用tansig呢?
笔者的看法是,
一、统一输入范围。
二、充分利用激活函数活跃区间
我们知道,上一层的输入就是下一层的输出,
而tansig和logsig的活跃区间在【-1.7,1.7】之间,
在输入层,我们无疑把输入归一化到【-1,1】,
对利用第一个隐层的激活函数活跃区间更加有效。
而采用tansig,则在多隐层的情况下,
每层的输出,即下层的输入仍然是【-1,1】
这样每层的输入范围都是统一的,
且都是有效利用激活函数活跃区间的。
统一性是很有好处的,
至少在理论研究上,可以带来很多便利,
不然还要分别讨论输入层和隐层。
相关文章