Problema legal! Como a derivação de Xi'an mostra, está relacionada à minimização da divergência de KL de Q para P. Cliff também fornece um contexto importante.
O problema pode ser resolvido trivialmente usando software de otimização, mas não vejo uma maneira de escrever uma fórmula de formulário fechado para a solução geral. Se nunca for , existe uma fórmula intuitiva.qi≥0
Quase certamente ideal (embora veja meus exemplos de gráficos no final, ele pode estar próximo). E não é o mesmo problema que . Observe que não é um objetivo equivalente a . Não é uma transformação monotônica. Expectativa é de uma soma eo log vai dentro a soma, então não é uma transformação monotônica da função objetivo.q≠pmaxE[x]maxE[log(x)]x+ylog(x)+log(y)
Condições KKT (isto é, condições necessárias e suficientes) para uma solução:
Defina e . O problema é:
q0=0qn+1=0
maximize (over qi)subject to∑ni=1pilog(qi−1+qi+qi+1)qi≥0∑ni=1qi=1
Lagrangiano:
Este é um problema de otimização convexo em que a condição de Slater se mantém, portanto, as condições KKT são necessárias e condições suficientes para um ótimo. Condição de primeira ordem:
L=∑ipilog(qi−1+qi+qi+1)+∑iμiqi−λ(∑iqi−1)
pi−1qi−2+qi−1+qi+piqi−1+qi+qi+1+pi+1qi+qi+1+qi+2=λ−μi
complementar:
E, claro, . (Parece nos meus testes que mas não vejo imediatamente o porquê.) e são multiplicadores de Lagrange.
μiqi=0
μi≥0λ=1μiλ
Solução se nunca for .qi≥0
Então considere a solução
pi=qi−1+qi+qi+13μi=0λ=1
Conectando-se à condição de primeira ordem, obtemos . Portanto, funciona (desde que e também sejam satisfeitos).
13+13+13=1∑iqi=1qi≥0
Como escrever o problema com matrizes:
Sejam e vetores. Seja uma matriz diagonal de três bandas de unidades. Por exemplo. parapqAn=5
A=⎡⎣⎢⎢⎢⎢⎢⎢1100011100011100011100011⎤⎦⎥⎥⎥⎥⎥⎥
O problema pode ser escrito com mais notação matricial:
maximize (over q)subject top′log(Aq)qi≥0∑iqi=1
Isso pode ser resolvido rapidamente numericamente, mas não vejo um caminho para uma solução limpa de formulário fechado?
A solução é caracterizada por:
mas não vejo como isso seja muito útil além de verificar seu software de otimização.
Ay=λ−ux=Aqyi=pixi
Código para resolvê-lo usando CVX e MATLAB
A = eye(n) + diag(ones(n-1,1),1) + diag(ones(n-1,1),-1);
cvx_begin
variable q(n)
dual variable u;
dual variable l;
maximize(p'*log(A*q))
subject to:
u: q >= 0;
l: sum(q) <= 1;
cvx_end
Por exemplo. entradas:
p = 0.0724 0.0383 0.0968 0.1040 0.1384 0.1657 0.0279 0.0856 0.2614 0.0095
tem solução:
q = 0.0000 0.1929 0.0000 0.0341 0.3886 0.0000 0.0000 0.2865 0.0979 0.0000
Solução que recebo (azul) quando tenho uma tonelada de caixas, basicamente seguindo o pdf normal (vermelho):
Outro problema mais arbitrário:
Muito vagamente, para você obtém , mas se se move em torno de uma tonelada, você obtém algumas coisas complicadas onde a otimização tenta colocar o massa em no bairro de massa, estrategicamente colocando-a entre com massa.pi−1≈pi≈pi+1qi≈pipiqipipi
Outro ponto conceitual é que a incerteza em sua previsão suavizará efetivamente sua estimativa de , e um mais suave terá uma solução mais próxima de . (Eu acho que está certo.)ppqp