単語の埋め込み

単語の埋め込み（たんごのうめこみ、）とは、自然言語処理（NLP）における一連の言語モデリングおよび特徴学習手法の総称であり、単語や語句が実ベクトル空間上に位置づけられる。単語の数だけの次元を持つ空間から、はるかに低い次元を持つ連続ベクトル空間へと数学的な埋め込みが行われる。

このマッピングを生成する方法として、ニューラルネットワーク、単語共起行列の次元削減、確率モデル、説明可能な知識に基づく方法、単語が現れる文脈における用語での明示的な表現、などがある。

単語と句の埋め込みを入力表現として用いると、構文解析や感情分析などのNLPタスクのパフォーマンスを向上させることが示されている。

 技術の発展 
言語学では、単語の埋め込みは、分布意味論の研究分野で議論された。 言語データの大規模なサンプルの分布特性に基づいて、言語項目間の意味的類似性を定量化および分類することを目的としている。 "a word is characterized by the company it keeps"（単語はその周辺によって特徴付けられる）という根本的な考え方は、 ファースによって広められた Reprinted in 。 

単語をベクトルとして表現する手法は、1960年代における情報検索用のベクトル空間モデルの開発が元になっている。特異値分解を使用して次元数を削減することにより、1980年代後半に潜在的意味分析が導入された。2000年にベンジオらが一連の論文で提供した「ニューラル確率言語モデル」は、「単語の分散表現を学習する」ことにより、コンテキスト内の単語表現の高次元性を低減した。単語の埋め込みには、2つの異なるスタイルがある。1つは、単語が共起単語のベクトルとして表現され、もう1つは、単語が出現する言語コンテキストのベクトルとして表現される。RoweisとSaulは Science で「ローカル線形埋め込み」（LLE）を使用して高次元データ構造の表現を発見する方法を示した。この分野は徐々に発展し、2010 年以降に花開いた。ベクトルの品質とモデルのトレーニング速度に重要な進歩があったことも一因となった。

多くの研究チームが単語の埋め込みに取り組んでいる。2013年、トマーシュ・ミコロフ率いるGoogleのチームがword2vecという単語埋め込みツールキットを開発した。word2vecを用いると、従来法よりも高速にベクトル空間モデルを訓練することができるword2vec。ほとんどの新しい単語埋め込み技術は、従来のn-gramモデルや教師なし学習ではなく、ニューラルネットワークのアーキテクチャに基づいて作られている。

 多義性と同義性 
単語の埋め込み（一般に単語ベクトル空間モデル）の制限事項として、複数の意味を持つ単語が単一の表現（意味空間の単一のベクトル）に統合されることが大きい。つまり、多義語と同義語は適切に処理されない。たとえば、「昨日試したクラブは最高でした！」という文章では、「クラブ」という語が「アメリカンクラブハウスサンド」、「野球クラブ」、「クラブハウス」、「ゴルフクラブ」などのうちどれと関連していのるか明確ではない。単語ごとの複数の意味を異なるベクトル（マルチセンス埋め込み）に対応させる必要性から、シングルセンス埋め込みをマルチセンス埋め込みに分割する場合もある。

マルチセンスの埋め込みを生成するほとんどのアプローチは、単語意味表現に注目して教師なし学習と知識ベースとに分類することができる。word2vecスキップグラムに基づく Multi-Sense Skip-Gram（MSSG）では、単語センスの識別と埋め込みを同時に実行し、各単語の特定の数のセンスを想定しながら、トレーニング時間を改善する。
Non-Parametric Multi-Sense Skip-Gram（NP-MSSG）では、この数が各ワードによって異なる。
Most Suitable Sense Annotation（MSSA）では語彙データベース（WordNet、ConceptNet、BabelNetなど）・単語の埋め込み・単語の意味の曖昧性といった事前知識を組み合わせており、教師なしおよび知識ベースのアプローチによって、事前に定義されたのスライディングウィンドウのコンテキストを考慮して単語の意味にラベル付けする。
一旦単語の意味が明確になると、標準の単語埋め込み手法で使用できるため、マルチセンス埋め込みが生成される。
MSSAのアーキテクチャを用いることで、明確化と注釈のプロセスを自己改善的に繰り返し実行できる。

