เหตุใดเราจึงต้องใส่ใจกับการผสมอย่างรวดเร็วในเครือข่าย MCMC


21

เมื่อทำงานร่วมกับมาร์คอฟโซ่มอนติคาร์โลเพื่อวาดการอนุมานเราจำเป็นต้องมีห่วงโซ่ที่ผสมกันอย่างรวดเร็วนั่นคือการเคลื่อนที่อย่างสม่ำเสมอโดยการสนับสนุนของการกระจายด้านหลังอย่างรวดเร็ว แต่ฉันไม่เข้าใจว่าทำไมเราต้องใช้คุณสมบัตินี้เพราะจากสิ่งที่ฉันเข้าใจเทียนที่ได้รับการยอมรับควรและจะเข้มข้นในส่วนที่มีความหนาแน่นสูงของการกระจายหลัง หากสิ่งที่ฉันเข้าใจเป็นจริงเราจะยังต้องการให้ลูกโซ่เคลื่อนที่ผ่านการสนับสนุน (ซึ่งรวมถึงส่วนที่มีความหนาแน่นต่ำ) ด้วยหรือไม่

นอกจากนี้หากฉันใช้ MCMC เพื่อเพิ่มประสิทธิภาพฉันยังต้องใส่ใจกับการผสมอย่างรวดเร็วและเพราะเหตุใด

ขอบคุณสำหรับการแบ่งปันความคิดของคุณ!


เป็นที่ทราบกันดีในวรรณคดี MCMC ว่าเมื่อโซ่มาร์คอฟมีรูปร่างเชิงเรขาคณิตมันจะสลายตัวได้อย่างรวดเร็วแบบทวีคูณ ฉันไม่ชัดเจนว่า X_ {n} สามารถมาบรรจบกันอย่างรวดเร็วกับการกระจายเป้าหมายได้อย่างไรและยังคงมีความสัมพันธ์สูงระหว่างตัวอย่างต่อเนื่อง มีตัวอย่างง่ายๆหรือไม่? ขอบคุณสำหรับอินพุตใด ๆ !

คำตอบ:


16

อัลกอริธึม Monte Carlo ในอุดมคติใช้ค่าสุ่มต่อเนื่องแบบอิสระ ใน MCMC ค่าต่อเนื่องไม่เป็นอิสระซึ่งทำให้วิธีการบรรจบกันช้ากว่าอุดมคติ Carlo; อย่างไรก็ตามยิ่งผสมกันเร็วเท่าไหร่ก็ยิ่งสลายการพึ่งพาได้เร็วขึ้นในการวนซ้ำต่อเนื่องและเร็วขึ้น

¹ฉันหมายถึงที่นี่ว่าค่าต่อเนื่องนั้น "เกือบเป็นอิสระ" ของสถานะเริ่มต้นหรือแทนที่จะให้ค่าณ จุดหนึ่งค่าจะกลายเป็น "เกือบเป็นอิสระ" ของเมื่อเติบโตขึ้น ดังนั้นดังที่ qkhhly กล่าวไว้ในความคิดเห็นว่า "ห่วงโซ่ไม่ติดอยู่ในบางพื้นที่ของพื้นที่รัฐ"XnXń+k kXnk

แก้ไข: ฉันคิดว่าตัวอย่างต่อไปนี้สามารถช่วยได้

ลองจินตนาการว่าคุณต้องการประมาณค่าเฉลี่ยของการกระจายแบบสม่ำเสมอบนโดย MCMC คุณเริ่มต้นด้วยลำดับที่สั่งซื้อ ; ในแต่ละขั้นตอนคุณเลือกองค์ประกอบตามลำดับและสุ่มแบบสุ่ม ในแต่ละขั้นตอนองค์ประกอบที่ตำแหน่ง 1 จะถูกบันทึก นี่เป็นการรวมกันของการกระจาย ค่าของจะควบคุมความเร็วในการผสม: เมื่อจะช้า เมื่อองค์ประกอบที่ต่อเนื่องจะเป็นอิสระและการผสมจะรวดเร็ว( 1 , , n ) k > 2 k k = 2 k = n{1,,n}(1,,n)k>2kk=2k=n

นี่คือฟังก์ชั่น R สำหรับอัลกอริทึม MCMC นี้:

mcmc <- function(n, k = 2, N = 5000)
{
  x <- 1:n;
  res <- numeric(N)
  for(i in 1:N)
  {
    swap <- sample(1:n, k)
    x[swap] <- sample(x[swap],k);
    res[i] <- x[1];
  }
  return(res);
}

ลองใช้กับและวางแผนการประมาณค่าเฉลี่ยต่อเนื่องของตามการวนซ้ำของ MCMC:μ = 50n=99μ=50

n <- 99; mu <- sum(1:n)/n;

mcmc(n) -> r1
plot(cumsum(r1)/1:length(r1), type="l", ylim=c(0,n), ylab="mean")
abline(mu,0,lty=2)

mcmc(n,round(n/2)) -> r2
lines(1:length(r2), cumsum(r2)/1:length(r2), col="blue")

mcmc(n,n) -> r3
lines(1:length(r3), cumsum(r3)/1:length(r3), col="red")

legend("topleft", c("k = 2", paste("k =",round(n/2)), paste("k =",n)), col=c("black","blue","red"), lwd=1)

mcmc บรรจบกัน

คุณสามารถดูได้ที่นี่ว่าสำหรับ (เป็นสีดำ) การบรรจบกันนั้นช้า สำหรับk = 50 (เป็นสีน้ำเงิน) จะเร็วกว่า แต่ก็ยังช้ากว่าเมื่อใช้k = 99 (เป็นสีแดง)k=2k=50k=99

