ツイートを 5 つの異なるクラスに分類したい分類タスクに取り組んでいます。モデルを構築するためにKeras Github IMDB 分類の例に従っていますがEmbedding
、このモデルのレイヤーを変更したいと思います。初期化用の重みをEmbedding
レイヤーに渡す代わりに、データセット内の各ツイートに対して検索したい word2vec の重みがあるので、各ツイートに対して (tweet_words x vector_dimension) のマトリックスを構築できます。
たとえば、「この選挙について聞くのにうんざりしている #tuningout」というツイートは、次のようなマトリックスとして表されます。
vector_dim1 vector_dim2 vector_dim3 ... vector_dimN
I'm value1 value2 value3 valueN
so value1 value2 value3 valueN
tired (... and so on...)
of
hearing
about
this
election
#tuningout
国ごとに個別に学習された埋め込みがあるため、このルックアップを行っていEmbedding
ます。初期化のために共同埋め込みからレイヤーに重みを渡す代わりに、ツイートの場所に基づいて特定の埋め込みを検索したいと思います。次の Keras アーキテクチャを使用して、このような行列を非常に単純な LSTM に直接渡すことができます。
model = Sequential()
# layer here would normally be:
# model.add(Embedding())
model.add(LSTM(width, input_shape=(max_len, 100), dropout_W=0.2, dropout_U=0.2))
model.add(Dense(class_size))
model.add(Activation(activation))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
ただし、リンクの例と比較した場合の欠点は、このアーキテクチャがEmbedding
レイヤーをさらに最適化できないことです。例のように、各ツイートのこれらのマトリックスを埋め込みレイヤーに渡して、さらに最適化する方法はありますか? 読んでくれてありがとう。