1

対数線形モデルでは、IISを使用して最大エントロピー解を見つけることができます。特徴に対するモデルの期待値と経験的な期待値が一致するパラメーターを見つけることにより、パラメーターを更新します。ただし、方程式にはexp(すべての特徴の合計)があります。私の質問は、機能の数が多い場合(たとえば、10000)、すべての機能の合計が簡単に吹き飛ばされるということです。数値的方法でこの問題をどのように解決できますか?計算exp(50)でさえも吹き飛ばされるので、私には不可能に思えます。

4

1 に答える 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 に答える