2017-01-27 4 views
1

私はTensorFlow RNNを使用してアンドレイKarpathyのブログhttp://karpathy.github.io/2015/05/21/rnn-effectiveness/ からRNN文字レベルの言語モデルを実装しようとしています。手始めに、私はTensorFlowでLSTMチュートリアルからptb_word_lm.pyを取って、今ではなく、10000の明確な言葉で、元PTBデータセットそれは36個の異なる文字のストリームに訓練されているように、リーダーの機能を変更しました。 (埋め込みの形状はそれに応じて縮小されました:10000x200の代わりに36x36に)。訓練/検証のセットは、戦争と平和(350万小文字)のテキストでした。文字レベルの言語モデリングのためのTensorFlow LSTMチュートリアルの使い方は?

私は簡単なキャリーオーバーを期待。約20の実行がRNNが過剰表現Tの言葉の始めと終わりでた状態で立ち往生した後 は代わりに、サンプル出力は、5かそこらエポック実行後、次のように探して起動します:TOERE AHME OF SOSへTrTSONAL TY OF AND TOmSEDtik AN TNE S SWN srrSONAL TY TUTここsMRTH AUT TE T VITTENG TtのsNPENelITY OiRhREAVEDTN T OORD

(OF wONNOT seeL THaをsorEMENT番目TN tFのT IauGR AHE縫うsisWoeID TtのWS tHuEのsNTIFiNDENTE OF THE TEpoUNCENG soSECTIOaELING大文字は高い確率を表す)。次の100回以上のエポック・ランでは、それ以上の進展はありません。 Perplexitiesは列車の場合約4、検証セットの場合は約3.75で急速に凍結されます。

一般的なテキストのすべての文字ペアの中で、「スペースT」と「Tスペース」が最も頻繁に発生しますが、RNNはそのような問題を解決するはずです。私は変化するパラメータ(グラデーションのためのADAM、より長いステップ、forget-bias = 1.0など)を試しました。何も変わりません。 私は自分のロープの最後です。ここで何がうまくいかないのでしょうか?

多くの感謝!

+0

は1E-4とアダム –

+0

ように私は、独自の学習率を設定アダムを、使用しています、小さな学習率と長い時間のための訓練をしてみてください動作します。パーフェクシティは、列車と検証セットの両方で低下していますが、ますます小さくなっています。これまでの100エポックの間、最後の80回は視覚的に有意な出力の変化がなかった。もう一日続けようとしている。 (私のPC上では、RNNが2層×200個の隠れたバールの10エポックが1時間以上かかるので、 –

答えて

0

あなたの初期化をチェックしましたか?勾配がゼロの場合、学習が止まることがあります。これは、ウェイト(またはバイアス)をゼロまたは1に初期化する場合に発生します。アクティベーション(非線形性)に応じて、異なる初期化の選択肢があります。よく丸められた初期化は、正常または正常に切り捨てられます。

バイアス用tf.truncated_normal([size_in, size_out], stddev=0.1)

、小さな定数もtf.constant(0.1, shape=[size_out])

関連する問題