tf.multinomial 是如何运作的?

How does tf.multinomial work?

tf.multinomial 是如何运作的? Here表示"Draws samples from a multinomial distribution"。这是什么意思?

如果您执行一个实验 n 次而只能有 两个结果 (成功或失败,正面或反面等),那么实验的次数获得两个结果之一(成功)的次数是 二项式随机变量.

换句话说,如果您执行的实验只能有 两个结果(成功或失败,正面或反面等),则随机变量采用成功时值为 1,失败时值为 0 是 Bernoulli 随机变量.


如果您进行 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 随机向量的第 i 个条目 X 取值 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.compat.v1.distributions.Multinomial or the latest docs of tensorflow_probability.distributions.Multinomial