นอกจากนี้คุณยังสามารถพล็อตฮิสโตแกรมสำหรับการกระจายของค่าเฉลี่ยโดยประมาณหลังจากจำนวนการทำซ้ำคงที่เช่น 100 การทำซ้ำ:

K <- 5000;
M1 <- numeric(K)
M2 <- numeric(K)
M3 <- numeric(K)
for(i in 1:K)
{
  M1[i] <- mean(mcmc(n,2,100));
  M2[i] <- mean(mcmc(n,round(n/2),100));
  M3[i] <- mean(mcmc(n,n,100));
}

dev.new()
par(mfrow=c(3,1))
hist(M1, xlim=c(0,n), freq=FALSE)
hist(M2, xlim=c(0,n), freq=FALSE)
hist(M3, xlim=c(0,n), freq=FALSE)

histograms

คุณจะเห็นว่าด้วย (M1) อิทธิพลของค่าเริ่มต้นหลังจากการวนซ้ำ 100 ครั้งจะให้ผลลัพธ์ที่แย่มากเท่านั้น ด้วยk = 50ดูเหมือนว่าตกลงกับส่วนเบี่ยงเบนมาตรฐานยังคงสูงกว่ากับk = 99 นี่คือวิธีการและ sd:k=2k=50k=99

> mean(M1)
[1] 19.046
> mean(M2)
[1] 49.51611
> mean(M3)
[1] 50.09301
> sd(M2)
[1] 5.013053
> sd(M3)
[1] 2.829185

4
ฉันไม่คิดว่าคำว่า "ยิ่งผสมกันเร็วเท่าไหร่การสลายการพึ่งพาอาศัยกันก็จะยิ่งทวีคูณเร็วขึ้น" ถูกต้อง การวนซ้ำแบบต่อเนื่องจะขึ้นอยู่กับการใช้อัลกอริทึม Metropolis-Hastings การผสมเกี่ยวข้องกับตัวอย่างของคุณที่มาบรรจบกับการกระจายเป้าหมายอย่างรวดเร็ว
แมโคร

นี่คือสิ่งเดียวกัน: ถ้ามันมาบรรจบกันอย่างรวดเร็วเพื่อการกระจายเป้าหมายการพึ่งพาจากสถานะเริ่มต้นจะสลายตัวเร็ว ... แน่นอนว่าสิ่งนี้จะเหมือนกันทุกจุดของโซ่ (ซึ่งอาจถูกเลือกให้เป็นสถานะเริ่มต้น) ฉันคิดว่าส่วนสุดท้ายของตัวอย่างข้างต้นกำลังให้ความกระจ่างในเรื่องนี้
Elvis

1
ใช่การพึ่งพาจากการสลายตัวเริ่มต้นของรัฐไม่จำเป็นต้องพึ่งพาการวนซ้ำอย่างต่อเนื่อง
แมโคร

ฉันเขียนว่า "ซ้ำต่อเนื่อง" ไม่ใช่ "ระหว่าง" ฉันหมายถึง "ตาม" ... นี่มันคลุมเครือฉันจะแก้ไข
Elvis

2
ฉันคิดว่าฉันเข้าใจว่าการผสมอย่างรวดเร็วหมายถึงอะไร ไม่ใช่ว่าโซ่ย้ายไปทุกส่วนของการสนับสนุนการกระจายเป้าหมาย แต่มันเกี่ยวกับสายโซ่ที่ไม่ได้ติดอยู่ในการสนับสนุนบางส่วน
qkhhly

10

(Xn)α

α(n)=supA,B{|P(X0A,XnB)P(X0A)P(XnB)},nN,
(Xn)π

Xn

เกี่ยวกับความคิดเห็นเฉพาะของคุณว่า

... ผู้สมัครที่ได้รับการยอมรับควรและจะเน้นในส่วนที่มีความหนาแน่นสูงของการกระจายหลัง หากสิ่งที่ฉันเข้าใจเป็นจริงเราจะยังต้องการให้ลูกโซ่เคลื่อนที่ผ่านการสนับสนุน (ซึ่งรวมถึงส่วนที่มีความหนาแน่นต่ำ) ด้วยหรือไม่

(Xn)


1
+1 ขอบคุณมากสำหรับความคิดเห็นเกี่ยวกับการจำลองแบบตรงกันข้ามนี่คือสิ่งที่ยอดเยี่ยม
Elvis

@ ซีอาน (+1): นี่เป็นคำจำกัดความแรกที่ชัดเจนของการผสม( -) ที่ฉันพบสองคำถาม (1) มีการผสมประเภทอื่นที่อยู่ข้างαααα0

ρβ

3

ข้อสันนิษฐานที่กระตุ้นความต้องการห่วงโซ่การผสมที่รวดเร็วคือคุณสนใจเวลาในการคำนวณและคุณต้องการตัวอย่างตัวแทนจากผู้หลัง อดีตจะขึ้นอยู่กับความซับซ้อนของปัญหา: หากคุณมีปัญหาเล็ก ๆ / เรียบง่ายอาจไม่สำคัญว่าอัลกอริทึมของคุณจะมีประสิทธิภาพหรือไม่ สิ่งหลังมีความสำคัญมากหากคุณสนใจความไม่แน่นอนด้านหลังหรือรู้ว่าค่าเฉลี่ยหลังมีความแม่นยำสูง อย่างไรก็ตามหากคุณไม่สนใจที่จะมีตัวอย่างตัวแทนของคนหลังเพราะคุณเพียงแค่ใช้ MCMC ในการเพิ่มประสิทธิภาพโดยประมาณสิ่งนี้อาจไม่สำคัญสำหรับคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.