対数線形モデルでは、IISを使用して最大エントロピー解を見つけることができます。特徴に対するモデルの期待値と経験的な期待値が一致するパラメーターを見つけることにより、パラメーターを更新します。ただし、方程式にはexp(すべての特徴の合計)があります。私の質問は、機能の数が多い場合(たとえば、10000)、すべての機能の合計が簡単に吹き飛ばされるということです。数値的方法でこの問題をどのように解決できますか?計算exp(50)でさえも吹き飛ばされるので、私には不可能に思えます。
質問する
465 次
1 に答える
3
対数空間で計算を行い、操作を使用します ( scikit-learnlogsumexp
から借用):
// Pseudocode for 1-d version of logsumexp:
// computes log(sum(exp(x) for x in a)) in a numerically stable way.
def logsumexp(a : array of float):
amax = maximum(a)
sum = 0.
for x in a:
sum += exp(x - amax)
return log(sum) + amax
この合計は、メイン ループの開始前に 1 回実行できます。これは、最適化中に特徴値が変更されないためです。
補足: IIS はかなり時代遅れです。約 10 年以来、ほぼすべての人が L-BFGS-B、OWL-QN、または (A)SGD を使用して対数線形モデルに適合させてきました。
于 2013-01-08T15:33:14.057 に答える