Sự khác biệt giữa các thuật toán tiến-lùi và Viterbi là gì?


44

Tôi muốn biết sự khác biệt giữa thuật toán tiến lùithuật toán Viterbi để suy luận trong các mô hình Markov ẩn (HMM) là gì.


2
Các mô tả của đại số ( ở đâyở đây ) sẽ trả lời câu hỏi của bạn hoặc bạn đang tìm kiếm một cái gì đó khác? Bạn đang tự hỏi khi sử dụng thuật toán nào? Tìm kiếm một cuộc thảo luận về giá trị tương ứng của họ?
MånsT

Câu trả lời:


65

Một chút nền tảng đầu tiên có lẽ nó sẽ xóa mọi thứ lên một chút.

Khi nói về HMM (Mô hình Markov ẩn) thường có 3 vấn đề cần xem xét:

  1. Vấn đề đánh giá

    • Bài toán đánh giá trả lời câu hỏi: xác suất mà một chuỗi ký hiệu cụ thể được tạo ra bởi một mô hình cụ thể là gì?
    • Để đánh giá, chúng tôi sử dụng hai thuật toán: thuật toán chuyển tiếp hoặc thuật toán ngược (KHÔNG nhầm lẫn chúng với thuật toán tiến lùi).
  2. Vấn đề giải mã

    • Giải mã vấn đề trả lời câu hỏi: Đưa ra một chuỗi các ký hiệu (quan sát của bạn) và một mô hình, chuỗi trạng thái có khả năng nhất tạo ra chuỗi đó là gì.
    • Để giải mã chúng tôi sử dụng thuật toán Viterbi .
  3. Vấn đề đào tạo

    • Vấn đề đào tạo trả lời câu hỏi: Đưa ra cấu trúc mô hình và một tập hợp các chuỗi, tìm mô hình phù hợp nhất với dữ liệu.
    • Đối với vấn đề này, chúng ta có thể sử dụng 3 thuật toán sau:
      1. MLE (ước tính khả năng tối đa)
      2. Đào tạo Viterbi (KHÔNG nhầm lẫn với giải mã Viterbi)
      3. Baum Welch = thuật toán tiến lùi

Để tổng hợp, bạn sử dụng thuật toán Viterbi cho bài toán giải mã và Baum Welch / Forward-backward khi bạn huấn luyện mô hình của mình trên một tập hợp các chuỗi.


Baum Welch hoạt động theo cách sau.

Đối với mỗi trình tự trong tập huấn luyện trình tự.

  1. Tính xác suất chuyển tiếp với thuật toán chuyển tiếp
  2. Tính xác suất lùi với thuật toán lùi
  3. Tính toán các đóng góp của chuỗi hiện tại cho các chuyển đổi của mô hình, tính toán các đóng góp của chuỗi hiện tại vào xác suất phát xạ của mô hình.
  4. Tính toán các tham số mô hình mới (xác suất bắt đầu, xác suất chuyển tiếp, xác suất phát thải)
  5. Tính khả năng đăng nhập mới của mô hình
  6. Dừng khi thay đổi trong khả năng đăng nhập nhỏ hơn một ngưỡng nhất định hoặc khi số lần lặp tối đa được thông qua.

Nếu bạn cần một mô tả đầy đủ về các phương trình giải mã Viterbi và thuật toán đào tạo cho tôi biết và tôi có thể chỉ cho bạn đi đúng hướng.


24

Chuyển tiếp - Quay lại đưa ra xác suất cận biên cho từng trạng thái riêng lẻ , Viterbi đưa ra xác suất của chuỗi trạng thái có khả năng nhất . Chẳng hạn, nếu nhiệm vụ HMM của bạn là dự đoán thời tiết nắng và mưa cho mỗi ngày, Forward Backward sẽ cho bạn biết xác suất trời "nắng" mỗi ngày, Viterbi sẽ đưa ra chuỗi ngày nắng / mưa rất có thể xác suất của chuỗi này.


15

Tôi thấy hai slide sau từ {2} thực sự tốt để đặt các thuật toán Viterbi tiến và lùi trong số tất cả các thuật toán điển hình khác được sử dụng với HMM:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Ghi chú:

  • xπ
  • đường dẫn = một chuỗi phát thải
  • giải mã = ​​suy luận
  • học tập = đào tạo = ước lượng tham số
  • Một số bài báo (ví dụ: {1}) cho rằng BaumTHER Welch giống như thuật toán lùi về phía trước, nhưng tôi đồng ý với Masterfool và Wikipedia: Baum tựa Welch là thuật toán tối đa hóa kỳ vọng sử dụng thuật toán lùi tiến. Hai hình minh họa cũng phân biệt Baum Thẻ Welch với thuật toán lùi về phía trước.

Người giới thiệu:


12

Câu trả lời của Morat là sai ở một điểm: Baum-Welch là thuật toán Tối đa hóa Kỳ vọng, được sử dụng để huấn luyện các tham số của HMM. Nó sử dụng thuật toán tiến lùi trong mỗi lần lặp. Thuật toán tiến lùi thực sự chỉ là sự kết hợp giữa thuật toán tiến và lùi: một vượt qua, một vượt qua. Về bản thân, thuật toán tiến lùi không được sử dụng để huấn luyện các tham số của HMM, mà chỉ để làm mịn: tính toán khả năng cận biên của một chuỗi các trạng thái.

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

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


2

@Yar Tư Bulatov đã có một câu trả lời chính xác. Tôi sẽ thêm một ví dụ về nó để cho biết sự khác biệt giữa thuật toán Viterbi tiến và lùi.

Giả sử chúng ta có HMM này (từ trang HMM Wikipedia). Lưu ý, mô hình đã được đưa ra, vì vậy không có học hỏi từ nhiệm vụ dữ liệu ở đây.

nhập mô tả hình ảnh ở đây


Giả sử dữ liệu của chúng tôi là một chuỗi dài 4. (Walk, Shop, Walk, Clean). Hai thuật toán sẽ cho những thứ khác nhau.

  • 1

nhập mô tả hình ảnh ở đây

  • 24=16SunnyRainy

nhập mô tả hình ảnh ở đây


Đây là một số Rmã cho bản demo

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))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.