다음 1 차원 시퀀스를 가정하십시오.
A, B, C, Z, B, B, #, C, C, C, V, $, W, A, % ...
A, B, C, ..
여기의 문자 는 '일반적인'이벤트를 나타냅니다.
#, $, %, ...
여기의 기호 는 '특별한'이벤트를 나타냅니다
모든 이벤트 사이의 시간 간격은 일정하지 않습니다 (몇 초에서 며칠까지). 과거 이벤트가 계속 될수록 미래 이벤트에 영향을 줄 가능성은 적습니다. 이상적으로 이러한 시간 지연을 명시 적으로 고려할 수 있습니다.
10000 개의 일반 이벤트 유형과 100 개의 특수 이벤트 유형이 있습니다. 특별 이벤트 이전의 일반 이벤트의 양은 다양하지만 100-300을 초과하지는 않습니다.
근본적으로 나는 특별 이벤트를 예측하는 일반적인 이벤트 시퀀스의 패턴을 찾는 데 관심이 있습니다.
이제 특징 벡터 생성 + 표준 분류, 연관 규칙 학습, HMM 등 다양한 방식으로이 방법에 접근 할 수 있습니다.
이 경우 LSTM 기반 네트워크가 어떻게 가장 적합한 지 궁금합니다. Karparthy의 char-rnn 과 같은 일을 하고 역사가 주어진 다음 사건을 예측하는 것이 간단 합니다. 그런 다음 새로운 시퀀스
C, Z, Q, V, V, ... , V, W
모델을 통해 실행할 수 있으며 다음에 어떤 특별한 이벤트가 일어날 지 알 수 있습니다. 그러나 제대로 맞지는 않습니다.
이것은 임시 분류 문제이므로 Alex Graves가 설명한 Connectionist Temporal Classification을 사용하는 것이 좋습니다 .
그러나 지금 너무 많은 투자를하기 전에 LSTM이 얼마나 적합한 지 실험 해 볼 수있는 쉽고 빠른 방법을 찾고 있습니다. Tensorflow는 어느 시점에서 CTC 예제 를 볼 수 있지만 아직은 아닙니다.
따라서 내 (하위) 질문은 다음과 같습니다.
- 위의 문제를 감안할 때 LSTM을 실험하고 싶다면 char-rnn 유형 접근법을 시도해 볼 가치가 있습니다. 탄알을 물고 CTC를 파악해야하거나 시작하기에 더 좋은 곳이 있습니까?
- 이벤트 간 타이밍 정보를 명시 적으로 통합하는 방법 이벤트가없는 고정 시계를 사용하면 분명히 작동하지만 못생긴 것 같습니다.
- LSTM을 훈련시킬 수 있다고 가정하면 모델을 검사하여 어떤 종류의 이벤트 '모티브'를 포착했는지 확인할 수 있습니까? (즉, convnets의 필터와 유사)
모든 샘플 코드 (파이썬 선호)는 항상 도움이됩니다.
편집 : 시퀀스에 약간의 노이즈가 있음을 추가하기 만하면됩니다. 일부 이벤트는 무시해도되지만 정확히 사전에 말할 수있는 것은 아닙니다. 따라서 이상적으로는 모델 (및 모델에서 파생 된 모티프)이 이에 대해 강력합니다.