softmax regression求导
时间: 2023-09-18 16:06:04 浏览: 96
softmax regression
要求解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 的概率。
阅读全文