2016-05-22 10 views
0

В настоящее время у меня есть программа, которая берет вектор-функцию и классификацию и применяет ее к известному вектору веса для генерации градиента потерь с использованием логистической регрессии. Это тот код:Перевод логистической функции потери регрессии в 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, у меня создается впечатление, что мне могут понадобиться несколько векторов веса, по одному для каждой возможной классификации. Я ошибаюсь?

+0

Возможно, вы захотите переместить это на [математический сайт] (http://math.stackexchange.com). –

ответ

1

Регресс Softmax является обобщением логистической регрессии. В логистической регрессии метки являются двоичными и в регрессии Softmax они могут принимать более двух значений. Логистическая регрессия относится к биномиальной логистической регрессии и регрессии Softmax относится к многонациональной логистической регрессии.

Существует отличная страница об этом here. В коде вы пытаетесь реализовать градиентный спуск, чтобы вычислить weights, минимизируя функцию стоимости. Эта тема освещена предоставленной ссылкой.

Основываясь на странице Википедии для SoftMax, я нахожусь под впечатлением, что я, возможно, потребуется несколько весовых векторов, один для каждой возможной классификации. Я ошибаюсь?

Вы правы. Если у вас есть п функции и K классы, то ваши веса K векторы п элементов, как показано на ссылку выше.

Сообщите мне, если это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^