web-dev-qa-db-ja.com

KerasにWord2vecを実装する

Word2vecアルゴリズムをkerasに実装したいのですが、これは可能ですか?モデルをどのように適合させることができますか?カスタム損失関数を使用する必要がありますか?

10
András

これは可能ですか?

あなたはすでにそれを自分で答えました:はい。 gensimを使用する Word2veckeras に加えて、追加の依存関係がない別の CBOW実装 があります(念のため、私はmこのリポジトリとは提携していません)。それらを例として使用できます。

モデルをどのように適合させることができますか?

トレーニングデータは文の大きなコーパスであるため、最も便利な方法は model.fit_generator です。これは、「a Pythonジェネレーター」。ジェネレーターは無期限に実行され、(Word, context, target) CBOW(またはSG)タプルを生成しますが、トレーニングを制限するためにsample_per_Epochnb_Epochを手動で指定します。このようにして、文の分析を切り離します。 (トークン化、Wordインデックステーブル、スライディングウィンドウなど)と実際のケラスモデルに加えて 多くのリソースを節約

カスタム損失関数を使用する必要がありますか?

CBOWは、中央の単語の予測された分布と実際の分布の間の距離を最小化するため、最も単純な形式ではcategorical_crossentropyがそれを行います。 負のサンプリング を実装すると、少し複雑ですが、はるかに効率的になり、損失関数は binary_crossentropy に変わります。カスタム損失関数は不要です。

数学と確率モデルの詳細に興味がある人には、スタンフォード大学のCS224Dクラスを強くお勧めします。 講義ノートはこちら Word2vec、CBOW、Skip-Gramについて。

別の有用なリファレンス: Word2vec実装 純粋なnumpyおよびc

5
Maxim