当前位置:网站首页 > Haskell函数式编程 > 正文

sigmoid和tanh函数图(tanh与sigmoid关系)



目录


  • 感知器
  • S型神经元
  • 激活函数

    • 阶跃函数
    • Sigmoid 函数
    • Tanh 函数
    • ReLU
    • Leaky ReLU
    • ELU
    • Softmax
    • Softplus
    • Swish
    • Maxout
    • 小结

  • 前向传播
  • 损失函数

    • 均方差损失
    • 平均绝对误差损失
    • Huber Loss
    • 交叉熵损失

  • 反向传播

    • Hadamard 乘积
    • 四个基本方程
    • 反向传播算法


人工神经网络(Artificial Neural Network,简称ANN),是20世纪80年代以来人工能领域兴起的研究热点。它从信息处理的角度对人脑神经元网络进行抽象建模,按不同的连接方式组成不同的网络,在工程与学术界也常简称为神经网络或类神经网络。神经网络是有史以来发明的最优美的编程范式之一,近年来,神经网络相关的研究工作不断深入,其在模式识别、智能机器人、自动控制、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。

感知器在 20 世纪五、六⼗年代由科学家 Frank Rosenblatt 发明,其受到 Warren McCulloch 和 Walter Pitts 早期⼯作的影响。感知器是如何⼯作的呢?⼀个感知器接受⼏个⼆进制输⼊:,并产生一个二进制输出:

人工神经网络的工作原理与数学基础_损失函数

示例中的感知器有三个输入,。Rosenblatt 提议一个简单的规则来计算输出。引入权重,表示相应输入对于输出的重要性。神经元的输出:0 或者 1,则由分配权重后的总和 小于或大于某些阈值决定。用精确的代数形式表示:

用感知器的偏置代替上面的阈值:,那么感知器的规则可以重写为:

感知器是⼀种权衡依据来做出决策的⽅法。感知器被使用的另⼀种⽅式,是计算基本的逻辑功能,即我们通常认为的运算基础,例如“与”,“或”和“与⾮”。假设我们有个两个输入的感知器,每个输入的权重为-2,整体的偏置为3。

人工神经网络的工作原理与数学基础_损失函数_02

这样我们得到:输⼊ 00 产⽣输出 1,即 (2) 0 + (2) 0 + 3 = 3 是正数;输⼊ 11 产⽣输出 0,即 (2) 1 + (2) 1 + 3 = 1 是负数;输入 01 或 10 产生输出 1,即 (2) 0 + (2) 1 + 3 = 1 是正数。如此我们使用感知器实现了⼀个与⾮⻔!实际上,我们完全能⽤感知器⽹络来计算任何逻辑功能,原因是与⾮⻔是通⽤运算,我们能在多个与⾮⻔之上构建出任何运算。例如,我们能⽤与⾮⻔构建⼀个电路,它把两个⼆进制数 和 相加。这需要计算按位求和: ⊕ ,同时当 和 都为 1 时进位设为 1,即进位位正好是按位乘积 :

人工神经网络的工作原理与数学基础_权重_03

我们可以设计学习算法,能够⾃动调整⼈⼯神经元的权重和偏置,这种调整可以响应外部的刺激,⽽不需要⼀个程序员的直接⼲预。这些学习算法使我们能够以⼀种根本区别于传统逻辑⻔的⽅式使⽤⼈⼯神经元。有别于显式地设计与⾮或其它⻔,我们的神经⽹络能简单地学会解决问题,这些问题有时候直接⽤传统的电路设计是很难解决的。

S 型神经元和感知器的结构类似,但是区别在于权重和偏置的微⼩改动只引起输出的微⼩变化。S 型神经元有多个输⼊:,这些输入可以取 0 和 1 中的任意值,⽽不仅仅是 0 或 1,例如,0*.*638 . . . 是⼀个 S 型神经元的有效输⼊。同样,S 型神经元对每个输⼊有权重:,和⼀个总的偏置 。但是其输出不是 0 或 1,而是 ,这里 被称为 S 型函数,定义为:

