В настоящее время у меня есть программа, которая берет вектор-функцию и классификацию и применяет ее к известному вектору веса для генерации градиента потерь с использованием логистической регрессии. Это тот код:Перевод логистической функции потери регрессии в Softmax
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?
Основываясь на странице wikipedia для Softmax, у меня создается впечатление, что мне могут понадобиться несколько векторов веса, по одному для каждой возможной классификации. Я ошибаюсь?
Возможно, вы захотите переместить это на [математический сайт] (http://math.stackexchange.com). –