gensimのPoincaré Embeddingsで本当に少しだけ遊ぶ

はじめに

 

gensimにPoincaré Embeddingsが入るなぁ〜って話を思い出したので軽く試したことをまとめておきます。

 

Poincaré Embeddingsとはユークリッド空間ではない双曲空間に埋め込む手法の一つで、NIPS2017で発表されたものです。*1

Poincaré Embeddings for Learning Hierarchical Representations

 

こちらに実装をされている方がいるのですごい......

異空間への埋め込み!Poincare Embeddingsが拓く表現学習の新展開 - ABEJA Tech Blog

 

こちらの方は双曲空間上での学習についてより詳しく触れられています。(18/01/10 追記)

 

Poincare Embeddingの実装について - にっき

 

こちらの方は論文紹介の形でわかりやすい説明をしています。(18/01/10 追記)

 

Poincaré Embeddings for Learning Hierarchical Representations // Speaker Deck

 

数式よりの話は上記のいずれかを見た方が良いですし、原論文を読んだ方がいいと思います。

 

やったこと

原論文ではWord Netのデータを与えていたと思いますが、他のデータを食わせるとどうなるんだろう?みたいなことを思ったので都道府県の隣接を関係とみなして与えてみました隣接の定義は都道府県隣接関係一覧を参考にした上で沖縄県は省きました。

 

注:こういった地図の隣接関係のようなものはスケールフリー性を満たさず、木構造でもないので双曲空間への埋め込みに適した構造ではないようですので、あくまでやったらこうなった系のお話だと思ってください(時間ができたらちゃんとデータ見繕ってやります......)(18/01/10 追記)

 

 

 

入力と出力は端的に言うと以下

  • 入力:関係データのタプル(Word Netであっても上位下位とかは明示的に与えないようです。)
  • 出力:各々の項目の座標(これに基づき類似度などの計算がされる)

 

 

コードは本当にたいしたものではないのでgistにちょろっと載せました。

gensimではpoincare embeddings用の可視化の実装までされていたのでその結果を付します。

 

f:id:cl_hair:20180109181208p:plain

 

この図を見ての雑な考察としては、

  • 気持ち、日本地図が丸まったような感じに見えないことはない気がする......
  • 九州や四国といった隣接県関係がそこでほぼほぼ閉じているところは固まっている......

です。

 

おわりに

gensimを使うことで関係データや木構造に対して簡単にpoincare embeddingsが試せることがわかりました。

双曲空間への理解が浅いので原論文を読み返すなりなんなりしようと思います......

色々なご指摘を受けて自分の浅学さを知りました......ご指摘下さった方に感謝します。(18/01/10 追記)

 

 

 

*1:それ以前に確かarxivに挙げられていたはずですが