1. 序章

自然言語処理の分野ではトランスフォーマーが優勢を占めていますが、word2vecは依然として単語ベクトルを構築するための一般的な方法です。

このチュートリアルでは、word2vecアルゴリズムについて詳しく説明し、単語の埋め込みの背後にあるロジックについて説明します。 この説明を通じて、これらのベクトルを使用し、加算、連結、または平均化操作を使用して新しいベクトルを計算する最良の方法を理解することができます。

2. 単語の埋め込みの種類

単語の埋め込みは、ベクトルで表現された単語の意味表現です。 同じようにフレーズや文章を表現することも一般的です。

自然言語処理では、ベクトル空間モデリングの機械学習タスクとしてよく使用されます。 これらのベクトルを使用して、ベクトル空間内の距離として異なる単語間の類似性を測定したり、機械学習モデルに直接フィードしたりできます。

一般的に、単語の埋め込み方法には多くの種類があります。 次のような最も人気のあるものの一部についてのみ説明します。

この記事では、word2vecメソッドのみを使用します。

3. Word2vec

Word2vec は、単語ベクトルを作成することによって単語の類似性をモデル化するための一般的な手法です。 これは、ニューラルネットワークを使用して単語間の関係をモデル化する方法です。 基本的に、アルゴリズムは入力として大量のテキストを受け取り、出力としてコンテキストベクトルと呼ばれるベクトルを生成します。

Word2vecは、単純な観察から始まります。ドキュメント内で近くに出現する単語は、意味的類似性を共有する可能性があります。 たとえば、「王」と「女王」は同じような意味を持ち、ドキュメント内で互いに近くにあり、「男性」や「女性」などの関連する単語を持っている可能性があります。 Word2vecはこの観察結果を取得し、それを機械学習アルゴリズムに適用します。

その結果、word2vecは、各入力単語を表す2種類のベクトルを作成します。 これらのタイプは次のとおりです。

  • 単語の埋め込みまたは非表示の表現(単語が中央にある場合)
  • コンテキスト単語の埋め込みまたは出力表現(単語がコンテキストの場合)

以下では、両方のタイプの単語ベクトルについて詳しく説明します。

3.1. 単語の埋め込み

word2vecモデルを作成する1つの方法は、スキップグラムニューラルネットワークアーキテクチャを使用することです。 簡単に言うと、これは1つの隠れ層を持つ単純なニューラルネットワークです。 入力ワードをワンホットベクトルとして受け取り、入力と同じ次元でソフトマックス関数から確率ベクトルを出力します。

入力ワンホットベクトルを。で定義しましょう。 次に、隠れ層は、転置されたワンホットベクトルと重み行列の間の乗算結果です。

(1)  

ベクトルはワンホットベクトルであるため、ベクトルの-番目の要素が1に等しい場合、隠れ層またはベクトルは常に行列の-番目の行に等しくなります。 次に例を示します。

(2)  

この例では、特定の単語について、そのワンホットベクトルをニューラルネットワークに入力すると、その単語が隠れ層にベクトルとして埋め込まれます。 また、重み行列の行は単語の埋め込みを表していると結論付けることができます。

3.2. コンテキスト単語の埋め込み

隠れ層を計算した後、それを2番目の重み行列で乗算します。 この乗算の出力は、確率分布を取得するために活性化関数softmaxを使用する出力ベクトルです。

(3)  

出力ベクトルが入力ベクトルと同じ次元であることに注意してください。 また、そのベクトルの各要素は、特定の単語が入力単語と同じコンテキストにある確率を表します。

このことから、-番目の単語のコンテキスト単語の埋め込みは、重み行列の-番目の列になります。 ニューラルネットワーク全体を下の画像で見ることができます。

4. 単語ベクトルの追加、連結、または平均化

両方の埋め込みベクトルをどうするかを理解するには、重み行列とをよりよく理解する必要があります。

4.1. 2つの埋め込みの関係

たとえば、「猫」という単語を取り上げて、その埋め込みとを観察してみましょう。 2つの埋め込み間の内積を計算すると、「猫」という単語が独自のコンテキストにある確率が得られます。

特定の単語の文脈がその単語の前後の数語であると仮定すると(通常はそうですが)、その単語がそれ自体の文脈にある可能性は非常に低いはずです。 基本的に、同じテキストで同じ単語を2回、次々に閉じることは非常にまれであることを意味します。

それから、私たちは仮定することができます:

(4)  

