私は現在、特徴ベクトルと分類を取り、それを既知の重みベクトルに適用して、ロジスティック回帰を使用して損失勾配を生成するプログラムを持っています。これはそのコードです:
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 のウィキペディアのページに基づいて、可能な分類ごとに 1 つずつ、複数の重みベクトルが必要になる可能性があるという印象を受けました。私が間違っている?