How to embrace embedding?

ベクトル意味論

単語の意味は、言語学の観点からいくつかの側面に細分化できます。

類義語:couch/sofa、car/automobile

対義語:long/short、big/little

単語類似度:cat と dog は類義語ではありませんが、互いに類似しています。

単語関連度:単語同士は関連していても、類似しているとは限りません。coffee と cup は類似していませんが、明らかに関連しています。

意味領域 / トピックモデル LDA:特定の語が同じ意味領域に属し、互いに強い相関を持つ場合があります。たとえば restaurant(waiter、menu、plate、food、chef)、house(door、roof、kitchen、family、bed)などです。

意味フレームとロール:あるイベントの同じロールに属する単語があります。buy、sell、pay はいずれも purchase(購入)というイベントの異なるロールに属します。

上位語 / 下位語:ある単語の親にあたる単語を上位語と呼び、逆を下位語と呼びます。vehicle/car、mammal/dog、fruit/mango などです。

含意、感情、センチメント、意見:ポジティブな感情語とネガティブな感情語(happy/sad)、ポジティブな評価語とネガティブな評価語(great、love / terrible、hate)があります。

理想的なベクトル表現は、上記の単語の意味のすべてのレベルを記述できることが望ましいですが、現実的には困難です。現在、単語の意味を表現するのに最も成功しているモデルはベクトル意味論であり、単語埋め込み技術の基礎となっています。ベクトル意味論は 2 つの要素から構成されます。

分布仮説(すべての意味ベクトルの理論的基盤):類似した文脈に出現する単語は類似した意味を持つ傾向があるという仮説であり、テキスト中の分布によって単語を定義します。

単語 w の意味をベクトル、すなわち N 次元意味空間内の点として定義し、テキスト中の分布から直接学習します。
ベクトルを使って単語の意味を表現することで、単語類似度の計算が容易になります。

共起行列と基本的なベクトル意味論モデル

ベクトル意味論モデルは通常、共起行列に基づいて構築されます。共起行列は要素の共起規則を表すものであり、前述の分布仮説の具体的な実装です。要素の種類に応じて、主に 2 つの共起行列があります。単語文書行列(主に情報検索に使用)と単語単語行列(主に単語埋め込みに使用)です。

■ 単語文書行列と TF-IDF モデル

単語文書行列:各行は語彙内の単語、各列は文書集合内の文書を表し、各セルの値はその単語(行)がその文書(列)に出現する回数を示します。文書は列ベクトルとして表現でき、2 つの文書に共通して出現する単語が多いほど、それらの文書は類似していると判断できます(スポーツ関連の文書はすべて類似した項目を持ちます)。

単語文書行列は情報検索で広く使用されており、類似文書の発見に役立ちますが、基本的な単語文書行列には問題があります。共起回数を直接使用すると、頻繁に出現する無意味な語(ストップワード)に大きな重みが与えられてしまうため、TF-IDF モデルを導入する必要があります。

TF-IDF(単語頻度・逆文書頻度)は NLP の基本的な重み付け技術であり、情報検索における主流の共起行列重み付け技術です。ある単語が特定の文書内で高い頻度(TF)で出現し、他の文書ではほとんど出現しない場合、その単語は優れたカテゴリ分類能力を持つと見なします。公式は以下の通りです。

これにより、単語文書行列を TF-IDF 重み付け行列に改良し、非常に頻繁に出現する無意味な語(good など)を抑制できます。

実践的な補足:コーパス全体の TF-IDF 値を計算するには、まず単語文書行列を統計的に構築してから TF-IDF 重み付け行列を計算する方法が直感的です。

■ 単語単語行列と PMI モデル

単語単語行列:単語文書行列と似ていますが、各列が文脈語になり、各セルは対象語(行)と文脈語(列)がコーパス内で共起する回数を表します。文脈は通常、対象語の周囲のウィンドウとして定義されます。単語単語行列はカウントベースの単語埋め込みの計算によく使用され、統語情報・品詞情報(小さな文脈ウィンドウ)や意味情報(大きな文脈ウィンドウ)を捉えられます。

