Mở đầu
Hidden Markov Model (HMMs)
Mục đích: thường dùng để dự đoán các phần chưa biết của state dựa vào observer hoặc ngược lại (reforcement learning?)
Trước đây, model này thường chỉ dùng cho speech processing
Key unsupervised learning algorithm: the Forward-Backward algorithm
Markov chain: dự đoán tương lai mà chỉ dựa vào các điều kiện đều ở hiện tại, không dựa vào bất cứ gì khác (không xét quá khứ)
Ví dụ:
- Dự đoán mai mưa nắng dựa vào hôm nay
- Dự đoán chữ tiếp theo trong câu dựa vào chữ hiện tại
Vì chỉ quan tâm giá trị gần nhất nên
Hidden: các giá trị không được label rõ ràng-> Hidden Markov Model : nói về cả observed events và hidden events để xây dựng nên yếu tố nhân quả cho model xác suất
Mô hình dựa vào 2 giả thiết:
Từ đó, dẫn đến 3 bài toán liên quan đến HMMs
1. Likelihood Computation: The Forward Algorithm
Giả sử ta biết thời tiết, dự đoán số kem Jason sẽ ăn
Áp dụng Vậy: => Forward algorithm: ( O(N^2*T)) (dynamic programming) dùng table để lưu trữ các giá trị trung gian (thành phần tọa xác suất observation). Thuật toán tính tổng xác suất của mọi trạng thái ẩn mà có thể dẫn đến observation, mỗi cái được biểu diễn là 1 single forward trellis
at(j) là xác suất state j sau khi qua t observation đầu tiên. Mỗi at(j) là tổng xác suất mọi path dẫn tới. qt = j tức là state thứ t là state j. Vì vậy:
Ví dụ tính 3 1 (H) ở state 2, có 2 path từ state 1, ta có 2 path: a1(1) x P(H|C) x P(1|H) và a1(2) x P(H|H) x P(1|H)
2. Decoding: The Viterbi Algorithm
Nhiệm vụ của Decoding là xác định những chuỗi (sequence) giá trí nào là nguyên nhân chính của observation. Ví dụ: có sequence 3 1 3, thì decoder tìm best hidden state sequence (H H H). Theo mặt toán học:
Cách làm là với mỗi hidden state sequence (HHH, HHC, HCH, ...), tính likelihood của nó với sequence observation đang xét rồi tìm max.
Là 1 dynamic programming algorithm theo kiểu đệ quyGần giống Forward algorithm chỉ đổi sum thành max, tuy nhiên có 1 điểm mới mấu chốt làm nên sự khác biệt ở backpointers. Lí do là ta cần quay lại điểm starting bằng best path (Viberbi backtrace)
3. HMM Training: The Forward-Backward Algorithm
Learning: chuỗi observation O và tập hidden state HMM, xác định các parameter trong matrix A và B
Forward-backward (Baun-Welch, special case of Expectation-Maximization (EM): (iterative algorithm) lặp đi lặp lại việc estimate xác suât.
- Tuy nhiên, trong những trường hợp khác (not full visible), ta không biết rõ path nào đã được sử dụng.
-> Mà (Naive Bayes): P(X,Y,Z)/P(Z) = P(X,Y|Z) và P(Y,Z) = P(Y|Z)P(Z)Và
(Nhắc lại)
total expected number of transitions from state i:
Để recomputing xác suất observation: Với tập vk, ta có:
Vậy để re-estimate matrix transtition A và matrix observation B từ sequence O: có estimate trước của A và B (HMM parameters lambda = (A,B) -> forward-backward algorithm gồm 2 step: expectation (E-step) và maximization (M-step)
Mặc dù algorithm này là unsupervised learning, bước initial rất quan trọng thường chỉ setup thủ công, rồi train với 2 matrix A và B
Summary
Tham khảo
- https://web.stanford.edu/~jurafsky/slp3/A.pdf
- https://ai.stanford.edu/~pabbeel/depth_qual/Rabiner_Juang_hmms.pdf
- https://en.wikipedia.org/wiki/Hidden_Markov_model
- https://vi.wikipedia.org/wiki/Qu%C3%A1_tr%C3%ACnh_quy%E1%BA%BFt_%C4%91%E1%BB%8Bnh_Markov
- https://medium.com/@natsunoyuki/hidden-markov-models-with-python-c026f778dfa7
Nhận xét
Đăng nhận xét