⼀个具有输⼊ ,权重 ,和偏置 的 S 型神经元的输出为:

为了理解和感知器模型的相似性,假设 是⼀个很⼤的正数,那么 而 ,即当 很⼤并且为正,S 型神经元的输出近似为 1,正好和感知器⼀样。相反地,假设 是一个很大的负数,那么 而 ,即当 是⼀个很⼤的负数时,S 型神经元的⾏为也⾮常近似⼀个感知器。只有在 取中间值时,和感知器模型有⽐较⼤的偏离。

感知器和 S 型神经元的工作原理,大致如下:人工神经网络的工作原理与数学基础_损失函数_04上述过程的数学可视化过程如下图所示:人工神经网络的工作原理与数学基础_激活函数_05

激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。

人工神经网络的工作原理与数学基础_激活函数_06

在深度学习中,我们之所以要使用诸如 ReLU,Sigmoid 以及 Tanh 等激活函数是为了增加一个非线性属性。通过这种方式,得到的网络可以模拟数据更复杂的关系和模式,拥有更好的泛化能力。

人工神经网络的工作原理与数学基础_权重_07

阶跃函数的表达式如下:

如果神经元的激活函数为阶跃函数,那么输出会依赖于 的正负。感知器的激活函数为阶跃函数。

人工神经网络的工作原理与数学基础_激活函数_08

Sigmoid 函数的图像看起来像一个 S 形曲线。函数表达式如下:

Sigmoid 激活函数有哪些优点?


  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;
  • 梯度平滑,避免「跳跃」的输出值;
  • 函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;

在实践中,sigmoid 的非线性特性已不再受青睐,它很少被使用。它有几个主要的缺点:


  • 梯度消失:神经元的激活在 0 或 1 的尾部过分稠密,接近 0 的导数会使得损失函数的梯度非常小,导致梯度消失的问题。
  • 非 0 点对称:Sigmoid 的另一个不理想的特性是,该函数的输出不是以零为中心的。通常情况下,这会降低权重更新的效率,使得神经网络的训练更加困难和不稳定。这里有一个小例子: ,其中 和 是上一层经过 Sigmoid 的输出,所以 和 总是非零正数。根据整个表达式的梯度,相对于 和 的梯度将始终是正值或始终为负值。通常情况下,最佳梯度下降步骤需要增加 和减少 。但是,由于 和 总是正的,我们不能同时分别增加和减少权重,而只能同时增加或减少所有的权重。
  • Sigmoid 函数执行指数运算,计算机运行得较慢。

深度学习中另一个非常常见的激活函数是 Tanh 函数。正切双曲线如下图所示:

人工神经网络的工作原理与数学基础_权重_09

该函数根据以下公式将一个实数值映射到 [-1, 1] 范围:

Tanh 函数和 Sigmoid 函数的曲线相对相似。

人工神经网络的工作原理与数学基础_损失函数_10

当输入较大或较小时,输出几乎是平滑的且导数接近 0,不利于权重更新。但与 Sigmoid 函数不同,Tanh 的输出是以零为中心的,而且 Tanh 的梯度消失问题比 Sigmoid 要轻。在实践中,Tanh 非线性总是优于 Sigmoid 的非线性。

人工神经网络的工作原理与数学基础_激活函数_11

ReLU(Rectified Linear Unit)激活函数图像如上图所示,函数表达式如下:

ReLU 函数是深度学习中较为流行的一种激活函数,相比于 Sigmoid 函数和 Tanh 函数,它具有如下优点:


  • 与其他激活函数相比,ReLU 加速了梯度下降向损失函数的全局最小值的收敛。这是因为它具有线性、非饱和的特性。
  • 计算速度更快。ReLU 函数中只存在线性关系,因此它的计算速度比 sigmoid 和 tanh 快很多。

