Beta¶
在概率论中,Beta 分布是指一组定义在 [0,1] 区间的连续概率分布,有两个参数 \(\alpha,\beta>0\),是狄利克雷(Dirichlet) 分布的一元形式。
其概率密度函数(pdf)为:
\[f(x; \alpha, \beta) = \frac{1}{B(\alpha, \beta)}x^{\alpha-1}(1-x)^{\beta-1}\]
其中,B 为 Beta 函数,表示归一化因子:
\[B(\alpha, \beta) = \int_{0}^{1} t^{\alpha - 1} (1-t)^{\beta - 1}\mathrm{d}t\]
参数¶
alpha (float|Tensor) - 即上述公式中 \(\alpha\) 参数,大于零,支持 Broadcast 语义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,
batch_shape
(参考 Distribution 基类) 为参数 Broadcast 后的形状。beta (float|Tensor) - 即上述公式中 \(\beta\) 参数,大于零,支持 Broadcast 语 义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,
batch_shape
(参考 Distribution 基类) 为参数 Broadcast 后的形状。
代码示例¶
import paddle
# scale input
beta = paddle.distribution.Beta(alpha=0.5, beta=0.5)
print(beta.mean)
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# 0.50000000)
print(beta.variance)
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# 0.12500000)
print(beta.entropy())
# Tensor(shape=[], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# 0.12500000)
# tensor input with broadcast
beta = paddle.distribution.Beta(alpha=paddle.to_tensor([0.2, 0.4]), beta=0.6)
print(beta.mean)
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# [0.25000000, 0.40000001])
print(beta.variance)
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# [0.10416666, 0.12000000])
print(beta.entropy())
# Tensor(shape=[2], dtype=float32, place=CUDAPlace(0), stop_gradient=True,
# [-1.91923141, -0.38095069])