点相互情報量(PMI)は NLP で最も重要な基本概念の一つです。2 つの単語が強く関連付けられているかどうかを効果的に表現し、コーパス内で 2 つの単語が共起する回数を評価します。これは事前の期待値に対してどれくらい多く共起しているかを測定するものです。

実務では Positive PMI(PPMI)がよく使用されます。

単語単語共起行列は以下の公式を使って PPMI 行列に変換できます。

最初のステップは、単語の共起回数を以下の同時確率に変換することです。


2 番目のステップは PPMI 値の計算です。PPMI 行列は単語間の関連性をうまく記述できます。

基本的な PPMI の公式には問題があり、低頻度語に大きな PMI 値を与えてしまいます(分母が小さいほど値が大きくなります)。一般的な対処法として、p(c) の計算ロジックを調整して低頻度語間の確率の差を縮小します。ここで α=0.75 です。

関連する考察:ある数値の集合に対して、softmax は大きな値をさらに大きくするのに対し、p(c) は通常の確率計算であり、大小の差を縮める働きがあります。後述のネガティブサンプリング技術もこれと同様のアプローチを使用しています。

単語単語共起行列から生成されるベクトルにはいくつかの問題があります。高次元でスパースであり、モデルが堅牢でないことです。シンプルな対処法として、共起行列に特異値分解(SVD)を適用して低次元の密なベクトルを得る方法があります。

実践的な補足:コーパス内の各単語ペアの PMI 値を計算するには、まず単語単語行列を統計的に構築し、同時確率行列に変換してから PPMI 行列を計算する方法が直感的です。ベクトルとして使用したい場合は、事前に SVD で次元削減を行います。

単語埋め込み

TF-IDF や PPMI に基づく単語ベクトルは長くスパースであり、保存や計算の面で不利です。現在よく使用されている単語ベクトルは、短くて密な単語埋め込み(Word Embeddings)です。

短い(長さ 50〜1000)
密(ほとんどの要素が非ゼロ)
単語埋め込みはベクトル意味論の理論的基盤である分布仮説に基づいています。単語の意味は、その近傍に頻繁に出現する単語によって与えられます。

類似性をベクトル自体にエンコードできるように学習する必要があります。単語埋め込みのエンコード目標は単語類似度をエンコードすることであり、すべての最適化目標と実際の使用方法は類似度の周りに構築されています。

ここで 2 つの用語を明確にします。

分布的表現(Distributional representations):分布仮説の概念を表す表現です。対照的なのは、WordNet のように独立した単語から関係を直接構築するアプローチです。

分散的表現(Distributed representations):単語がベクトルで表現され、単語の意味が各次元に分散して保持されることを表します。対照的なのは one-hot ベクトルであり、単一の離散値しか持ちません。

Word2vec

最も代表的な単語埋め込みである Word2vec(Mikolov ら、2013 年)は、単語ベクトルを計算するためのフレームワークです。主な考え方は以下の通りです。

大規模なテキストコーパスを準備する。
語彙内の各単語を固定長のベクトルで表現する。
コーパス内のすべての単語を位置 t で走査し、中心語を c、文脈語を o とする。
単語ベクトルの類似度に基づいて条件付き確率を計算する。
この条件付き確率を最大化するように単語ベクトルを継続的に調整する。

■ 目的関数

Word2vec の目的関数は負の対数尤度です。

訓練の目標は目的関数を最小化することであり、条件付き確率はコサイン類似度と softmax を使って確率分布に変換されます。

ここで o/c は語彙内のインデックスであり、c に基づいて o を予測する確率が Word2vec の予測関数です。

■ Word2vec の訓練

Word2vec モデルに含まれる学習可能なパラメータは以下の通りです。

Word2vec の訓練にはすべてのベクトルの勾配の計算が必要です。

偏導関数を計算するために、まず元の式を 2 つの部分に分解します。

したがって、組み合わせて、単語 o と単語 c の文脈確率の中心ベクトルに関する偏導関数が得られます。

最適化の目標は、実際のベクトルをすべての可能な文脈ベクトルの期待ベクトルに近づけることであることがわかります。

実践的な訓練のためのいくつかの提案:

最適化を容易にするため、各単語に 2 つのベクトルを対応させ、最終的に 2 つのベクトルの平均を最終的な単語ベクトルとして使用します。

