Rozbieżność KL między dwoma wielowymiarowymi gaussami


46

Mam problem z wyprowadzeniem formuły dywergencji KL przy założeniu dwóch normalnych rozkładów wielowymiarowych. Zrobiłem przypadek jednoznaczny dość łatwo. Minęło jednak sporo czasu, odkąd wziąłem statystyki matematyczne, więc mam problem z rozszerzeniem go na przypadek wielowymiarowy. Jestem pewien, że brakuje mi czegoś prostego.

Oto co mam ...

Załóżmy, że zarówno jak i są plikami pdf normalnych rozkładów odpowiednio ze średnimi i i wariancjami i . Odległość Kullbacka-Leiblera od do wynosi:pqμ1μ2Σ1Σ2qp

∫[log⁡(p(x))−log⁡(q(x))] p(x) dx , co dla dwóch normalnych zmiennych wielowymiarowych to:

12[log⁡|Σ2||Σ1|−d+Tr(Σ2−1Σ1)+(μ2−μ1)TΣ2−1(μ2−μ1)]

Kierując się tą samą logiką, co ten dowód , zajmę się tym zanim utknę:

=∫[d2log⁡|Σ2||Σ1|+12((x−μ2)TΣ2−1(x−μ2)−(x−μ1)TΣ2−1(x−μ1))]×p(x)dx

=E[d2log⁡|Σ2||Σ1|+12((x−μ2)TΣ2−1(x−μ2)−(x−μ1)TΣ2−1(x−μ1))]

Myślę, że muszę wdrożyć trik śledzenia , ale po prostu nie jestem pewien, co robić później. Będziemy wdzięczni za wszelkie pomocne wskazówki, które pozwolą mi wrócić na właściwy tor!


1
stanford.edu/~jduchi/projects/general_notes.pdf . Ostatnia sekcja zawiera również wyprowadzenie.
— user3540823,

Odpowiedzi:


47

Poczynając od miejsca, w którym zacząłeś od drobnych poprawek, możemy pisać

KL=∫[12log⁡|Σ2||Σ1|−12(x−μ1)TΣ1−1(x−μ1)+12(x−μ2)TΣ2−1(x−μ2)]×p(x)dx=12log⁡|Σ2||Σ1|−12tr {E[(x−μ1)(x−μ1)T] Σ1−1}+12E[(x−μ2)TΣ2−1(x−μ2)]=12log⁡|Σ2||Σ1|−12tr {Id}+12(μ1−μ2)TΣ2−1(μ1−μ2)+12tr{Σ2−1Σ1}=12[log⁡|Σ2||Σ1|−d+tr{Σ2−1Σ1}+(μ2−μ1)TΣ2−1(μ2−μ1)].

Zauważ, że skorzystałem z kilku właściwości z Sekcji 8.2 Matrix Cookbook .


Widzę, że wyjąłeś D, które pierwotnie miałem. Czy nie miałbyś pojęcia D po przejściu dziennika Gaussa w pierwszych kilku krokach?
— dmartin

Rozważ współczynnik skalowania , normalnej gęstości wielowymiarowej. Podczas obliczania różnicy logarytmicznej znika. Nie ma terminu na wyznaczniki - po prostu , który jest uwzględniony. (2π)−d/2|Σk|−1/2k=1,2(2π)−d/2d1/2
— ramhiser

Żaden problem. Cieszę się, że mogłem pomóc.
— ramhiser

Cześć, jak wymyśliłeś ostatni krok? Jak zmieniłeś znak na ? μ1−μ2μ2−μ1
— acidghost 11.04.16

1
@acidghost Każdy z nich działa, ponieważ możemy wyróżnić negatywny z obu stron. Pomnożenie dwóch ujemnych daje wynik dodatni.
— ramhiser
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.