You are on page 1of 25

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA QUỐC TẾ VÀ ĐÀO TẠO SAU ĐẠI HỌC


---------o0o---------

TIỂU LUẬN CÔNG CỤ TOÁN


CHO CÔNG NGHỆ THÔNG TIN

ĐỀ TÀI
HIDDEN MARKOV MODELS FUNDAMENTALS

Giảng viên: TS. Vũ Văn Thỏa


Nhóm thực hiện: Trần Xuân Hòa (C)
Nguyễn Xuân Giang
Nguyễn Tấn Hải
Nguyễn Văn Hoàng
Phạm Thành Hoan

HÀ NỘI - 09/2019
MỤC LỤC

PHẦN I: DỊCH BÀI BÁO SANG TIẾNG VIỆT ........................................................ 3


1 Mô hình Markov ....................................................................................................... 3
1.1 Hai vấn đề của mô hình Markov ........................................................................ 4
1.1.1 Xác suất của một chuỗi trạng thái ............................................................... 4
1.1.2 Thiết lập tham số khả năng tối đa ............................................................... 5
2 Mô hình Markov ẩn .................................................................................................. 7
2.1 Ba vấn đề của một mô hình Markov ẩn ............................................................. 7
2.2 Xác suất của một chuỗi quan sát: Thủ tục tiến .................................................. 8
2.3 Thiết lập trạng thái khả năng tối đa: Thuật toán Viterbi .................................... 9
2.4 Tham số học: EM cho HMMs.......................................................................... 10
2.5 Đọc thêm .......................................................................................................... 14
PHẦN II: PHÂN TÍCH VÀ ĐÁNH GIÁ ................................................................... 15
1 Các bài toán cơ bản trong HMM ............................................................................ 15
1.1 Bài toán 1 – Probability Evaluation ................................................................. 15
1.2 Bài toán 2 – “Optimal” State Sequence ........................................................... 18
1.3 Bài toán 3 – Parameter Estimation ................................................................... 20
2 Ví dụ cụ thể sử dụng thuật toán Viterbi .................................................................. 21
2.1 Xây dựng cấu trúc dữ liệu cho INPUT và OUTPUT ....................................... 24
2.2 Ưu - Nhược điểm của thuật toán Viterbi ......................................................... 24
2.3 Các lớp bài toán tương tự ................................................................................. 25
PHẦN I: DỊCH BÀI BÁO SANG TIẾNG VIỆT

NHỮNG NGUYÊN TẮC CƠ BẢN VỀ MÔ HÌNH MARKOV ẨN


Daniel Ramage
CS229 Section Notes

Ngày 01 tháng 12 năm 2007

LỜI GIỚI THIỆU

Làm thế nào chúng ta có thể áp dụng phương pháp học máy (machine learning) cho các
dữ liệu dạng chuỗi của các quan sát thay đổi theo thời gian? Ví dụ, chúng ta có thể quan tâm
việc khám phá chuỗi các từ mà một người nào đó nói dựa trên bản ghi âm phần nói chuyện
của họ. Hoặc chúng ta có thể muốn gán nhãn từ loại của bài nói chuyện. Ghi chú này cung
cấp phần giới thiệu toán học toàn diện cho mô hình Markov - một phương thức lập luận về
trạng thái theo thời gian, và mô hình Markov ẩn - áp dụng khi chúng ta muốn trích xuất một
chuỗi trạng thái từ một chuỗi các quan sát. Phần cuối cùng bao gồm một số nguồn tham khảo
thể hiện về mô hình này theo các góc độ khác.

1 Mô hình Markov
Cho tập trạng thái S = {s1, s2,… , s|S|} chúng ta có thể quan sát một chuỗi thời gian 𝒵⃗ 
ST. Ví dụ, chúng ta có các trạng thái thời tiết S = {sun,cloud, rain} với |S| = 3 và quan sát thời
tiết trong một vài ngày {z1 = ssun; z2 = scloud; z3 = scloud; z4 = srain; z5 = scloud} với T = 5.
Các trạng thái thời tiết được quan sát trong ví dụ đại diện cho kết quả đầu ra của quá
trình ngẫu nhiên theo thời gian. Nếu không có thêm giả định nào, trạng thái sj tại thời điểm t
có thể là một khả năng của bất kỳ biến nào, bao gồm tất cả các trạng thái từ thời điểm 1 đến
t-1 và có thể là nhiều biến khác mà chúng ta thậm chí không mô hình chúng. Tuy nhiên, ta sẽ
thực hiện hai giả định Markov nhằm giúp chúng ta dễ dàng xử lý chuỗi thời gian.
The LIMITED HORIZON ASSUMPTION - Giả định phạm vi hạn chế là giả sử rằng
xác suất của một trạng thái tại thời điểm t chỉ phụ thuộc vào trạng thái tại thời điểm t-1. Về
mặt trực quan, giả định này chỉ ra rằng trạng thái tại thời điểm t biểu thị tóm tắt tương đối đầy
đủ trạng thái trước đó để dự đoán khả năng sẽ có thể xảy ra trong tương lai. Công thức:
P (zt|zt-1, zt-2,…, z1) = P(zt|zt-1)
The STATIONARY PROCESS ASSUMPTION - Giả định tiến trình tĩnh, giả thiết rằng
phân phối có điều kiện của trạng thái theo sau trạng thái hiện tại không thay đổi theo thời
gian. Công thức:
P (zt|zt-1) = P (z2|z1); t ∈ 2…T

3
Quy ước trạng thái ban đầu chính là quan sát đầu tiên z0 s0, với s0 thể hiện phân phối
xác suất ban đầu của trạng thái tại thời điểm 0. Kí hiệu thuận tiện này cho phép chúng ta mã
hóa một cách chính xác về tiền xác suất của quan sát trạng thái thực đầu tiên z1 là P(z1|z0).
Lưu ý P(zt|zt-1,…, z1) = P(zt|zt-1,…, z1; z0) vì ta đã định nghĩa z0 = s0 cho chuỗi trạng thái bất kỳ
nào. (Một số thể hiện khác của mô hình Markov ẩn - HMMs đôi khi biểu diễn tiền xác suất
này bằng một véc tơ ℝ|𝑆| )
Ta tham số hóa những chuyển dịch này bằng cách xác định một ma trận chuyển trạng
thái A∈ℝ(|S| + 1)x(|S| + 1). Giá trị Aij là xác suất chuyển từ trạng thái I đến trạng thái j tại thời điểm
t bất kỳ. Với ví dụ về thời tiết ở trên, chúng ta có ma trận chuyển đổi sau:

