【问题标题】:Translating Logistic Regression loss function to Softmax将逻辑回归损失函数转换为 Softmax
【发布时间】:2016-05-22 23:04:59
【问题描述】:

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

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

【问题讨论】:

标签: java logistic-regression gradient-descent softmax


【解决方案1】:

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

有一个很棒的页面here。在您的代码中,您似乎尝试实现梯度下降来计算 weights 最小化成本函数。提供的链接涵盖了该主题。

根据 Softmax 的维基百科页面,我的印象是 我可能需要多个权重向量,每个可能都有一个 分类。我错了吗?

你是对的。如果您有 n 个特征和 K 个类,那么您的权重是 n 个元素的 K 个向量,如上面的链接。

如果有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 2015-02-16
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多