シーケンスイベント予測内でのLSTMの最適な使用


9

次の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の一時的な分類を使用するのが適切です。

ただし、現時点で多額の投資をする前に、LSTMがどれだけ適切にここに収まるかを感じるために、より簡単で迅速に実験できる何かを探しています。Tensorflowは、ある時点でCTCの例を見ますが、まだ見ていません。

だから私の(サブ)質問は:

  1. 上記の問題があり、LSTMを試してみたいのであれば、char-rnnタイプのアプローチを試してみる価値はありますか。
  2. イベント間タイミング情報をどのように明示的に組み込みますか。no-opイベントで固定クロックを使用することは明らかに機能しますが、見苦しいようです。
  3. LSTMをトレーニングできたとしたら、モデルを調べて、どのような種類のイベント「モチーフ」を取得したかを確認する方法はありますか?(つまり、convnetsのフィルターに類似)

常に役立つサンプルコード(Pythonを推奨)。

編集:シーケンスにノイズがあることを追加するだけです。一部のイベントは安全に無視できますが、正確にどのイベントを前もって言うことが常に可能であるとは限りません。したがって、理想的には、モデル(およびモデルから派生したモチーフ)はこれに対して堅牢です。


これはどのようなデータセットですか?
ピル2015

@felbo:私は残念ながら、明示的に言うが、ハードウェアからのデータ、カントない金融/販売/広告/ ..
dgorissen

OK。実際、イベントタイプが1万以下の場合、ワンホットエンコーディング(私の回答の場合)は問題になる可能性があります。おそらく、word2vecの行に沿って何かを行うことができるので、入力次元は約300だけです。同様に、1万個のオプションから次のイベントタイプを予測することはおそらく問題です。代わりに、問題をリフレームして100の特殊なタイプを予測してから、すべての10kの通常のイベントに対して「通常のイベント」クラスを予測することは理にかなっています。
ピル2015

明確にするために:この種の問題については、大量のデータがあると思います。
ピル2015

@felbo:確かに。インデックスを使用すること、word2vecのようなベクトル埋め込みを学習すること、またはイベントをクラスにグループ化して次元を減らすことを考えていました。予測面についても同様です。
dgorissen 2015

回答:


4

あなたのデータは単なるトークンのシーケンスのようです。LSTMオートエンコーダーを作成して、エンコーダーがシーケンスの最初の部分の固定表現を学習し、デコーダーが残りの部分を予測できるようにします。

これらの表現はあなたのモチーフになります。

参照:

バーダナウ、D。、チョ、K。&ベンジオ、Y。(2014)。調整と翻訳を共同で学習することによるニューラル機械翻訳。arXivプレプリントarXiv:1409.0473。

Srivastava、N.、Mansimov、E。、およびSalakhutdinov、R。(2015)。LSTMを使用したビデオ表現の教師なし学習。arXivプレプリントarXiv:1502.04681。


1

最も重要な部分は、分類の問題を「表現」する方法です。つまり、入力と出力したいものをどのように表現するかを意味します。さまざまな種類のイベントがあるので、これらの埋め込みについて学ぶ必要があります。これはKerasなどで直接行うことができます。この例を見ることができますデータから直接埋め込みを学ぶ方法について。別のアプローチは、word2vecなどの教師なしアプローチを使用して、事前に埋め込みを学習することです。ただし、関連するタスクを考え出して、埋め込みを生成するようにトレーニングする必要があるため、これはあなたの側でより多くの作業を必要とします。十分なデータがあることを考えると、埋め込みを直接学習する方が簡単です(少し効果的ではありません)。出力については、さまざまなタイプのイベントすべてを予測するのではなく、問題を実現可能にするための特別なイベントと「バックグラウンドクラス」のみを予測しました。すべての単一クラスを予測できるようにしたい場合は、いくつかのトリックを使用する必要があります(word2vecがどのように実行するかを調べます)。

イベント間の時間について。これを追加の次元としてLSTMに追加するだけでかまいません(Kerasでこれを行う方法の例については、これを参照してください)。これは簡単に実行でき、LSTMで時間的な違いを考慮に入れることができます。

私は、ネットワークの一時的な性質を「展開」することによってモチーフを視覚化する方法を知りません。生成ネットワークを使用していくつかのモチーフを生成できる可能性がありますが、解釈が難しい可能性があります。モチーフを探索する1つの方法は、たとえば長さ20-100の非特殊イベントの上位100000の最も一般的なシーケンスを見つけ、それらをトレーニング済みモデルに入力して、最終のソフトマックスレイヤーから確率出力を抽出することです。このようにして、特定の特別なイベントに関連するシーケンスを見つけることができます。ただし、このモチーフアプローチがデータを見ないで実行可能/有用であるかどうかを判断することは困難です。


ただ明確にします。モチーフ側では、生データを見て、特定の最小長の最も一般的なサブシーケンスを抽出し(または、頻繁なアイテムセットマイニングを使用してそれらを生成し)、特別なイベント予測が最大になる場所を確認しますか?その場合、標準の分類問題としてアプローチする方が簡単に思われますか?
dgorissen 2015

私は、リカレントモデルの時間依存性が何らかの有用な検査を可能にすることを望んでいました。あるいは、モデルを「逆」で実行することもできます。各特殊イベントタイプの予測信頼度を最大化し、結果としてどのようなシーケンスが発生するかを確認します。ただし、それがどのように機能し、おそらく生成モデルが必要かはよくわかりません。
dgorissen 2015

1
私の更新された答えを見てください。はい、生データに基づいて「特別なイベントの予測が最大になる」場所を見ることを意味します。標準の分類問題として取り組むことの意味がわかりません:)
pir
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.