Softmax Regression多分类中的求导及参数更新

Softmax RegressionLogistic Regression的拓展,主要用于多分类问题。Softmax Regression一般与交叉熵损失函数结合使用,但是关于交叉熵损失函数的求导和参数更新资料比较少,讲的也不是让我很满意,所以决定自己写一篇,就当是总结一下自己的认识,和大家一起交流进步。

首先是假设函数:

假设有3个目标类别,直接使用Softmax Regression进行分类,注意这里和神经网络中对Softmax Regression的应用有所不同,相当于一个没有隐层的神经网络,则对于输入向量x来说预测为第123类的概率为:

接下来介绍交叉熵损失函数,交叉熵刻画的是两个概率分布之间的距离,给定两个概率分布pq,通过q来表示p的交叉熵为:

从交叉熵的公式可以看出交叉熵函数不是对称的,它刻画的是通过概率分布q来表达概率分布p的困难程度,因为正确答案是希望看到的结果,所以当使用交叉熵作为损失函数时,p代表的是正确答案,q代表的是预测值。假设有一个三分类问题,某个样例的正确答案是(1, 0, 0),经过Softmax回归之后的预测值为(0.5, 0.4, 0.1),那么这个预测和正确答案之间的交叉熵为:

                                

如果另外一个模型的预测是(0.8, 0.1, 0.1),那么这个预测值和真实值之间的交叉熵为

                              

可以很直观的看出第二个预测答案要优于第一个。通过交叉熵计算得到的结果也可以看出第二个预测答案和正确答案之间的交叉熵更小。

另外,在真实的情况下,往往只有一个类别为真,此时在正确答案的向量中只有一个类别对应概率为1,其余全部为0,即one-hot分布。

假设此时正确答案对应概率分布向量为[1, 0, 0],则此时的交叉熵损失函数可以写为:

需要更新的参数为,采用梯度下降法进行参数更新,以下为求导过程:

 

                                    

同理

设学习率为,则back-propagation参数更新如下:

                     ,

                     ,

                     

希望能帮到跟我一样的新手,如有错误,欢迎指正,看到帮忙点个赞,哈哈!

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要求解softmax回归的导数,我们首先需要明确softmax函数的定义和softmax回归的目标函数。 1. softmax函数定义: 对于一个具有K个类别的输入向量z,softmax函数将其转化为一个概率分布向量p,其每个元素表示属于对应类别的概率。softmax函数的表达式如下: p_i = exp(z_i) / (sum(exp(z_j))), 其 i = 1,2,...,K 2. softmax回归的目标函数: softmax回归是一种多类别分类模型,它通过最大化训练数据集观测样本的似然函数来进行训练。假设训练数据集包含N个样本,每个样本的输入为x,输出为对应的类别y。softmax回归的目标函数可以定义为: J(w,b) = -1/N * sum(log(p(y|x;w,b))), 其 p(y|x;w,b) 是给定输入x时预测为类别y的概率,w和b分别是模型的权重和偏置。 现在我们来求解目标函数对权重 w 的导数: 需要使用链式法则来求解导数。首先,我们令 z = w * x + b,并对 z 求导数。 ∂z_i / ∂w_j = ∂(w_j * x + b_i) / ∂w_j = x_j 然后,我们计算 p_i 对 z_j 的导数。 ∂p_i / ∂z_j = (∂(exp(z_i) / (sum(exp(z_k)))) / ∂z_j 对于 i = j,导数为: ∂p_i / ∂z_j = (exp(z_i) * sum(exp(z_k)) - exp(z_i) * exp(z_j)) / (sum(exp(z_k)))^2 = exp(z_i) * (sum(exp(z_k)) - exp(z_j)) / (sum(exp(z_k)))^2 = p_i * (1 - p_j) 对于 i ≠ j,导数为: ∂p_i / ∂z_j = (-exp(z_i) * exp(z_j)) / (sum(exp(z_k)))^2 = -p_i * p_j 接下来,我们计算目标函数对 z_i 的导数。 ∂J / ∂z_i = (∂(-1/N * sum(log(p(y|x;w,b)))) / ∂z_i = -1/N * sum(∂(log(p(y|x;w,b)))) / ∂z_i 如果 y = i,则上式可以写为: ∂J / ∂z_i = -1/N * (1/p_i) * ∂p_i / ∂z_i = -1/N * (1/p_i) * p_i * (1 - p_i) = 1/N * (p_i - 1) 如果 y ≠ i,则上式可以写为: ∂J / ∂z_i = -1/N * (1/p_y) * ∂p_y / ∂z_i = 1/N * (-p_i * p_y) 最后,我们可以得到目标函数对权重 w_j 的导数: ∂J / ∂w_j = ∂J / ∂z_i * ∂z_i / ∂w_j = x_j * (1/N * (p_i - 1)), if y = i = x_j * (1/N * (-p_i)), if y ≠ i 综上所述,softmax回归的目标函数对权重 w 的导数为 ∂J / ∂w_j = x_j * (1/N * (p_i - 1)),其 p_i 表示模型预测为类别 i 的概率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值