Estimar a divergência Kullback Leibler (KL) com monte carlo


9

Quero estimar a divergência KL entre duas distribuições contínuas feeg. No entanto, não posso anotar a densidade para f ou g. Eu posso amostrar a partir de feg através de algum método (por exemplo, cadeia de markov monte carlo).

A divergência KL de f para g é definida assim

DKeu(f||g)=-f(x)registro(f(x)g(x))dx

Esta é a expectativa de em relação a f, para que você possa imaginar uma estimativa de monte carloregistro(f(x)g(x))

1 1NEuNregistro(f(xEu)g(xEu))

Onde i indexa N amostras extraídas de f (ie para i = 1, ..., N)xEuf()

No entanto, como não conheço f () e g (), não posso nem usar essa estimativa de monte carlo. Qual é a maneira padrão de estimar o KL nessa situação?

Edição: Eu não sei a densidade não normalizada para f () ou g ()


Você já pensou em usar os ecdfs?
21417 Toby

isso funcionará, mas pode ser arbitrariamente lento para uma escolha difícil de fe (fechar ou fechar caudas). Se você decidir ignorar amostras longe das caudas, poderá ter mais sorte com o limite superior do roc.
enthdegree

Respostas:


6

Aqui, suponho que você só pode provar a partir dos modelos; uma função de densidade não normalizada não está disponível.

Você escreve isso

DKL(f||g)=f(x)log(f(x)g(x)=:r)dx,

onde defini a razão de probabilidades como . Alex Smola escreve, embora em um contexto diferente, você possa estimar essas proporções "facilmente" apenas treinando um classificador. Suponhamos que você tenha obtido um classificador p ( f | x ) , que pode lhe dizer a probabilidade de uma observação x ter sido gerada por f . Observe que p ( g | x ) = 1 - p ( f | x ) . Então:rp(f|x)xfp(g|x)=1 1-p(f|x)

r=p(x|f)p(x|g)=p(f|x)p(x)p(g)p(g|x)p(x)p(f)=p(f|x)p(g|x),

onde o primeiro passo é devido a Bayes e o último segue da suposição de que .p(g)=p(f)

Obter esse classificador pode ser bastante fácil por dois motivos.

Primeiro, você pode fazer atualizações estocásticas. Isso significa que, se você estiver usando um otimizador baseado em gradiente, como é típico para regressão logística ou redes neurais, você pode simplesmente desenhar uma amostra de cada e ge fazer uma atualização.fg

Segundo, como você tem dados virtualmente ilimitados - você pode apenas provar e g até a morte - não precisa se preocupar com o ajuste excessivo ou algo parecido.fg


6

Eu suponho que você pode avaliar e g até um constante de normalização. Denotam f ( x ) = f u ( x ) / C f e g ( x ) = g u ( x ) / c g .fgf(x)=fvocê(x)/cfg(x)=gvocê(x)/cg

Um estimador consistente que pode ser usado é em que R = 1 / n

DKeu^(f||g)=[n-1 1jfvocê(xj)/πf(xj)]-1 11 1NEuN[registro(fvocê(zEu)gvocê(zEu))fvocê(zEu)πr(zEu)]-registro(r^)
é um estimador de amostragem de importância para a razãocf/cg. Aqui você usaπfeπgcomo densidades instrumentais parafuegu, respectivamente, eπrpara atingir a razão de log de densidades não normalizadas.
(1)r^=1 1/n1 1/njfvocê(xj)/πf(xj)jgvocê(yj)/πg(yj).
cf/cgπfπgfvocêgvocêπr

Então deixou , { y i } ~ π g , e { z i } ~ π r . O numerador de (1) converge para c f . O denominador converge para c g . A proporção é consistente pelo teorema do mapeamento contínuo. O log da proporção é consistente pelo mapeamento contínuo novamente.{xEu}πf{yEu}πg{zEu}πrcfcg

Em relação à outra parte do estimador, pela lei dos grandes números.

1 1NEuN[registro(fvocê(zEu)gvocê(zEu))fvocê(zEu)πr(zEu)]ComocfE[registro(fvocê(zEu)gvocê(zEu))]

Minha motivação é a seguinte:

DKeu(f||g)=-f(x)registro(f(x)g(x))dx=-f(x){registro[fvocê(x)gvocê(x)]+registro[cgcf]}dx=Ef[registrofvocê(x)gvocê(x)]+registro[cgcf]=cf-1 1Eπr[registrofvocê(x)gvocê(x)fvocê(x)πr(x)]+registro[cgcf].

Para obter mais idéias sobre como simular a razão likelhood, encontrei um artigo com alguns: https://projecteuclid.org/download/pdf_1/euclid.aos/1031594732


(+1) Vale a pena notar aqui que a amostragem de importância pode ter uma variação extremamente alta (até mesmo uma variação infinita) se a distribuição de destino tiver caudas mais grossas do que a distribuição da qual você está amostrando e / ou o número de dimensões for muito grande.
David J. Harris

@ DavidJ.Harris muito, muito verdadeiros
Taylor

0

Além do método classificador probabilístico mencionado por @bayerj, você também pode usar o limite inferior da divergência KL derivada em [1-2]:

Keu[f__g]supT{Exf[T(x)]-Exg[exp(T(x)-1 1)]},
T:XR
T(x)=1 1+em[f(x)g(x)]

fgT(x)

Referências:

[1] Nguyen, X., Wainwright, MJ e Jordan, MI, 2010. Estimando funcionais de divergência e a razão de verossimilhança por minimização de risco convexa. IEEE Transactions on Information Theory, 56 (11), pp.5847-5861.

[2] Nowozin, S., Cseke, B. e Tomioka, R., 2016. f-gan: Treinamento de amostradores neurais generativos usando minimização de divergência variacional. In Advances in neural information processing systems (pp. 271-279).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.