Lưu ý rằng những con số mà tác giả đã thiết lập này biểu thị trực quan rằng các thời tiết
có khả năng tự tương quan: nghĩa là nếu trời nắng nó sẽ có xu hướng tiếp tục nắng, nhiều mây
sẽ tiếp tục nhiều mây,... Mô hình này phổ biến trong nhiều mô hình Markov và có thể được
quan sát như là đường chéo chính trong ma trận chuyển đổi. Chú ý trong ví dụ này, xác suất
chuyển đổi từ trạng thái khởi tạo s0 đến mỗi trạng thái còn lại là không thay đổi.

1.1 Hai vấn đề của mô hình Markov


Kết hợp các giả định Markov với các tham số của ma trận chuyển trạng thái A, ta có thể
trả lời hai vấn đề cơ bản về một chuỗi các trạng thái trong chuỗi Markov. Thứ nhất, xác suất
của một chuỗi trạng thái cụ thể 𝒵⃗ là gì? Và, làm thế nào chúng ta ước lượng các tham số của
ma trận A để có thể tối đa hóa khả năng của một chuỗi quan sát 𝒵⃗ ?

1.1.1 Xác suất của một chuỗi trạng thái


Chúng ta có thể tính toán xác suất một chuỗi trạng thái cụ thể 𝒵⃗ bằng cách sử dụng quy
tắc dây chuyền (chain rule) của xác suất:
P(𝑧⃗) = P(zt, zt-1,…,z1; A)
= P(zt, zt-1,…, z1, z0; A)
= P(zt|zt-1, zt-2,…, z1; A)P(zt-1|zt-2,…,z1; A)…P(z1|z0; A)
= P(zt|zt-1; A)P(zt-1|zt-2; A)…P(z2|z1; A)P(z1|z0; A)
= ∏𝑇𝑡=1 𝑃(zt|zt-1; A)
= ∏𝑇𝑡=1 𝐴zt-1 zt

4
Ở dòng thứ hai ta đặt z0 làm xác suất đầu mối ban đầu, vì ta đã định nghĩa z0 ở trên. Dòng
thứ ba đúng với bất kỳ phân phối nối tiếp nào bởi quy tắc dây chuyền xác suất hoặc áp dụng
lặp đi lặp lại các quy tắc Bayes. Dòng thứ tư dựa trên giả định Markov và dòng cuối cùng thể
hiện các quy tắc như một yếu tố trong ma trận chuyển đổi A.
Hãy tính xác suất của chuỗi thời gian trong ví dụ trước đó. Chúng ta tính P(z1 = ssun, z2
= scloud, z3 = srain, z4 = srain, z5 = scloud) như sau: P(ssun|s0) P(scloud|ssun) P(srain|scloud) P(srain|srain)
P(scloud|srain) = .33 *.1 *.2* .7* .2.

1.1.2 Thiết lập tham số khả năng tối đa


Từ một khía cạnh nghiên cứu, chúng ta có thể đi tìm cách để tìm ra các tham số của A
để tối đa hóa khả năng xảy ra của chuỗi các quan sát 𝒵⃗ . Điều này tương ứng với tìm kiếm các
khả năng chuyển từ sunny sang cloudy so với từ sunny sang sunny,… để tạo ra một tập các
quan sát có khả năng nhất. Hãy xác định log-likelihood của một mô hình Markov.

Ở dòng cuối cùng, ta sử dụng một hàm chỉ thị có giá trị 1 khi điều kiện thỏa mãn và
ngược lại có giá trị 0 để chọn ra chuyển dịch được quan sát tại mỗi bước thời gian. Khi giải
quyết vấn đề tối ưu hóa này, điều quan trọng là phải đảm bảo rằng các thông số A được tìm
ra vẫn tạo ra một ma trận chuyển đổi hợp lệ. Đặc biệt, cần phải tuân thủ rằng phân bố xác suất
của các trạng thái i luôn luôn có tổng bằng 1 và tất cả các phần tử của A là không âm. Ta có
thể giải quyết vấn đề tối ưu hóa này bằng phương pháp nhân tử Lagrange.
max 𝑙(𝐴)
𝐴

|𝑆|

𝑠. 𝑡. ∑ 𝐴𝑖𝑗 = 1, 𝑖 = 1. . |𝑆|
𝑗=1

𝐴𝑖𝑗 ≥ 0, 𝑖, 𝑗 = 1. . |𝑆|

Vấn đề tối ưu hóa ràng buộc này có thể được giải quyết dạng khép kín bằng phương
pháp nhân tử Lagrange. Ta sẽ đưa các ràng buộc bình đẳng vào phương pháp Lagrange, nhưng
ràng buộc bất bình đẳng có thể được bỏ qua, dù sao thì giải pháp tối ưu này sẽ vận dụng những
giá trị dương cho Aij. Từ đó chúng ta xây dựng công thức Lagrange như sau:

5
Lấy đạo hàm từng phần và đặt chúng bằng không, ta có:

Thế trở lại và thiết lập αi bằng 0:

Thay thế giá trị này của αi vào biểu thức chúng ta đã khởi tạo cho Aij ta thu được giá trị
tham số khả năng cực đại cuối cùng cho Âij.

Công thức này mã hóa một trực quan đơn giản: xác suất khả năng tối đa của sự chuyển
đổi từ trạng thái i đến trạng thái j bằng số lần chuyển từ i sang j chia cho tổng số lần ở trạng
thái i. Nói cách khác, tham số khả năng tối đa tương ứng với tỷ số của thời gian ở trong trạng
thái i và chuyển sang trạng thái j.

