問題タブ [log-likelihood]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
140 参照

r - 限界尤度推定における数値的問題

モデル選択のベイジアン設定で、反復手順を使用して限界尤度を推定しようとしています。詳細に興味がある場合は、たとえばthisまたはthis paper を参照してください。私はかなり長い間数値の問題と戦っているので、ここで試してみて、運を試してみようと思いました。以下に続く内容を、できるだけ短く、再現可能で、一般的なものにするように努めました。

設定

目標は、フォームの反復プロセスを実行することです

ここに画像の説明を入力

私のモデルの限界尤度yの推定値を取得します(この反復プロセスは、かなり速くyのある値に収束します)。式に表示される他のすべての変数は、すでに計算されているスカラーまたはパラメーターの可能性であるため、固定値です。各反復で変化する唯一の項はyの値です。基本的に、長さ L のベクトル p_l と q_l と、長さ M のベクトルp_mq_mあります

問題

上記の式で使用されている尤度値は、残念ながら対数尤度 (計算してベクトルに保存) ではなく、実際の尤度です。これが私が抱えている数値の問題の原因です。マグニチュードが大きい負の対数尤度を指数化するという古い問題は、おそらくご存知でしょう。私の対数の可能性は非常に負であるため、exp(対数の可能性) はほとんど常に 0 になります。回答が既にオンラインになっている同様の質問がいくつかありますが、それらの解決策のどれも私にとってはうまくいきませんでした。

私が試したこと

exp(log(x)) = x という事実を利用して分数を展開すると、上記の式を次のように書き換えることができると思います。

ここに画像の説明を入力

ここで、Cは任意の定数です。同じ考えに従う証明については、この論文の付録を参照してください。合計の項を扱いやすくするCの適切な値を見つけることができれば、問題は解決されます。ただし、私の場合、 p_lq_lp_m 、およびq_mは大きさが大きく異なるため、Cのどの値を減算または加算しようとしても、アンダーフローまたはオーバーフローが再び発生します。したがって、今のところ、ここから先に進む方法が実際にはよくわかりません。コメントやヒントをいただければ幸いです。

コードとデータ

サンプル データ (つまり、対数尤度を含むベクトル) をここで見つけることができます。反復プロセスのコードは次のとおりです。

ありがとうございました!

0 投票する
1 に答える
4635 参照

python - Scikit-learn の LDA 実装で「困惑」(または「スコア」) を上下させる必要がありますか?

Scikit-learn の LDA 実装で perplexity と score が何を意味するのか知りたいです。それらの機能はあいまいです。

少なくとも、モデルが改善されたときにこれらの値が増加するか減少するかを知る必要があります。調べてみましたが、なんとなく不明です。困惑は減るべきだと思いますが、それらの値がどのように上下するかについて明確な答えが欲しいです。

0 投票する
1 に答える
49 参照

machine-learning - 深層学習対数尤度

私は深層学習分野の初心者で、対数尤度法を使用して MSE メトリクスを比較しています。次の 2 つの予測出力例をそれぞれ 3 つの出力ニューロンで計算する方法を誰でも示すことができますか? ありがとう

yt = [ [1,0,0],[0,0,1]]

yp = [ [0.9, 0.2,0.2], [0.2,0.8,0.3] ]

0 投票する
2 に答える
528 参照

algorithm - CRF の前方および前方後方アルゴリズム

CRF に関する論文 ( thisまたはthisなど) では、著者はすべて forward-backward アルゴリズムについて言及していますが、GitHub の実装 (または PyTorchチュートリアルの基本的な実装) は、負の対数尤度を計算するために forward アルゴリズムのみを使用しているようです。 SGD で最適化されています。

BiLSTM 機能で NER をトレーニングしたいのですが、作成する唯一のタイプのクエリが「与えられた文で名前付きエンティティを見つける」のようなものである場合、前方後方アルゴリズムが必要ですか? または、より一般的には、これら 2 つのアルゴリズムの違いと、どちらがいつ使用されるのか?