マルチセンス埋め込みを使用すると、品詞タグ付け、意味関係の識別、意味関連など、いくつかのNLPタスクのパフォーマンスが向上することが知られている。
ただし、名前付きエンティティの認識と感情分析を伴うタスクでは、複数のベクトル表現の恩恵があまり受けられない。

 手法 
 対照学習 
対照学習（）はアンカー-正例/負例間の距離最適化に基づく機械学習の総称である"contrastive methods build representations by reducing the distance between ... positive pairs ... and increasing the distance between inputs not known to be related (negative pairs)" Kiani. (2022). Joint Embedding Self-Supervised Learning in the Kernel Regime."contrastive learning ... pull together an anchor and a “positive” sample in embedding space, and push apart the anchor from many “negative” samples." Khosla. (2020). Supervised Contrastive Learning.。

対照学習ではまず基準となるサンプル（アンカー）、アンカーと同じクラスに属するサンプル（正例）および異なるクラスに属するサンプル（負例）を用意する。次にエンコーダによってサンプル/正例/負例を埋め込み空間へ投射し、この空間内でアンカー-正例間距離とアンカー-負例間距離を測定する。同じクラスに属する前者の距離は小さく・異なるクラスに属する後者の距離は大きくあるべきであるため、これを損失としてエンコーダを学習する。充分な学習をすることでサンプル間の距離関係を表現した埋め込み空間が得られる（c.f 距離学習）。

ラベル無しに正例/負例を用意すれば自己教師あり学習として、教師ラベルに基づいて正例/負例を用意すれば教師あり学習として学習される"adapting contrastive learning to the fully supervised setting ... These positives are drawn from samples of the same class as the anchor" Khosla. (2020). Supervised Contrastive Learning.。

対照学習を用いることで単語間の関係を距離で表現した埋め込み空間が学習され、推論時にはエンコーダを通じて単語の埋め込みを得ることができる。

 生物学的配列 
生物学的配列（DNA、RNA、タンパク質など）における n-gramの単語埋め込みは、AsgariとMofradにより提案された。バイオベクター（BioVec）は、生物学的配列の総称であり、タンパク質（アミノ酸配列）のタンパク質ベクター（ProtVec）や遺伝子配列の遺伝子ベクター（GeneVec）を指す。この表現は、プロテオーム解析やゲノミクスに対するディープラーニングの応用の場で広く用いられる。AsgariとMofradが提示した結果は、BioVectorsが基盤となる生化学的および生物物理学的解釈に関して生物学的配列を特徴付けられることを示唆している。

 思考ベクトル 
思考ベクトルは、単語の埋め込みを文章全体またはドキュメント全体にまで拡張したもの。これらが機械翻訳の品質を向上させることを期待している研究者もいる。

 ソフトウェア 
単語埋め込みをトレーニングおよび使用するためのソフトウェアとして、Tomas Mikolov のWord2vec、スタンフォード大学の、AllenNLPの、、Gensim、Indra、Deeplearning4j などがある。
主成分分析 （PCA）とT-Distributed Stochastic Neighbor Embedding（t-SNE）は、ともに、単語ベクトル空間の次元を削減して単語の埋め込みとクラスターを視覚化するのに用いられる。

 応用例 
fastTextは、オンラインで利用可能な Sketch Engine において、テキストコーパスの単語の埋め込みを計算するためにも使用される。

 脚注 

 関連項目 

 潜在意味解析 

主な単語埋め込みの実装・ソフトウェアなど
 - スタンフォード大学の単語分散表現モデル 
 word2vec -  GoogleのTomas Mikolovらが開発した単語分散表現モデル
  - Facebookが開発した単語分散表現モデル 
 BERT -  Googleの言語モデル 
 - AllenNLP の単語埋め込み手法
 Gensim - fastTextやword2vecなどを実装したPythonの自然言語処理ライブラリ

Category:計算言語学
Category:自然言語処理
Category:人工ニューラルネットワーク
Category:言語モデル