激活函数与权值初始化

1.sigmod函数——tf.nn.sigmoid()

sigmod函数性质:

1.如图像所示其值域在[0,1]之间,函数输出不是0均值的,权重更新效率降低,因为这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响:假设后层神经元的输入都为正(e.g. x>0 elementwise in ),那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果你是按batch去训练,那么每个batch可能得到不同的符号(正或负),那么相加一下这个问题还是可以缓解。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的 kill gradients 问题相比还是要好很多的。

2.如图当其取值远离原点时,其梯度越来越小趋近于0,在反向传播中,用链式求导法,求权值求梯度,梯度逐层减小,权值更新速度缓慢,一般不超过五层sigmod层,就会出现梯度弥散,即梯度饱和问题。

3.要进行指数运算,速度慢

4.定义域(0, 1) 可以表示作概率,或者用于输入的归一化,如Sigmoid交叉熵损失函数。

5.sigmoid在压缩数据幅度方面有优势,在深度网络中,在前向传播中,sigmoid可以保证数据幅度在[0,1]内,这样数据幅度稳住了,不会出现数据扩散,不会有太大的失误。

2.tanh 函数——(tf.nn.tanh())

  

 

tanh函数性质

1.如图所示,值域是0均值的,权值更新快,而且也能保证数据幅度稳定。

2.也有梯度弥散问题,要进行指数运算,速度慢。

一般二分类问题中,隐藏层用tanh函数,输出层用sigmod函数

3.relu函数——σ(x)=max(0,x)(tf.nn.relu())

relu函数性质

1.当输入为正数的时候,不存在梯度饱和问题;当输入是负数的时候,ReLU是完全不被激活的,这就表明一旦输入到了负数,ReLU就会死掉。这样在前向传播过程中,还不算什么问题,有的区域是敏感的,有的是不敏感的。但是到了反向传播过程中,输入负数,梯度就会完全到0,这个和sigmod函数、tanh函数有一样的问题。

2.ReLU函数也不是以0为中心的函数,权值更新慢

3.计算速度要快很多。ReLU函数只有线性关系,不管是前向传播还是反向传播,都比sigmod和tanh要快很多。

4.在正向传播时,relu不会对数据做幅度压缩,所以如果数据的幅度不断扩张,那么模型的层数越深,幅度的扩张也会越厉害,最终会影响模型的表现。

5.但是relu在反向传导方面可以很好地将梯度传到后面,这样在学习的过程中可以更好地发挥出来。

 

4.elu函数——(tf.nn.elu())

           

ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。

5.prelu函数——σ(x)=max(ax,x)(tf.nn.relu())

1.参数α一般是取0~1之间的数,而且一般还是比较小的,如零点零几。当α=0.01时,PReLU为Leaky ReLU。

2.PReLU也是针对ReLU的一个改进型,在负数区域内,PReLU有一个很小的斜率,虽然斜率很小,但是不会趋于0。这样也可以避免ReLU死掉的问题。相比于ELU,PReLU在负数区域内是线性运算,速度快。

6.softplus函数——σ(x)=log(1+ex)(tf.nn.softplus())

softplus可以看作是ReLu的平滑。根据神经科学家的相关研究,softplus和ReLu与脑神经元激活频率函数有神似的地方。也就是说,相比于早期的激活函数,softplus和ReLu更加接近脑神经元的激活模型。

7.softmax函数

softmax把一个k维的real value向量(a1,a2,a3,a4….)映射成一个(b1,b2,b3,b4….)其中bi是一个0-1的常数,且k项之和为1,用于多分类任务,bi最大的那一项为所属类别。

8.maxout函数

f(x)=max(wT1x+b1,wT2x+b2,?,wTn+bn)

是将激活函数用一层全链接层取拟合,输出为,那层的最大值,理论maxout网络能够近似任意连续函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。Maxout能够缓解梯度消失,同时又规避了ReLU神经元死亡的缺点,但增加了参数和计算量,对于中间层数k,其参数会随k增长。

权值初始化

1.高斯初始化

2.均值初始化

3.Xavir初始化——(tf.contrib.layer.xavier_initializer_conv2d())

如上图nj为第j层的节点数,为均匀分布均值为1,且保证前向传播和反向传播时每一层的方差一致,原因可以见论文及其解释为了,当激活函数为sigmoid和tanh的时候比较适用。

