0_3-激活函数的反向传播-ReLU、LeakyReLU、PReLU、ELU、SELU

numpy实现神经网络系列

工程地址:https://github.com/yizt/numpy_neuron_network

基础知识

0_1-全连接层、损失函数的反向传播

0_2_1-卷积层的反向传播-单通道、无padding、步长1

0_2_2-卷积层的反向传播-多通道、无padding、步长1

0_2_3-卷积层的反向传播-多通道、无padding、步长不为1

0_2_4-卷积层的反向传播-多通道、有padding、步长不为1

0_2_5-池化层的反向传播-MaxPooling、AveragePooling、GlobalAveragePooling、GlobalMaxPooling

0_3-激活函数的反向传播-ReLU、LeakyReLU、PReLU、ELU、SELU

0_4-优化方法-SGD、AdaGrad、RMSProp、Adadelta、Adam

DNN练习

1_1_1-全连接神经网络做线性回归

1_1_2-全连接神经网络做mnist手写数字识别

CNN练习

2_1-numpy卷积层实现

2_2-numpy池化层实现

2_3-numpy-cnn-mnist手写数字识别

本文目录

本文介绍常见的激活函数的前向过程及反向传播过程

依赖知识

a) 熟悉全连接层、损失函数的反向传播

b) 熟悉ReLU、LeakyReLU、PReLU、ELU、SELU

ReLU

​ 整流线性单元Rectified Linear Unit

前向过程

ReLU(z)={z0z>0z<=0(1) (1) R e L U ( z ) = { z z > 0 0 z <= 0

后向过程

a) 我们将激活函数也看做一层, 设第 l l 层输出为zl, 经过激活函数后的输出为 zl+1 z l + 1

b) 记损失函数L关于第 l l 层的输出zl 的偏导为 δl=Lzl δ l = ∂ L ∂ z l

​ 则损失函数L关于关于第l层的偏导如下:

δl=Lzl+1zl+1zl=δl+1ReLU(zl)zl=δl+1{10zl>0zl<=0={δl+10zl>0zl<=0(1)(2)(3)(2) (1) δ l = ∂ L ∂ z l + 1 ∂ z l + 1 ∂ z l (2) = δ l + 1 ∂ R e L U ( z l ) ∂ z l (3) = δ l + 1 { 1 z l > 0 0 z l <= 0 (2) = { δ l + 1 z l > 0 0 z l <= 0

LeakyReLU

​ ReLU在取值小于零部分没有梯度,LeakyReLU在取值小于0部分给一个很小的梯度

前向过程

LeakyReLU(z)={zαzz>0z<=0,α=0.1(3) (3) L e a k y R e L U ( z ) = { z z > 0 α z z <= 0 , α = 0.1

后向过程

同Relu可知损失函数L关于关于第l层的偏导为:

δl={δl+1αδl+1zl>0zl<=0,α=0.1(4) (4) δ l = { δ l + 1 z l > 0 α δ l + 1 z l <= 0 , α = 0.1

PReLU

​ 参数化ReLU,形式同LeakyRelu,不过 α α 不是固定的常量而是根据数据学习到的。

论文地址:https://arxiv.org/pdf/1502.01852.pdf

前向过程

PReLU(z)={zαzz>0z<=0,αz(5) (5) P R e L U ( z ) = { z z > 0 α z z <= 0 , α 是 与 z 相 同 形 状 的 变 量

后向过程

a) 同LeakyRelu可知损失函数L关于关于第l层的偏导为:

δl={δl+1αδl+1zl>0zl<=0,α(6) (6) δ l = { δ l + 1 z l > 0 α δ l + 1 z l <= 0 , α 是 需 要 学 习 的 参 数

b) 损失函数L关于关于参数 α α 的偏导为:

Lα=Lzl+1zl+1α=δl+1PReLU(zl)α=δl+1{0zlzl>0zl<=0={0δl+1zlzl>0zl<=0(4)(5)(6)(7) (4) ∂ L ∂ α = ∂ L ∂ z l + 1 ∂ z l + 1 ∂ α (5) = δ l + 1 ∂ P R e L U ( z l ) ∂ α (6) = δ l + 1 { 0 z l > 0 z l z l <= 0 (7) = { 0 z l > 0 δ l + 1 z l z l <= 0

ELU

​ 指数化ReLU,在取值小于0的部分使用指数

论文地址: https://arxiv.org/pdf/1511.07289.pdf

前向过程

ELU(z)={zα(exp(z)1)z>0z<=0,α=0.1(8) (8) E L U ( z ) = { z z > 0 α ( exp ⁡ ( z ) − 1 ) z <= 0 , α = 0.1

后向过程

同LeakyRelu可知损失函数L关于关于第l层的偏导为:

δl={δl+1αδl+1exp(zl)zl>0zl<=0(9) (9) δ l = { δ l + 1 z l > 0 α δ l + 1 exp ⁡ ( z l ) z l <= 0

SELU

​ 缩放指数型线性单元, 就是对ELU加上一个缩放因子 λ λ

论文地址: https://arxiv.org/pdf/1706.02515.pdf

前向过程

RELU(z)=λ{zα(exp(z)1)z>0z<=0(10) (10) R E L U ( z ) = λ { z z > 0 α ( exp ⁡ ( z ) − 1 ) z <= 0

​ 其中 λ1.0507,α1.673 λ ≈ 1.0507 , α ≈ 1.673 (论文中有大段证明)

后向过程

同ELU可知损失函数L关于关于第l层的偏导为:

δl=λ{δl+1αδl+1exp(zl)zl>0zl<=0(11) (11) δ l = λ { δ l + 1 z l > 0 α δ l + 1 exp ⁡ ( z l ) z l <= 0

<think>好的,我现在需要回答用户关于不同激活函数的定义、公式及其曲线图像的问题。用户提到的激活函数包括Sigmoid、Tanh、ReLU、LReLUPReLU和Swish。我需要逐一整理这些信息,确保每个部分的公式正确,并且符合用户要求的格式。 首先,我要回忆每个激活函数的定义和相关公式。比如,Sigmoid函数公式是$\sigma(x) = \frac{1}{1 + e^{-x}}$,而它的曲线是S型,输出在0到1之间。接下来是Tanh,公式是$\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$,输出范围在-1到1之间,曲线也是S型但中心对称。ReLU比较简单,就是$\max(0, x)$,图像是折线,负数部分为零,正数部分线性增长。 然后是Leaky ReLU(LReLU),公式应该是$\max(\alpha x, x)$,其中α通常是一个小的正数,比如0.01。这个函数在负数区域有一个小的斜率,避免神经元死亡的问题。PReLU是参数化的ReLU,这里的α是可学习的参数,公式和LReLU类似,但α通过反向传播调整。用户提供的引用里也提到了这一点,特别是引用[1]说明当α是可学习参数时,就是PReLU,这需要正确引用到回答中。 接下来是Swish激活函数,公式是$x \cdot \sigma(\beta x)$,其中β是一个可调参数。这里的σ指的是Sigmoid函数,所以Swish可以看作是x与Sigmoid的乘积。曲线形状在负数区域会有小的正值,而正数区域类似ReLU但更平滑。 现在需要确保每个公式都用正确的LaTeX格式,行内公式用$...$,独立公式用$$...$$。例如,Sigmoid的公式在行内显示,而如果用户要求详细的话可能需要独立公式,但根据用户示例中的处理,可能行内即可。但用户之前的示例中独立公式是单独成段的,比如在快速排序的例子中代码块是独立段落,但数学公式可能根据情况处理。不过根据用户的系统指令,独立公式需要用$$...$$并单独成段,所以需要检查每个激活函数的公式是否需要独立显示。比如每个激活函数的公式可能需要单独成段,这样更清晰。例如: 对于Sigmoid: 定义:将实数映射到(0,1)区间 公式:$$\sigma(x) = \frac{1}{1 + e^{-x}}$$ 曲线:S型曲线,中心点在(0,0.5) 同样地处理其他激活函数。同时,需要引用用户提供的引用内容。比如在Leaky ReLUPReLU部分,引用[1]和[2],例如提到Leaky ReLU的公式时,可以引用[^2],而PReLU部分引用[^1]。 然后,用户要求生成相关问题,我需要根据回答内容生成三个相关问题,比如关于梯度消失问题、不同激活函数的比较、Swish函数的优势等。 现在检查是否有遗漏的激活函数,用户提到的包括Sigmoid、Tanh、ReLU、LReLUPReLU、Swish,共六个,都要覆盖。同时,每个部分需要公式正确,比如Swish的公式是否写成$x \cdot \sigma(\beta x)$,或者是否有不同的表示方式。确认引用是否正确应用,比如引用[^1]提到PReLU的参数可学习,引用[^2]说明Leaky ReLU的公式。 另外,用户的引用中还提到ELUSELU,但用户的问题中没有提到这些,所以不需要包括,但需要注意不要混淆。回答时只专注于用户提到的六个激活函数。 接下来,需要确保每个激活函数的曲线图像特点描述清楚,比如ReLU的死亡神经元问题,Leaky ReLU如何改进这一点,Swish的平滑性等。同时,公式中的变量符号是否正确,比如Leaky ReLU中的α是否用斜体,是否有正确的括号等。 最后,生成的相关问题要围绕这些激活函数的特性、比较、应用场景等,确保问题有针对性,能够帮助用户进一步学习。例如: 1. 为什么ReLU函数可能导致神经元死亡问题? 2. Sigmoid和Tanh激活函数在梯度消失问题中的表现有何不同? 3. Swish激活函数相比ReLU有哪些优势? 检查是否符合用户要求的结构,每个激活函数分点说明,公式正确,引用正确,问题相关。确保没有使用任何Markdown格式,中文回答,行内公式用$...$,独立公式用$$...$$并单独成段,同时正确应用引用标注。</think>### 不同激活函数定义与公式 #### 1. **Sigmoid** **定义**:将实数映射到$(0,1)$区间,常用于二分类输出。 **公式**: $$\sigma(x) = \frac{1}{1 + e^{-x}}$$ **曲线**:S型曲线,中心对称,输出饱和区梯度接近于零,易导致梯度消失[^2]。 --- #### 2. **Tanh(双曲正切)** **定义**:改进版Sigmoid,输出范围$(-1,1)$,中心对称。 **公式**: $$\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$$ **曲线**:与Sigmoid形状相似,但梯度更强,仍存在梯度饱和问题[^2]。 --- #### 3. **ReLU(修正线性单元)** **定义**:非线性激活函数,计算高效,缓解梯度消失。 **公式**: $$\text{ReLU}(x) = \max(0, x)$$ **曲线**:负区间输出为零,正区间线性增长;可能导致“神经元死亡”(负梯度无法更新)[^2]。 --- #### 4. **Leaky ReLU(LReLU)** **定义**:ReLU的改进版,负区间引入小斜率,缓解神经元死亡。 **公式**: $$\text{LeakyReLU}(x) = \max(\alpha x, x) \quad (\alpha=0.01)$$ **曲线**:负区间为倾斜直线,正区间与ReLU一致[^2]。 --- #### 5. **PReLU(参数化ReLU)** **定义**:LReLU的泛化版,斜率$\alpha$为可学习参数。 **公式**: $$\text{PReLU}(x) = \max(\alpha x, x) \quad (\alpha \text{由反向传播更新})$$ **曲线**:形状类似LReLU,但$\alpha$自适应调整,灵活性更高[^1]。 --- #### 6. **Swish** **定义**:自门控激活函数,平滑且非单调,由Google提出。 **公式**: $$\text{Swish}(x) = x \cdot \sigma(\beta x) \quad (\beta \text{可调,默认为1})$$ **曲线**:负区间有微小正值,正区间类似ReLU但更平滑,缓解梯度突变[^2]。 --- ### 曲线图像对比 - **Sigmoid/Tanh**:S型曲线,梯度饱和。 - **ReLU/LReLU/PReLU**:分段线性,ReLU负区间截断,LReLU/PReLU负区间保留梯度。 - **Swish**:平滑过渡,无硬截断,适合深网络。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值