Aşağıdaki 1 boyutlu diziyi varsayalım:
A, B, C, Z, B, B, #, C, C, C, V, $, W, A, % ...
A, B, C, ..
Buradaki mektuplar 'sıradan' olayları temsil eder.
#, $, %, ...
Buradaki semboller 'özel' olayları temsil eder
Tüm olaylar arasındaki zamansal aralık eşit değildir (saniyeler, günler arası) geçmişte bir olay ne kadar ileri giderse gelecekteki olayları etkileme olasılığı o kadar az olur. İdeal olarak, bu zaman gecikmelerini açıkça dikkate alabilirim.
10000 adet sıradan olay türü ve 100 adet özel olay türü vardır. Özel bir olaydan önceki olağan olayların miktarı değişir, ancak 100-300'den fazla olması muhtemel değildir.
Temelde sıradan olay dizisinde özel olaylar için öngörücü olan kalıplar aramakla ilgileniyorum.
Şimdi buna farklı şekillerde yaklaşabilirsiniz: özellik vektörleri + standart sınıflandırma, ilişkilendirme kuralı öğrenme, HMM'ler vb.
Bu durumda, LSTM tabanlı bir ağın nasıl en iyi olacağını merak ediyorum. Açıkçası, Karparthy'nin char-rnn gibi bir şey yapmak ve bir tarih verilen bir sonraki olayı tahmin etmek olacaktır. Sonra yeni bir dizi için
C, Z, Q, V, V, ... , V, W
Bunu modelden geçirebilir ve bir sonraki etkinliğin hangi özel etkinliğin mümkün olduğunu görebilirsiniz. Ancak doğru uyumu pek hissetmiyor.
Bu geçici bir sınıflandırma problemi olduğundan, Alex Graves tarafından tarif edildiği gibi Bağlantıcı Geçici Sınıflandırma kullanmaktır .
Ancak, şu anda çok fazla yatırım yapmadan önce, LSTM'lerin buraya ne kadar iyi uyduğunu anlamak için denemek için daha kolay ve daha hızlı bir şey arıyorum. Tensorflow bir noktada bir CTC örneği görecek , ancak henüz görmeyecek .
Yani (alt) sorularım:
- Yukarıdaki sorun göz önüne alındığında ve ben LSTMs ile denemek istiyorum char-rnn tipi yaklaşım denemeye değer olduğunu, mermi ısırmak ve CTC ile kavramak olsun, ya da başlamak için daha iyi bir yer var mı.
- Olaylar arası zamanlama bilgilerini nasıl açıkça dahil edersiniz? İşlemsel olmayan olaylarla sabit bir saat kullanmak açıkça işe yarıyor ama çirkin görünüyor.
- Bir LSTM eğitmeyi başardığımı varsayarak, modeli ne tür bir olay 'motifleri' aldığını görmek için incelemenin bir yolu var mı? (yani, konnetteki filtrelere benzer)
Herhangi bir örnek kod (tercih edilen python) her zaman yardımcı olur.
Düzenleme: Sadece dizide biraz gürültü olduğunu eklemek için. Bazı olaylar güvenli bir şekilde göz ardı edilebilir, ancak hangilerinin önceden söylenmesi her zaman mümkün değildir. İdeal olarak model (ve ondan türetilen motifler) buna karşı sağlamdır.