web-dev-qa-db-ja.com

Wordの埋め込みの次元とは何ですか?

Wordの埋め込みにおける「次元」の意味を理解したいと思います。

NLPタスクのマトリックスの形式でWordを埋め込むと、次元はどのような役割を果たしますか?この概念を理解するのに役立つ視覚的な例はありますか?

10
manoveg

回答

単語の埋め込みは、単語からベクトルへの単なるマッピングです。 Word埋め込みの次元数は、これらのベクトルの長さを指します。

追加情報

これらのマッピングにはさまざまな形式があります。ほとんどの事前トレーニング済み埋め込みは、スペースで区切られたテキストファイルとして利用できます。各行の最初の位置にWordが含まれ、その横にベクター表現が含まれています。これらの行を分割すると、長さが1 + dimであることがわかります。ここで、dimdimensionity、Wordベクトルの、および1は表現されているWordに対応します。実際の例については、 GloVe事前トレーニング済みベクトル を参照してください。

たとえば、 glove.Twitter.27B.Zip をダウンロードした場合は、解凍して、次のpythonコードを実行します。

#!/usr/bin/python3

with open('glove.Twitter.27B.50d.txt') as f:
    lines = f.readlines()
lines = [line.rstrip().split() for line in lines]

print(len(lines))          # number of words (aka vocabulary size)
print(len(lines[0]))       # length of a line
print(lines[130][0])       # Word 130
print(lines[130][1:])      # vector representation of Word 130
print(len(lines[130][1:])) # dimensionality of Word 130

あなたは出力を得るでしょう

1193514
51
people
['1.4653', '0.4827', ..., '-0.10117', '0.077996']  # shortened for illustration purposes
50

多少関係はありませんが、同様に重要ですが、これらのファイルの行は、埋め込みがトレーニングされたコーパスで見つかった単語の頻度に従ってソートされます(最も頻度の高い単語が最初)。


これらの埋め込みを、キーが単語で、値が単語ベクトルを表すリストである辞書として表すこともできます。これらのリストの長さは、Wordベクトルのdimensionityになります。

より一般的な方法は、ディメンション(V x D)の行列(ルックアップテーブルとも呼ばれます)として表すことです。ここで、Vは語彙サイズ(つまり、単語の数)であり、Dは、各Wordベクトルのdimensionityです。この場合、各単語をマトリックス内の対応する行にマッピングする個別の辞書を保持する必要があります。

バックグラウンド

次元性が果たす役割に関する質問については、いくつかの理論的な背景が必要になります。しかし、簡単に言うと、単語が埋め込まれているスペースは、NLPシステムのパフォーマンスを向上させる優れた特性を示しています。これらのプロパティの1つは、類似した意味を持つ単語が互いに空間的に近い、つまり、 ユークリッド距離 または などの距離メトリックで測定すると、類似したベクトル表現を持つことです。コサイン類似度

複数のWord埋め込みの3D投影 ここ視覚化して、たとえば、「道路"はWord2Vec 10K埋め込みの「高速道路」、「道路」、および「ルート」です。

詳細な説明については、Christopher Olahによる この投稿 の「Word Embeddings」セクションを読むことをお勧めします。

分散表現のインスタンスであるWordの埋め込みを使用する理由の詳細については、たとえば、ワンホットエンコーディング(localを使用するよりも優れています)表現)、私はジェフリー・ヒントンらによる 分散表現 の最初のセクションを読むことをお勧めします。

11
jabalazs

Word2vecやGloVeのような単語の埋め込みは、2次元のマトリックスに単語を埋め込むのではなく、1次元ベクトルを使用します。 「次元性」とは、これらのベクトルのサイズを指します。これは、単に捨てるのではなく、実際にベクトルを保持する単語の数である語彙のサイズとは別のものです。

理論的には、より大きなベクトルはより多くの可能な状態を持つため、より多くの情報を格納できます。実際には、サイズが300〜500を超えるとそれほどメリットはありません。アプリケーションによっては、より小さなベクトルでも問題なく機能します。

これが GloVeホームページ の画像です。

Word vector visualization

ベクトルの次元は左軸に示されています。たとえば、グラフを短くするとグラフが短くなります。各列は個別のベクトルで、各ピクセルの色は、ベクトル内のその位置の番号によって決まります。

4
polm23

Word埋め込みの"dimensionity"は、エンコードする機能の総数を表します。実際には、定義を単純化しすぎていますが、後でそのようになります。

機能の選択は通常手動ではなく、自動トレーニングプロセスで非表示のレイヤーを使用します。文献のコーパスに応じて、最も有用な次元(機能)が選択されます。たとえば、文学がromanticフィクションに関するものである場合、数学の文学と比較して、性別の次元が表現される可能性がはるかに高くなります。

100,0一意の単語に対してニューラルネットワークによって生成された100次元(たとえば)のWord埋め込みベクトルを取得すると、各次元の目的を調査することはあまり役に立ちませんそして、「機能名」で各次元にラベルを付けてみてください。各次元が表す機能は単純で直交的ではない場合があり、プロセスは自動であるため、各次元が何を表すかを正確に把握することはできません。

このトピックを理解するためのより深い洞察のために、これが役立つかもしれません post

1
Thava

私は専門家ではありませんが、ディメンションは単に単語に割り当てられた変数(別名属性または機能)を表すと思いますが、それ以上のものがあるかもしれません。各次元の意味と次元の総数は、モデルによって異なります。

Tensor Flowライブラリからこの埋め込み視覚化を最近見ました: https://www.tensorflow.org/get_started/embedding_viz

これは特に、高次元モデルを人間が認識できるものに減らすのに役立ちます。 4つ以上の変数がある場合、クラスタリングを視覚化することは非常に困難です(明らかにStephen Hawkingでない限り)。

この 次元削減に関するウィキペディアの記事 および関連ページでは、機能が次元でどのように表されるか、および多すぎることの問題について説明しています。

1
scipilot

書籍Neural Network Methods for Natural Language Processing by Goldenbergによると、Word embeddingsdimensionality)のdembは、最初の重み行列(入力間の重み)の列数を指します。レイヤーと非表示レイヤー)Word2vecなどの埋め込みアルゴリズム。画像のNは、Wordの埋め込みではdimensionalityです: skip-gram model

詳細については、このリンクを参照してください: https://blog.acolyer.org/2016/04/21/the-amazing-power-of-Word-vectors/

0
hamed baziyad

機械学習アルゴリズムにフィードする前に、テキストデータを数値データに変換する必要があります。ワードの埋め込みは、各ワードがベクトルにマッピングされるこのアプローチです。

代数では、A Vectorは、スケールと方向を持つ空間内のポイントです。簡単に言うと、Vectorは1次元の垂直配列(または1列の行列)であり、Dimensionalityはその1次元の垂直配列の要素数です。

Gloveのような事前トレーニング済みのWord埋め込みモデルであるWord2vecは、50、100、200、300などの各Wordに複数の次元オプションを提供します。各WordはD次元空間内のポイントを表し、同義語は互いに近いポイントです。次元が高いほど精度が高くなりますが、計算の必要性も高くなります。

0
Kaustuv