如何取多元正态密度的导数?


35

假设我具有多元正态N(μ,Σ)密度。我想获得第二(局部的)衍生物WRT μ。不知道如何取矩阵的导数。

维基说在矩阵中逐个元素地取导数。

我正在使用拉普拉斯逼近

log⁡PN(θ)=log⁡PN−12(θ−θ^)TΣ−1(θ−θ^).

模式是 θ = μ。θ^=μ

我得到

Σ−1=−∂2∂θ2log⁡p(θ^|y),
这究竟是怎么来的呢?

我所做的:

log⁡P(θ|y)=−k2log⁡2π−12log⁡|Σ|−12(θ−θ^)TΣ−1(θ−θ^)

因此,我将导数wrt取到θ,首先是有转置,其次是矩阵。所以,我被困住了。

注意:如果我的教授遇到此问题,则是指该讲座。


1
问题的一部分可能是您对数似然的表达式有错误-您有您应该在其中记录日志(| Σ |)。另外,万一你的意思Σ - 1 = - ∂ 2|Σ|log⁡(|Σ|)?Σ−1=−∂2∂θ2log⁡p(θ|y)
— 2012年

是的,你是对的,对不起。为什么偏导数前面有负号?
— user1061210 2012年

我只是在澄清负号,因为负二阶导数是观察到的费舍尔信息,通常对此很感兴趣。此外,通过我自己的计算,我发现∂2∂θ2log⁡p(θ|y)=−Σ−1
— 宏

那么,离散/连续函数的一般程序是什么?就拿日志,在泰勒展开形式写,分化两次WRT 。Fisher信息通常在大多数其他密度下都不正确,对吗?θ
— user1061210 2012年

3
@user正如我指出的那样,对数的二阶导数必须具有非正特征值。是的,正如最大似然估计,Fisher信息等理论所揭示的,方差与负二阶导数之间存在联系-Macro在这些注释中已提到了这一点。
— ub

Answers:


66

在Matrix Cookbook的第二章中,对矩阵演算的内容进行了很好的回顾,它给出了许多有用的标识,这些标识可以帮助人们解决概率和统计问题,其中包括有助于区分多元高斯似然性的规则。

如果您有一个随机向量是多元正态的,且均值向量和协方差矩阵,则使用矩阵食谱中的等式(86)来找到相对于对数似然为yμΣLμ

∂L∂μ=−12(∂(y−μ)′Σ−1(y−μ)∂μ)=−12(−2Σ−1(y−μ))=Σ−1(y−μ)

我将它留给您来再次区分,找到答案是。−Σ−1

作为“额外信用”,使用等式(57)和(61)来发现相对于的梯度为Σ

∂L∂Σ=−12(∂log⁡(|Σ|)∂Σ+∂(y−μ)′Σ−1(y−μ)∂Σ)=−12(Σ−1−Σ−1(y−μ)(y−μ)′Σ−1)

我省略了很多步骤,但是我仅使用在矩阵食谱中找到的身份进行了推导,因此我将留给您填补空白。

我已经将这些得分方程式用于最大似然估计,所以我知道它们是正确的:)


4
很好的参考-我自己会推荐它。对于不了解矩阵代数的人来说,不是一个很好的教学参考。真正的挑战来自实际制定。真痛苦。Σ
— probabilityislogic

3
关于矩阵演算的另一个很好的来源是Magnus&Neudecker,amazon.com /…
— StasK

2
该公式的参考编号已更改(可能是由于新版本)。新的参考方程式是
— 86。– goelakash

2
我在这里可能不在基地,但我认为这个公式不正确。我一直在用真实的例子,并看它们的有限差异。看来的公式为对角线条目提供了正确的值。但是,非对角线输入仅是其应有的一半。∂L∂Σ
— jjet

5

您需要确保正确处理中的重复元素,否则您的派生词将是不正确的。例如,(141)矩阵食谱为对称以下导数ΣΣΣ

∂log⁡|Σ|∂Σ=2Σ−1−(Σ−1∘I)

并且(14)的协方差矩阵函数的微分给出

∂trace(Σ−1xx⊤)∂Σ=−2Σ−1xx⊤Σ−1+(Σ−1xx⊤Σ−1∘I)

其中表示Hadmard积,为方便起见,我们定义了。X:= ÿ - μ∘x:=y−μ

特别要注意的是,这与不施加对称性时不同。结果,我们有了Σ

∂L∂Σ=−∂∂Σ12(Dlog⁡|2π|+log⁡|Σ|+x⊤Σ−1x))=−∂∂Σ12(log⁡|Σ|+trace(Σ−1xx⊤))=−12(2Σ−1−(Σ−1∘I)−2Σ−1xx⊤Σ−1+(Σ−1xx⊤Σ−1∘I))

其中表示,和的尺寸以及的导数。是0X Ÿ μ d 日志| 2个π |DxyμDlog⁡|2π|

这样可确保的元素对应于。∂ 大号i,jth∂&大号∂L∂Σ∂L∂Σij


0

我试图通过计算验证@Macro的答案,但发现在协方差解决方案中似乎是一个小错误。他获得了 但是,看来正确的解决方案实际上是 以下R脚本提供了一个简单示例,其中为每个元素计算了有限差分。它表明乙=2甲-DIAG(甲)Σ甲乙

∂L∂Σ=−12(Σ−1−Σ−1(y−μ)(y−μ)′Σ−1)=A
B=2A−diag(A)
ΣA仅对角线元素提供正确答案,而对每个条目都是正确的。B
library(mvtnorm)

set.seed(1)

# Generate some parameters
p <- 4
mu <- rnorm(p)
Sigma <- rWishart(1, p, diag(p))[, , 1]

# Generate an observation from the distribution as a reference point
x <- rmvnorm(1, mu, Sigma)[1, ]

# Calculate the density at x
f <- dmvnorm(x, mu, Sigma)

# Choose a sufficiently small step-size
h <- .00001

# Calculate the density at x at each shifted Sigma_ij
f.shift <- matrix(NA, p, p)
for(i in 1:p) {
  for(j in 1:p) {
    zero.one.mat <- matrix(0, p, p)
    zero.one.mat[i, j] <- 1
    zero.one.mat[j, i] <- 1

    Sigma.shift <- Sigma + h * zero.one.mat
    f.shift[i, j] <- dmvnorm(x, mu, Sigma.shift)
  }
}

# Caluclate the finite difference at each shifted Sigma_ij
fin.diff <- (f.shift - f) / h

# Calculate the solution proposed by @Macro and the true solution
A <- -1/2 * (solve(Sigma) - solve(Sigma) %*% (x - mu) %*% t(x - mu) %*% solve(Sigma))
B <- 2 * A - diag(diag(A))

# Verify that the true solution is approximately equal to the finite difference
fin.diff
A * f
B * f

感谢您的评论。我相信您对符号的理解不同于其他人,因为您同时更改了匹配的非对角线元素对,从而使更改效果加倍。实际上,您正在计算方向导数的倍数。在应该进行转置的范围内,Macro的解决方案似乎确实存在一个小问题-但这对对称矩阵的应用程序不会产生任何影响。Σ
— ub
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.