PRML 1.2 概率论
Posted Real&Love
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PRML 1.2 概率论相关的知识,希望对你有一定的参考价值。
PRML 1.2 概率论
贝叶斯概率
考虑一组由参数驱动的
考虑由一组参数 w w w和观察数据 D D D驱动的概率分布。根据关于 w w w的观点,我们可以通过以下两种方式来考虑 w w w的真值:
frequentist POV频率学派: w w w是唯一的,但未知的,我们可以通过 D D D来估计我们离 w w w有多近
bayesian POV贝叶斯: D D D是唯一的(观察到的); w w w是一个随机变量(可能会改变,我们将在 D D D中看到它的影响)
在频率型POV和贝叶斯型POV中,我们都使用了MLE
P
(
D
∣
w
)
\\mathbb{P}(D|w)
P(D∣w)。
p
(
w
∣
D
)
=
p
(
D
∣
w
)
p
(
w
)
p
(
D
)
p(w | D) = \\frac{p(D|w)p(w)}{p(D)}
p(w∣D)=p(D)p(D∣w)p(w)
- p ( w ∣ D ) p(w|D) p(w∣D)表达观测到 D \\mathcal{D} D 之后估计参数 w w w 的不确定性
- p ( w ) p(w) p(w)是先验概率,表达参数 w w w 的假设
- p ( D ∣ w ) p(D|w) p(D∣w)是似然函数,表达观测数据的效果,参数的不确定性通过概率分布来表达
高斯分布
高斯分布由以下定义
N
(
x
∣
μ
,
σ
2
)
=
1
2
π
σ
2
e
−
1
2
σ
2
(
x
−
μ
)
2
\\mathcal{N}(x | \\mu, \\sigma^2) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}}e^{-\\frac{1}{2\\sigma^2}(x - \\mu)^2}
N(x∣μ,σ2)=2πσ21e−2σ21(x−μ)2
代表高斯分布的另一种方法是考虑指示的精确性
β
:
=
1
/
σ
2
\\beta := 1 / \\sigma^2
β:=1/σ2
N
(
x
∣
μ
,
β
−
1
)
=
β
1
/
2
2
π
σ
2
e
−
β
2
(
x
−
μ
)
2
\\mathcal{N}(x | \\mu, \\beta^{-1}) = \\frac{\\beta^{1/2}}{\\sqrt{2\\pi\\sigma^2}}e^{-\\frac{\\beta}{2}(x - \\mu)^2}
N(x∣μ,β−1)=2πσ2β1/2e−2β(x−μ)2
def norm_pdf(x, mu, sigma2):
return 1 / np.sqrt(2 * np.pi * sigma2) * np.exp(-(x - mu)**2 / (2 * sigma2))
xrange = np.linspace(-4, 4, 100)
plt.plot(xrange, norm_pdf(xrange, 0, 1), label=r"$\\mu=0; \\ \\sigma^2=1$")
plt.plot(xrange, norm_pdf(xrange, 1, 2), label=r"$\\mu=1; \\ \\sigma^2=2$")
plt.plot(xrange, norm_pdf(xrange, -1, 3), label=r"$\\mu=-1; \\ \\sigma^2=3$")
plt.legend(fontsize=15)
在D 维随机向量 x \\text{x} x 的高斯分布定义
N ( x ∣ μ , Σ ) = 1 ( 2 π ) D / 2 1 ∣ Σ ∣ 1 / 2 exp { − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) } \\mathcal{N} ( \\text{x}|\\boldsymbol{\\mu},\\Sigma ) = \\frac1{( 2\\pi )^{D/2}}\\frac1{|\\Sigma|^{1/2}} \\exp\\{-\\frac12 ( \\text{x}-\\boldsymbol{\\mu} )^T\\Sigma^{-1} ( \\text{x}-\\boldsymbol{\\mu} ) \\} N(x∣μ,Σ)=(2π)D/21∣Σ∣1/21exp{−21(x−μ)TΣ−1(x−μ)}
from numpy.linalg import inv
Xrange = np.mgrid[-3:3:0.1, -3:3:0.1]
Sigma = np.array([[0.1, -0.8]]).T
Sigma = np.exp(Sigma @ Sigma.T)
def norm_pdf_v(X, mu, sigma):
diff_term = (X - mu[:, None])
D = len(X)
den = (2 * np.pi) ** (D / 2) * np.sqrt(det(sigma))
num = np.einsum("inm,ij,jnm->nm", diff_term, inv(sigma), diff_term)
num = np.exp(-num / 2)
return num / den
plt.title("Multivariate Normal", fontsize=15)
plt.contourf(*Xrange, norm_pdf_v(Xrange, mu0, Sigma), cmap="viridis", levels=20);
以上是关于PRML 1.2 概率论的主要内容,如果未能解决你的问题,请参考以下文章