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

相关文章

SigLIP——采用sigmoid损失的图文预训练方式

SigLIP——采用sigmoid损失的图文预训练方式 FesianXu 20240825 at Wechat Search Team 前言 CLIP中的infoNCE损失是一种对比性损失,在SigLIP这个工作中,作者提出采用非对比性的sigmoid损失,能够更高效地进行图文预训练,本文进行介绍。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注

理解Sigmoid激活函数原理和实现

Sigmoid 激活函数是一种广泛应用于机器学习和深度学习中的非线性函数,特别是在二分类问题中。它的作用是将一个实数值映射到(0, 1)区间,使得输出可以被解释为概率值,这在处理二分类问题时非常有用。 Sigmoid 函数的定义 Sigmoid 函数的数学表达式为: σ ( x ) = 1 ( 1 + e − x ) σ(x)= \frac{1}{(1+e^{-x})} σ(x)=(1+e−

深度学习-激活函数:饱和激活函数【Sigmoid、tanh】、非饱和激活函数【ReLU、Leaky ReLU、RReLU、PReLU、ELU、Maxout】

深度学习-激活函数:饱和激活函数【Sigmoid、tanh】、非饱和激活函数【ReLU、Leaky ReLU、RReLU、PReLU、ELU、Maxout】 一、激活函数的定义:二、激活函数的用途1、无激活函数的神经网络2、带激活函数的神经网络 三、饱和激活函数与非饱和激活函数1、饱和激活函数2、非饱和激活函数 四、激活函数的种类1、Sigmoid函数2、TanH函数3、ReLU(Recti

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