Tôi muốn biết sự khác biệt giữa thuật toán tiến lùi và thuật toán Viterbi để suy luận trong các mô hình Markov ẩn (HMM) là gì.
Tôi muốn biết sự khác biệt giữa thuật toán tiến lùi và thuật toán Viterbi để suy luận trong các mô hình Markov ẩn (HMM) là gì.
Câu trả lời:
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:
Vấn đề đánh giá
Vấn đề giải mã
Vấn đề đào tạo
Để 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ự.
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.
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.
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:
Ghi chú:
Người giới thiệu:
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
@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.
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.
Sunny
Rainy
Đây là một số R
mã 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))