Wie kann ich eine Stichprobe aus einer diskreten (kategorialen) Verteilung im Protokollbereich erstellen?

12

Angenommen, ich habe eine diskrete Verteilung, die durch den Vektor so dass die Kategorie mit der Wahrscheinlichkeit usw. gezeichnet wird . Ich stelle dann fest, dass einige der Werte in der Verteilung so klein sind, dass sie unter der Gleitkommazahlendarstellung meines Computers liegen. Um dies zu kompensieren, führe ich alle meine Berechnungen im Protokollbereich durch. Jetzt habe ich ein Log-Space-Vektor- .θ0,θ1,...,θN0θ0log(θ0),log(θ1),...,log(θN)

Ist es möglich, aus der Verteilung eine Stichprobe zu , bei der die ursprünglichen Wahrscheinlichkeiten gelten (Kategorie wird mit der Wahrscheinlichkeit gezeichnet ), ohne jedoch jemals den Protokollbereich zu verlassen? Mit anderen Worten, wie kann ich aus dieser Verteilung ohne Unterläufe eine Stichprobe erstellen?iθi

Josh Hansen
quelle

Antworten:

15

Mit dem Gumbel-max-Trick können Sie Stichproben aus einer kategorialen Verteilung mit bestimmten Log-Wahrscheinlichkeiten erstellen, ohne Speicherplatz zu belassen . Die Idee ist, dass, wenn Ihnen nicht normalisierte log-Wahrscheinlichkeiten werden, dies unter Verwendung der Softmax-Funktion in richtige Wahrscheinlichkeiten übersetzt werden kannα1,,αk

pi=exp(αi)jexp(αj)

Um dann aus einer solchen Verteilung abzutasten, können Sie die Tatsache verwenden, dass wenn unabhängige Abtastwerte sind, die aus der durch den Ort m parametrisierten Standard-Gumbel-Verteilung entnommen wurden.g1,,gkG(0)m

F(Gg)=exp(exp(g+m))

dann kann gezeigt werden (siehe Referenzen unten), dass

argmaxi{gi+αi}exp(αi)jexp(αj)maxi{gi+αi}G(logiexp{αi})

und wir können nehmen

z=argmaxi{gi+αi}

als Stichprobe aus einer durch -Wahrscheinlichkeiten parametrisierten kategorialen Verteilung . Dieser Ansatz wurde ausführlicher in Blogeinträgen von Ryan Adams und Laurent Dinh beschrieben , außerdem hielten Chris J. Maddison, Daniel Tarlow und Tom Minka einen Vortrag ( Folien ) über die Konferenz über neuronale Informationsverarbeitungssysteme (2014) und verfassten einen Aufsatz mit dem Titel A *. Stichproben , die diese Ideen verallgemeinerten (siehe auch Maddison, 2016; Maddison, Mnih und Teh, 2016; Jang und Poole, 2016), die sich auf Yellott (1977) beziehen und ihn als denjenigen nennen, der diese Eigenschaft zuerst beschrieb.p1,,pk

Es ist ziemlich einfach, es unter Verwendung der inversen Transformationsabtastung zu implementieren, indem wobei u i aus der Gleichverteilung auf ( 0 , 1 ) gezogen wird . Dies ist sicherlich nicht der zeiteffizienteste Algorithmus für die Stichprobe aus der kategorialen Verteilung, aber Sie können damit im Protokollbereich bleiben, was in einigen Szenarien von Vorteil sein kann.gi=log(logui)ui(0,1)


Maddison, CJ, Tarlow, D. & Minka, T. (2014). A * Probenahme. [In:] Fortschritte in neuronalen Informationsverarbeitungssystemen (S. 3086-3094).

Yellott, JI (1977). Die Beziehung zwischen Luces Wahlaxiom, Thurstones Theorie des vergleichenden Urteils und der doppelten Exponentialverteilung. Journal of Mathematical Psychology, 15 (2), 109-144.

Maddison, CJ, Mnih, A. & Teh, YW (2016). Die konkrete Verteilung: Eine kontinuierliche Relaxation diskreter Zufallsvariablen. arXiv-Vorabdruck arXiv: 1611.00712.

Jang, E., Gu, S. & Poole, B. (2016). Kategoriale Umparametrierung mit Gumbel-Softmax. arXiv-Vorabdruck arXiv: 1611.01144.

Maddison, CJ (2016). Ein Poisson-Prozessmodell für Monte Carlo. arXiv-Vorabdruck arXiv: 1602.05986.

Tim
quelle
5

Hier ist ein üblicher Weg, um einen Unterlauf / Überlauf zu vermeiden.

m=maxilog(θi)

θi=exp(log(θi)m)

θ=[θ1,θ2,...]

Siddharth Gopal
quelle
1
Dies funktioniert, solange der Unterschied zwischen einem Wert und dem Maximalwert nicht zu groß ist. In diesem expFall kann die Genauigkeit verloren gehen, was zu Verteilungen wie [1.0, 3.45e-66, 0.0, 7.54e-121] führt. . Ich möchte auf eine Antwort warten, die auch in diesem Fall robust ist. Aber jetzt stimme ich Ihrer Antwort zu.
Josh Hansen