缺点是:


  • Dead ReLU 问题。当输入为负时,函数的输出为零,有些神经元在训练过程中会非常脆弱,甚至会 "死亡"。这是什么意思呢?在权重更新过程中,权重的调整方式可能会导致某些神经元的输入值总是低于零,这意味着流经这些 ReLU 神经元的梯度也将从这一点开始为零。我们说,这些神经元是无效的。
  • ReLU 函数不是以 0 为中心的函数。

Leaky ReLu 是 ReLU 激活函数的一个改进版本。正如上一节所提到的,通过使用 ReLU,可能会 "杀死" 神经网络中的一些神经元,这些神经元将永远不会再激活。Leaky ReLU 是为了解决这个问题而定义的。在 Leaky ReLU 中,加入了一个小的线性成分:

函数图像如下所示:

人工神经网络的工作原理与数学基础_激活函数_12

为什么 Leaky ReLU 比 ReLU 更好?


  • Leaky ReLU 通过把 的非常小的线性分量()给予负输入,来调整负值的零梯度(zero gradients)问题;
  • leak 有助于扩大 ReLU 函数的范围,通常 的值为 0.01 左右。Leaky ReLU 的输出范围是负无穷到正无穷。

当 作为可学习的参数时,Leaky ReLU 转变为了 PReLU(Parametric ReLU)。从理论上讲,Leaky ReLU 具有 ReLU 的所有优点,而且不会出现 Dead ReLU 的问题,但在实际操作中,尚未完全证明 Leaky ReLU 总是比 ReLU 更好。

ELU 也是 ReLU 的一种衍生版本:

人工神经网络的工作原理与数学基础_激活函数_13

ELU 的提出也解决了 ReLU 的问题。与 ReLU 相比,ELU 有负值,这会使激活的平均值接近零。激活均值接近于零可以使学习更快,因为它们使梯度更接近自然梯度。ELU 和 ReLU 对于正的输入是一样的,但是对于负的输入,ELU 平滑得很慢,而 ReLU 迅速变为 0:

相比 ReLU,ELU 具有如下优点:


  • 没有 Dead ReLU 问题,输出的平均值接近 0,以 0 为中心;
  • ELU 通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向零加速学习;
  • ELU 在较小的输入下会饱和至负值,从而减少前向传播的变异和信息,提升了对噪声的鲁棒性。

ELU 激活函数的一个缺点是计算强度更高。与 Leaky ReLU 类似,尽管理论上比 ReLU 要好,但目前在实践中没有充分的证据表明 ELU 总是比 ReLU 好。

Softmax 是用于多类分类问题的最后一层神经元的激活函数。对于长度为 K 的任意实向量,Softmax 可以将其压缩为长度为 K,值在(0,1)范围内,并且向量中元素的总和为 1 的实向量。

人工神经网络的工作原理与数学基础_损失函数_14

当我们使用 Softmax 时,输出层中神经元的每个输出都根据以下等式计算:

Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。Softmax 只在最后一层神经元应用,而且只有当我们希望神经网络在分类任务中预测概率分数时才会用到。

人工神经网络的工作原理与数学基础_激活函数_15

上图为 Softplus 函数的图像,其表达式为:

Softplus 的导数恰好是 sigmoid 函数。Softplus 函数类似于 ReLU 函数,但是相对较平滑,同 ReLU 一样是单边抑制,有宽广的接受域 。由于指数运算和对数运算计算量大的原因,Softplus 函数不太被人使用,并且从一些人的使用经验来看,效果也并不比 ReLU 好。

人工神经网络的工作原理与数学基础_激活函数_16

上图为 Swish 函数的图像,其表达式为:

导数为:

人工神经网络的工作原理与数学基础_损失函数_17

是个常数或可训练的参数。Swish 函数具备无上界有下界、平滑、非单调的特性。当 时,Swish 变为线性函数 。当 时, 为 0 或 1,Swish 变为 ReLU:。所以 Swish 函数可以看做是介于线性函数与 ReLU 函数之间的平滑函数。

