論文読み. 3 Word Representations via Gaussian Embedding (ICLR 2015)

## はじめに
　`Word Representations via Gaussian Embedding`という論文を読んだのでまとめていきます。

## 1. 対象とするトピック
### 1.1 キーワード
　`Gaussian Embedding` [論文](https://arxiv.org/pdf/1412.6623.pdf)

### 1.2 経緯
　近年、入力を低次元の空間に埋め込むことで空間における類似度を測る研究が増加しています。
例: ` collaborative filtering`, `word semantics and
language modeling`
　これらの研究では入力を一点で表現し空間内に埋め込んでいます。しかしこの方法では、入力同士の包含関係や意味の広がりを表現できません。一方で、点ではなく確率分布によって表すことで、下図のような関係性を捉えることができます。
<img width="678" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/c0001786-b4d3-a36a-5a3a-d11f89338ec6.png">
　この論文では単語を空間上にガウス分布として埋め込むことで上図のような関係を捉えることが目的となっています。

## 2. 理論
### 2.1 モデル
　モデルについて説明します。まず、各単語を空間上でガウス分布として埋め込みます。
$$
w_i = N(x;\mu_i,\sum_i)
$$

　平均が単語分散表現での意味ベクトルに相当し、分散共分散行列が空間上での意味の広がりを表します。似たような意味をもつ単語同士でこれらのパラメータが近づくようにします。そのために、類似度を表すエネルギー関数E(x,y)を導入します。エネルギー関数では、類似度の高い入力から得る値が類似度の低い入力から得る値よりも大きくなります。そして、この関数を用いて以下のように損失関数を定義します。
<img width="348" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/9fd8be3b-622f-97a3-abde-7ce5c79f0723.png">
 この損失関数はRank-SVM等で用いられている`max-margin ranking loss`と言います。以降ではこの損失関数を計算するために必要なエネルギー関数等について考察します。

### 2.2 WARMUP: EMPIRICAL COVARIANCES
　共分散は以下のように定義されています。
<img width="696" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/d3a62f4d-9145-2880-485e-a995516d0595.png">

### 2.3 ENERGY-BASED LEARNING OF GAUSSIANS
　エネルギー関数を用いてガウス分布へ埋め込む関数を学習します。

#### 2.3.1 SYMMETRIC SIMILARITY: EXPECTED LIKELIHOOD OR PROBABILITY PRODUCT KERNEL
　ガウス分布間での類似度の測り方を考察していきます。先に対象な類似度について考えます。この時、まず思いつくのは平均同士での内積計算です。これは一応計算可能である程度分布同士の類似度を表現できます。しかし、分散の情報を無視しているため実質的には点で埋め込む場合の類似度計算と等価になってしまいます。これではわざわざ分布の空間に埋め込んだ意味がなくなってしまいます。そこで別の方法を考えます。
　次の方法は分布同士での内積計算です。一般には二つの連続関数
<img width="300" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/f4a57a27-2993-8e39-3b32-2ec4f0cc7703.png">
に対し以下のように定義されます。
<img width="300" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/47f4602f-f506-b5d0-61f8-a5a68c8f6bf5.png">
　二つの独立したガウス分布の場合は、内積が以下の式で計算されます。
<img width="488" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/dc608067-0279-0517-98ec-a32792c40c5b.png">
　実際の学習では

- `ranking loss`にとって都合の良いように「差」ではなく「比」を計算する必要があること
- 計算結果のオーダーを下げて扱いやすくすること

を目的に上記の対数を利用していました。d次元の場合は対数が以下の式で表されます。
<img width="622" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/fcd93419-1148-d4f1-49f3-a1160e18a39c.png">

　平均と共分散による勾配はそれぞれ以下の式で表されます。
<img width="500" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/553c40b7-d3f0-38a6-d24a-2e7a3e5a18b5.png">

#### 2.3.2 ASYMMETRIC SIMILARITY: KL DIVERGENCE
　前節で、分布同士の対象な類似度を計算する手法について考察しました。本節では、非対称な類似度を計算する手法について考察します。非対称な類似度とは、特定の構造が保持されるような類似度です。特定の構造の例としては、下図の`WordNet`に示されるような含意関係が挙げられます。
<img width="672" alt="スクリーンショット 2020-04-03 15.06.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/0c39b246-459a-92c2-5aeb-df61bde749a0.png">
　論文では`KL-divergence`を用いて階層構造を保持しています。エネルギー関数は以下のように定義されています。
<img width="562" alt="１.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/11cb0782-72fd-61dc-9626-7fa7133a2c9c.png">

　エネルギー関数の勾配は以下のように計算されます。
<img width="357" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/d9b7057b-01ad-6c51-286c-18d2c9f4c67b.png">


#### 2.3.3 UNCERTAINTY OF INNER PRODUCTS
　入力をガウス分布で埋め込んでいるため、内積計算をガウス分布から得た二つのベクトル間の内積計算として扱うことができます。そして、二つのベクトル間での内積から得たベクトルもまたガウス分布から得たものとして扱えます。つまり、内積計算から得たベクトルに対し平均と分散を定めることが可能です。例えば、

```math
P\ (z = x^\top y)
```

という分布に対し、以下のように平均と分散を計算することができます。
<img width="500" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/77005738-07a6-d025-67c2-218c187c1a9d.png">
　
## 3. 実験
　以下の観点から実験と定性的・定量的評価を行っていました。

- `SPECIFICITY AND UNCERTAINTY OF EMBEDDINGS`
- `ENTAILMENT`
- `DIRECTLY LEARNING ASYMMETRIC RELATIONSHIPS`
- ` WORD SIMILARITY BENCHMARKS`

　以下にいくつか結果を紹介します。

### 3.1 SPECIFICITY AND UNCERTAINTY OF EMBEDDINGS
　各単語が埋め込まれたガウス分布の分散共分散行列を用いて`query word`近傍に位置する単語の`specificity`と`uncertainty`を求めています。具体的には、近傍の単語を分散共分散行列の行列式の値が大きい順にソートしています。結果は下図の通りです。
<img width="600" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/5b64867c-d6e1-db6f-2927-2df77d27bf52.png">
　似ている単語同士で比較した際に、抽象的な単語ほど分散共分散行列の行列式の値が大きいことがわかります。

### 3.2 DIRECTLY LEARNING ASYMMETRIC RELATIONSHIPS
　`KL-divergence`を用いて学習した階層構造を確認しています。特に統計量や明確な評価基準は記載されていません。点での埋め込みでは原理的に階層構造を表現できないのでベースラインとの比較が不可能だったのかもしれません。実際に学習したガウス分布が捉えている階層構造が下図に示されています。
<img width="609" alt="スクリーンショット 2020-04-04 16.46.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426293/9079339c-8900-8d61-0faa-3e53c5c3c97c.png">

## 終わりに
　点ではなく分布で行うことで効果が現れる定量的評価方法があまり見つからず苦戦している印象を受けました。`WordNet`を用いた比較ができる`order-embedding`のような新規手法は稀有な例かもしれません。

## 参考文献
- Luke Vilnis, Andrew McCallum (2015). Word Representations via Gaussian Embedding, https://arxiv.org/pdf/1412.6623.pdf
- stfate (2018). ガウス埋め込みによる「意味の広がり」を捉える単語埋め込み, https://qiita.com/stfate/items/d44a8e5c7109e37ab0cd