常见激活函数及其求导相关知识

常见的激活函数 本篇记录深度学习中常见的激活函数。 阅读详情

Sigmoid函数

Sigmoid函数介绍

Sigmoid 是常用的非线性的激活函数,公式如下:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e−x1​
函数图像如下:

在这里插入图片描述

从图像可以看出,它能够把连续实值映射为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。

Sigmoid 函数有很多局限性:

第一点,在数值的绝对值非常大的情况下,对应的函数图像的部分几乎是一条水平线。这意味着梯度几乎为0,不利于深层网络中梯度的反向传播,容易造成梯度消失。

第二点,Sigmoid 的输出不是0均值,导致梯度的更新要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。具体的解释,在文末讨论。

第三点,式子包含幂运算,计算量很大。

Sigmoid函数求导

求导过程及结果如下:
σ ′ ( x ) = ( 1 1 + e − x ) ′ = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) 2 = σ ( x ) ( 1 − σ ( x ) ) \begin{aligned} \sigma^{\prime}(x) &=\left(\frac{1}{1+e^{-x}}\right)^{\prime} \\ &=\frac{e^{-x}}{\left(1+e^{-x}\right)^{2}} \\ &=\frac{1+e^{-x}-1}{\left(1+e^{-x}\right)^{2}} \\ &=\sigma(x)(1-\sigma(x)) \end{aligned} σ′(x)​=(1+e−x1​)′=(1+e−x)2e−x​=(1+e−x)21+e−x−1​=σ(x)(1−σ(x))​
函数图像如下:

在这里插入图片描述

求导的结果可以看出,导数的最大值为0.25,小于1 ,很容易造成梯度消失。

tanh 函数

tanh 函数介绍

tanh 函数公式如下:
tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh (x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}} tanh(x)=ex+e−xex−e−x​
图像如下:

在这里插入图片描述

tanh 函数决了Sigmoid函数的输出不是0均值,然而,梯度消失和幂运算的问题仍然存在。

tanh 函数求导

求导过程如下:
t a n h ( x ) ′ = ( e x + e − x ) 2 − ( e x − e − x ) 2 ( e x + e − x ) 2 = 1 − ( t a n h ( x ) ) 2 tanh(x)^{\prime}=\frac{(e^{x}+e^{-x})^{2}-(e^{x}-e^{-x})^{2}}{(e^{x}+e^{-x})^{2}}=1-(tanh(x))^{2} tanh(x)′=(ex+e−x)2(ex+e−x)2−(ex−e−x)2​=1−(tanh(x))2
求导后的图像:

在这里插入图片描述

Relu函数

Relu函数介绍