6
2 Mô hình Markov ẩn
Mô hình Markov là một khái niệm trừu tượng hữu ích đối với các dữ liệu chuỗi thời
gian, nhưng không nắm bắt một tình huống rất phổ biến. Làm thế nào chúng ta có thể suy
luận về một loạt các trạng thái nếu chúng ta không thể quan sát các trạng thái đó, thay vì chỉ
có một hàm xác suất trạng thái. Đây là tình huống gán nhãn từ loại khi các từ được quan sát
nhưng không biết từ loại, và nhận dạng giọng nói khi chuỗi âm thanh được quan sát nhưng
không phải là các từ tạo ra nó. Ví dụ đơn giản, chúng ta hãy mượn đề xuất được thiết lập bởi
Jason Eisner vào năm 2002 [1], “Ice Cream Climatory”.
Tình huống: Bạn là một nhà khí tượng trong năm 2799, nghiên cứu lịch sử của sự nóng
lên toàn cầu. Bạn có thể không tìm ra bất cứ hồ sơ nào về thời tiết ở Baltimore, nhưng bạn
tìm được nhật ký của Jason Eisner, trong đó ghi lại chi tiết tôi đã ăn bao nhiêu kem mỗi ngày.
Dựa vào đây bạn có thể chỉ ra điều gì về thời tiết mùa hè?
Mô hình Markov ẩn có thể được sử dụng để giải quyết tình huống này. Chúng ta không
quan sát chuỗi trạng thái thực tế (thời tiết mỗi ngày). Thay vào đó, chúng ta chỉ có thể quan
sát một số kết quả được tạo ra bởi mỗi trạng thái (bao nhiêu kem đã ăn ngày hôm đó).
Về hình thức, một mô hình Markov là một mô hình Markov mà chúng ta có một chuỗi
các kết quả đầu ra được quan sát 𝓍 ={𝓍1, 𝓍2, …, 𝓍T}rút ra từ tập đầu ra V = {v1, v2,…, v|V|},
nghĩa là 𝓍t V, t = 1..T. Trong phần trước, ta cũng thừa nhận sự tồn tại của các chuỗi trạng
thái z = {z1, z2,…, zT} rút ra từ tập trạng thái S = {s1, s2,…, s|S|}, zt S, t = 1..T nhưng trong
trường hợp này giá trị của các trạng thái không quan sát được. Sự chuyển dịch giữa các trạng
thái i và j một lần nữa sẽ được thể hiện bởi các giá trị tương ứng trong ma trận chuyển dịch
trạng thái Aij.
Chúng ta cũng mô hình hóa xác suất tạo ra một quan sát đầu ra như một hàm của trạng
thái ẩn. Để làm như vậy, chúng ta thực hiện giả định độc lập đầu ra - OUTPUT
INDEPENDENCE ASSUMPTION và định nghĩa P(xt = vk|zt = sj)= P(xt = vk|x1,…, xT, z1,…,
zT) = Bjk. Ma trận B mã hóa xác suất tạo ra trạng thái ẩn đầu ra vk được cho bởi trạng thái sj
tại thời điểm tương ứng.
Quay trở lại ví dụ về thời tiết, giả sử rằng bạn có một bản ghi chép về sự tiêu thụ kem
trong giai đoạn bốn ngày: khi chỉ mã hóa số
lượng kem tiêu thụ, nghĩa là:
V={v1 = 1 ice cream, v2 = 2 ice creams, v3 = 3 ice creams}. Chúng ta phải giải quyết những
vấn đề nào trong một HMM?

2.1 Ba vấn đề của một mô hình Markov ẩn


Có ba vấn đề cơ bản của một HMM. Đó là: Xác suất của một chuỗi quan sát là gì (làm
thế nào để chúng ta có khả năng biết được là 3, 2, 1, 2 cây kem đã được tiêu thụ)? Chuỗi các
trạng thái có khả năng nhất tạo ra các quan sát là gì (thời tiết trong bốn ngày như thế nào)?

7
Và làm thế nào chúng ta có thể biết được cách giá trị các tham số A và B của một HMM đưa
ra một vài dữ liệu?

2.2 Xác suất của một chuỗi quan sát: Thủ tục tiến
Trong một HMM, chúng ta giả định rằng dữ liệu của chúng ta được tạo ra bởi quá trình
như sau: thừa nhận sự tồn tại của một chuỗi trạng thái 𝒵⃗ dựa theo độ dài của chuỗi thời gian.
Chuỗi trạng thái này được tạo ra bởi một mô hình Markov đã được tham số hóa bằng một ma
trận chuyển đổi trạng thái A. Tại mỗi bước thời gian t, chúng ta chọn một đầu ra xt là một hàm
trạng thái Zt. Vì vậy, để có được xác suất của một chuỗi các quan sát, chúng ta cần phải bổ
sung thêm các khả năng của dữ liệu 𝓍⃗ cho mỗi chuỗi các trạng thái có thể.

Các công thức trên đúng cho bất kỳ phân phối xác suất nào. Tuy nhiên, các giả định
HMM cho phép chúng ta giản lược các biểu thức như sau:

Tin tốt là, đây là một biểu thức đơn giản về các tham số. Biến đổi biểu thức theo các giả
định HMM: giả định độc lập đầu ra, giả định Markov, và giả định quá trình tĩnh đều được sử
dụng để có được dòng thứ hai. Tin xấu là tổng số vượt quá mỗi chỉ định có thể cho 𝒵⃗ . Bởi vì
zt có thể lấy một trong những giá trị có thể của |S| tại từng bước thời gian, việc đánh giá trực
tiếp tổng số này sẽ yêu cầu các phép tính O(|S|T).
Thuật toán 1: Thủ tục tiến để tính αi(t)
1. Khởi tạo: αi(0) = A0i, i = 1..|S|
2. Đệ quy:
May thay, một phương tiện nhanh hơn của máy tính P (𝑥⃗; A, B) là có thể thông qua một
thuật toán lập trình động được gọi là thủ tục tiến. Đầu tiên, chúng ta hãy định nghĩa một lượng
αi (t) = P(x1, x2,…, xt,zt = si; A, B). αi(t) biểu thị cho xác suất tổng của tất cả các quan sát theo
thời gian t (bằng bất kỳ chỉ định trạng thái nào) và rằng chúng ta đang ở trong trạng thái si tại
thời điểm t. Nếu chúng ta đã có một lượng như vậy, xác suất của loạt các quan sát đầy đủ P
(𝑥⃗) có thể được biểu diễn như sau:

8
Thuật toán 2.2 biểu diễn một cách tính toán αi(t) hiệu quả. Tại mỗi bước thời gian chúng
ta chỉ cần tính O(|S|), kết quả độ phức tạp thuật toán cuối cùng O(|S|.T) là tính xác suất tổng
của một chuỗi trạng thái được quan sát P (𝑥⃗; A, B).
Một thuật toán tương tự được gọi là thủ tục quay lui (BACKWARD PROCEDURE) có
thể được sử dụng để tính toán xác suất tương tự βi (t) = P (xT, xT-1,…, xt + 1,zt = si; A, B).

2.3 Thiết lập trạng thái khả năng tối đa: Thuật toán Viterbi
Một trong những vấn đề phổ biến nhất của một mô hình Markov ẩn là những gì mà
chuỗi các trạng thái có khả năng nhất 𝒵⃗  ST đưa ra một chuỗi các kết quả đầu rađược quan
sát 𝑥⃗ VT. Ta có:

Sự đơn giản hóa đầu tiên theo qui tắc Bayes và lần thứ hai dựa trên sự quan sát rằng
mẫu số không phụ thuộc vào 𝒵⃗ . Một cách đơn giản, chúng ta có thể thử chỉ định mỗi khả
năng có thể cho 𝒵⃗ và gán với một xác suất cao nhất trong mô hình của chúng ta. Tuy nhiên,
điều này sẽ yêu cầu tính O(|S|T) để liệt kê một loạt các chỉ định có thể. Tại điểm này, bạn có
thể cho rằng giải pháp lập trình động giống như thủ tục tiến có thể lưu giữ ngày.

Chú ý rằng nếu bạn thay thế bởi thì nhiệm vụ hiện tại của chúng ta
giống với biểu thức đã được đưa ra ở thủ tục tiến.

Thuật toán 2: Ứng dụng Naive của EM cho HMMs


Lặp lại cho đến khi hội tụ {
(Bước E) Đối với mỗi gán nhãn có thể 𝒵⃗  ST , đặt Q(𝒵⃗ ) := p(𝒵⃗ |𝑥⃗; A,B)
(Bước M) đặt:

9
Thuật toán Viterbi cũng giống như thủ tục tiến ngoại trừ việc thay vì theo dõi xác suất
tổng tạo ra các quan sát cho đến bây giờ, chúng ta chỉ cần theo dõi xác suất cực đại và ghi
nhận chuỗi trạng thái tương ứng của nó.

2.4 Tham số học: EM cho HMMs


Vấn đề cuối cùng của một HMM là: đưa ra một tập hợp các quan sát, giá trị của xác suất
chuyển đổi trạng thái A và xác suất phát sinh đầu ra B làm cho dữ liệu có khả năng nhất là
gì? Ví dụ, giải quyết các tham số khả năng tối đa dựa trên một tập dữ liệu nhận dạng giọng
nói sẽ cho phép chúng ta huấn luyện HMM một cách hiệu quả trước khi yêu cầu chỉ định các
trạng thái khả năng tối đa của một tín hiệu phát biểu được đề cử.
Trong phần này, chúng tôi trình bày cách áp dụng thuật toán tối đa kỳ vọng đối với các
mô hình Markov ẩn. Bằng chứng này dựa theo công thức chung của EM đã được trình bày
trong CS229. Thuật toán 2.4 đưa ra thuật toán EM cơ bản. Chú ý rằng vấn đề tối ưu hóa ở
bước M bị hạn chế để A và B duy trì các xác suất hợp lệ. Giống giải pháp khả năng tối ưu
chúng ta tìm ra trong mô hình Markov (không ẩn), chúng ta cũng có thể giải quyết vấn đề tối
ưu hóa này với phương pháp nhân tử Lagrange. Chú ý rằng cả bước E và bước M đều yêu cầu
liệt kê tất cả các |S|Tcó thể gán cho 𝒵⃗ . Chúng ta sẽ sử dụng các thuật toán tiến và lui đã đề cập
trước đó để tính toán một tập hợp các số liệu thống kê đầy đủ cho bước E và bước M một
cách dễ dàng.
Đầu tiên, hãy viết lại hàm mục tiêu sử dụng các giả định Markov.

Ở dòng đầu tiên ta chia log thành một phép trừ và lưu ý rằng số hạng của mẫu số không
phụ thuộc vào các tham số của A và B. Các giả định Markov được áp dụng ở dòng thứ 3.
Dòng 5 sử dụng các hàm chỉ thị để đánh dấu cho A và B bằng trạng thái.
Cũng như đối với các tham số khả năng tối ưu trong mô hình Markov không ẩn, sẽ
không có vấn đề gì nếu ta bỏ qua các ràng buộc bất bình đẳng bởi vì dạng giải này tự đưa ra
kết quả với các số dương. Xây dựng công thức Lagrange:

10
Lấy đạo hàm từng phần và đặt biểu thức bằng không:

Lấy đạo hàm từng phần giữ nguyên các nhân tử Lagrange và thay thế các giá trị của Aij
và Bjk ở trên:

Thế trở lại vào biểu thức ở trên, ta sẽ tìm ra các tham số 𝐴̂ và 𝐵̂ mà tối đa hóa số lượng
dự đoán của chúng ta đối với các bộ dữ liệu là:

11
Thật không may, mỗi một tổng số này vượt quá mọi nhãn có thể 𝒵⃗  ST. Nhưng nhớ lại
rằng Q(𝒵⃗ ) đã được xác định ở bước E là P(𝒵⃗ |𝓍⃗; A,B) cho các tham số của A và B tại bước
thời gian cuối. Hãy xem xét làm thế nào để biểu diễn tử số đầu tiên của Âij dưới dạng xác
xuất tiến và lùi, αi (t) và βj(t).

Trong hai bước đầu tiên ta đảo vị trí các số hạng và thay thế giá trị đã định nghĩa của Q.
Sau đó, ta sử dụng quy tắc Bayes và có được trong dòng thứ tư, và ở dòng 5 ta sử dụng các
định nghĩa của α, β, A, và B. Tương tự như vậy, mẫu số có thể được biểu diễn bằng cách tính
tổng tất cả giá trị của tử số thông qua j.

12
Kết hợp các biểu thức này, chúng ta có thể mô tả đầy đủ các chuyển đổi trạng thái khả
năng tối đa Âij mà không cần phải liệt kê tất cả tử số có thể là:

Tương tự như vậy, chúng ta có thể biểu diễn cho tử số cho jk như sau:

Thuật toán 3: thuật toán Forward-Backward về nghiên cứu tham số HMM


Khởi tạo: Đặt A và B là các ma trận xác suất hợp lệ ngẫu nhiên
với Ai0 = 0 và B0k = 0 vài = 1..|S|; k = 1 ..|V|.
Lặp lại cho đến khi hội tụ {
(Bước E) Chạy thuật toán tiến và lùi để tính toán αi và βi, với i = 1..|S|.
Sau đó đặt:

(M-Step) ước tính lại các thông số khả năng tối đa:

Và triển khai jk:

13
Kết hợp các biểu thức lại, ta thu được biểu thức cho các xác suất phát sinh khả năng tối
đa như sau:

Thuật toán 2.4 cho thấy một biến thể của thuật toán Forward-Backward, hay thuật toán
Baum-Welch cho tham số học trong HMMs. Trong bước E, thay vì đánh giá một cách minh
bạch Q(𝒵⃗ ) cho tất cả các 𝒵⃗  ST, ta tính toán các thống kê đầy đủ 𝛾 t(i,j) = 𝛼i(t)AijBjxt𝛽 j(t+1)
để cân đối xác suất chuyển đổi giữa trạng thái si và sj tại thời điểm t cho tất cả các quan sát 𝓍⃗.
Các biểu thức gốc của Aij và Bjk tương đối là trực quan. Aij được tính bằng số chuyển đổi kỳ
vọng từ si đến sj chia cho số lượng kỳ vọng xuất hiện của si. Tương tự như vậy, Bjk được tính
bằng số phát sinh kỳ vọng của vk từ sj bị chia bởi số lượng xuất hiện kỳ vọng của sj.
Giống như nhiều ứng dụng của EM, tham số học trong HMMs là một vấn đề non-convex
với nhiều local maxima. EM sẽ hội tụ để đạt cực đại dựa trên tham số ban đầu của nó, vì vậy
số hạng có thể được xếp theo thứ tự. Ngoài ra, nó còn có vai trò quan trọng trong việc làm
mịn các phân phối xác suất được biểu diễn bởi A và B để cho không có một chuyển đổi hoặc
phát sinh nào có xác xuất bằng 0.

2.5 Đọc thêm


Có rất nhiều nguồn tài liệu tốt cho việc nghiên cứu về các mô hình Markov ẩn. Đối với
các ứng dụng trong xử lý ngôn ngữ tự nhiên, tôi đề xuất dự thảo ấn bản thứ hai Speech and
Language Processing1 của Jurafsky và Martin hoặc Foundations of Statistical Natural
Language Processing của Manning và Schütze. Ngoài ra, HMM-in-a-spreadsheet [1] của
Eisner là một cách tương tác khá dễ dàng để áp dụng một HMM chỉ cần đến ứng dụng bảng
tính.
Tài liệu tham khảo
[1] Jason Eisner. An interactive spreadsheet for teaching the forward-backward
algorithm. In Dragomir Radev and Chris Brew, editors, Proceedings of the ACL Workshop
on Effective Tools and Methodologies for Teaching NLP and CL, pages 10-18, 2002.

14
PHẦN II: PHÂN TÍCH VÀ ĐÁNH GIÁ
Nhiều bài toán thực tế được biểu diễn dưới mối quan hệ nhân - quả, nhưng chỉ quan sát
được phần “quả” còn phần “nhân” thì lại là ẩn số. HMM là một mô hình cho phép các thuật
toán giải quyết được các bài toán xác lập mối quan hệ nhân quả cục bộ nói trên.
Mô hình Markov ẩn (Hidden Markov Model - HMM) là mô hình thống kê mà trong đó
hệ thống đã được mô hình hóa được cho là một quá trình Markov với các tham số không biết
trước.
Nhiệm vụ là ta phải đi xác định các tham số ẩn dựa trên các tham số quan sát được. Theo
đó, các tham số của mô hình được rút ra sau này có thể được sử dụng để thực hiện các phân
tích kế tiếp.
Để có thể áp dụng được mô hình HMM vào các ứng dụng phức tạp trong thực tế, trước
hết cần có lời giải thỏa đáng cho 3 bài toán cơ bản của HMM:

1 Các bài toán cơ bản trong HMM


 Bài toán 1: cho trước chuỗi tín hiệu quan sát O = {O1, O2, …, OT} và mô hình
HMM đại diện bởi bộ tham số 𝜆 = (𝐴, 𝐵, 𝜋) Làm sao để tính toán một cách hiệu
quả 𝑝(𝑂|𝜆) – xác suất phát sinh O từ mô hình 𝜆.
 Bài toán 2: cho trước chuỗi tín hiệu quan sát O = {O1, O2, …, OT} và mô hình
HMM đại diện bởi bộ tham số 𝜆 = (𝐴, 𝐵, 𝜋). Cần tìm ra chuỗi trạng thái tối ưu
nhất Q = {q1, q2, …, qT} đã phát sinh ra O.
 Bài toán 3: cho trước chuỗi tín hiệu quan sát O = {O1, O2, …, OT}. Làm thế
nào để xác định các tham số mô hình 𝜆 = (𝐴, 𝐵, 𝜋) sao cho cực đại hóa xác suất
𝑝(𝑂|𝜆)? Đây chính là bài toán học / huấn luyện mô hình. Bài toán này đem lại
một khả năng rất quan trọng của HMM: khả năng mô hình hóa một đối tượng
cụ thể trong thực tế, mô hình hóa dữ liệu học.

1.1 Bài toán 1 – Probability Evaluation


Mục tiêu của bài toán thứ nhất là tính 𝑝(𝑂|𝜆) – xác suất phát sinh O từ mô hình 𝜆. Một
giải pháp đơn giản cho vấn đề này là trực tiếp duyệt qua tất cả các chuỗi trạng thái Q làm phát
sinh ra O. Khi đó, xác suất 𝑝(𝑂|𝜆) sẽ là tổng các xác suất phát sinh O từ tất cả các chuỗi Q
khác nhau:

𝑃(𝑂|𝜆) = ∑ 𝑃(𝑄 |𝑄, 𝜆). 𝑃(𝑄 |𝜆)


𝑎𝑙𝑙 𝑄

= ∑ 𝜋𝑞1 𝑏𝑞1 (𝑂1 )𝑎𝑞1𝑞2 𝑏𝑞2 (𝑂2 ) . … . 𝑎𝑞𝑇−1𝑞𝑇 𝑏𝑞𝑇 (𝑂𝑇 )


𝑞1 ,𝑞2 ,…,𝑞𝑡

Để xác định 𝑝(𝑂|𝜆) theo cách trực tiếp như trên, ta cần thực hiện 2T(N)T phép tính.
Điều này là không khả thi ngay cả với các giá trị nhỏ của N (số trạng thái của mô hình) và T
(chiều dài của chuỗi tín hiệu quan sát); chẳng hạn với N = 5 và T = 100, tổng số phép tính cần

15
phải thực hiện là 2.100. 5100 ≈ 1072 . Rõ ràng chi phí tính toán là quá lớn, ta không thể tính
𝑝(𝑂|𝜆) theo cách như trên.
Một giải pháp khả thi hơn để tính 𝑝(𝑂|𝜆) là là thông qua thủ tục forward -
backward. Trước tiên, ta định nghĩa biến forward 𝛼𝑡 (𝑖) là xác suất trạng thái Si tại thời
điểm t và đã quan sát được đoạn O = {O1, O2, …, OT} từ mô hình 𝜆 cho trước:
𝛼𝑡 (𝑖) = 𝑝(𝑂1 𝑂2 … 𝑂𝑡 , 𝑞𝑡 = 𝑆𝑖 |𝜆)

16
Các biến 𝛼𝑡 (𝑖) có thể được tính theo quy nạp từng bước sau:
 Bước 1 – Khởi tạo: đặt t = 1
𝛼1 (𝑖) = 𝜋𝑖 𝑏𝑖 (𝑂1 ), 1 ≤ 𝑖 ≤ 𝑁
 Bước 2 – Quy nạp:
𝑁

𝛼𝑡+1 (𝑗) = 𝑏𝑗 (𝑂𝑡+1 ) ∑ 𝛼𝑡 (𝑖)𝑎𝑖𝑗 , 1 ≤ 𝑗 ≤ 𝑁


𝑖=1
 Bước 3 – Cập nhật thời gian t:
Gán t = t + 1
Quay lại bước 2 nếu t < T, nếu không thì tiến tới bước 4
 Bước 4 – Kết thúc:
𝑁

𝑃(𝑂|𝜆) = ∑ 𝛼 𝑇 (𝑖)
𝑖=1

Diễn tả thủ tục forward:

Về độ phức tạp tính toán, để tính được tất cả các biến forward 𝛼𝑡 (𝑖), ta cần thực hiện
N T phép tính, nhỏ hơn rất nhiều so với 2T(N)T của phương pháp tính trực tiếp.
2

Tương tự như trong thủ tục forward, thủ tục backward trước hết định nghĩa biến
backward 𝛽𝑡 (𝑖) là xác suất quan sát được đoạn O = {Ot+1, Ot+2, …, OT}. Cho trước trạng thái
Si và mô hình 𝜆:
𝛽𝑡 (𝑖) = 𝑝(𝑂𝑡+1 𝑂𝑡+2 … 𝑂𝑇 , 𝑞𝑡 = 𝑆𝑖 |𝜆)
Các biến backward cũng được tính quy nạp theo các bước sau:
 Bước 1 – Khởi tạo: đặt t = T - 1
𝛽𝑡 (𝑖) = 1, 1 ≤ 𝑖 ≤ 𝑁
 Bước 2 – Quy nạp:
𝑁

𝛽𝑡 (𝑖) = ∑ 𝛽𝑡+1 (𝑖)𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 ) , 1 ≤ 𝑗 ≤ 𝑁


𝑗=1

17
 Bước 3 – Cập nhật thời gian t:
Gán t = t - 1
Quay lại bước 2 nếu t > 0, nếu không thì tiến tới bước 4
 Bước 4 – Kết thúc:
𝑁

𝑃(𝑂|𝜆) = ∑ 𝛽𝑇 (𝑖)
𝑖=1
Diễn tã thuật toán backward:

Cũng giống như các biến forward, việc tính tất cả các biến backward cần thực hiện
N T phép tính. Như vậy, thủ tục forward-backward là khả thi với chi phí tính toán hoàn toàn
2

có thể chấp nhận được.


Đối với việc tìm lời giải cho bài toán 1, ta chỉ cần đến phần forward trong thủ tục
forward-backward. Tuy nhiên, phần backward giúp tìm lời giải cho bài toán 2 và 3.

1.2 Bài toán 2 – “Optimal” State Sequence


Mục tiêu của bài toán 2 là tìm ra chuỗi trạng thái “tối ưu” nhất Q = { q1, q2, …, qT } đã
phát sinh ra O. Một điều đáng lưu ý là có rất nhiều các tiêu chí “tối ưu” khác nhau cho việc
xác định Q, nên lời giải cho bài toán này phụ thuộc vào tiêu chí ‘tối ưu” được chọn.
Một trong những tiêu chí đó là chọn ra từng qt có độ khả thi cao nhất ở từng thời điểm t
thông qua độ đo xác suất 𝑝(𝑞𝑡 = 𝑆𝑖 |𝑂, 𝜆) – xác suất ở trạng thái Si vào thời điểm t cho trước
chuỗi tín hiệu quan sát O và mô hình 𝜆. Ta gọi độ đo này là 𝛾𝑡 (𝑖):
𝛾𝑡 (𝑖) = 𝑝(𝑞𝑡 = 𝑆𝑖 |𝑂, 𝜆)
Biến 𝛾𝑡 (𝑖) có thể được tính thông qua các biến 𝛼𝑡 (𝑖) và 𝛽𝑡 (𝑖) theo biểu thức:
𝛼𝑡 (𝑖) 𝛽𝑡 (𝑖) 𝛼𝑡 (𝑖) 𝛽𝑡 (𝑖)
𝛾𝑡 (𝑖) = = 𝑁
𝑃(𝑂|𝜆) ∑𝑖=1 𝛼𝑡 (𝑖) 𝛽𝑡 (𝑖)
Thông qua biến 𝛾𝑡 (𝑖), ta hoàn toàn có thể xác định được trạng thái có khả năng cao
nhất được đạt đến ở thời điểm t:
𝑞𝑡 = 𝑎𝑟𝑔 max [𝛾𝑡 (𝑖)], 1 ≤ 𝑡 ≤ 𝑇
1≤𝑖≤𝑁

Xâu kết các qt lại, ta sẽ có chuỗi trạng thái lời giải Q của bài toán như ví dụ sau:
18
Tuy nhiên, kết quả này chỉ mang tính cục bộ, nghĩa là đôi khi chuỗi Q tìm được không
tồn tại trong thực tế nếu một số xác suất chuyển trạng thái bằng 0. Giả sử trong chuỗi kết quả
Q tìm được có q5 = S1 và q6 = S2, nhưng trên thực tế xác suất chuyển trạng thái a12 = 0, như
vậy lời giải là mâu thuẫn.
Để tránh tình trạng mâu thuẫn như trên, ta có thể thay đổi tiêu chí “tối ưu” cho việc
chọn Q. Tùy theo từng ứng dụng cụ thể mà tiêu chí này sẽ được chọn sao cho phù hợp, tuy
nhiên tiêu chí phổ biến nhất được sử dụng là chọn cả chuỗi Q khả thi nhất, nghĩa là qui bài
toán từ việc tìm Q để cực đại hóa 𝑝(𝑄|𝑂, 𝜆) sang việc tìm Q để cực đại hóa 𝑝(𝑄|𝑂, 𝜆). Giải
pháp cho vấn đề này là thuật toán viterbi
Thuật toán viterbi định nghĩa biến 𝛿𝑡 (𝑖) là xác suất cao nhất của đoạn chuỗi trạng thái
dẫn đến Si ở thời điểm t và đã quan sát được đoạn O1, O2, …, Ot cho trước mô hình 𝜆:
𝛿𝑡 (𝑖) = max 𝑝(𝑞1 , 𝑞2 , … , 𝑞𝑡 = 𝑆𝑖 , 𝑂1 𝑂2 … 𝑂𝑡 |𝜆)
𝑞1 ,𝑞2 ,…,𝑞𝑡
Biến 𝛿𝑡 (𝑖) được tính theo quy nạp với các bước sau đây (thuật toán viterbi):
 Bước 1 – Khởi tạo:
𝛿𝑡 (𝑖) = 𝜋𝑖 𝑏𝑖 (𝑂1 ), 1 ≤ 𝑖 ≤ 𝑁
𝜓1 (𝑖) = 0
𝜓1 (𝑖) là mảng để lưu lại các tham số i làm cực đại hóa biểu thức
 Bước 2 – Lặp quy nạp:
𝛿𝑡 (𝑗) = max [𝛿𝑡−1 (𝑖)𝑎𝑖𝑗 ]𝑏𝑗 (𝑂𝑡 ), 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁
1≤𝑖≤𝑁
𝜓𝑡 (𝑗) = max [𝛿𝑡−1 (𝑖)𝑎𝑖𝑗 ], 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁
1≤𝑖≤𝑁

 Bước 3 – Kết thúc lặp:


𝑝∗ = max [𝛿𝑇 (𝑖)]
1≤𝑖≤𝑁
𝑞𝑡∗ = 𝑎𝑟𝑔 max [𝛿𝑇 (𝑖)]
1≤𝑖≤𝑁
 Bước 4 – Quay lui (backtracking):
∗ )
𝑞𝑡∗ = 𝜓𝑡+1 (𝑞𝑡+1 , 𝑡 = 𝑇 − 1, 𝑇 − 2, … , 1
Kết thúc thuật toán, chuỗi 𝑄 = 𝑞1∗ 𝑞2∗ … 𝑞𝑇∗ chính là lời giải đáp của bài toán 2.

19
1.3 Bài toán 3 – Parameter Estimation
Mục tiêu của bài toán thứ 3, cũng là bài toán phức tạp nhất trong ba bài toán, là tìm cách
cập nhật lại các tham số của mô hình 𝜆 = (𝐴, 𝐵, 𝜋) sao cho cực đại hóa xác suất (𝑂|𝜆) – xác
suất quan sát được chuỗi tín hiệu O từ mô hình.
Với một chuỗi tín hiệu quan sát hữu hạn bất kỳ O làm dữ liệu huấn luyện, chưa có một
phương pháp tối ưu nào cho việc ước lượng các tham số 𝜆 = (𝐴, 𝐵, 𝜋) của mô hình theo
hướng cực đại toàn cục. Tuy nhiên, bộ tham số 𝜆 có thể được chọn sao cho xác suất 𝑝(𝑂|𝜆)
đạt cực đại cục bộ bằng thuật toán Baum-Welch hoặc sử dụng phương pháp giảm dốc
Gradient. Phần này trình bày thuật toán Baum-Welch giải quyết bài toán 3.
Trước tiên, ta định nghĩa 𝜉𝑡 (𝑖, 𝑗) là xác suất ở trạng thái Si tại thời điểm t và rơi vào
trạng thái Sj ở thời điểm t+1 cho trước mô hình 𝜆 và chuỗi tín hiệu quan sát O:
𝜉𝑡 (𝑖, 𝑗) = 𝑝(𝑞𝑡 = 𝑆𝑖 , 𝑞𝑡+1 = 𝑆𝑗 |𝑄, 𝜆 )
Theo định nghĩa này, 𝜉𝑡 (𝑖, 𝑗) có thể được tính thông qua các biến 𝛼𝑡 (𝑖) và 𝛽𝑡 (𝑖) theo
biểu thức:
𝛼𝑡 (𝑖)𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 )𝛽𝑡+1 (𝑗) 𝛼𝑡 (𝑖)𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 )𝛽𝑡+1 (𝑗)
𝜉𝑡 (𝑖, 𝑗) = = 𝑁
𝑝(𝑂|𝜆) ∑𝑖=1 ∑𝑁
𝑗=1 𝛼𝑡 (𝑖) 𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 )𝛽𝑡+1 (𝑗)