Swish 在深层模型上的效果优于 ReLU。例如,仅仅使用 Swish 单元替换 ReLU 就能把 Mobile NASNet-A 在 ImageNet 上的 top-1 分类准确率提高 0.9%,Inception-ResNet-v 的分类准确率提高 0.6%。

Maxout 可以看做是在深度学习网络的第 层和第 层之间分别加入 个神经元,然后将 个神经元激活值的最大值作为第 层神经元的输出。常见的神经网络隐含层第 个节点的输出:

而在 Maxout 网络中,其隐含层第 个节点的输出表达式为:

其中 为连接第 层和第 层的权重矩阵, 为第 层的神经元个数, 为第 层的神经元个数, 为 Maxout 引入的神经元个数。

人工神经网络的工作原理与数学基础_损失函数_18

如上为一个示例,假设网络第一层有2个神经元,第二层有1个神经元,此时权重矩阵的维数为 。引入 Maxout,网络中间增加了 个神经元,权重矩阵的维数变为 ,参数个数增加为 倍。

Maxout 激活函数的优点为:


  • 拟合能力非常强,可以拟合任意的凸函数。
  • 具有 ReLU 的所有优点:线性、不饱和性,同时没有 ReLU 的一些缺点,如:神经元的死亡。

缺点为引入 Maxout 后神经网络的整体参数量倍增。

本节主要介绍了神经网络中若干常用的激活函数,在实际进行激活函数的选择时:


  • 首先尝试 ReLU,计算简单,速度快。
  • 如果 ReLU 效果欠佳,尝试 Leaky ReLU 或 Maxout 等变种。
  • 尝试 tanh 正切函数(以零点为中心,零点处梯度为1)。
  • sigmoid / tanh 在 RNN(LSTM、注意力机制等)结构中有所应用,作为门控或者输出概率值。
  • 在浅层神经网络中,如不超过4层的,可选择使用多种激励函数,没有太大的影响。

下图为一个四层全连接前馈神经⽹络,该⽹络中最左边的称为输⼊层,其中的神经元称为输⼊神经元,最右边的输出层包含有一个输出神经元。输入层和输出层之间的为隐藏层,在本例中有两个隐藏层,神经元个数分别为 4 和 3。

人工神经网络的工作原理与数学基础_权重_19

如何设计一个神经网络来解决实际问题呢?下面我们将使⽤⼀个三层神经⽹络来识别单个手写数字:

人工神经网络的工作原理与数学基础_损失函数_20


  • 网络的训练数据包括很多张扫描得到的 28 × 28 的⼿写数字图像,所以输入层包含有 784 = 28 × 28 个神经元。
  • ⽹络的第⼆层是⼀个隐藏层。使用 表示神经元的数量,⽰例中⽤⼀个⼩的隐藏层来说明,仅仅包含 个神经元。
  • ⽹络的输出层包含有 10 个神经元。如果第⼀个神经元激活,即输出近似为 ,那么表明⽹络认为输入数字是⼀个 0;如果第⼆个神经元激活,即输出近似为 ,就表明⽹络认为输入数字是⼀个 1;依此类推。我们把输出神经元的输出赋予编号 0 到 9,并计算出具有最⾼激活值的神经元编号作为输入数字的类别。

接着我们讨论一下神经网络中的前向传播过程。⾸先给出⽹络中权重的清晰定义,使用 表示从第 层的第 个神经元到第 层的第 个神经元的链接上的权重,如下图给出了⽹络中第⼆层的第四个神经元到第三层的第⼆个神经元的链接上的权重:

人工神经网络的工作原理与数学基础_激活函数_21

使用 表示第 层第 个神经元的偏置,使用 表示第 层第 个神经元的激活值。如下图所示:

人工神经网络的工作原理与数学基础_权重_22