Relu函数公式如下:
R e L U ( x ) = { 0 , x ⩽ 0 x , x > 0 ReLU(x)=\begin{cases}{0,} & {x \leqslant 0} \\ {x,} & {x>0}\end{cases} ReLU(x)={0,x,​x⩽0x>0​
函数图像如下:

在这里插入图片描述

Relu 函数在输出值大于 0 的部分的导数值都大于0,并且不趋近于0,因而梯度下降速度较快。

Relu 函数在输出值小于 0 的部分的导数值都等于0,此时神经元就不会得到训练,能对网络产生稀疏性,降低过分拟合的概率。

但是也存在以下问题:

  1. 输出不是0均值
  2. Dead ReLU Problem:因梯度等于0导致失效的神经元不会再被激活

注:为了解决第二个问题,有人提出了Leaky ReLU激活函数: L e a k y    R e L U ( x ) = m a x ( 0.01 x , x ) Leaky \; ReLU(x) = max(0.01x, x) LeakyReLU(x)=max(0.01x,x),使得小于0的部分有些许梯度。

尽管ReLU存在这两个问题,ReLU目前仍是最常用的激活函数,在搭建模型的时候推荐优先尝试。

Relu函数求导

求导结果如下:
R e L U ( x ) ′ = { 0 , x ⩽ 0 1 , x > 0 ReLU(x)^{\prime}=\begin{cases}{0,} & {x \leqslant 0} \\ {1,} & {x>0}\end{cases} ReLU(x)′={0,1,​x⩽0x>0​
函数图像如下:

在这里插入图片描述

Softmax函数

Softmax函数介绍

对于多分类任务,常用的激活函数是 Softmax 激活函数。使用了Softmax函数的神经网络对应多个输出层神经元 ,如下图所示;

在这里插入图片描述

每个输出单元的数值代表该类别的概率 p i p_i pi​,数值越大,说明属于该类别可能性越大。

具体而言,假设倒数第二层的输出值为:
z i = w i x + b i z_i = w_i x + b_i zi​=wi​x+bi​
假设有K个类别,Softmax函数定义如下:
S o f t m a x ( z i ) = e z i ∑ i = 1 K e z i ∀ i ∈ 1 … K Softmax(z_i)=\frac{e^{z_i}}{\sum_{i=1}^{K} e^{z_i}} \quad \forall i \in 1 \ldots K Softmax(zi​)=∑i=1K​ezi​ezi​​∀i∈1…K
则在最后一层使用 Softmax 激活函数后的输出值为:
h w ( x ) = [ p 1 p 2 ⋮ p K ] = 1 ∑ i = 1 K e z i [ e z 1 e z 2 ⋮ e z K ] h_w(x) = \begin{bmatrix}p_1\\p_2 \\ \vdots \\p_{K} \end{bmatrix} = \frac{1}{\sum_{i=1}^K e^{z_i}} \begin{bmatrix}e^{z_1}\\e^{z_2 } \\ \vdots \\e^{z_K} \end{bmatrix} hw​(x)=⎣⎢⎢⎢⎡​p1​p2​⋮pK​​⎦⎥⎥⎥⎤​=∑i=1K​ezi​1​⎣⎢⎢⎢⎡​ez1​ez2​⋮ezK​​⎦⎥⎥⎥⎤​
上式结果向量中最大值得对应类别为预测类别。

Softmax函数求导

Softmax 的损失函数是预测概率的负对数似然函数:
L ( w ) = − log ⁡ P ( y ( i ) ∣ x ( i ) ; w ) = − ∏ k = 1 K log ⁡ ( e z i ∑ j = 1 K e z j ) y k = − ∑ k = 1 K y k log ⁡ ( e z k ∑ j = 1 K e z j ) \begin{aligned} L(w) &= - \log P(y^{(i)}|x^{(i)};w) \\ &= -\prod_{k=1}^{K} \log\left(\frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \right)^{y_k} \\&=-\sum_{k=1}^K y_k \log\left(\frac{e^{z_k}}{\sum_{j=1}^K e^{z_j}} \right) \end{aligned} L(w)​=−logP(y(i)∣x(i);w)=−k=1∏K​log(∑j=1K​ezj​ezi​​)yk​=−k=1∑K​yk​log(∑j=1K​ezj​ezk​​)​
注: y k = I { y ( j ) = k } y_k = I\{y^{(j)} = k\} yk​=I{y(j)=k} 是指示函数,当 y ( j ) = k y^{(j)} = k y(j)=k,即当第 j j j个样本属于第 k k k个类别时,取值为1,否则为0。 我们的目标是:
min ⁡ L ( w ) \min L(w) minL(w)
通过梯度下降法则求解最优参数。

设第 i i i 个输出为:
s i = e z i ∑ i = 1 K e z i i = 1 , 2 , … , K s_{i} = \frac{e^{z_i}}{\sum_{i=1}^K e^{z_i}} \quad i=1,2,\ldots,K si​=∑i=1K​ezi​ezi​​i=1,2,…,K
针对某一个样本:
∂ L ∂ w i = ∂ L ∂ z i ∂ z i ∂ w i ∂ L ∂ b i = ∂ L ∂ z i ∂ z i ∂ b i \begin{aligned} \frac{\partial L}{\partial w_i} &= \frac{\partial L}{\partial z_i} \frac{\partial z_i}{\partial w_i} \\ \frac{\partial L}{\partial b_i} &= \frac{\partial L}{\partial z_i} \frac{\partial z_i}{\partial b_i} \end{aligned} ∂wi​∂L​∂bi​∂L​​=∂zi​∂L​∂wi​∂zi​​=∂zi​∂L​∂bi​∂zi​​​
显然:
∂ z i ∂ w i = x ∂ z i ∂ b i = 1 \frac{\partial z_i}{\partial w_i} = x \\ \frac{\partial z_i}{\partial b_i} = 1 ∂wi​∂zi​​=x∂bi​∂zi​​=1
所以核心问题是求 ∂ L ∂ z i \frac{\partial L}{\partial z_i} ∂zi​∂L​:
∂ L ∂ z i = ∑ k = 1 K [ ∂ L ∂ s k ∂ s k ∂ z i ] \frac{\partial L}{\partial z_i} = \sum_{k=1}^K \left[ \frac{\partial L}{\partial s_k} \frac{\partial s_k}{\partial z_i} \right] ∂zi​∂L​=k=1∑K​[∂sk​∂L​∂zi​∂sk​​]
其中 ∂ L ∂ s k \frac{\partial L}{\partial s_k} ∂sk​∂L​为:
∂ L ∂ s k = ∂ ( − ∑ k = 1 K y k log ⁡ s k ) ∂ s k = − y k s k \frac{\partial L}{\partial s_k} = \frac{\partial \left(-\sum_{k=1}^K y_k \log s_k \right)}{\partial s_k} = - \frac{y_k}{s_k} ∂sk​∂L​=∂sk​∂(−∑k=1K​yk​logsk​)​=−sk​yk​​
接下来就是要求 ∂ s k ∂ z i \frac{\partial s_k}{\partial z_i} ∂zi​∂sk​​ 了。先来复习一下复合求导公式:
f ( x ) = g ( x ) h ( x ) f ′ ( x ) = g ′ ( x ) h ( x ) − g ( x ) h ′ ( x ) [ h ( x ) ] 2 f(x) = \frac{g(x)}{h(x)} \\ f'(x) = \frac{g'(x) h(x) - g(x)h'(x)}{[h(x)]^2} f(x)=h(x)g(x)​f′(x)=[h(x)]2g′(x)h(x)−g(x)h′(x)​
根据 k 与 i 的关系,需要分两种情况讨论:

(1)当 k ≠ i k \ne i k​=i时,那么:
∂ s k ∂ z i = ∂ e z k ∑ j = 1 K e z j ∂ z i = − e z k ⋅ e z i ( ∑ j = 1 K e z j ) 2 = − e z k ∑ j = 1 K e z j e z i ∑ j = 1 K e z j = − s k s i \begin{aligned} \frac{\partial s_k}{\partial z_i} &= \frac{\partial \frac{e^{z_k}}{\sum_{j=1}^K e^{z_j}} }{\partial z_i} \\ &= \frac{-e^{z_k}\cdot e^{z_i}}{(\sum_{j=1}^K e^{z_j})^2} \\ &=-\frac{e^{z_k}}{\sum_{j=1}^K e^{z_j}} \frac{ e^{z_i}} {\sum_{j=1}^K e^{z_j}} \\ &= -s_k s_i \end{aligned} ∂zi​∂sk​​​=∂zi​∂∑j=1K​ezj​ezk​​​=(∑j=1K​ezj​)2−ezk​⋅ezi​​=−∑j=1K​ezj​ezk​​∑j=1K​ezj​ezi​​=−sk​si​​
(2)当 k = i k = i k=i时,那么:
∂ s k ∂ z i = ∂ s i ∂ z i = ∂ e z i ∑ j = 1 K e z j ∂ z i = e z i ∑ j = 1 K e z j − ( e z i ) 2 ( ∑ j = 1 K e z j ) 2 = e z i ∑ j = 1 K e z j ∑ j = 1 K e z j − e z i ∑ j = 1 K e z j = s i ( 1 − s i ) \begin{aligned} \frac{\partial s_k}{\partial z_i} &= \frac{\partial s_i}{\partial z_i} =\frac{\partial \frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} }{\partial z_i} \\ &= \frac{e^{z_i}\sum_{j=1}^K e^{z_j} - (e^{z_i})^2}{(\sum_{j=1}^K e^{z_j})^2} \\ &=\frac{e^{z_i}}{\sum_{j=1}^K e^{z_j}} \frac{\sum_{j=1}^K e^{z_j} - e^{z_i}} {\sum_{j=1}^K e^{z_j}} \\ &= s_i(1-s_i) \end{aligned} ∂zi​∂sk​​​=∂zi​∂si​​=∂zi​∂∑j=1K​ezj​ezi​​​=(∑j=1K​ezj​)2ezi​∑j=1K​ezj​−(ezi​)2​=∑j=1K​ezj​ezi​​∑j=1K​ezj​∑j=1K​ezj​−ezi​​=si​(1−si​)​
所以:
∂ L ∂ z i = ∑ k = 1 K [ ∂ L ∂ s k ∂ s k ∂ z i ] = ∑ k = 1 K [ − y k s k ∂ s k ∂ z i ] = − y i s i ∂ s i ∂ z i + ∑ k = 1 , k ≠ i K [ − y k s k ∂ s k ∂ z i ] = − y i s i s i ( 1 − s i ) + ∑ k = 1 , k ≠ i K [ − y k s k ⋅ − s k s l ] = y i ( s i − 1 ) + ∑ k = 1 , k ≠ i K y k s i = − y i + y i s i + ∑ k = 1 , k ≠ i K y k s i = − y i + s i ∑ k = 1 K y k \begin{array}{l} \frac{\partial \mathrm{L}}{\partial \mathrm{z}_{i}}=\sum_{k=1}^{K}\left[\frac{\partial L}{\partial s_{k}} \frac{\partial s_{k}}{\partial z_{i}}\right]=\sum_{k=1}^{K}\left[-\frac{y_{k}}{s_{k}} \frac{\partial s_{k}}{\partial z_{i}}\right] \\ =-\frac{y_{i}}{s_{i}} \frac{\partial s_{i}}{\partial z_{i}}+\sum_{k=1, k \neq i}^{K}\left[-\frac{y_{k}}{s_{k}} \frac{\partial s_{k}}{\partial z_{i}}\right] \\ =-\frac{y_{i}}{s_{i}} s_{i}\left(1-s_{i}\right)+\sum_{k=1, k \neq i}^{K}\left[-\frac{y_{k}}{s_{k}} \cdot-s_{k} s_{l}\right] \\ =y_{i}\left(s_{i}-1\right)+\sum_{k=1, k \neq i}^{K} y_{k} s_{i} \\ =-y_{i}+y_{i} s_{i}+\sum_{k=1, k \neq i}^{K} y_{k} s_{i} \\ =-y_{i}+s_{i} \sum_{k=1}^{K} y_{k} \end{array} ∂zi​∂L​=∑k=1K​[∂sk​∂L​∂zi​∂sk​​]=∑k=1K​[−sk​yk​​∂zi​∂sk​​]=−si​yi​​∂zi​∂si​​+∑k=1,k​=iK​[−sk​yk​​∂zi​∂sk​​]=−si​yi​​si​(1−si​)+∑k=1,k​=iK​[−sk​yk​​⋅−sk​sl​]=yi​(si​−1)+∑k=1,k​=iK​yk​si​=−yi​+yi​si​+∑k=1,k​=iK​yk​si​=−yi​+si​∑k=1K​yk​​
对于某个样本 x x x对应的标签 y y y为一个向量: y = ( y 1 , y 2 , … , y K ) y=(y_1,y_2,\ldots,y_K) y=(y1​,y2​,…,yK​),其中只有一个元素是1,如 y = ( 1 , 0 , … , 0 ) y=(1,0,\ldots,0) y=(1,0,…,0) 。所以有: ∑ k = 1 K y k = 1 \sum_{k=1}^{K} y_{k} = 1 ∑k=1K​yk​=1,所以:
∂ L ∂ z i = s i − y i \frac{\partial \mathrm{L}}{\partial \mathrm{z}_{i}}= s_i - y_i ∂zi​∂L​=si​−yi​
所以最终结果为:
∂ L ∂ w i = ( s i − y i ) x ∂ L ∂ b i = s i − y i \frac{\partial L}{\partial w_i} = (s_i - y_i)x \\ \frac{\partial L}{\partial b_i} = s_i - y_i ∂wi​∂L​=(si​−yi​)x∂bi​∂L​=si​−yi​
所以,更新法则如下:
w i = w i − η ( s i − y i ) x b i = b i − η ( s i − y i ) w_i = w_i - \eta (s_i - y_i)x \\ b_i = b_i - \eta (s_i - y_i) \\ wi​=wi​−η(si​−yi​)xbi​=bi​−η(si​−yi​)
直至收敛为之。

激活函数作用

先看个例子,比如我们需要给下面的图像进行二分类,也就是找出圆圈和三角形的边界:

在这里插入图片描述

如果没有激活函数,我们训练出来的分类器是线性的,它的效果也许会是这样:

在这里插入图片描述

始终无法完美的完成任务。训练出来的模型只是把输入的数据线性组合后再输出,即使你有多个隐藏层,本质上也是在进行线性计算,其结果仍然是一个线性函数,无法完成复杂的分类任务。

然而,如果我们训练出来的模型是非线性的,那么它的分类效果可能是这样的:

在这里插入图片描述

要实现这样的分类效果,就需要借助非线性的激活函数(比如 tanh函数)将每一层的输出 z 进行一次非线性的变换。这样可以加入非线性因素,让原本的直线(或者平面)“扭曲”起来,达到拟合复杂的曲线(或者曲面)的效果,这样就提高神经网络对模型的表达能力,让神经网络的模型任意逼近复杂的函数。显然非线性拟合的效果要比线性拟合的效果好的多。

激活函数的选择

  1. sigmoid 激活函数:除了输出层是一个二分类问题基本很少用它。
  2. tanh 激活函数: tanh 是非常优秀的, 几乎适合所有场合。
  3. ReLu 激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者Leaky ReLu。

均值不为零问题

假设输入与输出的关系为:
f ( x ⃗ ; w ⃗ , b ) = f ( z ) = f ( ∑ i w i x i + b ) . f(\vec x; \vec w, b) = f(z) = f\Bigl(\sum_iw_ix_i + b\Bigr). f(x ;w ,b)=f(z)=f(i∑​wi​xi​+b).
其中 f f f是激活函数。进而计算 w i w_i wi​的梯度,于是有:
∂ L ∂ w i = ∂ L ∂ f ∂ f ∂ z ∂ z ∂ w i = x i ⋅ ∂ L ∂ f ∂ f ∂ z . \frac{\partial L}{\partial w_i} = \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_i} = x_i \cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}. ∂wi​∂L​=∂f∂L​∂z∂f​∂wi​∂z​=xi​⋅∂f∂L​∂z∂f​.
发现梯度值包含 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} ∂f∂L​∂z∂f​,如果我们使用的激活函数是Sigmoid函数,那么 ∂ L ∂ f ∂ f ∂ z \frac{\partial L}{\partial f}\frac{\partial f}{\partial z} ∂f∂L​∂z∂f​这一项永远是正数,于是梯度的更新方向永远都被输入值 x i x_i xi​的正负号决定了,每次迭代都只能向着固定的方向进行梯度下降,不利于收敛,也就降低了训练的速度。

