高斯分布相乘、卷积整理

本文详述了高斯分布相乘的原理,包括一元和多元高斯分布的乘积,以及一元高斯的卷积分布。通过公式推导展示了多元高斯分布相乘仍为高斯分布,并介绍了参数推断和高斯线性系统在机器学习中的应用。
摘要由CSDN通过智能技术生成

文章包括的内容有:

  • 一元高斯分布相乘的分布
  • 多元高斯分布相乘的分布
  • 一元高斯的卷积分布
  • 应用:对多元高斯分布的参数推断
  • 应用:高斯线性系统的推导

前三部分的参考文献Products and Convolutions of Gaussian Probability Density
Functions. P.A. Bromile
。应用的内容来自"machine learning a probabilistic perspective"的第四章p119~p120页。

引言

高斯分布是一个很重要的连续分布形式,频繁出现应用场景和里也可以导出很多分布,如在典型的线性回归中对误差 ε \varepsilon ε的建模就是用的标准正态分布,统计学的学生   t   \, t\, t分布就是从正态分布中导出。随着贝叶斯统计学的广泛应用,相乘的高斯分布(高斯先验)等形式也出现在公式中,例如高斯线性系统,本文就这些形式进行说明。

一元高斯分布相乘

假设 p ( x 1 ) = N ( x ∣ μ 1 , σ 1 ) ,   p ( x 2 ) = N ( x ∣ μ 2 , σ 2 ) p(x_1)=\mathcal{N}(x\vert \mu_1,\sigma_1), \, p(x_2)=\mathcal{N}(x\vert \mu_2,\sigma_2) p(x1)=N(xμ1,σ1),p(x2)=N(xμ2,σ2)均是关于变量 x x x的分布,现想计算 p ( x 1 ) p ( x 2 ) p(x_1)p(x_2) p(x1)p(x2)的分布形式。
p ( x 1 ) p ( x 2 ) = e − 1 2 σ 1 2 ( x − μ 1 ) 2 e − 1 2 σ 2 2 ( x − μ 2 ) 2 = e − 1 2 ( σ 1 2 + σ 2 2 ) x 2 − 2 ( μ 1 σ 2 2 + μ 2 σ 1 2 ) x + constant σ 1 2 σ 2 2 \begin{aligned} p(x_1)p(x_2) & = e^{-\frac{1}{2\sigma_1^2}(x-\mu_1)^2}e^{-\frac{1}{2\sigma_2^2}(x-\mu_2)^2} \\ & =e^{-\frac{1}{2}\frac{(\sigma_1^2+\sigma_2^2)x^2-2(\mu_1\sigma_2^2+\mu_2\sigma_1^2)x+\text{constant}}{\sigma_1^2\sigma_2^2}}\end{aligned} p(x1)p(x2)=e2σ121(xμ1)2e2σ221(xμ2)2=e21σ12σ22σ12+σ22x22(μ1σ22+μ2σ12)x+constant
得两个高斯分布相乘仍为缩放的高斯分布,通过配方得到缩放的高斯分布参数为:
μ = μ 1 σ 2 2 + μ 2 σ 1 2 σ 1 2 + σ 2 2 σ = σ 1 2 σ 2 2 σ 1 2 + σ 2 2 \begin{aligned} \mu & = \frac{\mu_1\sigma_2^2+\mu_2\sigma_1^2}{\sigma_1^2+\sigma_2^2} \\ \sigma & = \sqrt{\frac{\sigma_1^2\sigma_2^2}{\sigma_1^2+\sigma_2^2}} \end{aligned} μσ=σ12+σ22μ1σ22+μ2σ12=σ12+σ22σ12σ22
上式可写为如下形式,从而推广至 n n n个一维高斯分布相乘:
μ = ( μ 1 σ 1 2 + μ 2 σ 2 2 ) σ 2 1 σ 2 = 1 σ 1 2 + 1 σ 2 2 \begin{aligned} \mu &= (\frac{\mu_1}{\sigma_1^2}+\frac{\mu_2}{\sigma_2^2})\sigma^2 \\ \frac{1}{\sigma^2} &= \frac{1}{\sigma_1^2} + \frac{1}{\sigma_2^2} \end{aligned} μσ21=(σ12μ1+σ22μ

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用NumPy库来实现卷积操作。以下是一个示例函数,可以根据给定的参数进行卷积操作: ```python import numpy as np def convolve(image, kernel_size, c, stride): # 生成随机初始化的卷积核 kernel = np.random.normal(0, 1, size=(kernel_size, kernel_size, c)) # 获取图像尺寸和通道数 height, width = image.shape[:2] # 计算padding大小 padding = (kernel_size - 1) // 2 # 添加padding padded_image = np.pad(image, ((padding, padding), (padding, padding), (0, 0)), mode='constant') # 计算输出图像尺寸 output_height = (height + 2 * padding - kernel_size) // stride + 1 output_width = (width + 2 * padding - kernel_size) // stride + 1 # 创建空的输出图像 output = np.zeros((output_height, output_width)) # 进行卷积操作 for h in range(output_height): for w in range(output_width): h_start = h * stride w_start = w * stride h_end = h_start + kernel_size w_end = w_start + kernel_size patch = padded_image[h_start:h_end, w_start:w_end] result = np.sum(patch * kernel) output[h, w] = result return output ``` 这个函数使用`np.random.normal`函数生成服从均值为0,方差为1的高斯分布的随机初始化卷积核。然后,根据输入图像的尺寸和通道数,计算padding大小,并使用`np.pad`函数为输入图像添加padding。接下来,根据给定的卷积核空间尺寸、步长和padding,计算输出图像的尺寸,并创建一个空的输出图像。最后,使用嵌套的循环遍历输出图像的每个位置,并根据卷积核对应位置的像素值进行相乘和求和操作,得到卷积结果。 你可以将灰度图像作为`image`参数传递给这个函数,然后根据你的需求设置`kernel_size`、`c`和`stride`的值来进行卷积操作。返回的结果即为卷积后的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值