softmax_loss梯度推导

本文详细介绍了softmax cross entropy loss,也就是softmax_loss的数学定义,并且探讨了其梯度计算过程。针对单个样本的loss,导数分为对应目标类别的负一倍和其他类别的softmax值。在实际应用中,例如线性分类器,通过链式法则可以计算loss对权重矩阵W的导数。对于批量样本,只需对每个样本的贡献取平均即可得到整个batch的梯度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

softmax_loss的真正名字应该是softmax cross entropy loss。因为softmax的定义是
f ( z i ) = s o f t m a x ( z i ) = e z i ∑ j e z j f(z_i)=softmax(z_i)=\frac{e^{z_i}}{\sum_je^{z_j}} f(zi)=softmax(zi)=jezjezi, softmax loss的定义是
L = − 1 N ∑ i = 0 N L i = − 1 N ∑ i = 0 N l o g f ( z i ) L=-\frac{1}{N}\sum_{i=0}^NL_i=-\frac{1}{N}\sum_{i=0}^{N}logf(z_i) L=N1i=0NLi=N1i=0N

### Softmax 函数及其梯度计算 Softmax 函数是一种常用的激活函数,在多分类问题中用于将模型的输出转换为概率分布形式。其数学表达式如下: 对于输入向量 \( z \),第 \( i \) 个类别的 softmax 输出可以表示为: \[ S(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \] 其中,\( K \) 是类别总数。 #### 梯度计算公式 在机器学习优化过程中,通常需要计算损失函数相对于参数的梯度。假设交叉熵作为损失函数,则其关于 \( z_k \) 的偏导数可以通过链式法则推导得出。具体而言,当目标标签为独热编码时,softmax 函数的梯度公式为: \[ \frac{\partial L}{\partial z_k} = S(z_k) - y_k \] 这里,\( y_k \) 表示真实标签中的第 \( k \) 类值(通常是 0 或 1),而 \( S(z_k) \) 则是预测的概率[^1]。 上述公式的推导依赖于两个主要部分:一是 softmax 自身的性质;二是交叉熵损失函数的形式。完整的推导过程涉及对 softmax 和 log-likehood loss 进行逐项求导,并最终得到简化后的结果。 以下是实现 softmax 及其梯度计算的一个 Python 示例代码片段: ```python import numpy as np def softmax(x): """Compute the softmax of vector x.""" exp_x = np.exp(x - np.max(x)) # Subtract max for numerical stability return exp_x / exp_x.sum(axis=0) def cross_entropy_loss_gradient(logits, labels): """ Compute the gradient of the cross-entropy loss with respect to logits. Args: logits (numpy.ndarray): The raw output scores from a model (logits). labels (numpy.ndarray): One-hot encoded true class labels. Returns: numpy.ndarray: Gradient of the loss w.r.t. each logit. """ probs = softmax(logits) grad = probs - labels return grad # Example usage logits_example = np.array([2.0, 1.0, 0.1]) labels_example = np.array([1.0, 0.0, 0.0]) # True label is first class gradient = cross_entropy_loss_gradient(logits_example, labels_example) print(gradient) ``` 此代码展示了如何通过简单的矩阵运算完成 softmax 值以及对应梯度的计算。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值