問題タブ [word-embedding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
neural-network - 単語埋め込みモデルでリレーションを表示するために、より大きなベクトル空間が必要なのはなぜですか?
私は単語の埋め込みに取り組んでおり、単語ベクトルの次元数について少し混乱しています。つまり、word2vec を例にとると、私の質問は、なぜ隠れ層に 100 個の隠れニューロンを使用する必要があるのかということです。この数字には何か意味や論理がありますか? または任意の場合、300ではないのはなぜですか? または10?多かれ少なかれなぜですか?ベクトルを表示する最も簡単な方法は 2 次元空間 (X と Y のみ) であることが知られていますが、なぜそれ以上の次元があるのでしょうか? 私はそれについていくつかのリソースを読みましたが、ある例では 100 次元を選択し、別の例では 150、200、80 などの他の数値を選択しています。
数値が大きいほど、単語間の関係を表示するスペースが大きいことはわかっていますが、2 次元のベクトル空間 (X と Y のみ) では関係を表示できなかった?! なぜより大きなスペースが必要なのですか?各単語はベクトルで表示されるのに、2 次元または 3 次元空間でベクトルを表示できるのに、なぜ高次元空間を使用する必要があるのでしょうか? そして、余弦などの類似性手法を使用して、100 ではなく 2 次元または 3 次元で類似性を見つける方が簡単です (計算時間の観点から) ですよね?
nlp - word2vec: トレーニング データセット サイズに関する CBOW とスキップグラムのパフォーマンス
質問は簡単です。CBOW とスキップグラムのどちらが大きなデータセットに適していますか? (そして、小さなデータセットの答えは次のとおりです。)
ミコロフ自身が[Link]
Skip-gram:少量のトレーニング データでうまく機能し、まれな単語やフレーズもうまく表現します。
CBOW: スキップグラムより数倍高速にトレーニングでき、頻出単語の精度がわずかに向上
しかし、Google TensorFlow によると、[リンク]
CBOW は、多くの分布情報を平滑化します (コンテキスト全体を 1 つの観測として扱うことにより)。ほとんどの場合、これは小さなデータセットの場合に便利です。ただし、skip-gram は各コンテキストとターゲットのペアを新しい観測として扱います。これは、より大きなデータセット
がある場合にうまくいく傾向があります。このチュートリアルの残りの部分では、スキップグラム モデルに焦点を当てます。
最初の考えを支持する Quora の投稿[リンク]と、2 番目の考えを示唆する別の Quora の投稿[リンク]があります。どちらも、前述の信頼できる情報源から導き出せるようです。
それとも、ミコロフが言ったことのようなものですか:
全体として、ベスト プラクティスは、アプリケーションによって要件が異なるため、いくつかの実験を試して、何が最適かを確認することです。
しかし、確かに、この問題について経験的または分析的な評決または最終的な発言はありますか?
python - word2vecを使用して、特定の単語の単語埋め込みベクトルとコンテキストベクトルの両方を取得する方法は?
出力ベクトルは 'king' のコンテキスト ベクトルですか、それとも 'king' の単語埋め込みベクトルですか? 「王」のコンテキストベクトルと「王」の単語埋め込みベクトルの両方を取得するにはどうすればよいですか? ありがとう!
machine-learning - Keras: ツイート固有の事前トレーニング済み単語埋め込みレイヤーの最適化
ツイートを 5 つの異なるクラスに分類したい分類タスクに取り組んでいます。モデルを構築するためにKeras Github IMDB 分類の例に従っていますがEmbedding
、このモデルのレイヤーを変更したいと思います。初期化用の重みをEmbedding
レイヤーに渡す代わりに、データセット内の各ツイートに対して検索したい word2vec の重みがあるので、各ツイートに対して (tweet_words x vector_dimension) のマトリックスを構築できます。
たとえば、「この選挙について聞くのにうんざりしている #tuningout」というツイートは、次のようなマトリックスとして表されます。
国ごとに個別に学習された埋め込みがあるため、このルックアップを行っていEmbedding
ます。初期化のために共同埋め込みからレイヤーに重みを渡す代わりに、ツイートの場所に基づいて特定の埋め込みを検索したいと思います。次の Keras アーキテクチャを使用して、このような行列を非常に単純な LSTM に直接渡すことができます。
ただし、リンクの例と比較した場合の欠点は、このアーキテクチャがEmbedding
レイヤーをさらに最適化できないことです。例のように、各ツイートのこれらのマトリックスを埋め込みレイヤーに渡して、さらに最適化する方法はありますか? 読んでくれてありがとう。
python - tf.train.range_input_producer(epoch_size, shuffle=True) は終了せず、CPU/GPU 負荷も誘発しません
RNN の作業中に奇妙な問題が発生しました。私はTensorFlow RNN チュートリアルに従い、 R2RT のブログ投稿: Recurrent Neural Networks in Tensorflow I に非常に触発された独自の (より単純な) 実装を試しています。
デバッグ後ranger_input_producer
、tensorflow.models.rnn.ptb.reader.py (行 115) で問題が発生していることを確認しました。
最小の例でそれを分離しました:
これは何ですかptb_producer
( の変数値付きepoch_size
)。結局、このコードはそのままでは終了しないことがわかりました (私は何も呼び出しsession.run(...)
たり、CPU を使用したりしません。 Daving Wong によって提案されたように、キューが何かを待っていると思います。
手がかりはありますか?どうも
pltrdy
r - R text2vec と rword2vec の類推結果はパッケージ間で異なる
R rword2vec パッケージを使用してテキスト本文の単語の類推を計算すると、優れた直感的な答えが得られます。ただし、bin_to_txt を使用してこれから単語ベクトルを出力し、これらを読み込んで text2vec パッケージを使用して類推を計算すると、非常に質の低い回答が得られます。
2 つのパッケージがアナロジーを計算する方法に違いはありますか?もしそうなら、このパッケージなしで rword2vec の計算をどのように再現できますか? 残念ながら、本番環境で使用する必要があるマシンに rword2vec をインストールできません。
以下の例では、類推 king:queen::man:_ を使用しています。同じベクトルで、rword2vec は「女性」、「女の子」、「金髪」を与え、sim2 を使用する text2vec メソッドは「男」、「ahab」、「王」を与えます。後者の方法論で私は何を台無しにしていますか?
再現するための以下のコード: