2017-07-19 5 views
1

word2vecには、入力レイヤー、非表示レイヤー、出力レイヤーの3つのレイヤーがあります。Hierarchical Softmaxの出力レイヤーのユニット数

サイズがVのコーパスに対して伝統的なsoftmaxアプローチ を使用すると、出力レイヤーのユニット数もV(ワンホットベクトル入力)になります。

Hierarchical Softmaxを使用した場合、 という記事では、ハフマンバイナリツリー内にV-1ノードしか存在しないと記載されています。 この場合、出力レイヤにはV-1ユニットしかないのでしょうか?ここで

は私が読んでいるの参照です: https://arxiv.org/pdf/1411.2738.pdf

ありがとうございました。

答えて

1

実際には、word2vec hierarchical-softmaxの実装では、語彙と同じくらい多くのノードを持つ出力レイヤーが作成されます。あなたは、その後の言葉は、個々のハフマン符号が割り当てられているかを確認することができます

https://github.com/RaRe-Technologies/gensim/blob/f3bf792ee1344ed17ad2836ab3c38b4210f59889/gensim/models/word2vec.py#L1171

と:

https://github.com/tmikolov/word2vec/blob/20c129af10659f7c50e86e3be406df663beff438/word2vec.c#L356

またはgensim Python実装ラインで:元のGoogle word2vec.cラインの例を参照してくださいCreateBinaryTree(C)またはcreate_binary_tree関数内の出力レイヤーのノード( 'points')。

+1

[CreateBinaryTree](https://github.com/tmikolov/word2vec/blob/20c129af10659f7c50e86e3be406df663beff438/word2vec.c#L218)のページでは、ノードの数= V-1です。これは番号と同じではありませんボキャブラリー語の? –

+0

ああ、はい、そうです。したがって、元のword2vec.cとgensimの両方の実装では、HS出力の重みに完全長の配列を割り当てますが、最後のスロットは使用しません。だから、あなたの質問に対する答えは、 "はい、V-1のアクティブノードがありますが、もう1つは割り当てられ、未使用です"と考えられます。この解釈を確認するために、既存のコードを変更して1つ少ないコードを割り振り、何かが壊れているかどうかを確認したい場合があります。 – gojomo

+0

私はあなたに同意します。あなたの大きな助けをありがとう! :P –

関連する問題