Nếu ta lấy tổng 𝛾𝑡 (𝑖) theo 𝑡 ∈ [1, 𝑇 − 1], kết quả nhận được là số lần kỳ vọng chuyển
trạng thái từ Si. Tương tự, lấy tổng 𝜉𝑡 (𝑖, 𝑗) theo 𝑡 ∈ [1, 𝑇 − 1], ta sẽ có số lần kỳ vọng chuyển
từ trạng thái Si sang Sj:
𝑇−1

∑ 𝛾𝑡 (𝑖) = 𝑠ố 𝑙ầ𝑛 𝑘ỳ 𝑣ọ𝑛𝑔 𝑐ℎ𝑢𝑦ể𝑛 𝑡𝑟ạ𝑛𝑔 𝑡ℎá𝑖 𝑡ừ 𝑆𝑖


𝑡=1
𝑇−1

∑ 𝜉𝑡 (𝑖, 𝑗) = 𝑠ố 𝑙ầ𝑛 𝑘ỳ 𝑣ọ𝑛𝑔 𝑐ℎ𝑢𝑦ể𝑛 𝑡𝑟ạ𝑛𝑔 𝑡ℎá𝑖 𝑡ừ 𝑆𝑖 𝑠𝑎𝑛𝑔 𝑆𝑗


