2017-11-15 17 views
0
  1. 私は、Penn Treebank(PTB)コーパスに基づいてLSTMで言語モデルをトレーニングしようとしています。言語モデルの学習方法は?

    私は、コーパス内のすべてのバイグラムを訓練して、前の単語の次の単語を予測できるようにする必要があると考えていましたが、複数の先行する単語に基づいて次の単語を予測することはできません。

    言語モデルを訓練するのはどういうことでしょうか?

  2. バッチサイズ= 20、ボキャブラリサイズが10000なので、結果として10kエントリ(パラメータ?)の20個の結果行列があり、損失は20個のグランド真理値マトリックス実際の次の単語のインデックスのみが1であり、他のエントリがゼロである10k個のエントリのうちの1つである。これは適切な実装ですか?私はそれが普通であるものの権利範囲に間違いではありませんほとんどの繰り返しで変化しないの周り2のパープレキシティを取得しています、だから、それは言語を訓練するために正確に何であるの周りに100

答えて

1

を言いますモデル?

私はコーパス内のすべてのバイグラムを練習する必要はないと思います。シーケンスを使用してシーケンスモデルを作成するだけで、前の単語の次の単語を予測するときは、確率が最も高い単語を選択するだけです。

ので、私は、復号化のステップごとに、10Kエントリ(パラメータ?)

はいの20の得られた行列を有します。

これは適切な実装ですか?私は約2回の混乱を覚悟していますが、反復の変化はほとんどありません。通常は100程度と言われています。

最初にいくつかのオープンソースコードを参照として読むことができます。例えば、word-rnn-tensorflowおよびchar-rnn-tensorflow。 perplexityは-log(1/10000)と大きく、単語あたり約9 です(これはモデルが全く訓練されておらず、完全にランダムに選択されていることを意味します。合理的)。文中の100は文ごとの複雑さを意味すると思います。

たとえば、tf.contrib.seq2seq.sequence_lossが複雑さを計算するために採用されている場合は、デフォルトとして、真であるとaverage_across_timestepsaverage_across_batchの両方を設定した場合、結果は10未満になりますが、あなたはaverage_across_timestepsを設定した場合はFalseとの平均の長さにシーケンスは約10、それは約100になります。

関連する問題