Giải mã HM M Thuật toán Viterbi:

Một phần của tài liệu Nghiên cứu về nhận dạng tiếng nói tiếng việt và ứng dụng thử nghiệm trong điều khiển máy tính luận văn thạc sĩ (Trang 48 - 50)

Thuật toán tiến, trong phần trước, tính toán xác suất mà một HMM tạo ra chuỗi quan sát bằng tổng các xác suất của tất cả đường dẫn có thể, cho nên nó không cung cấp đường dẫn tốt nhất (hoặc dãy trạng thái). Ở nhiều ứng dụng, người ta mong tìm được đường dẫn như vậy. Tìm đường dẫn tốt nhất (dãy trạng thái) là

nền móng cho quá trình tìm kiếm trong nhận dạng tiếng nói liên tục. Khi dãy trạng thái được ẩn (không được quan sát) trong nền tảng HMM, hầu hết sử dụng rộng rãi nhất tiêu chuẩn là để tìm dãy trạng thái có xác suất cao nhất được lấy trong khi tạo ra dãy quan sát. Nói cách khác, chúng ta đang tìm kiếm dãy trạng thái S = (s1,

s2, …, sT) mà cực đại P(S, X|Φ). Vấn đề này rất giống với vấn đề tối ưu đường dẫn trong lập trình động. Hệ quả là, một kỹ thuật chính thức dựa trên lập trình động, gọi là thuật toán Viterbi, có thể được dùng để tìm dãy trạng thái tốt nhất cho HMM. Thực tế, phương pháp tương tự được dùng để đánh giá HMM mang lại cho giải pháp xấp xỉ gần với trường hợp đạt được việc sử dụng thuật toán tiến mô tả ở trên.

Thuật toán Viterbi có thể được xem như thuật toán lập trình động áp dụng cho HMM hay là thuật toán tiến sửa đổi. Thay vì tổng kết xác suất từ các con đường khác đến trạng thái đích, thuật toán Viterbi lấy và nhớ đường dẫn tốt nhất. Để định nghĩa xác suất đường dẫn tốt nhất:

𝑉𝑡(𝑖) = 𝑃(𝑋1𝑡, 𝑆1𝑡−1, 𝑠𝑡 = 𝑖|Φ) (3.4)

𝑉𝑡(𝑖) là xác suất có khả năng nhất của dãy trạng thái ở thời điểm t, mà đã tạo ra quan sát 𝑋1𝑡 (cho đến thời điểm t) và kết thúc ở trạng thái i. Một thủ tục qui nạp tương tự cho thuật toán Viterbi có thể được mô tả như sau:

Thuật toán Viterbi:

Bước 1: Khởi tạo

𝑉1(𝑖) = 𝜋𝑖𝑏𝑖(𝑋1) 1 ≤ i ≤ N Bước 2: Qui nạp 𝑉𝑡(𝑗) = 𝑀𝑎𝑥1 ≤ 𝑖 ≤ 𝑁[𝑉𝑡−1(𝑖)𝑎𝑖𝑗]𝑏𝑗(𝑋𝑡) 2 ≤ t ≤ T; 1 ≤ j ≤ N 𝐵𝑡(𝑗) = 𝐴𝑟𝑔 𝑚𝑎𝑥1 ≤ 𝑖 ≤ 𝑁[𝑉𝑡−1(𝑖)𝑎𝑖𝑗] 2 ≤ t ≤ T; 1 ≤ j ≤ N Bước 3: Kết thúc Chỉ số tốt nhất = Max1≤i≤N[𝑉𝑡(𝑖)] 𝑆𝑇∗ = 𝐴𝑟𝑔 𝑚𝑎𝑥1≤𝑖≤𝑁[𝐵𝑇(𝑖)] Bước 4: Quay lui

𝑆𝑇∗ = 𝐵𝑡+1(𝑆𝑡+1∗ ) t = T - 1, T - 2,…, 1

S* = (𝑠1∗, 𝑠2∗, … , 𝑠𝑇∗) là dãy tốt nhất

Hình 3.4. Quá trình tính toán lưới Viterbi cho HMM của Dow Jones Industrial

Một phần của tài liệu Nghiên cứu về nhận dạng tiếng nói tiếng việt và ứng dụng thử nghiệm trong điều khiển máy tính luận văn thạc sĩ (Trang 48 - 50)