𝑡=1

Với các đại lượng này, ta có các biểu thức cập nhật tham số của HMM như sau:
𝜋̅𝑖 = 𝑠ố 𝑙ầ𝑛 𝑘ỳ 𝑣ọ𝑛𝑔 ở 𝑡𝑟ạ𝑛𝑔 𝑡ℎá𝑖 𝑆𝑖 𝑣à𝑜 𝑡ℎờ𝑖 đ𝑖ể𝑚 (𝑡 = 1) = 𝛾1 (𝑖) (∗)
𝑒𝑥𝑛𝑢𝑚(𝑆𝑖 , 𝑆𝑗 ) ∑𝑇−1
𝑡=1 𝜉𝑡 (𝑖, 𝑗)
𝑎̅𝑖𝑗 = = (∗∗)
𝑒𝑥𝑛𝑢𝑚(𝑆𝑖 ) ∑𝑇−1
𝑡=1 𝛾𝑡 (𝑖)
∑𝑇 𝑡=1 𝛾𝑡 (𝑗)
𝑒𝑥𝑛𝑢𝑚_𝑖𝑛(𝑆𝑗 , 𝑣𝑘 ) 𝑠.𝑡.𝑂𝑡 = 𝑣𝑘
𝑏̅𝑗 (𝑘) = = (∗∗∗)
𝑒𝑥𝑛𝑢𝑚_𝑖𝑛(𝑆𝑗 ) ∑𝑇𝑡=1 𝛾𝑡 (𝑗)
 exnum(Si,Sj): số lần kỳ vọng chuyển từ trạng thái Si sang trạng thái Sj
 exnum(Si): số lần kỳ vọng chuyển trạng thái từ Si
 exnum_in(Sj,vk): số lần kỳ vọng ở trạng thái Sj và quan sát được tín hiệu vk
 exnum_in(Sj): số lần kỳ vọng ở trạng thái Sj

