どうやって 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