元の論文には 2 つのモデルがあります。

Skip-gram(sg):中心語を使用して周囲の単語を予測します。sg は CBOW よりも低頻度語をうまく処理できます。

Continuous Bag of Words(CBOW):周囲の単語を使用して中心語を予測します。CBOW は sg よりも訓練が速いです。

softmax の分母部分の正規化係数の計算は非常に時間がかかります。論文ではネガティブサンプリングが使用されており、ロジスティック回帰を使って二値分類器を訓練し、実際の(中心語、文脈語)の単語ペアと、ランダムサンプリングで構築された偽の(中心語、ランダムな非文脈語)の単語ペアを区別します。公式は以下の通りです。

以前と同じ negation 形式に変更します。

k 個のネガティブサンプリングされた単語は確率分布に従います(Z は正規化を指します)。単語頻度確率分布を修正する目的は、低頻度語がサンプリングされる可能性を高めることであり、PMI の章で説明した最適化技術と似ています。

実践的な補足:Word2vec を訓練するには、まずコーパスから有効な (c, o) とネガティブサンプリングされた (c, random) を含むすべての単語ペアを準備し、コサイン類似度に基づいて損失関数を計算し、SGD でパラメータを最適化します。最後に中心語ベクトルと文脈語ベクトルの平均を最終的な埋め込みとします。

その他の改良された埋め込み

■ GloVe:カウントベース + 予測ベース

単語埋め込みの計算方法はカウントベース(PMI 行列)と予測ベース(Word2vec)に分類できます。

両者にはそれぞれ利点があります。カウントベースはグローバルな統計情報を十分に活用し、訓練が速いのに対し、予測ベースは大規模なデータの処理に優れ、単語類似度以外のより多くのパターンを捉えられます。

実際、両者には強い内的相関があります。結局、理論的基盤は同じ分布仮説です。Skip-gram モデルの中心語行列 W と文脈語行列 C の内積後の行列は、PMI 行列からネガティブサンプル数 k に関連する定数を引いたものに因数分解できることが示されています(Levy and Goldberg、2014 年)。

Stanford が提案した GloVe ベクトルは、カウントベースと予測ベースの手法の利点を組み合わせています。核心となる考え方は、共起条件付き確率の比が単語の類似性をより顕著に反映できるということです。

共起条件付き確率の比は、単語ベクトル空間の線形表現として表せます。

最終的な損失関数は以下の通りです。

関連する考察:相互比較が存在するシナリオでは、具体的な値自体にはあまり意味がなく、比較の比率の方が統計的に有意であることが多いです。GloVe の核心の考え方はこれに基づいており、非常に強力なベースラインである TF-IDF の改良版も、ある単語のあるカテゴリに対する重要度を統計的に処理する特徴抽出アルゴリズム NBSVM も同様です。

■ FastText:サブワード埋め込み

以前の埋め込み生成手法は単語の屈曲変化を無視しており、各単語を独立したベクトルとして扱うため、OOV(語彙外語)への対応が困難でした。FastText は Skip-gram の改良版で、サブワード情報を活用します。各単語は文字 n-gram の Bag として表現され、最終的な単語ベクトルは各 gram の埋め込みの合計となります。

たとえば n=3 の場合、単語は(単語自体を加えたもの)として表現され、< と > はそれぞれ単語の先頭と末尾を表し、部分系列の位置を区別するために使用されます。n-gram の集合では、一般的に 3〜6 の n-gram が使用されます。ここで her は tri-gram とは異なることに注意してください。FastText の利点は、訓練速度が非常に速く、Word2vec よりも性能が良いことです。同時に OOV 語の単語ベクトルも計算できるため、プロジェクト立ち上げ時の最初の候補となる単語ベクトルとして使用できます。

埋め込みの評価
■ 内在的評価と外延的評価

単語ベクトルの評価は内在的評価(intrinsic)と外延的評価(extrinsic)に分けられます。外延的評価はさまざまな下流タスクに適用して実際の効果を確認する必要があります。使用方法は、固定された学習済みモデル、ファインチューニング済みの学習済みモデル、マルチチャネル、連結などがあり、詳細は TextCNN の論文を参照してください。内在的評価にはいくつかの種類があります。