参考文章:

  1. 深度学习中的激活函数介绍

  2. softmax回归详解

  3. 谈谈激活函数以零为中心的问题

ML/DL之激活函数/求导函数:ML中常用的AF激活函数(step_function、sigmoid、softmax、ReLU等)&求导函数等代码实现之详细攻略 ML/DL之激活函数/求导函数:ML中常用的AF激活函数(sigmoid/softmax等)&求导函数等代码实现之详细攻略 AF函数&求导函数 1、DIY自定义函数 step_function阶跃函数 #step_function阶跃函数:最初定义,当输入超过0 时,输出1,否则输出0 def step_function(x): if x > 0: ... 阅读详情

相关推荐

【Unity实战】HybridCLR热更快速集成

本文假设你已经通过UPM导入了HybridCLR、Addressables、il2cpp支持并具有一定的C#基础和Unity编辑器操作能力。

u012587406的博客 4994

机器学习数学基础之sigmod函数、tanh函数求导

在计算高级复合函数的导数前,我们首先要知道导数的链式法则。sigmod函数导数:f′(x)=f(x)⋅(1−f(x))f'(x)=f(x)\cdot(1-f(x))f′(x)=f(x)⋅(1−f(x))tanh函数导数:g′(x)=1−g(x)2g'(x)=1-g(x)^2g′(x)=1−g(x)2觉得有用的小伙伴们帮忙点个赞吧

