当前位置: 首页 > 知识库问答 >
问题:

softmax函数的导数解释[已关闭]

支彭亮
2023-03-14

这个问题似乎与帮助中心定义的范围内的编程无关。

我正在尝试计算软最大激活函数的导数。我发现了这个:https://math.stackexchange.com/questions/945871/derivative-of-softmax-loss-function 似乎没有人给出我们如何得到i=j和i!= j的答案的正确推导。有人可以解释一下吗!当涉及求和时,我对导数感到困惑,就像在softmax激活函数的分母中一样。

共有2个答案

那鹏
2023-03-14

对于它的价值,这是我基于SirGuy答案的推导:(如果您发现任何错误,请随时指出错误)。

孙鑫鹏
2023-03-14

总和的导数是导数的总和,即:

    d(f1 + f2 + f3 + f4)/dx = df1/dx + df2/dx + df3/dx + df4/dx

为了导出p_j相对于o_i的导数,我们从以下几点开始:

    d_i(p_j) = d_i(exp(o_j) / Sum_k(exp(o_k)))

我决定对衍生作品使用d_i,以使其更易于阅读o_i。使用产品规则,我们得到:

     d_i(exp(o_j)) / Sum_k(exp(o_k)) + exp(o_j) * d_i(1/Sum_k(exp(o_k)))

看看第一项,如果 i != j,则导数将为 0,这可以用一个 delta 函数表示,我将称之为D_ij。这给出了(第一个学期):

    = D_ij * exp(o_j) / Sum_k(exp(o_k))

这只是我们的原始函数乘以D_ij

    = D_ij * p_j

对于第二项,当我们单独推导总和的每个元素时,唯一的非零项将是当 i = k 时,这给了我们(不要忘记幂次规则,因为总和在分母中)

    = -exp(o_j) * Sum_k(d_i(exp(o_k)) / Sum_k(exp(o_k))^2
    = -exp(o_j) * exp(o_i) / Sum_k(exp(o_k))^2
    = -(exp(o_j) / Sum_k(exp(o_k))) * (exp(o_j) / Sum_k(exp(o_k)))
    = -p_j * p_i

将两者放在一起,我们得到了惊人的简单公式:

    D_ij * p_j - p_j * p_i

如果你真的愿意,我们可以把它分成i=ji!=j案例:

    i = j: D_ii * p_i - p_i * p_i = p_i - p_i * p_i = p_i * (1 - p_i)

    i != j: D_ij * p_i - p_i * p_j = -p_i * p_j

这就是我们的答案。

 类似资料:
  • 我确实有点理解Redux,但我不明白如何将函数放入函数中。 我对这一行有问题: 我们在这里用

  • 本文向大家介绍解释PHP中的array_merge()函数。,包括了解释PHP中的array_merge()函数。的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将学习array_merge(),这是一个预定义的PHP数组函数。array_merge()用于将至少两个以上的数组组合为一个数组。利用该功能将至少两个数组的组件组合在一起成为一个数组。 此函数以一种方式将一个或多个数组的元素合并

  • 问题内容: 我在下面有一个基本问题,可以帮助您理解python中的函数(紧接着uni的LPTHW教程)。有人可以解释以下语法,以及我的假设是否正确? 据我所知,是函数的名称,但什么是具有目的,括号旁边?是调用 下面的print命令吗?还是这些字符串直接进入命令? 问题答案: 将arg1,arg2放在括号中的目的是什么? 在这种情况下,和称为 arguments 。参数允许函数接收 输入 它的预期,

  • 我正在学习神经网络,并在python中实现它。我首先定义了一个 softmax 函数,我遵循这个问题给出的解决方案 Softmax 函数 - python。以下是我的代码: 我得到了一个测试代码,看看函数是否正确。是测试数据,

  • 我只想实现简单的

  • 问题内容: 下面有没有一种数值稳定的方法来计算softmax函数?我得到的价值在神经网络代码中变成Nans。 问题答案: softmax exp( x )/ sum(exp( x ))实际上在数字上表现良好。它只有正数项,因此我们不必担心重要性下降,并且分母至少与分子一样大,因此可以保证结果介于0到1之间。 唯一可能发生的事故是指数溢出或溢出。 x 的单个元素的上溢或所有元素的下溢将使输出或多或少