(1) アナロジー:直感的な意味アナロジーによる評価。「a is to b, as x is to y」を満たす x を見つけます。

(2) 可視化による評価:一般的に使用される手法は PCA と t-SNE(非線形射影)です。

PCA と t-SNE の効果の比較:


(3) 分類:学習済みの埋め込みをクラスタリングし、標準的な分類セットまたは手動検証に基づいて、各クラスターのカテゴリの良し悪しを確認します。

■ 学習済み埋め込みが有用な場合

簡潔に言えば、特定のタスクのための訓練用コーパスが比較的不足している場合に有用です。以下の通りです。

非常に有用:タグ付け、構文解析、テキスト分類
あまり有用でない:機械翻訳
基本的に役に立たない:言語モデル
文埋め込み / エンコーダー
文埋め込み(Sentence Embeddings)は単語埋め込みとよく似ており、訓練手法は大別すると、純粋な統計に基づく Bag-of-Words モデルと、文次元の分布仮説に基づく NN モデルに分けられます。文表現の役割は以下の通りです。

文分類:テキスト分類の特徴入力。
パラフレーズ識別:段落が類似しているかどうかを判定。
意味的類似度:2 つの文の意味が類似しているかどうか。
自然言語推論:含意 / 矛盾 / 中立。
検索:文ベクトルに基づく類似度検索。

ベースライン Bag-of-Words モデル

文埋め込みのベースラインモデルは、前述の TF-IDF 重み付け行列と同様の統計的な Bag-of-Words モデルや、単語ベクトルに基づく Bag-of-Words モデルが使用できます。単語ベクトルの重み付け方法は一般的に次の規則に従います。より一般的な単語ほど重みが小さくなります。ここで SIF(Smooth Inverse Frequency)を紹介します。シンプルだが効果的な重み付き Bag-of-Words モデルで、シンプルな RNN/CNN モデルを超える性能を発揮します。SIF の計算は 2 つのステップに分けられます。

文中の各単語ベクトルに重みを掛けます。ここで a は定数(通常 0.0001)、p(w) はグローバルコーパスにおけるその単語の単語頻度であり、出現頻度が高いほど重みが小さくなります。
文ベクトル行列の第一主成分 u を計算し、各文ベクトルから u 上の射影を引きます(PCA に類似)。
完全なアルゴリズムフローは以下の通りです。


SIF は文の意味とあまり関連しない高頻度語や統語構造を除去し、文の意味情報に最も寄与する部分を保持します。

Skip-Thought

Skip-Thought Vector は Word2vec / 言語モデルと同様の考え方を使用し、文埋め込みをモデルの副産物として生成します。3 つの連続した文を表すトリプルが与えられます。モデルは Encoder-Decoder フレームワークを使用します。訓練時にエンコーダーで文をエンコードし、2 つのデコーダーを使って前の文と次の文をそれぞれ生成します。下図の通りです。

デコーダーは与えられた条件(文表現)のもとでの言語モデルであり、各単語の確率は以下のようになります。

Quick-Thought

Quick-Thought は Skip-Thought の改良版です。上記の「文が与えられたときに前の文と次の文を生成する」というタスクを分類タスクとして再定義します。デコーダーが分類器として機能し、候補文の集合から正しい前 / 次の文を選択します。Skip-Thought は生成モデルと理解できます。

Quick-Thought は分類モデルです。

Skip-Thought は目標文の表層構造(単語の具体的な組み合わせ)を再構築するように訓練されるため、モデルは文のセマンティクスだけでなく、セマンティクスとは無関係な文の具体的な構成まで学習してしまいます。同じセマンティクスの文でも多くの異なる方法で表現でき、表層構造が完全に異なることさえあります。そのため、このような文に対して Skip-Thought モデルは非類似と判断してしまいます。

Quick-Thought は損失関数を文のベクトル化後の意味空間で直接定義しており、Skip-Thought が生データ空間で直接定義するよりも優れており、最適化目標がより焦点を絞っています。損失関数は Skip-gram モデルに似ており、ネガティブサンプリング後にコサイン類似度を使って類似性を直接定義し、softmax で正規化しますが、多クラス分類となります。