Darlight的博客 1479

深入解析Transformer三大注意力机制:自注意力、交叉注意力与因果自注意力

注意力机制是深度学习中的核心概念,它模拟了人类在处理信息时选择性聚焦的能力。其基本原理是通过计算查询与键的相似度,动态地为值分配权重,从而提取关键信息。这一机制解决了传统序列模型(如RNN)难以并行化和捕获长距离依赖的痛点,技术价值在于显著提升了模型的计算效率和表征能力。在自然语言处理、计算机视觉等应用场景中,注意力机制已成为构建强大模型的基石。本文聚焦于Transformer架构中的三种核心注意力变体:自注意力用于建立序列内部的全局关联,交叉注意力连接编码器与解码器的信息,而因果自注意力则确保自回归生成的

weixin_29094775的博客 408

激活函数tanh(x)求导

deep learning 2万+

UE4游戏开发:GameInstance与GameMode的实战应用与避坑指南

本文深入解析了UE4中GameInstance与GameMode的核心差异与实战应用。GameInstance作为贯穿游戏进程的全局单例,负责跨关卡数据持久化与系统管理;而GameMode则定义特定关卡内的游戏规则与逻辑,随关卡加载销毁。文章通过数据存储、动态模式切换及网络游戏等场景,提供了清晰的应用指南与常见避坑方案,帮助开发者构建更健壮的UE4游戏架构。