这对梯度消失有好处?感觉只是保证了在前向传播中方差一致的问题,解决了前向传播中的梯度保证问题

4.he initia——激活函数为relu比较适用(tf.contrib.layers.variance_scaling_initializer())

原文地址:https://www.cnblogs.com/yutingmoran/p/8597990.html

时间: 2024-09-30 20:57:11

激活函数与权值初始化的相关文章

caffe中权值初始化方法

首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代码的具体的话,可以看:http://blog.csdn.net/xizero00/article/details/50921692,写的还是很不错的(不过有的地方的备注不对,不知道改过来了没). 文件 filler.hpp提供了7种权值初始化的方法,分别为:常量初始化(constant).高斯分布初

神经网络中权值初始化的方法

from:http://blog.csdn.net/u013989576/article/details/76215989 权值初始化的方法主要有:常量初始化(constant).高斯分布初始化(gaussian).positive_unitball初始化.均匀分布初始化(uniform).xavier初始化.msra初始化.双线性初始化(bilinear) 常量初始化(constant) 把权值或者偏置初始化为一个常数,具体是什么常数,可以自己定义 高斯分布初始化(gaussian) 需要给定

神经网络中的权值初始化方法

1,概述 神经网络中的权值初始化方法有很多,但是这些方法的设计也是遵循一些逻辑的,并且也有自己的适用场景.首先我们假定输入的每个特征是服从均值为0,方差为1的分布(一般输入到神经网络的数据都是要做归一化的,就是为了达到这个条件). 为了使网络中的信息更好的传递,每一层的特征的方差应该尽可能相等,如果保证这个特征的方差是相等的呢.我们可以从初始化的权重值入手. 首先来做一个公式推导: $var(s) = var(\sum_i^n w_i x_i)$ $var(s) = \sum_i^n var(w

【权值初始化+有条件的MST】hdu 1875 畅通工程再续

Source : hdu 1875 畅通工程再续 http://acm.hdu.edu.cn/showproblem.php?pid=1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2

深度之眼PyTorch训练营第二期 --- 8、权值初始化

一.梯度消失与爆炸 二.Xavier方法与Kaiming方法 1.Xavier初始化 方差一致性:保持数据尺度维持在恰当范围,通常方差为1 激活函数:饱和函数,如Sigmoid,Tanh 三.常用初始化方法 10种: Xavier均匀分布.正态分布 Kaiming均匀分布.正态分布 均匀分布.正态分布.常数分布 正交矩阵初始化 单位矩阵初始化 稀疏矩阵初始化 nn.init.Calculate_gain 主要功能:计算激活函数的方差变化尺度 主要参数 nonlinearity:激活函数名 par

CNN卷积神经网络学习笔记3:权值更新公式推导

在上篇<CNN卷积神经网络学习笔记2:网络结构>中,已经介绍了CNN的网络结构的详细构成,我们已经可以初始化一个自己的CNN网络了,接下来就是要用训练得到一个确定的CNN的模型,也就是确定CNN的参数. CNN本质上就是人工神经网络的一种,只是在前几层的处理上有所不同,我们可以把卷积核看成是人工神经网络里的权值W,而采样层实质上也是一种卷积运算.所以可以基于人工神经网络的权值更新的方法来推导CNN里的权值更新公式.人工神经网络里是用反向传播算法将误差层层回传,利用梯度下降法更新每一层的权值,C

多层感知机,非权值共享型卷积神经网络,权值共享型卷积神经网络之间的关系

前言:最近学习深度学习,有感写一点总结. 我们常常所说的神经网络,一般是指原始的多层感知机,简称MLP,它是在原始感知机堆叠多层而成的,MLP完全由全连接层组成(当然也有激活函数),即Caffe里的IP层.MLP的最大的缺点在于参数众多,比如说我们的网络层为1000--1000--500--20,那么它的总的参数为:1000*1000+1000*500+500*20. 参数过多不好训练,容易产生过拟合现象. 卷积神经网络,即CNN,它大大减少的网络参数的数目,通过1. 权值共享 2. 局部连接

poj 3259 Wormholes 判断负权值回路

Wormholes Time Limit: 2000 MS Memory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u   Java class name: Main [Submit] [Status] [Discuss] Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A w

HDU 1863:畅通工程(带权值的并查集)

畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16075    Accepted Submission(s): 6677 Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出