Skip to content

Commit 763c284

Browse files
authored
【Hackathon 6th No.5】Add chi2/LKJCholesky API to Paddle (#6627)
* 【Hackathon 6th No.5】Add chi2/LKJCholesky API to Paddle * fix doc * fix lkj * fix lkj * add doc distribution overview cn
1 parent 15c40e0 commit 763c284

File tree

3 files changed

+180
-0
lines changed

3 files changed

+180
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
.. _cn_api_paddle_distribution_Chi2:
2+
3+
Chi2
4+
-------------------------------
5+
.. py:class:: paddle.distribution.Chi2(df)
6+
7+
8+
卡方分布是基于标准正态分布随机变量的平方和定义的一种连续概率分布。如果有 *k* 个独立的标准正态分布随机变量
9+
:math:`Z_1, Z_2, \ldots, Z_k`, 那么这些随机变量的平方和
10+
:math:`X = Z_1^2 + Z_2^2 + \cdots + Z_k^2`
11+
12+
服从自由度为 *k* 的卡方分布,记作
13+
:math:`X \sim \chi^2(k)`
14+
15+
16+
17+
参数
18+
::::::::::::
19+
20+
- **df** (float|Tensor) - 参数表示自由度,该值必须大于零。支持 Broadcast 语义。当参数类型为 Tensor 时,表示批量创建多个不同参数的分布,``batch_shape`` (参考 :ref:`cn_api_paddle_distribution_Distribution` 基类) 为参数。
21+
22+
代码示例
23+
::::::::::::
24+
25+
COPY-FROM: paddle.distribution.Chi2
26+
27+
28+
属性
29+
:::::::::
30+
31+
mean
32+
'''''''''
33+
卡方分布的均值。
34+
35+
36+
variance
37+
'''''''''
38+
卡方分布的方差。
39+
40+
41+
方法
42+
:::::::::
43+
44+
prob(value)
45+
'''''''''
46+
卡方分布的概率密度函数。
47+
48+
**参数**
49+
50+
- **value** (float|Tensor) - 输入值。
51+
52+
53+
**返回**
54+
55+
- **Tensor** - value 对应的概率密度。
56+
57+
58+
log_prob(value)
59+
'''''''''
60+
卡方分布的对数概率密度函数。
61+
62+
**参数**
63+
64+
- **value** (float|Tensor) - 输入值。
65+
66+
**返回**
67+
68+
- **Tensor** - value 对应的对数概率密度。
69+
70+
71+
entropy()
72+
'''''''''
73+
卡方分布的信息熵。
74+
75+
**返回**
76+
77+
- Tensor: 信息熵。
78+
79+
80+
kl_divergence(other)
81+
'''''''''
82+
两个卡方分布之间的 KL 散度。
83+
84+
**参数**
85+
86+
- **other** (Geometric) - Chi2 的实例。
87+
88+
**返回**
89+
90+
- Tensor: 两个卡方分布之间的 KL 散度。
91+
92+
93+
sample(shape)
94+
'''''''''
95+
随机采样,生成指定维度的样本。
96+
97+
**参数**
98+
99+
- **shape** (Sequence[int], optional) - 采样的样本维度。
100+
101+
**返回**
102+
103+
- **Tensor** - 指定维度的样本数据。数据类型为 float32。
104+
105+
106+
rsample(shape)
107+
'''''''''
108+
重参数化采样,生成指定维度的样本。
109+
110+
**参数**
111+
112+
- **shape** (Sequence[int], optional) - 重参数化采样的样本维度。
113+
114+
**返回**
115+
116+
- **Tensor** - 指定维度的样本数据。数据类型为 float32。
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
.. _cn_api_paddle_distribution_LKJCholesky:
2+
3+
LKJCholesky
4+
-------------------------------
5+
.. py:class:: paddle.distribution.LKJCholesky(dim, concentration=1.0, sample_method = 'onion')
6+
7+
8+
9+
LKJ 分布是一种用于生成随机相关矩阵的概率分布,广泛应用于贝叶斯统计中,特别是作为协方差矩阵的先验分布。它能够调节相关矩阵的集中度,从而控制变量间的相关性。
10+
11+
LKJ 分布通常定义为对相关矩阵 :math:`\Omega` 的分布,其密度函数为:
12+
13+
.. math::
14+
15+
p(\Omega \mid \eta) \propto |\Omega|^{\eta - 1}
16+
17+
其中,:math:`\Omega` 是一个 :math:`n \times n` 的相关矩阵,:math:`\eta` 是分布的形状参数,:math:`|\Omega|` 是矩阵的行列式。参数 :math:`\eta` 调节矩阵元素的分布集中度。
18+
19+
20+
相关矩阵的下三角 Choleskey 因子的 LJK 分布支持两种 sample 方法:`onion` 和 `cvine`
21+
22+
参数
23+
::::::::::::
24+
25+
- **dim** (int) - 目标相关矩阵的维度。
26+
- **concentration** (float|Tensor) - 集中参数,这个参数控制了生成的相关矩阵的分布,值必须大于 0。concentration 越大,生成的矩阵越接近单位矩阵。
27+
- **sample_method** (str) - 不同采样策略,可选项有:`onion` 和 `cvine`. 这两种 sample 方法都在 `Generating random correlation matrices based on vines and extended onion method <https://www.sciencedirect.com/science/article/pii/S0047259X09000876>`_ 中提出,并且在相关矩阵上提供相同的分布。但是它们在如何生成样本方面是不同的。默认为“onion”。
28+
代码示例
29+
::::::::::::
30+
31+
COPY-FROM: paddle.distribution.LKJCholesky
32+
33+
34+
方法
35+
:::::::::
36+
37+
38+
log_prob(value)
39+
'''''''''
40+
卡方分布的对数概率密度函数。
41+
42+
**参数**
43+
44+
- **value** (float|Tensor) - 输入值。
45+
46+
**返回**
47+
48+
- **Tensor** - value 对应的对数概率密度。
49+
50+
51+
52+
sample(shape)
53+
'''''''''
54+
随机采样,生成指定维度的样本。
55+
56+
**参数**
57+
58+
- **shape** (Sequence[int], optional) - 采样的样本维度。
59+
60+
**返回**
61+
62+
- **Tensor** - 指定维度的样本数据。数据类型为 float32。

docs/api/paddle/distribution/Overview_cn.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ paddle.distribution 目录下包含飞桨框架支持的随机变量的概率分
2727
" :ref:`ContinuousBernoulli <cn_api_paddle_distribution_ContinuousBernoulli>` ", "ContinuousBernoulli 概率分布类"
2828
" :ref:`Categorical <cn_api_paddle_distribution_Categorical>` ", "Categorical 概率分布类"
2929
" :ref:`Cauchy <cn_api_paddle_distribution_Cauchy>` ", "Cauchy 概率分布类"
30+
" :ref:`Chi2 <cn_api_paddle_distribution_Chi2>` ", "Chi2 概率分布类"
3031
" :ref:`Normal <cn_api_paddle_distribution_Normal>` ", "Normal 概率分布类"
3132
" :ref:`Uniform <cn_api_paddle_distribution_Uniform>` ", "Uniform 概率分布类"
3233
" :ref:`Beta <cn_api_paddle_distribution_Beta>` ", "Beta 概率分布类"
@@ -36,6 +37,7 @@ paddle.distribution 目录下包含飞桨框架支持的随机变量的概率分
3637
" :ref:`Independent <cn_api_paddle_distribution_Independent>` ", "Independent 概率分布类"
3738
" :ref:`TransfomedDistribution <cn_api_paddle_distribution_TransformedDistribution>` ", "TransformedDistribution 概率分布类"
3839
" :ref:`Laplace <cn_api_paddle_distribution_Laplace>`", "Laplace 概率分布类"
40+
" :ref:`LKJCholesky <cn_api_paddle_distribution_LKJCholesky>`", "LKJCholesky 概率分布类"
3941
" :ref:`LogNormal <cn_api_paddle_distribution_LogNormal>` ", "LogNormal 概率分布类"
4042
" :ref:`Poisson <cn_api_paddle_distribution_Poisson>` ", "Poisson 概率分布类"
4143
" :ref:`Gumbel <cn_api_paddle_distribution_Gumbel>` ", "Gumbel 概率分布类"

0 commit comments

Comments
 (0)