有了上述符号表示,第 层第 个神经元的激活值 和第 层的激活值可以通过如下⽅程关联:

使用向量形式表示如下:

其中 表示第 层神经元到第 层神经元的权重矩阵,第 行第 列的元素为 。 为第 层神经元的偏置向量。 为第 层神经元的激活输出向量。在计算 的过程中,引入中间量 ,称之为第 层神经元的带权输入。

神经网络的前向传播方程总结如下:

用向量形式表示如下:

神经网络中的监督学习本质上是给定一系列训练样本 ,尝试学习 的映射关系,使得给定一个 ,即使这个样本不在训练集中,也能够得到尽量接近真实 的输出 。损失函数(Loss Function)则是这个过程中一个关键的组成部分,用来衡量模型的输出与真实的 之间的差距,为模型的优化指明方向。

本节将介绍神经网络与深度学习中分类与回归任务常用的几种损失函数,包括均方差损失(Mean Squared Loss)、平均绝对误差损失(Mean Absolute Error Loss)、Huber Loss 和交叉熵损失(Cross Entropy Loss)。

基本形式

均方差(Mean Squared Error,简称 MSE)损失是深度学习回归任务中最常用的一种损失函数,也称为 L2 Loss。其基本形式如下:

从直观上理解,MSE 损失函数的最小值为 0(当预测等于真实值时),最大值为无穷大。下图是对于真实值 ,不同的预测值 的均方差损失变化图。横轴是不同的预测值,纵轴是均方差损失,可以看到随着预测与真实值绝对误差 的增加,均方差损失呈二次方地增加。

人工神经网络的工作原理与数学基础_权重_23

背后假设

在一定的假设下,我们可以使用最大化似然得到均方差损失的形式。假设模型预测与真实值之间的误差服从标准高斯分布(),则给定一个 ,模型输出真实值 的概率为:

进一步我们假设数据集中 个样本点之间相互独立,则给定所有 ,模型输出所有真实值 的概率,即似然 Likelihood,为单个样本概率 的累积:

为了计算方便,通常最大化对数似然 Log-Likelihood:

去掉常数项,然后转化为最小化负对数似然 Negative Log-Likelihood:

可以看到这个实际上就是均方差损失的形式。也就是说在模型输出与真实值的误差服从标准正态分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的,因此在这个假设能被满足的场景中(比如回归),均方差损失是一个很好的损失函数选择;当这个假设不能被满足(比如分类),均方差损失不是一个好的选择。

基本形式

平均绝对误差(Mean Absolute Error,简称 MAE)损失是回归问题中另一类常用的损失函数,也称为 L1 Loss。其基本形式如下:

下图为 MAE 损失函数的可视化,MAE 损失的最小值为 0(当预测等于真实值时),最大值为无穷大。可以看到随着预测与真实值绝对误差 的增加,MAE 损失呈线性增长。

人工神经网络的工作原理与数学基础_激活函数_24

背后假设

同样的也可以在一定的假设下通过最大化似然得到 MAE 损失的形式。假设模型预测与真实值之间的误差服从拉普拉斯分布 Laplace distribution(),则给定一个 ,模型输出真实值 的概率为:

与推导 MSE 时类似,我们可以得到所有样本的负对数似然实际上就是 MAE 损失的形式:

MAE 与 MSE 区别

MSE 通常比 MAE 可以更快地收敛。当使用梯度下降算法时,MSE 损失的梯度为 ,而 MAE 损失的梯度为 ,即 MSE 的梯度的 scale 会随误差大小变化,而 MAE 的梯度的 scale 则一直保持为 1。即使在绝对误差 很小的时候 MAE 的梯度 scale 仍然为 1,这实际上是非常不利于模型训练的。当然可以通过在训练过程中动态调整学习率来缓解 MAE 的这个问题,但是总的来说,损失函数梯度之间的差异导致了 MSE 在大部分时候比 MAE 收敛地更快,这也是 MSE 更为流行的原因。

