web-dev-qa-db-ja.com

tf.multinomialはどのように機能しますか?

どうやって tf.multinomial仕事? ここ は、「多項分布からサンプルを描画する」と記載されています。どういう意味ですか?

実験をn回実行すると、2つの結果(成功または失敗、ヘッドまたはテールなど)しか持てません。次に、2つの結果(成功)のうちの1つを取得する回数は、二項確率変数です。 。

つまり、2つの結果(成功または失敗、ヘッドまたはテールなど)しか持てない実験を実行すると、ランダムな成功した場合に値1、失敗した場合に値0をとる変数は、ベルヌーイ確率変数です。


実験をn回実行してK結果を得ることができ(Kは任意の自然数にすることができます)、X_i i番目の結果を取得する回数、次にランダムベクトルXは次のように定義されます

[〜#〜] x [〜#〜]= [X_1、X_2、X_3、...、X_K]

多項ランダムベクトルです。

つまり、Kの結果が得られる実験を実行し、X_i i番目の結果を取得する場合は値1をとり、それ以外の場合は0をとるランダム変数。ランダムベクトルXは次のように定義されます。

[〜#〜] x [〜#〜]= [X_1、X_2、X_3、...、X_K]

multinoulliランダムベクトルです。つまり、i番目の結果が取得されると、MultinoulliランダムベクトルXのi番目のエントリは値1を取り、他のすべてのエントリは値0を受け取ります。

したがって、多項分布は、相互に独立したMultinoulli確率変数の合計と見なすことができます。

そしてKの可能性のある結果の確率は、

p_1、p_2、p_3、...、p_K


Tensorflowの例、

In [171]: isess = tf.InteractiveSession()

In [172]: prob = [[.1, .2, .7], [.3, .3, .4]]  # Shape [2, 3]
     ...: dist = tf.distributions.Multinomial(total_count=[4., 5], probs=prob)
     ...: 
     ...: counts = [[2., 1, 1], [3, 1, 1]]
     ...: isess.run(dist.prob(counts))  # Shape [2]
     ...: 
Out[172]: array([ 0.0168    ,  0.06479999], dtype=float32)

注:多項式は、K = 2。詳細については、次を参照してください: tf.distributions.Multinomial

12
kmario23