kubernetes8ctl的博客 230

基于YOLOX与LPRNet的车牌检测与识别系统(Python+UI界面)实战指南

本文详细介绍了如何利用YOLOX目标检测模型与LPRNet车牌识别模型,从零构建一个完整的车牌检测与识别系统。通过解析CCPD数据集、训练深度学习模型,并最终集成到PyQt5开发的图形化UI界面中,提供了一个从数据处理到应用部署的完整实战指南,帮助开发者快速掌握智能交通系统中的关键技术。

weixin_29230901的博客 337

Tanh 激活函数及求导过程

原函数: 导数: 当 x = 10, 或 x = -10 时, ;当 x = 0 时, 先化简为 ...

qq_35200479的博客 5万+

西门子 S7-200 SMART 系列六:手把手教你配置S7-200 SMART Modbus RTU

Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式。Modbus 具有两种串行传输模式,ASCII 和 RTU,它们定义了数据如何打包、解码的不同方式。支持 Modbus 协议的设备一般都支持 RTU 格式。

John_09040211的博客 7431

sigmoid和tanh求导的特殊技巧

1. sigmoid 函数:f(z) = 1 / (1 + exp( − z)) 导数:f'(z) = f(z)(1 − f(z)) 2.tanh 函数:f(z) = tanh(z) 导数:f'(z) = 1 − (f(z))2

