softmax函数的定义及求导

本文中 (x0,x1,...,xm) 代表一个向量,也就是一个 m 行1列的矩阵。

在监督式的深度学习中,输入通常是一个向量,用x表示,输出 y 则可以分为多种情况。

  • 标量。y表示输入 x 属于某一类别的概率。
  • 向量。此时输入x可能属于多个类别。 y=(y0,y1,...,yn) 。元素 yi 代表向量属于类别 i 的可能性。数值越大,可能性越高。但是,深度学习模型输出的yi不必然是介于0和1之间的概率值, softmax 函数的作用就是对向量进行归一化,生成概率值。

    softmax 函数的作用如下。

    softmax((y0,y1,...,yn))=(y0Σni=0yi,...,ynΣni=0yi)

    也就是说, softmax 函数的输入是一个向量,而其输出也是一个向量,向量中的每个元素都是介于0和1之间的概率值。下面将以最简单的形式来描述 softmax 函数的定义和求导问题。假设输入是包含3个元素的向量,而输出是包含2个元素的向量,也就说 m=2,n=1 ,如下图所示。
    这里写图片描述
    图中表示了从输入到输出的一个转换过程,参数有6个,可以写成一个矩阵的形式。
    θ=[w00,w10,w20w01,w11,w21]
    这里把与输出向量中每个元素链接的权重组织成一行,所以共有两行。令 θ0=[w00,w10,w20] θ1=[w01,w11,w21] ,则有。
    θ=[θ0θ1]
    h 来代表转换函数,则有如下式子。
    y0=h(θ0,x)
    y1=h(θ1,x)

    针对这个具体例子则有。
    softmax((y0,y1))=(h(θ0,x)h(θ0,x)+h(θ1,x),h(θ1,x)h(θ0,x)+h(θ1,x))

    为了方便书写,令
    z0=h(θ0,x)h(θ0,x)+h(θ1,x)
    z1=h(θ1,x)h(θ0,x)+h(θ1,x)
    按照对向量求导的定义,其结果应该是一个Jacobian矩阵,则对 softmax 函数的求导可以写为如下形式。
    softmax((y0,y1))x=z0xz1x=z0x0z0x1z0x2z1x0z1x1z1x2

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
为了回答你的问题,我将引用、和的内容。softmax函数求导可以通过链式法则进行计算。首先,我们需要知道softmax函数定义是: softmax(z_i) = \frac{e^{z_i}}{\sum^n_{j=1}e^{z_j}} 其中,z_i是第i个输出节点的值,n是输出节点的个数。softmax函数的目的是将多分类的输出值转换为[0, 1]范围内且和为1的概率分布。 现在我们来计算softmax函数的导数。假设我们要计算对第k个输出节点的导数,即 \frac{\partial softmax}{\partial z_k}。根据链式法则,我们可以得到如下结果: \frac{\partial softmax}{\partial z_k} = \frac{\partial}{\partial z_k} \left( \frac{e^{z_k}}{\sum^n_{j=1}e^{z_j}} \right) 为了简化计算,我们先计算分子部分 e^{z_k} 的导数。根据指数函数的导数公式,我们有: \frac{\partial}{\partial z_k} e^{z_k} = e^{z_k} 接下来,我们计算分母部分 \sum^n_{j=1}e^{z_j} 的导数。由于该部分对所有的 z_i 都有贡献,我们需要对每个 z_i 求导并求和。根据中提到的原因,我们需要对所有的输出节点 S 进行求导。因此,我们有: \frac{\partial}{\partial z_k} \left( \sum^n_{j=1}e^{z_j} \right) = \sum^n_{j=1} \frac{\partial}{\partial z_k} e^{z_j} = \sum^n_{j=1} e^{z_j} 将分子和分母的导数结果带入到 softmax 函数的导数公式中,我们可以得到: \frac{\partial softmax}{\partial z_k} = \frac{e^{z_k}}{\sum^n_{j=1}e^{z_j}} - \frac{e^{z_k}}{\left( \sum^n_{j=1}e^{z_j} \right)^2} \sum^n_{j=1} e^{z_j} 简化这个表达式我们有: \frac{\partial softmax}{\partial z_k} = \frac{e^{z_k}}{\sum^n_{j=1}e^{z_j}} \left( 1 - \frac{e^{z_k}}{\sum^n_{j=1}e^{z_j}} \right) 这就是 softmax 函数对第 k 个输出节点的导数表达式。通过这个导数表达式,我们可以计算 softmax 函数在神经网络中的反向传播过程中的梯度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [softmax及其求导过程](https://blog.csdn.net/u014453898/article/details/108435173)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [softmax函数求导](https://blog.csdn.net/qq_41357569/article/details/120410841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值