Giả sử chuỗi 1 chiều sau:
A, B, C, Z, B, B, #, C, C, C, V, $, W, A, % ...
Chữ cái A, B, C, ..
ở đây đại diện cho các sự kiện 'thông thường'.
Biểu tượng #, $, %, ...
ở đây đại diện cho các sự kiện 'đặc biệt'
Khoảng cách thời gian giữa tất cả các sự kiện là không đồng nhất (bất cứ điều gì từ vài giây đến vài ngày) mặc dù càng xa trong một sự kiện thì càng ít có khả năng ảnh hưởng đến các sự kiện trong tương lai. Lý tưởng nhất là tôi có thể tính đến sự chậm trễ thời gian này một cách rõ ràng.
Có thứ tự 10000 loại sự kiện thông thường và theo thứ tự 100 loại sự kiện đặc biệt. Số lượng các sự kiện thông thường trước một sự kiện đặc biệt khác nhau nhưng không chắc là nhiều hơn 100-300.
Về cơ bản, tôi quan tâm đến việc tìm kiếm các mẫu trong chuỗi sự kiện thông thường mà cuối cùng là dự đoán cho các sự kiện đặc biệt.
Bây giờ bạn có thể tiếp cận điều này theo các cách khác nhau: tạo vectơ đặc trưng + phân loại tiêu chuẩn, học quy tắc kết hợp, HMM, v.v.
Trong trường hợp này, tôi tò mò về cách một mạng dựa trên LSTM sẽ phù hợp nhất. Nói thẳng sẽ là làm một cái gì đó giống như char-rnn của Karparth và dự đoán sự kiện tiếp theo được đưa ra trong lịch sử. Sau đó cho một chuỗi mới
C, Z, Q, V, V, ... , V, W
Bạn có thể chạy nó qua mô hình và xem sự kiện đặc biệt nào có thể xảy ra tiếp theo. Nhưng nó không hoàn toàn cảm thấy phù hợp.
Vì đây là một vấn đề phân loại theo thời gian, có vẻ như điều đúng đắn cần làm là sử dụng Phân loại tạm thời kết nối theo mô tả của Alex Graves .
Tuy nhiên, trước khi đầu tư quá nhiều vào lúc này, tôi đang tìm kiếm thứ gì đó dễ dàng hơn và nhanh hơn để thử nghiệm để có cảm giác về việc các LSTM sẽ phù hợp như thế nào ở đây. Tensorflow sẽ thấy một ví dụ CTC tại một số điểm, nhưng chưa.
Vì vậy, câu hỏi (phụ) của tôi là:
- Với vấn đề ở trên và tôi muốn thử nghiệm với các LSTM, có đáng để thử cách tiếp cận kiểu char-rnn không, tôi có nên cắn viên đạn và nắm bắt với CTC không, hay có nơi nào tốt hơn để bắt đầu.
- Làm thế nào bạn sẽ kết hợp rõ ràng thông tin thời gian giữa các sự kiện. Sử dụng đồng hồ cố định với các sự kiện không hoạt động rõ ràng hoạt động nhưng có vẻ xấu.
- Giả sử tôi quản lý để đào tạo một LSTM, có cách nào để kiểm tra mô hình để xem loại "họa tiết" nào đã được chọn không? (nghĩa là tương tự với các bộ lọc trong convnets)
Bất kỳ mã mẫu (ưu tiên python) luôn hữu ích.
Chỉnh sửa: Chỉ cần thêm rằng có một số nhiễu trong chuỗi. Một số sự kiện có thể được bỏ qua một cách an toàn nhưng chính xác những sự kiện không phải lúc nào cũng có thể nói lên phía trước. Vì vậy, lý tưởng là mô hình (và các họa tiết bắt nguồn từ nó) mạnh mẽ chống lại điều này.