vincent2610的专栏 4万+

西门子 S7-1200 G2 高速计数器的使用方法介绍

西门子 S7-1200 G2 高速计数器的使用方法介绍

Robot_PLC_HMI_Automation 1688

Google Earth Engine——使用STARFM 图像融合算法将Landsat 和 MODIS 融合得出2000-2023 NDVI长时序图(空间分辨率为 30 米、时间分辨率为 16 天)

非本地入侵物种是全球生态系统面临的主要威胁之一。野葛(Pueraria montana)是一种生长迅速的藤本植物,原产于亚洲,现已入侵美国一些地区,因此该物种的管理成为一个重要问题。利用 Landsat 和 MODIS 平台收集的数据,计算了 2000 年至 2015 年肯塔基州三个侵扰地点的归一化差异植被指数(NDVI)估算值。使用 STARFM 图像融合算法将大地遥感卫星和 MODIS 得出的 NDVI 结合成空间分辨率为 30 米、时间分辨率为 16 天的时间序列。

此星光明博客 2509

sigmoid函数、tanh函数、softmax函数及求导

sigmoid函数和tanh函数都是激活函数,接收一个输入,产生一个输出。这里的求导是对激活函数求导。而softmax函数是一个多输入多输出的函数,这里提到的求导是对经过softmax函数后进行交叉熵计算得到的损失函数求导。 sigmoid函数及求导 sigmoid激活函数形式为: σ(x)=sigmoid(x)=11+e−x\sigma (x)=sigmoid(x)=\frac{1}{1+e^{...

qq_38032064的博客 4697

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

DNN常见激活函数与其求导公式及来源

Sigmoid 函数 f1(x)=11+e−xf1(x)=11+e−x的导函数为: ddxf1(x)=f1(x)(1−f1(x))ddxf1(x)=f1(x)(1−f1(x)) tanh函数 sinh(x)=ex−e−x2sinh(x)=ex−e−x2 cosh(x)=ex+e−x2cosh(x)=ex+...

qq_15821487的博客 183

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Pytorch自动求导机制、自定义激活函数和梯度

Pytorch自动求导机制、自定义激活函数和梯度 文章目录Pytorch自动求导机制、自定义激活函数和梯度前言:1 自动求导机制1.0 张量本身grad_fn1.1 torch.autograd1.1.1 torch.autograd.backward1.1.2 torch.autograd.grad2 自定义激活函数和梯度2.1 类及方法2.2 实例2.3 tips 前言: 由于pytorch框架只是提供了正向传播的机制,模块中的参数的梯度是通过自动求导推倒出来的,当我们需要自定义某一个针对张量的一些列操

菜鸡AI 2305

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

详解softmax函数以及相关求导过

这几天学习了一下softmax激活函数,以及它的梯度求导过程,整理一下便于分享和交流! softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是更形象的如下图表示: softmax直白来说就是将原来输出是3

wzy的博客 7386

常见激活函数,及其优缺点 - 面试篇

废话不多说,直接开问。 问:什么是激活函数? 在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。 问:激活函数有什么用? 如果没有激励函数,在这种情况下你每一层节点的输入都是上层输出的线性函数,无论你神经网络有多少层,输出都是输入的线性组合,相当于没有隐藏层,网络的学习能力有限。 深度学习最主要的特点就是:多层,非线性。 多层为了能够学习更多的东西;没有非...

GreatXiang888的博客 7219

常用激活函数及其原理/应用,以及相关的问题

什么是激活函数 激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。 在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。因此,激活函数是确定神经网络输出的数学方程式, 为什么引入非线性激励函数? 深度学习的前提是神经网络的隐层加上了非线性激活函数,提升

vv___的博客 946

【动手学——激活函数】day03plus_激活函数及其求导

激活函数 本文介绍了ReLU、sigmoid、tanh三种常用激活函数及其导数,并用代码绘制了图像 重点应掌握sigmoid函数、tanh(x)函数的导数推导过程 ReLU ReLU(rectified linear unit)函数提供了一个很简单的非线性变换。给定元素 x ,该函数定义为ReLU(x)=max(x,0). 可以看出,ReLU函数只保留正数元素,并将负数元素清零。为了直观地观察这一...

Johnny_sc的博客 748

矩阵求导的补充

​,按类别分类,可直接背诵使用(默认使用​。

qq_43664407的博客 1054

详解softmax函数以及相关求导过程

这几天学习了一下softmax激活函数,以及它的梯度求导过程,整理一下便于分享和交流! 一、softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是 更形象的如下图表示: softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那..

621

一文带你梳理常见的激活函数

一文梳理常见的激活函数 1. 为什么要有激活函数 若网络中不用激活函数,那么每一层的输出都是输入的线性组合。无论神经网络有多少层,网络的输出都是输入的线性组合,这种网络就是原始的感知机(PerceptronPerceptronPerceptron)。若网络没有激活函数,则每层就相当于矩阵相乘,深层神经网络,无非是多矩阵相乘。 激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。网络使用非线性激活函数后,可以增加神经网络模型的非线性因素,网络可

weixin_38646522的博客 897

几种常见的激活函数

几种常见的激活函数

qq_44992199的博客 440
上一篇: BP神经网络相关知识
下一篇: 循环神经网络(RNN)相关知识
VariableX
博客等级 码龄7年 142粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值