gpt4 book ai didi

algorithm - 第 2 部分弹性反向传播神经网络

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:43:42 25 4
gpt4 key购买 nike

这是 this post 的后续问题.对于给定的神经元,我不清楚如何对其误差和权重进行偏导数。

从这个 web page 开始工作,很明显传播是如何工作的(尽管我正在处理弹性传播)。对于前馈神经网络,我们必须 1) 在通过神经网络向前移动时触发神经元,2) 从输出层神经元计算总误差。然后 3) 向后移动,通过神经元中的每个权重传播该误差,然后 4) 再次向前移动,更新每个神经元中的权重。

准确地说,这些是我不明白的事情。

A) 对于每个神经元,如何计算误差对权重偏导数的偏导数 (definition)?我的困惑是,在微积分中,偏导数是根据 n 变量函数计算的。我有点理解 ldogBayer's this post 中的答案.我什至理解链式法则。但是,当我准确地思考如何将其应用于 i) 线性组合器和 ii) sigmoid 激活函数的结果时,它并没有凝固。

B) 使用弹性传播方法,您将如何改变给定神经元的偏差?还是在使用弹性传播训练的神经网络中没有偏差或阈值?

C) 如果有两个或多个输出神经元,您如何传播总误差?总误差 * 神经元权重是否针对每个输出神经元值发生?

谢谢

最佳答案

一个)

在监督学习任务中,整体优化目标是所有训练样例的总损失,定义为 E =\sum_n loss(y_n, t_n),其中 n 是所有训练样例的索引,y_n 指的是网络训练样例n的输出,t_n是训练样例n的标签,loss是损失函数。请注意,y_n 和 t_n 是一般向量化的量——向量长度由网络中输出神经元的数量决定。

损失函数的一种可能选择是平方误差,定义为 loss(y, t) =\sum_k (y_k - t_k) ^ 2,其中 k 指网络中输出神经元的数量。在反向传播中,必须计算整体优化目标相对于网络参数(突触权重和神经元偏差)的偏导数。这是根据链式规则通过以下公式实现的:

(\partial E/\partial w_{ij}) = (\partial E/\partial out_j) * (\partial out_j/\partial in_j) * (\partial in_j/partial w_{ij}),

其中w_{ij}表示神经元i和神经元j之间的权重,out_j表示神经元j的输出,in_j表示神经元j的输入。

如何计算神经元输出 out_j 及其相对于神经元输入 in_j 的导数取决于使用的激活函数。如果您使用线性激活函数来计算神经元的输出 out_j,项 (\partial out_j/\partial in_j) 变为 1。如果您使用逻辑函数作为激活函数,则项 (\partial out_j/\部分 in_j) 变为 sig(in_j) * (1 - sig(in_j)),其中 sig 是逻辑函数。

B)

在弹性反向传播中,偏差的更新方式与权重的更新方式完全相同——基于偏导数的符号和各个可调步长。

C)

我不太确定我是否理解正确。总体优化目标是所有网络参数的标量函数,无论有多少输出神经元。因此,对于如何在这里计算偏导数应该没有混淆。

一般来说,为了计算整体优化目标 E 关于某个权重 w_{ij} 的偏导数 (\partial E/\partial w_{ij}),必须计算偏导数 (\partial E/\partial w_{ij})每个输出神经元 k 的部分 out_k/\partial w_{ij}) 相对于 w_{ij} 为

(\partial E/\partial w_{ij}) =\sum_k (\partial E/\partial out_k) * (\partial out_k/\partial w_{ij}).

但是请注意,如果 w_{ij} 不影响输出神经元的输出 out_k,则输出神经元 k 相对于 w_{ij} 的偏导数 (\partial out_k/\partial w_{ij}) 将为零k.

还有一件事。如果使用平方误差作为损失函数,则整体优化目标 E 相对于某个输出神经元 k 的输出 out_k 的偏导数 (\partial E/\partial out_k) 是

(\partial E/\partial out_k) =\sum_k 2 * (out_k - t_k),

其中数量 (out_k - t_k) 被称为附加到输出单元 k 的错误,并且为了符号方便,我假设只有一个带有标签 t 的训练示例。注意,如果 w_{ij} 对输出神经元 k 的输出 out_k 没有任何影响,那么 w_{ij} 的更新将不依赖于误差 (out_k - t_k) 因为 (\partial out_k/\partial w_{ ij}) = 0 如上所述。

为了避免混淆,最后说一下。 y_k和out_k都是指网络中输出神经元k的输出。

关于algorithm - 第 2 部分弹性反向传播神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com