Từ mô hình ban đầu 𝜆 = (𝐴, 𝐵, 𝜋) và chuỗi tín hiệu quan sát O, ta tính được vế phải của
các biểu thức (*)(**)(***),kết quả nhận được chính là các tham số mới của mô hình 𝜆̅ =

20
(𝐴̅, 𝐵̅, 𝜋̅). Theo Baum đã chứng minh, ta luôn có 𝑝(𝑂|𝜆̅) > 𝑝(𝑂|𝜆) trừ phi mô hình 𝜆 đã đạt
đến điểm tối ưu cục bộ (khi đó 𝜆̅ = 𝜆).
Như vậy, thuật toán Baum-Welch sẽ được áp dụng qua nhiều bước lặp để ước lượng và
cập nhật các tham số mô hình cho đến khi hội tụ. Tuy nhiên, kết quả cuối cùng chỉ đạt được
tối ưu cục bộ mà thôi. Thông thường, nếu các tham số được khởi tạo với các giá trị thích hợp,
thì có một phần khả năng nào đó có thể giúp mô hình đạt được tối ưu toàn cục khi huấn luyện.

2 Ví dụ cụ thể sử dụng thuật toán Viterbi


Một vấn đề của HMMs là xác định được chuỗi trạng thái mà có khả năng đưa ra được
chuỗi quan sát cho trước nhiều nhất. Và trong bài báo này, tác giả đã lựa chọn sử dụng thuật
toán Viterbi như là một trong những giải pháp cho vấn đề này.
Thuật toán Viterbi là một dạng khác của thuật toán biểu đồ mắt cáo, tương tự như thủ
tục tiến Forward, ngoại trừ việc chọn các giá trị xác suất chuyển đổi lớn nhất tại mỗi bước,
thay vì tính tổng của chúng.
Sau đây ta xét một ví dụ về dự báo thời tiết để hiểu rõ hơn về thuật toán Viterbi:

Tình huống: Có 3 loại thời tiết: nắng , mưa , và sương mù . Và ta giả thiết
rằng 1 loại thời tiết sẽ xảy ra diễn ra trong cả ngày, không thay đổi vào một khoảng thời gian
trong ngày.
Bây giờ giả thiết rằng bạn bị nhốt trong một căn phòng trong nhiều ngày, và bạn được
hỏi về thời tiết ở bên ngoài. Và chỉ có một vài bằng chứng bạn có là việc một người bạn đem
bữa ăn đến cho bạn là có mang một cây dù hay không . Bạn không biết thời tiết
như thế nào khi bạn bị khóa. Vào ba ngày đầu tiên bạn quan sát thấy người bạn như sau:

.
Tìm xác suất lớn nhất của chuỗi thời tiết sử dụng thuật toán Viterbi (giả thiết rằng xác
suất ưu tiên là như nhau vào ngày 1).

21
Bước 1. Tính giá trị ban đầu (Initialisation):

Hình 1: Thuật toán Viterbi để tìm chuỗi thời tiết có thể xảy ra nhất.
Ta tìm thấy đường dẫn đến trạng thái trời nắng ở thời điểm n= 2
Bước 2. Đệ quy (Recursion):
Chúng ta tính khả năng tới trạng thái từ tất cả 3 trạng thái trước, và chọn khả năng
có thể xảy ra nhất với:

22
Tức là trong hình vẽ tìm đường dẫn mà dẫn đến likelihood lớn nhất xét về likelihood tốt
nhất ở thời điểm trước và bước chuyển tiếp từ nó. Rồi nhân với likelihood hiện tại được cho
bởi trạng thái hiện tại. Và kết quả là sẽ tìm thấy đường dẫn tốt nhất.
Likelihood là được tính trong δ, và trạng thái trước đó có thể nhất là trong ψ (xem hình
1).

Thực hiện tương tự với trạng thái trời và :

Với n=3:

Cuối cùng, chúng ta sẽ thu được đường dẫn kết thúc có thể xảy ra nhất ở mỗi trạng thái
của mô hình (hình 2):

Thuật toán Viterbi để tìm chuỗi thời tiết có khả năng xảy ra nhất tại n= 3
23
Thuật toán Virtebi tìm ra chuỗi thời tiết có thể xảy ra nhất
Bước 3. Termination:
Con đường có thể xảy ra nhất đã được xác định, bắt đầu bằng cách tìm ra trạng thái cuối
cùng của chuỗi có thể xảy ra nhất.

Bước 4. Backtracking:
Chuỗi trạng thái tốt nhất có thể đọc từ vector ψ. Xem hình 7

Theo cách đó thì chuỗi thời tiết có thể xảy ra nhất là:

2.1 Xây dựng cấu trúc dữ liệu cho INPUT và OUTPUT


- INPUT: Chuỗi quan sát: 𝑞1 , 𝑞2 … 𝑞𝑛 .
- OUTPUT: Chuỗi kết quả có thể xảy ra: 𝑄 ∗ = {𝑞1∗ , 𝑞2∗ … 𝑞𝑛∗ }

2.2 Ưu - Nhược điểm của thuật toán Viterbi


 Ưu điểm:
o Độ chính xác cao.
o Tốc độ thực hiện cao.
 Nhược điểm:
o Yêu cầu nhiều dung lượng của bộ nhớ thiết bị.

24
2.3 Các lớp bài toán tương tự
- Bài toán gán nhãn từ loại (part-of-speech tagging - POS) trong xử lý ngôn ngữ tự
nhiên (Natural Language Processing).
- Bài toán mã hóa dữ liệu trong hệ thống truyền dẫn số
- Bài toán nhận dạng tiếng nói
- Bài toán nhận diện khuôn mặt

25

You might also like