Припустимо наступну 1 розмірну послідовність:
A, B, C, Z, B, B, #, C, C, C, V, $, W, A, % ...
Букви A, B, C, ..
тут представляють "звичайні" події.
Символи #, $, %, ...
тут представляють "особливі" події
Тимчасовий проміжок між усіма подіями неоднаковий (що завгодно від секунд до днів), хоча чим далі в минулому подія, тим менше ймовірність впливати на майбутні події. В ідеалі я можу явно врахувати ці часові затримки.
Існує на замовлення 10000 звичайних типів подій та на замовлення 100 спеціальних типів подій. Кількість звичайних подій, що передують особливій події, варіюється, але навряд чи буде більше 100-300.
В принципі, мені цікаво шукати шаблони в звичайній послідовності подій, які в кінцевому підсумку є передбачуваними для особливих подій.
Тепер ви можете підійти до цього різними способами: створення векторів функцій + стандартна класифікація, навчання правилам асоціацій, HMM тощо.
У цьому випадку мені цікаво, як найкраще підійде мережа на базі LSTM. Безпосередньо було б зробити щось на кшталт Чарпарті Карпарті та передбачити наступну подію з урахуванням історії. Потім для нової послідовності
C, Z, Q, V, V, ... , V, W
Ви можете запустити його через модель і побачити, яка особлива подія найбільш вірогідна для наступного. Але це не зовсім добре відчуває себе.
Оскільки це тимчасова проблема класифікації, здається, що належним чином зробити це - використовувати коннекціоністську тимчасову класифікацію, як описав Алекс Грейвс .
Однак перед тим, як інвестувати занадто багато на даний момент, я шукаю щось легше та швидше експериментувати, щоб відчути, наскільки добре тут би вмістилися LSTM. Tensorflow побачить приклад CTC в якийсь момент, але поки що.
Отже, мої (під) запитання:
- Враховуючи вищезгадану проблему, і я хотів би поекспериментувати з LSTM, чи варто спробувати підхід типу char-rnn, чи повинен я кусати кулю і впоратися з CTC, чи є краще місце для початку.
- Як би ви чітко включали інформацію про терміни між подіями. Використання фіксованого годинника без подій без операції, очевидно, працює, але здається некрасивим.
- Якщо припустити, що мені вдалося навчити LSTM, чи є спосіб перевірити модель, щоб побачити, які саме «мотиви» події вона підібрала? (тобто аналог фільтрів у конвєнці)
Будь-який зразок коду (бажаний пітон) завжди корисний.
Редагувати: Просто щоб додати, що в послідовності є якийсь шум. Деякі події можна сміливо ігнорувати, але саме ті, які не завжди можна сказати наперед. Тому в ідеалі модель (і мотиви, що випливають з неї) стійкі проти цього.