2016-06-18 13 views
1

特別な単語埋め込みでLSTMを構築したいと思いますが、これがどのように機能するかについていくつか質問があります。LSTM(入れ子式)内のTensorflowシーケンスからシーケンスへのLSTM

ご存じのように、LSTMによっては文字が操作されるものがあります。私は同じことをしたいと思います。単語に抽象化を入れて、LSTMを入れ子にして強固な埋め込みを学び、わずかな文字レベルのエラーに耐えるようにしたいと思います。

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

質問: - それについて話したリサーチペーパーはもう見つかりません。私が何を話しているのか分かっているなら、私がしたいことに名前をつけたいと思います。 - 一部のTensorFlowオープンソースコードが既に存在しますか? - そうでない場合は、その実装方法について考えていますか?ニューラルネットワークの出力は扱いにくいかもしれません。出力ネストされたLSTMを持つ文字のトレーニングのために埋め込みを取り消す必要があるからです。全体を1つのユニットとして一度訓練する必要があります(ワークフロー:LSTMの文字、LSTMの単語、LSTMの文字)。

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

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

答えて

3

あなたが参照している論文を知りません。

あなたは2 LSTMCellsを作成することができます。

しかし、ここでは、私がTensorFlowにこのような何かを実装する方法を上のアイデアです。

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

通常、埋め込みを個別にトレーニングする必要があるかどうかは、利用可能なデータの量によって異なります。多くのデータトレーニングがない場合は、別々の(潜在的に異なるデータセット上の)埋め込みが理にかなっているかもしれません。あなたのモデルが十分に訓練されていれば、あなたのネットワーク全体と一緒に埋め込みをトレーニングすることは、文字の意味がタスク特有である可能性があるので利点があります。

しかし、私は、このアプローチと最初にスペルの修正を行い、次に標準単語の埋め込みを使用する方法と比べてどうかと思います。次に、standard embedding toolsの一部とdynamic_rnnを持つ単一のLSTMCellを使用できます。

関連する問題