embedding algorithm

 【 embeddingは行列の因数分解として解釈できる 】

mikalovらの「Word2Vec」の論文はいくつかのバージョンがあるのですが、その計算アルゴリズムは、2013年に、Skip−gramとnegative sampling の手法としてまとめられます。

ただ、2014年には、語の埋め込みのアルゴリズムの背後には、もっと深い構造があることが発見されます。それは、語の埋め込みは、ある行列の因数分解として解釈できるという発見です。

対象の言語の語彙Dを辞書式にアルファベット順に並べます。この並びでi番目の語をw_i とします。以前見たように、このi番目の語に、i番目のエントリーだけが1で残りのエントリーはすべて0の1−hotベクトルに対応付けることができます。

これは、Dから実数Rへの関数ですからR^Dのベクトル空間を考えたことになります。これもある意味、DからR^Dへの埋め込みですが、こうしたベクトル表示では、二つの語のベクトルの内積は0になり、言語の意味をうまく表現できないことは、前回見てきた通りです。

そこで、次のような|D|行 ×|D|列の行列Mを考えます(|D|は、Dの大きさです)。

Mの i行 j列の要素は、語w_iと語w_j に対応して、この二つの語がコーパス上で近くに出現する確率を表すものとします。Dが、例えば、3万語からなるとすれば、この行列Mは、3万行×3万列からなる巨大な行列です。

この行列Mが、|D|と比べるとはるかにちいさなdについて、|𝐷|×𝑑のサイズの行列𝜎′ と、𝑑×|𝐷| のサイズの行列𝜎の積の形で M=𝜎′𝜎 と因数分解できたとします。( 行列𝜎′𝜎のサイズが、|D|行 ×|D|列となることを確認ください。)

この時、行列𝜎のi列は、語w_i のd次元のembedding を与えると考えることができます。(行列𝜎のサイズは、𝑑×|𝐷| ですので、どんな語w_i についても、i列目は存在します。また、i列目の列ベクトルの次元はdです。)

Deep Learning の最適化の手順に則して語れば、Mが与えられた時、‖𝑀 − 𝜎′𝜎‖が最小となるような𝜎′と𝜎を見つける問題として、embedding のアルゴリズムを定式化できます。


--------------------------------

ショートムービー「 embedding algorithm 」を公開しました。
https://youtu.be/p_8uAQnJoXI?list=PLQIrJ0f9gMcOJYKeUN_8q2K-yxtTfbIoB

「 embedding algorithm 」のpdf資料
https://drive.google.com/file/d/1GBeD5E-mZUuXhsCmN5TkhNSsd41UAAiv/view?usp=sharing

blog 「 embeddingは行列の因数分解として解釈できる 」
https://maruyama097.blogspot.com/2024/02/embedding-algorithm.html

「言語の意味の数学的構造」まとめページ
https://www.marulabo.net/docs/embedding-dnn/

ショートムービーの再生リスト
https://www.youtube.com/playlist?list=PLQIrJ0f9gMcOJYKeUN_8q2K-yxtTfbIoB 

コメント

このブログの人気の投稿

マルレク・ネット「エントロピーと情報理論」公開しました。

初めにことばありき

人間は、善と悪との重ね合わせというモデルの失敗について