ความแตกต่างระหว่างอัลกอริทึมไปข้างหน้าถอยหลังและ Viterbi คืออะไร


44

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


2
คำอธิบายของ algortihms ( ที่นี่และที่นี่ ) จะตอบคำถามของคุณหรือคุณกำลังมองหาอย่างอื่นหรือไม่? คุณสงสัยว่าจะใช้อัลกอริทึมแบบใดเมื่อไร? กำลังมองหาการอภิปรายเกี่ยวกับข้อดีของพวกเขา?
MånsT

คำตอบ:


65

พื้นหลังนิดหน่อยก่อนอาจจะล้างสิ่งต่าง ๆ เล็กน้อย

เมื่อพูดถึง HMMs (โมเดลที่ซ่อนมาร์คอฟ) มี 3 ปัญหาที่ต้องพิจารณา:

  1. ปัญหาการประเมินผล

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

    • ปัญหาการถอดรหัสตอบคำถาม: ด้วยลำดับของสัญลักษณ์ (การสังเกตของคุณ) และแบบจำลองลำดับของสถานะที่เป็นไปได้มากที่สุดที่สร้างลำดับนั้นคืออะไร
    • สำหรับการถอดรหัสเราใช้อัลกอริทึม Viterbi
  3. ปัญหาการฝึกอบรม

    • ปัญหาการฝึกอบรมตอบคำถาม: จากโครงสร้างของโมเดลและชุดของลำดับให้ค้นหาโมเดลที่เหมาะกับข้อมูลมากที่สุด
    • สำหรับปัญหานี้เราสามารถใช้อัลกอริทึม 3 ข้อต่อไปนี้:
      1. MLE (การประมาณโอกาสสูงสุด)
      2. การฝึกอบรม Viterbi (อย่าสับสนกับการถอดรหัส Viterbi)
      3. Baum Welch = อัลกอริทึมไปข้างหน้าถอยหลัง

เพื่อสรุปผลคุณใช้อัลกอริทึม Viterbi สำหรับปัญหาการถอดรหัสและ Baum Welch / Forward-backward เมื่อคุณฝึกฝนโมเดลของคุณในชุดลำดับ


Baum Welchทำงานในวิธีต่อไปนี้

สำหรับแต่ละลำดับในชุดการฝึกของลำดับ

  1. คำนวณความน่าจะเป็นไปข้างหน้าด้วยอัลกอริทึมการส่งต่อ
  2. คำนวณความน่าจะเป็นแบบย้อนหลังด้วยอัลกอริทึมแบบย้อนกลับ
  3. คำนวณการมีส่วนร่วมของลำดับปัจจุบันเป็นการเปลี่ยนรูปแบบการคำนวณการมีส่วนร่วมของลำดับปัจจุบันไปยังความน่าจะเป็นการปล่อยก๊าซของโมเดล
  4. คำนวณพารามิเตอร์โมเดลใหม่ (เริ่มต้นความน่าจะเป็นความน่าจะเป็นในการเปลี่ยนแปลงความน่าจะเป็นของการปล่อยออกมา)
  5. คำนวณโอกาสในการบันทึกใหม่ของโมเดล
  6. หยุดเมื่อโอกาสในการเปลี่ยนแปลงของบันทึกมีขนาดเล็กกว่าขีด จำกัด ที่กำหนดหรือเมื่อมีการทำซ้ำจำนวนสูงสุด

หากคุณต้องการคำอธิบายที่สมบูรณ์ของสมการสำหรับการถอดรหัส Viterbi และอัลกอริทึมการฝึกอบรมให้ฉันรู้และฉันสามารถชี้คุณไปในทิศทางที่ถูกต้อง


24

ไปข้างหน้าไปข้างหลังให้ความน่าจะเป็นส่วนเพิ่มสำหรับแต่ละแต่ละรัฐ , Viterbi ให้น่าจะเป็นของที่มีแนวโน้มมากที่สุดลำดับของรัฐ ตัวอย่างเช่นถ้างาน HMM ของคุณคือการทำนายแดดและสภาพอากาศที่ฝนตกในแต่ละวัน Forward Backward จะบอกคุณว่าความน่าจะเป็นที่ "แดด" ในแต่ละวัน Viterbi จะให้ลำดับวันที่มีแดดจัด / ฝนตกมากที่สุดและ ความน่าจะเป็นของลำดับนี้


15

ฉันพบว่าสไลด์ต่อไปนี้ทั้งสองจาก {2} นั้นดีมากที่จะสร้างอัลกอริทึมไปข้างหน้าถอยหลังและ Viterbi ท่ามกลางอัลกอริทึมทั่วไปอื่น ๆ ที่ใช้กับ HMM:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ:

  • πxคือการแผ่รังสีที่สังเกต,คือพารามิเตอร์ของ HMMπ
  • path = ลำดับของการปลดปล่อย
  • การถอดรหัส = การอนุมาน
  • การเรียนรู้ = การฝึกอบรม = การประมาณค่าพารามิเตอร์
  • บางเอกสาร (เช่น {1}) อ้างว่า Baum – Welch นั้นเหมือนกับอัลกอริธึมไปข้างหน้าและย้อนกลับ แต่ฉันเห็นด้วยกับ Masterfool และ Wikipedia: Baum – Welch เป็นอัลกอริธึมการคาดหวังสูงสุดที่ใช้อัลกอริทึม forward-backward ภาพประกอบทั้งสองยังแยกแยะ Baum – Welch จากอัลกอริทึมไปข้างหน้าและถอยหลัง

อ้างอิง:


12

คำตอบของ Morat เป็นเท็จในจุดหนึ่ง: Baum-Welch เป็นอัลกอริทึมการคาดหวัง - สูงสุดที่ใช้ในการฝึกอบรมพารามิเตอร์ของ HMM มันใช้อัลกอริทึมไปข้างหน้าถอยหลังในระหว่างการทำซ้ำแต่ละครั้ง อัลกอริธึมไปข้างหน้า - ถอยหลังเป็นการรวมกันของอัลกอริธึมไปข้างหน้าและถอยหลัง: หนึ่งไปข้างหน้าผ่าน, หนึ่งย้อนหลัง ด้วยตัวของมันเองอัลกอริธึมไปข้างหน้าไม่ได้ใช้สำหรับการฝึกอบรมพารามิเตอร์ของ HMM แต่สำหรับการปรับให้เรียบเท่านั้น: คำนวณความเป็นไปได้ที่จะเกิดขอบของลำดับของรัฐ

https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm

https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm


2

@Yaroslav Bulatov มีคำตอบที่แม่นยำ ฉันจะเพิ่มหนึ่งตัวอย่างเพื่อบอกความแตกต่างระหว่างอัลกอริทึมไปข้างหน้าถอยหลังและ Viterbi

สมมติว่าเรามี HMM นี้ (จากหน้า Wikipedia HMM) หมายเหตุโมเดลได้ถูกกำหนดไว้แล้วดังนั้นจึงไม่มีการเรียนรู้จากงานข้อมูลที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


สมมติว่าข้อมูลของเรามีความยาว 4 ลำดับ (Walk, Shop, Walk, Clean). สองอัลกอริทึมจะให้สิ่งต่าง ๆ

  • 1

ป้อนคำอธิบายรูปภาพที่นี่

  • 24=16SunnyRainy

ป้อนคำอธิบายรูปภาพที่นี่


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