4

特別な単語埋め込みを使用して LSTM を構築したいと考えていますが、これがどのように機能するかについていくつか質問があります。

ご存知かもしれませんが、一部の LSTM は文字を操作するため、文字を入力して文字を出力します。単語を抽象化して、ネストされた LSTM を使用して堅牢な埋め込みを学習し、わずかな文字レベルのエラーに耐性があるようにして、同じことをしたいと思います。

したがって、小さな LSTM が単語のすべての文字を展開し、これにより単語の埋め込みが作成されます。文に埋め込まれた各単語は、高レベルの LSTM への入力として供給されます。LSTM は、文字ではなく、すべての時間ステップで単語レベルで動作します。

質問: - それについて述べた研究論文はもう見つかりません。私が話していることを知っているなら、私がやりたいことに名前を付けたいと思います. - そのための TensorFlow オープンソース コードはすでに存在しますか? -それ以外に、それを実装する方法についてのアイデアはありますか? ニューラル ネットワークの出力は、処理が難しくなる可能性があります。出力が入れ子になった LSTM を使用して文字のトレーニングを行うには、単語の埋め込みを元に戻す必要があるからです。全体を 1 つのユニットとして 1 回トレーニングする必要があります (ワークフロー: LSTM chars in、LSTM on words、LSTM chars out)。

rnn_cell.MultiRNNCellLSTMをネストするのではなく、互いの上に積み重ねると思います。

そうでなければ、メインの LSTM の外側のオートエンコーダーとして埋め込み (インとアウト) をトレーニングすることをお勧めしますか?

4

2 に答える 2

5

あなたが言及している論文を私は知りません。

しかし、TensorFlow でこのようなものをどのように実装するかについてのアイデアは次のとおりです。

2 つの LSTMCellを作成できます。

単語ごとの可変文字数とシーケンスごとの可変単語数をサポートしたい場合は、dynamic_rnn のコードをコピーして適応させることができます (rnn.py を参照)。単一の while ループの代わりに、ネストされた while ループを作成します。最初の LSTMCell を呼び出し、各単語の後に状態をリセットする文字に作用する内側のもの。埋め込まれた単語 (内側のループからの出力) を操作し、2 番目の LSTMCell を呼び出します。

通常、埋め込みを個別にトレーニングする必要があるかどうかは、利用可能なデータの量によって異なります。大量のデータ トレーニングがない場合は、個別に (潜在的に異なるデータセットに) 埋め込むことが理にかなっている場合があります。余裕があり、モデルが適切にトレーニングされている場合は、ネットワーク全体とともに埋め込みをトレーニングすると、文字の意味がタスク固有になる可能性があるため、メリットが得られます。

しかし、このアプローチが、最初にスペル修正を行い、次に標準の単語埋め込みを使用する場合とどのように比較されるのか疑問に思っています。次に、いくつかの標準埋め込みツールと、dynamic_rnn を含む単一の LSTMCell を使用できます。

于 2016-06-21T01:30:01.420 に答える