gpt4 book ai didi

java - 将 Logistic 回归损失函数转换为 Softmax

转载 作者:行者123 更新时间:2023-12-01 09:54:04 25 4
gpt4 key购买 nike

我目前有一个程序,它采用特征向量和分类,并将其应用于已知的权重 vector ,以使用逻辑回归生成损失梯度。这是代码:

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 的维基百科页面,我的印象是我可能需要多个权重 vector ,每个可能的分类都有一个。我错了吗?

最佳答案

Softmax 回归是 Logistic 回归的推广。在 Logistic 回归中,标签是二元的,而在 Softmax 回归中,它们可以采用两个以上的值。 Logistic 回归是指二项 Logistic 回归,Softmax 回归是指多项 Logistic 回归

有一个关于它的优秀页面 here 。在您的代码中,您似乎尝试实现梯度下降来计算权重,以最小化成本函数。所提供的链接涵盖了该主题。

Based on the wikipedia page for Softmax, I'm under the impression that I might need multiple weight vectors, one for every possible classification. Am I wrong?

你是对的。如果您有 n 个特征和 K 个类别,那么您的权重就是 n 个元素的 K 个 vector ,如上图所示上面的链接。

如果有帮助请告诉我。

关于java - 将 Logistic 回归损失函数转换为 Softmax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com