上位の分類器の簡素化は、下位のエンコーダーがセマンティクスに関連する表現をより多く学習できるようにするためです。類似性をベクトル自体にエンコードできるように学習する必要があります。Quick-Thought が汎用的な文ベクトル学習フレームワークであることが明確にわかります。原文の下位エンコーダーで使用されている GRU は、Transformer など他のものに置き換えて表現力を高めることもできます。実際の予測段階では、2 つの下位エンコーダーの出力を連結して最終的な文ベクトル表現とします。

実務でも Quick-Thought はよく使用されます。3 つの RNN モジュールを訓練する必要がある Skip-Thought Vector と比べて、訓練速度がはるかに速いという利点もあるためです。具体的な実装の詳細は以下の通りです。

batch_size=400:1 バッチあたり 400 個の連続文。
context_size=3:与えられた文に対して前の文と次の文を類似していると見なします(文次元の分布仮説)。
ネガティブサンプリング:同じバッチ内で、文脈語以外はすべてネガティブ例として使用します。実験により、このようなシンプルな戦略は他の一般的なランダムネガティブサンプリング戦略と同様の効果があることが証明されています。
単語ベクトルまたはエンコーダー全体を事前学習して訓練を高速化できます。
その他の文埋め込み

上記で紹介した教師なしの汎用文ベクトル訓練手法は産業界で比較的容易に実装できます。学界には教師あり学習(InferSent)やマルチタスク学習(GenSen)に基づく文ベクトルモデルもあります。性能は向上する可能性がありますが、訓練データの入手が容易ではないため、一般的に転移学習を活用して実務に応用できます。ここでは比較的代表的なものを簡単に紹介します。

■ InferSent(Facebook)

InferSent は教師ありのアプローチを使用して、自然言語推論(NLI)データセットで文埋め込みを訓練します。論文では、NLI データセットで訓練された文ベクトルが他の NLP タスクへの転移にも適していることを実証しています。

NLI タスクでは、各サンプルは 3 つの要素で構成されます。u は前提(premise)、v は仮説(hypothesis)、l はクラスラベル(含意 1、矛盾 2、中立 3)を表します。各サンプルの u と v の位置は等価ではありません。InferSent のネットワーク構造は以下の通りです。

文エンコーダーは具体的な必要に応じて選択でき、下位のエンコーダーは共有されています。前提と仮説を入力としてそれぞれ文表現 u と v を出力し、マッチングモデルで非常に一般的な 3 つの方法を使用して両者の関係を抽出します。ベクトル連結 (u, v)、要素ごとの積 u*v、および要素ごとの差分の絶対値 |u-v| です。最後に三値分類器で l の対応する値を予測します。

■ GenSen(Microsoft)

GenSen の核心の考え方は、さまざまなタスクに汎化できるように、同じ文の複数の側面をエンコードする必要があるということです。簡潔に言えば、モデルは複数のタスクと複数のデータソースで同時に訓練されますが、同じ文埋め込みを共有します。タスクとデータセットは以下の通りです。

Skip-Thought(前 / 次の文の予測) - BookCorpus
ニューラル機械翻訳(NMT) - En-Fr(WMT14)+ En-De(WMT15)
自然言語推論(NLI) - SNLI + MultiNLI
構文解析 - PTB + 1-billion word
基本モデルは Skip-Thought Vector に似ており、エンコーダー部分には速度向上のために Bi-GRU を使用し、デコーダー部分は完全に同じです。

SemAxis:類義語拡張
事前学習済みの単語ベクトルや文ベクトルを得た後、直接的な応用の一つはベクトル類似度を通じて類義語や類義文を見つけることです。ここでシンプルで効果的な類義語拡張手法 SemAxis(ACL 2018)を紹介します。

事前学習済み単語ベクトルを準備する。
単語ベクトル空間で、意味シード単語ベクトルを通じて意味軸ベクトルを計算する。これはポジティブな単語とネガティブな単語を表します。


単語ベクトル空間で、他の単語のベクトルを計算された意味軸上に射影する。

実務で感情語を拡張する効果は以下の通りです。丸で囲まれているのがシード語で、その他が拡張された語です。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.