ReLU Sigmoid and Tanh(2)

2024-06-01 10:58
文章标签 sigmoid relu tanh

本文主要是介绍ReLU Sigmoid and Tanh(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sigmoid

它能够把输入的连续实值“压缩”到01之间。如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.

缺点:

当输入非常大或者非常小的时候,这些神经元的梯度是接近于0的,从图中可以看出梯度的趋势。所以,需要尤其注意参数的初始值来尽量避免saturation的情况。如果你的初始值很大的话,大部分神经元可能都会处在saturation的状态而把gradientkill掉,这会导致网络变的很难学习。

Sigmoidoutput不是0均值.这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。

产生的一个结果就是:如果数据进入神经元的时候是正的(e.g.x>0 elementwise in f=wTx+b),那么w计算出的梯度也会始终都是正的。

当然了,如果你是按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的kill gradients 问题相比还是要好很多的。

tanh

tanh(x)=2sigmoid(2x)1

sigmoid不同的是,tanh0均值的。因此,实际应用中,tanh会比 sigmoid更好(毕竟去粗取精了)

 

ReLU

近年来,ReLU变的越来越受欢迎。数学表达式如下:

f(x)=max(0,x)

输入信号<0时,输出都是0>0的情况下,输出等于输入。

ReLU的优点:

使用ReLU得到的SGD的收敛速度会比sigmoid/tanh快很多。有人说这是因为它是linear,而且non-saturating。相比于sigmoid/tanhReLU只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。

ReLU的缺点:当然 ReLU也有缺点,就是训练的时候很”脆弱”,很容易就”die”了.

举个例子:一个非常大的梯度流过一个ReLU神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了。

如果这个情况发生了,那么这个神经元的梯度就永远都会是0.

实际操作中,如果你的learningrate很大,那么很有可能你网络中的40%的神经元都”dead”了。

当然,如果你设置了一个合适的较小的learningrate,这个问题发生的情况其实也不会太频繁。

 

Leaky-ReLUP-ReLUR-ReLU

Leaky ReLUs就是用来解决这个dyingReLU的问题的。与 ReLU不同的是:

f(x)=αx(x<0)

f(x)=x(x>=0)

这里的α是一个很小的常数。这样,即修正了数据分布,又保留了一些负轴的值,使得负轴信息不会全部丢失。

关于LeakyReLU的效果,众说纷纭,没有清晰的定论。有些人做了实验发现Leaky ReLU表现的很好;有些实验则证明并不是这样。

 

ParametricReLU对于 Leaky ReLU中的α,通常都是通过先验知识人工赋值的。

然而可以观察到,损失函数对α的导数我们是可以求得的,可不可以将它作为一个参数进行训练呢?KaimingHe的论文《DelvingDeep into Rectifiers: Surpassing Human-Level Performance on ImageNetClassification》指出,不仅可以训练,而且效果更好。

这篇关于ReLU Sigmoid and Tanh(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020812

相关文章

Caffe Prototxt 激活层系列:TanH Layer

TanH Layer 是DL中非线性激活的一种,在深层CNN中,中间层用得比较少,容易造成梯度消失(当然不是绝对不用);在GAN或一些网络的输出层常用到 首先我们先看一下 TanHParameter message TanHParameter {enum Engine {DEFAULT = 0;CAFFE = 1;CUDNN = 2;}optional Engine engine = 1 [d

Caffe Prototxt 激活层系列:Sigmoid Layer

Sigmoid Layer 是DL中非线性激活的一种,在深层CNN中,中间层用得比较少,容易造成梯度消失(当然不是绝对不用);在GAN或一些网络的输出层常用到 首先我们先看一下 SigmoidParameter message SigmoidParameter {enum Engine {DEFAULT = 0;CAFFE = 1;CUDNN = 2;}optional Engine engi

Caffe Prototxt 激活层系列:ReLU Layer

ReLU Layer 是DL中非线性激活的一种,常常在卷积、归一化层后面(当然这也不是一定的) 首先我们先看一下 ReLUParameter // Message that stores parameters used by ReLULayermessage ReLUParameter {// Allow non-zero slope for negative inputs to speed

torchvision笔记 torchvision.ops.sigmoid_focal_loss

理论部分:机器学习笔记:focal loss-CSDN博客 torchvision.ops.sigmoid_focal_loss(inputs: Tensor, targets: Tensor, alpha: float = 0.25, gamma: float = 2, reduction: str = 'none') inputs每个样本的预测值targets 与 inputs 形状相同

个人笔记--python用tanh画圆形,正方形,长方形(epsilon界面宽度)

用tanh函数画图 圆形 import numpy as npimport matplotlib.pyplot as plt# 创建一个二维网格xx = np.linspace(-1, 1, 1000)yy = np.linspace(-1, 1, 1000)x_i, y_i = np.meshgrid(xx, yy)# 圆的半径和中心r = 0.4center_x, cent

matlab画sigmoid函数和其一阶倒数

最近在做神经网络CNN的仿真,发现matlab中竟然没有直接对激活函数sigmoid的实现, 其实也是非常简单,但是由于matlab不是很常用,于是乎就有了这个,我估计很多网友都会遇到,写这个是为了方便大家吧。 x=-10:2:10;y=1./(1+exp(-x));plot(x,y); 一定要用点除‘./’,因为是矩阵运算,所以要把纬度保持一致。 运行结果如下: 该sigmoi

ReLU Sigmoid and Tanh

ReLU 激活函数: ReLu使得网络可以自行引入稀疏性,在没做预训练情况下,以ReLu为激活的网络性能优于其它激活函数。 数学表达式: y=max(0,x) Sigmoid 激活函数: sigmoid 激活函数在神经网络学习方面,可以将重点特征推向中央区,将非重点特征推向两侧区。 数学表达式(正切函数): y=(1+exp(−x))−1 导数:f(z)' = f(z)(1

(2024,基于熵的激活函数动态优化,具有边界条件的最差激活函数,修正正则化 ReLU)寻找更优激活函数

A Method on Searching Better Activation Functions 公众号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 动机 4. 方法论 4.1 问题设定 4.1.1 贝叶斯错误率和信息熵 4.1.2 激活函数和信息熵 4.2 具有边界条件的最差激活函数 (WAFBC)

关于sigmoid与binary_crossentropy,以及softmax与categorical_crossentropy的关系,以及各损失函数的定义。

1,用sigmoid作为激活函数,为什么往往损失函数选用binary_crossentropy 参考地址:https://blog.csdn.net/wtq1993/article/details/51741471 2,softmax与categorical_crossentropy的关系,以及sigmoid与bianry_crossentropy的关系。 参考地址:https://www.

【激活函数--下】非线性函数与ReLU函数

文章目录 一、非线性函数在神经网络中的重要性二、ReLU函数介绍及其实现2.1 ReLU函数概述2.2 ReLU函数的Python实现及可视化 一、非线性函数在神经网络中的重要性 在神经网络中,激活函数的选择对于网络的性能和能力至关重要。阶跃函数和Sigmoid函数除了是激活函数的具体实例外,它们还有一个共同的特性——非线性。这两种函数虽然在形式上有所不同,但都不是线性的,