ฉันต้องการทราบว่าความแตกต่างระหว่างอัลกอริทึมไปข้างหน้าถอยหลังและอัลกอริทึม Viterbiสำหรับการอนุมานในโมเดล Markov ที่ซ่อนอยู่ (HMM) คืออะไร
ฉันต้องการทราบว่าความแตกต่างระหว่างอัลกอริทึมไปข้างหน้าถอยหลังและอัลกอริทึม Viterbiสำหรับการอนุมานในโมเดล Markov ที่ซ่อนอยู่ (HMM) คืออะไร
คำตอบ:
พื้นหลังนิดหน่อยก่อนอาจจะล้างสิ่งต่าง ๆ เล็กน้อย
เมื่อพูดถึง HMMs (โมเดลที่ซ่อนมาร์คอฟ) มี 3 ปัญหาที่ต้องพิจารณา:
ปัญหาการประเมินผล
ปัญหาการถอดรหัส
ปัญหาการฝึกอบรม
เพื่อสรุปผลคุณใช้อัลกอริทึม Viterbi สำหรับปัญหาการถอดรหัสและ Baum Welch / Forward-backward เมื่อคุณฝึกฝนโมเดลของคุณในชุดลำดับ
Baum Welchทำงานในวิธีต่อไปนี้
สำหรับแต่ละลำดับในชุดการฝึกของลำดับ
หากคุณต้องการคำอธิบายที่สมบูรณ์ของสมการสำหรับการถอดรหัส Viterbi และอัลกอริทึมการฝึกอบรมให้ฉันรู้และฉันสามารถชี้คุณไปในทิศทางที่ถูกต้อง
ไปข้างหน้าไปข้างหลังให้ความน่าจะเป็นส่วนเพิ่มสำหรับแต่ละแต่ละรัฐ , Viterbi ให้น่าจะเป็นของที่มีแนวโน้มมากที่สุดลำดับของรัฐ ตัวอย่างเช่นถ้างาน HMM ของคุณคือการทำนายแดดและสภาพอากาศที่ฝนตกในแต่ละวัน Forward Backward จะบอกคุณว่าความน่าจะเป็นที่ "แดด" ในแต่ละวัน Viterbi จะให้ลำดับวันที่มีแดดจัด / ฝนตกมากที่สุดและ ความน่าจะเป็นของลำดับนี้
ฉันพบว่าสไลด์ต่อไปนี้ทั้งสองจาก {2} นั้นดีมากที่จะสร้างอัลกอริทึมไปข้างหน้าถอยหลังและ Viterbi ท่ามกลางอัลกอริทึมทั่วไปอื่น ๆ ที่ใช้กับ HMM:
หมายเหตุ:
อ้างอิง:
คำตอบของ Morat เป็นเท็จในจุดหนึ่ง: Baum-Welch เป็นอัลกอริทึมการคาดหวัง - สูงสุดที่ใช้ในการฝึกอบรมพารามิเตอร์ของ HMM มันใช้อัลกอริทึมไปข้างหน้าถอยหลังในระหว่างการทำซ้ำแต่ละครั้ง อัลกอริธึมไปข้างหน้า - ถอยหลังเป็นการรวมกันของอัลกอริธึมไปข้างหน้าและถอยหลัง: หนึ่งไปข้างหน้าผ่าน, หนึ่งย้อนหลัง ด้วยตัวของมันเองอัลกอริธึมไปข้างหน้าไม่ได้ใช้สำหรับการฝึกอบรมพารามิเตอร์ของ HMM แต่สำหรับการปรับให้เรียบเท่านั้น: คำนวณความเป็นไปได้ที่จะเกิดขอบของลำดับของรัฐ
https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm
@Yaroslav Bulatov มีคำตอบที่แม่นยำ ฉันจะเพิ่มหนึ่งตัวอย่างเพื่อบอกความแตกต่างระหว่างอัลกอริทึมไปข้างหน้าถอยหลังและ Viterbi
สมมติว่าเรามี HMM นี้ (จากหน้า Wikipedia HMM) หมายเหตุโมเดลได้ถูกกำหนดไว้แล้วดังนั้นจึงไม่มีการเรียนรู้จากงานข้อมูลที่นี่
สมมติว่าข้อมูลของเรามีความยาว 4 ลำดับ (Walk, Shop, Walk, Clean)
. สองอัลกอริทึมจะให้สิ่งต่าง ๆ
Sunny
Rainy
นี่คือR
รหัสสำหรับการสาธิต
library(HMM)
# in education setting,
# hidden state: Rainy and Sunny
# observation: Walk, Shop, Clean
# state transition
P <- as.matrix(rbind(c(0.7,0.3),
c(0.4,0.6)))
# emission prob
R <- as.matrix(rbind(c(0.1, 0.4, 0.5),
c(0.6,0.3, 0.1)))
hmm = initHMM(States=c("Rainy","Sunny"),
Symbols=c("Walk","Shop", "Clean"),
startProbs=c(0.6,0.4),
transProbs=P,
emissionProbs=R)
hmm
obs=c("Walk","Shop","Walk", "Clean")
print(posterior(hmm,obs))
print(viterbi(hmm, obs))