我目前有一个程序,它采用特征向量和分类,并将其应用于已知的权重向量,以使用逻辑回归生成损失梯度。这是那个代码:
double[] grad = new double[featureSize];
//dot product w*x
double dot = 0;
for (int j = 0; j < featureSize; j++) {
dot += weights[j] * features[j];
}
//-yi exp(-yi w·xi) / (1+ exp(-yi w·xi))
double gradMultiplier = (-type) * Math.exp((-type) * dot) / (1 + (Math.exp((-type) * dot)));
//-yi xi exp(-yi w·xi) / (1+ exp(-yi w·xi))
for (int j = 0; j < featureSize; j++) {
grad[j] = features[j] * gradMultiplier;
}
return grad;
我正在尝试做的是使用 Softmax 回归实现类似的东西,但是我在网上找到的所有 Softmax 信息与我所知道的 Logit 损失函数并不完全遵循相同的词汇,所以我一直感到困惑。我将如何实现与上述类似但使用 Softmax 的功能?
根据 Softmax 的维基百科页面,我的印象是我可能需要多个权重向量,每个可能的分类都有一个。我错了吗?