また、内積の定義から、次のようになります。

(5)  

埋め込みの大きさがゼロに近いと仮定すると、同じ仮定が語彙のすべての単語に適用されます。 これは、すべての異なる単語の埋め込み間の内積がゼロに近いことを示しますが、これはありそうもないことです。 したがって、埋め込みベクトル間の角度の正弦は0に近いか、次のようになります。

(6)  

これは、2つの埋め込みベクトル間の角度が直交する傾向がある、または直交していることを意味します。

4.2. 追加対。 平均

まず、2つのベクトルの合計の視覚的表現は、あるベクトルのテールを別のベクトルのヘッドに配置した場合に得られるベクトルです。 2つのベクトルの平均は同じベクトルであり、。を掛けただけです。 その観点から、2つのベクトルの合計と平均の間に大きな違いはありませんが、平均ベクトルの大きさは2分の1です。 したがって、ベクトル成分が小さいため、合計よりも平均を優先できます。

 

4.3. 埋め込みベクトルの組み合わせ

「猫」という単語とその直交ベクトル、およびの例に戻りましょう。 語彙に「キティ」という言葉があるとしましょう。 また、「猫」と「子猫」という単語が同義語であり、非常によく似たコンテキストで表示されることを学習した完全なword2vecモデルがあると仮定します。 これは、それらの単語の単語埋め込みと、の間が高いコサイン類似性であることを意味します。

ここで、余弦の類似度が1で、ベクトル間の角度がである完全なシナリオを想定します。 word2vecの単語の埋め込みのみを使用し、コンテキストの埋め込みは破棄されるという慣習があることはわかっています。さらに、コンテキストベクトルが単語の埋め込みと同じ類似性に従うという証拠はありません。 単語の埋め込みにコンテキスト埋め込みを追加すると、次の状況が下の画像に表示される可能性があります。

との間の角度はであり、これらのベクトルは対応するコンテキストベクトルに直交しています。 加算後、合計間の角度がもはやないことがわかります。

最後に、完全な条件であっても、埋め込みベクトルにコンテキストベクトルを追加すると、埋め込み空間で学習した意味表現が混乱する可能性があることを意味します。 連結についても同様の結論を下すことができます。

4.4. 実験

コンテキストベクトルの追加が埋め込みベクトルの学習された意味関係を混乱させることは明らかですが、いくつかの実験はまさにこのアプローチを使用して行われました。 この操作により、埋め込みスペースに追加の知識が導入され、パフォーマンスがわずかに向上することが判明しました。

たとえば、人間の判断の類似性とコサイン類似性の組み合わせと埋め込みの組み合わせを比較すると、単語の埋め込みのみを使用すると、1つのベクトルを使用するとより良い類似性が予測され、別のベクトルを使用するとより良い関連性が得られることが示されています。 たとえば、最初のアプローチを使用した「家」という単語の場合、最も類似した単語は「邸宅」、「農家」、「コテージ」でしたが、2番目のアプローチを使用した場合、最も関連する単語は「納屋」、「住居」、「住居」でした。 「不動産」と「キッチン」。

さらに、GloVeメソッドの作成者は、作業で単語とコンテキストの埋め込みの合計を使用し、パフォーマンスをわずかに向上させました。

5. 結論

まず、この記事の目的は、1つの文の単語ベクトルを結合することではなく、1つの特定の単語のベクトル間の操作について説明することであることを明確にする必要があります。 文のベクトル表現を取得する方法は、この記事で説明されています。

この記事では、word2vecメソッドの背後にあるロジックとそのベクトルについて詳しく説明し、単語ベクトルの最適なソリューションについて説明しました。 具体的には、元のword2vecの論文では、著者は単語の埋め込みのみを単語のベクトル表現として使用し、コンテキストベクトルを破棄していました。

対照的に、いくつかの実験は、これらのベクトルの異なる組み合わせを使用して行われました。 その結果、これらのベクトル間の合計が追加の知識を導入できることがわかりましたが、常により良い結果が得られるとは限りません。 また、幾何学的な解釈から、夏のベクトルと平均化されたベクトルはほぼ同じように動作することがわかります。

さらに、ベクトル間で連結演算を使用する証拠はありません。 最後に、コンテキストベクトルを使用せずに単語の埋め込みのみを使用することをお勧めします。これはよく知られた方法であり、コンテキストベクトルではそれほど良い結果が得られないためです。 ただし、調査目的では、合計または平均を調べる価値がある場合があります。