Trước tiên chúng ta hãy xem sự khác biệt giữa HMM và RNN.
Từ bài viết này: Hướng dẫn về các mô hình Markov ẩn và các ứng dụng được chọn trong nhận dạng giọng nói, chúng ta có thể biết rằng HMM nên được đặc trưng bởi ba vấn đề cơ bản sau:
Bài toán 1 (Khả năng): Cho HMM = (A, B) và trình tự quan sát O, xác định khả năng P (O |).
Bài toán 2 (Giải mã): Cho chuỗi quan sát O và HMM λ = (A, B), khám phá chuỗi trạng thái ẩn tốt nhất Q.
Bài 3 (Học): Đưa ra chuỗi quan sát O và tập hợp các trạng thái trong HMM, tìm hiểu các tham số HMM A và B.
Chúng ta có thể so sánh HMM với RNN từ ba quan điểm đó.
Khả năng
Khả năng thích ứng trong
mô hình ngôn ngữ HMM (Ảnh A.5) trong RNN
P( O ) = ΣQP( O , Q ) = ΣQP( O | Q ) P( Q )Q1p ( X)= ∏Tt = 11p ( xt| x( t - 1 ), . . . , x( 1 ))---------------√T
Giải mã
vt( j ) = m a xNi = 1vt - 1( i ) mộttôi jb(ot)P(y1,...,yO|x1,...,xT)=∏Oo=1P(yo|y1,...,yo−1,co)YX
Giải mã trong HMM (Hình A.10)
Giải mã trong RNN
Học tập
Việc học trong HMM phức tạp hơn nhiều so với RNN. Trong HMM, nó thường sử dụng thuật toán Baum-Welch (một trường hợp đặc biệt của thuật toán Tối đa hóa kỳ vọng) trong khi trong RNN, nó thường là độ dốc giảm dần.
Đối với các câu hỏi con của bạn:
Những vấn đề đầu vào tuần tự phù hợp nhất cho từng vấn đề?
Khi bạn không có đủ dữ liệu, hãy sử dụng HMM và khi bạn cần tính xác suất chính xác thì HMM cũng sẽ phù hợp hơn (nhiệm vụ tổng quát mô hình hóa cách tạo ra dữ liệu). Nếu không, bạn có thể sử dụng RNN.
Liệu kích thước đầu vào xác định cái nào phù hợp hơn?
Tôi không nghĩ vậy, nhưng HMM có thể mất nhiều thời gian hơn để tìm hiểu nếu các trạng thái ẩn quá lớn vì độ phức tạp của thuật toán (lùi về phía sau và Viterbi) về cơ bản là bình phương của số lượng trạng thái rời rạc.
Các vấn đề đòi hỏi "bộ nhớ dài hơn" có phù hợp hơn với LSTM RNN không, trong khi các vấn đề với mô hình đầu vào theo chu kỳ (thị trường chứng khoán, thời tiết) dễ dàng được giải quyết hơn bằng HMM?
Trong HMM, trạng thái hiện tại cũng bị ảnh hưởng bởi các trạng thái và quan sát trước đó (bởi trạng thái cha mẹ) và bạn có thể thử Mô hình Markov ẩn thứ hai cho "bộ nhớ dài hơn".
Tôi nghĩ bạn có thể sử dụng RNN để làm gần như
người giới thiệu
- Xử lý ngôn ngữ tự nhiên với Deep Learning CS224N / Ling284
- Mô hình Markov ẩn