2016-08-25 24 views
4

kerasを使用して言語モデルを作成しています。埋め込みを使用したKeras LSTM言語モデル

基本的に、私の語彙サイズNは〜30.000です。私はすでにword2vecを訓練していますので、埋め込みとそれに続くLSTMを使って、次に完全に接続された層とsoftmaxの次の単語を予測します。私は2つの質問持って

EMBEDDING_DIM = 256 
embedding_layer = Embedding(N,EMBEDDING_DIM,weights=[embeddings], 
trainable=False) 

model = Sequential() 
model.add(embedding_layer) 
model.add(LSTM(EMBEDDING_DIM)) 
model.add(Dense(N)) 
model.add(Activation('softmax')) 

model.compile(loss="categorical_crossentropy", optimizer="rmsprop") 

:以下のように 私のモデルが書かれている。この場合、

  1. を、あなたは我々だけが続いているLSTMの最後の隠れ層を(使用していることを確認することができます完全に接続されたレイヤーとソフトマックス)、lstmの連続した隠れ層の最大/平均プール(感情分析http://deeplearning.net/tutorial/lstm.htmlのようなもの)のようなものはありませんか?

  2. 最後に隠されたlstmのレイヤーをサイズN(30.000)の大きな完全接続レイヤーに接続し、サイズEMBEDDING_DIMのレイヤーに接続し、代わりに次のワードの埋め込みを予測すると思いますそのような場合、私たちは損失をマッセのようなものに置き換え、トレーニング時間を短縮し、主に語彙が大きく埋め込みがネットワークの終わりにも役立つので、主にモデルを助けますか?

ありがとう!

答えて

0

私は最初の質問に確実に答えることができます。

はい、LSTM層の出力は、最後の隠されたユニットです。パラメータreturn_sequences=Trueを指定すると、すべての隠し状態が返されます。デフォルトではFalseに設定されています。

2番目の質問では、単語のワンホットベクトル表現に埋め込まれた埋め込みを予測しようとしましたが、それは私に悪い結果をもたらしました。 単語は、たとえ何らかの形で連続表現で近似することができますが、カテゴリ変数です。 このような理由から、Hierachical Softmaxの開発に多くの努力が払われています。

関連する問題