tf.multinomial是如何工作的?

14

tf.multinomial 是如何工作的?这里说它“从多项式分布中抽取样本”,这是什么意思?


4
多项式分布是一种离散概率分布,用于描述在n个独立的试验中每个试验有k个可能结果的情况下,每个结果出现次数的概率分布。它拥有与二项式分布相似的特性,但是可以对具有多个结果的试验进行建模。多项式分布的概率质量函数包含了一个由k个参数表示的向量,这些参数表示了每个结果的预期出现概率,并且满足概率之和为1。 - Maxim
1个回答

19
如果您进行一个只有两个结果(成功或失败,正面或反面等)的实验,并重复进行了n次,那么您获得其中一个结果(成功)的次数是一个二项式随机变量。
换句话说,如果您进行一个只有两个结果(成功或失败,正面或反面等)的实验,则在成功的情况下取值为1,在失败的情况下取值为0的随机变量是一个伯努利随机变量。
如果您进行一个可以有K种结果的实验(其中K可以是任何自然数),并用Xi表示您获得第i个结果的次数,则定义为
X=[X1,X2,X3,...,XK]
的随机向量X是一个多项式随机向量。
换句话说,如果您进行一个可以有K种结果的实验,并用Xi表示如果您获得第i个结果则取值为1,否则为0的随机变量,则定义为
X=[X1,X2,X3,...,XK]
的随机向量X是一个Multinoulli随机向量。换句话说,当获得第i个结果时,多项式随机向量X的第i个分量取值为1,而其他分量取值为0。
因此,多项式分布可以看作是相互独立的Multinoulli随机变量之和。
K种可能结果的概率将被表示为 p1,p2,p3,...,pK
在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 或最新文档中的 tensorflow_probability.distributions.Multinomial


1
警告 - 没有梯度。 - eitanrich
1
文档已经更新,与原始帖子不同。我认为这可能是当前链接(尽管它是针对tfp而不是tf):https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/Multinomial - Steven C. Howell
1
@StevenC.Howell 谢谢!已更新链接。 - kmario23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接