MAE 对于 outlier 更加 robust。我们可以从两个角度来理解这一点:

  • 下图是 MAE 和 MSE 损失画到同一张图里面,由于MAE 损失与绝对误差之间是线性关系,MSE 损失与绝对误差是平方关系,当误差非常大的时候,MSE 损失会远远大于 MAE 损失。因此当数据中出现一个误差非常大的 outlier 时,MSE 会产生一个非常大的损失,对模型的训练会产生较大的影响。

人工神经网络的工作原理与数学基础_激活函数_25

  • 从模型输出值与真实值误差服从的假设分布出发,MSE 假设误差服从高斯分布,MAE 假设误差服从拉普拉斯分布,拉普拉斯分布本身对于 outlier 更加 robust。当下图右侧出现了 outliers 时,拉普拉斯分布相比高斯分布受到的影响要小很多。因此以拉普拉斯分布为假设的 MAE 对 outlier 比以高斯分布为假设的 MSE 更加 robust。

人工神经网络的工作原理与数学基础_损失函数_26

Huber Loss 是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数,也被称作 Smooth Mean Absolute Error Loss。其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 MAE,基本形式如下:

式中 是 Huber Loss 的一个超参数, 的值是 MSE 和 MAE 两个损失连接的位置。等号右边第一项是 MSE 的部分,第二项是 MAE 部分,MAE 部分的损失为 是为了保证误差 时 MAE 和 MSE 的取值一致,进而保证 Huber Loss 连续可导。

人工神经网络的工作原理与数学基础_损失函数_27

上图为 时的 Huber Loss。Huber Loss 结合了 MSE 和 MAE 损失,在误差接近 0 时使用 MSE,使损失函数可导并且梯度更加稳定;在误差较大时使用 MAE 可以降低 outlier 的影响,使训练对 outlier 更加健壮。缺点是需要额外地设置一个超参数 。

上面介绍的几种损失函数都是适用于回归问题的损失函数,对于分类问题,最常用的损失函数是交叉熵损失函数 Cross Entropy Loss。

二分类

在二分类中我们通常使用 Sigmoid 函数将模型的输出压缩到 (0, 1) 区间内。 用于表示给定输入 ,模型判断为正类的概率。

将两个式子合并:

假设数据点之间独立同分布,则似然可以表示为

对似然取对数,然后加负号变成最小化负对数似然,即为交叉熵损失函数的形式

多分类

在多分类的任务中,交叉熵损失函数的推导思路和二分类是一样的,变化的地方是真实值 现在是一个 one-hot 向量,仅在真实类别的维度上值为 1,其余类别的值为 0。模型输出的压缩由原来的 Sigmoid 函数换成 Softmax 函数,Softmax 函数将每个维度的输出范围都限定在 (0, 1) 之间,同时所有维度的输出和为 1,用于表示一个概率分布。

其中 表示 个类别中的一类,假设数据点之间独立同分布,可得到负对数似然为

由于 是一个 one-hot 向量,除了目标类为 1 之外其他类别上的输出都为 0,因此上式也可以写为

其中 是样本 的目标类。通常这个应用于多分类的交叉熵损失函数也被称为 Softmax Loss 或者 Categorical Cross Entropy Loss。

在用 Sigmoid 作为激活函数的时候,通常使用收敛更快的交叉熵损失函数,而不用均方误差损失函数。对于均方误差损失函数,常常定义为:

其中 是期望输出, 为神经元的实际输出()。在训练神经网络时我们使用梯度下降的方法来更新 和 ,因此需要计算代价函数对 和 的导数,对于单个样本来说:

因为 Sigmoid 函数的性质,导致 在 取大部分值时会很小,这样会使得梯度公式中的 很小,导致参数 和 更新缓慢。

对于交叉熵损失函数,一般定义为:

其中 是期望输出, 为神经元的实际输出()。同样对于单个样本,计算代价函数对 和 的导数:

可以看到,梯度公式中没有 这一项,权重更新受误差 的影响。当误差大的时候,权重更新快;当误差小的时候,权重更新慢。这是一个很好的性质。当使用 Sigmoid 作为激活函数的时候,常用交叉熵损失函数。

反向传播是神经网络代价函数梯度计算的快速算法。David Rumelhart、Geoffrey Hinton 和 Ronald Williams 的著名论文:https://www.nature.com/articles/a0 发表后,人们才认识到反向传播算法的重要性。如今,反向传播算法已经成为神经⽹络学习的重要组成部分。

人工神经网络的工作原理与数学基础_权重_28人工神经网络的工作原理与数学基础_激活函数_29

反向传播算法基于常规的线性代数运算,诸如向量加法,向量矩阵乘法等。假设 和 是两个维度相同的向量,使用 表示按元素的乘积:,这种按元素的乘积被称为 Hadamard 乘积。好的矩阵计算库通常会提供 Hadamard 乘积的快速实现,在实现反向传播的时候方便使用。

为了计算代价函数 对网络参数的偏导数 和 ,我们⾸先引⼊⼀个中间量 ,称为第 层第 个神经元上的误差,定义为

当 时,输出层第 个神经元的误差计算如下

用矩阵形式表示如下

其中 为一个向量,其元素为 。这就是输出层误差方程

那么如何将下一层误差传递到上一层呢?我们可以用链式法则:

因为

对 求导可得

代入可得

用矩阵形式表示如下

这就是第二个基本方程:反向误差传播方程

代价函数对第 层第 个神经元的偏置 的偏导计算为:

用矩阵形式表示为 。这就是第三个基本方程:偏置求导方程

代价函数对第 层第 个神经元到第 层第 个神经元连接权重 的偏导计算为:

这就是第四个基本方程:权重求导方程

人工神经网络的工作原理与数学基础_激活函数_30

反向传播⽅程给出了⼀种计算代价函数梯度的⽅法。显式地⽤算法描述如下:


  1. 输入 :为输⼊层设置对应的激活值
  2. 前向传播:对每个 计算相应的 和
  3. 输出层误差:计算向量
  4. 反向误差传播:对每个 计算
  5. 输出:代价函数的梯度由 和 计算得出

在实践中,通常将反向传播算法和诸如随机梯度下降这样的学习算法组合使⽤,更新神经网络的参数向量。特别地,给定⼀个⼤⼩为 的⼩批量数据,下⾯的算法在这个⼩批量数据的基础上应⽤⼀步梯度下降学习算法:


  1. 输⼊训练样本的集合
  2. 对每个训练样本 :设置对应的输⼊激活 ,并执⾏下⾯的步骤:


  • 前向传播:对每个 ,计算 和 。
  • 输出误差 :计算向量 。
  • 反向传播误差:对每个 ,计算 。

  • 小批量梯度下降:对每个 ,根据 和 更新权重和偏置向量。
到此这篇sigmoid和tanh函数图(tanh与sigmoid关系)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 工具类产品运营(工具类产品运营模式)2025-07-18 08:09:10
  • vbf文件(vbf文件格式)2025-07-18 08:09:10
  • 动态库的两种调用方式(动态库的两种调用方式是)2025-07-18 08:09:10
  • 单片机编程入门基础知识(单片机编程入门基础知识百度网盘)2025-07-18 08:09:10
  • 汽车报文解析(汽车报文格式)2025-07-18 08:09:10
  • 如何关闭程序快捷键(关闭程序的快捷方式)2025-07-18 08:09:10
  • 支付方式TT和LC(支付方式TT和LC)2025-07-18 08:09:10
  • 生成范围内的随机数(生成范围内随机数的函数)2025-07-18 08:09:10
  • pcap文件解析工具(pcap文件格式)2025-07-18 08:09:10
  • 电力104协议报文格式(电气104协议)2025-07-18 08:09:10
  • 全屏图片