Pro Yearly is on sale from $80 to $50! »

【poke2vec】ポケモンの役割ベクトルの 学習とその分析・可視化 / pyconjp-poke2vec

00766b8e1f9c2665cf7fd29f9cf558df?s=47 odanado
September 18, 2018

【poke2vec】ポケモンの役割ベクトルの 学習とその分析・可視化 / pyconjp-poke2vec

00766b8e1f9c2665cf7fd29f9cf558df?s=128

odanado

September 18, 2018
Tweet

Transcript

  1. PyCon JP 2018 LT 【poke2vec】ポケモンの役割ベクトルの 学習とその分析・可視化 1 @odan3240

  2. 自己紹介 • Twitter: @odan3240 • 新卒エンジニア • 五反田のIT企業に所属 • 大学では自然言語処理の研究

    • 今はフロントエンドエンジニア • PyCon JP初参加!! • 登壇も初!! • 緊張してます 2
  3. 目次 • 分布仮説 • word2vec • ポケモンにおける役割 • ポケモンへの応用 •

    実験結果の可視化 • まとめ 3
  4. 分布仮説 4

  5. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 5

  6. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 XXXは食べ物? 6

  7. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 XXXはそこまで固くない 7

  8. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 XXXはいちごの仲間? 8

  9. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 ジャムにできる :thiking_face: 9

  10. 分布仮説 「彼女はxxxを食べる」 「包丁を使ってxxxを切った」 「xxxといちごをお見舞いに持っていく」 「xxxジャムを作る」 「xxxの絵を赤で描く」 赤色として描かれる 10

  11. 分布仮説 「彼女はりんごを食べる」 「包丁を使ってりんごを切った」 「りんごといちごをお見舞いに持っていく」 「りんごジャムを作る」 「りんごの絵を赤で描く」 りんご! 11

  12. 分布仮説 「彼女はりんごを食べる」 「包丁を使ってりんごを切った」 「りんごといちごをお見舞いに持っていく」 「りんごジャムを作る」 「りんごの絵を赤で描く」 周辺の単語からその単語の意味が決まる仮説 12

  13. word2vec 13

  14. word2vec • word2vec => 単語をベクトル化する手法 • 周辺の単語を元に単語のベクトルを計算 • 単語ベクトルを使うことで 意味に基づく単語の計算が可能になる

    14 王 女 男 女王
  15. word2vec 単語ベクトルを2次元に プロットすると意味が近い単語が近くに集まる 15

  16. ポケモンにおける役割 16

  17. ポケモンにおける役割 • ポケモンのeスポーツ化 • 賞金がかかった世界大会が開催されている • ポケモン対戦にガチで取り組む人が一定数いる 17 出典 pokemon.co.jp

  18. ポケモンにおける役割 ポケモンは6匹のパーティを組んで オンライン上で対戦する 18 出典 ポケモングローバルリンク

  19. ポケモンにおける役割 • ポケモンの役割 ◦ e.g. 同じほのおタイプなので似た役割を持つ 19 出典 ポケモングローバルリンク

  20. ポケモンにおける役割 • ポケモンの役割 ◦ e.g. ほのおタイプはくさタイプに強い 20 出典 ポケモングローバルリンク

  21. ポケモンへの応用 21

  22. モチベーション ポケモンの”役割”を自動計算したい これまではポケモンの 特徴から人間が意味付けていた 22

  23. ポケモンの役割に関する仮説 似たようなパーティで使用される ポケモン同士は似た役割を持つのでは? 23 出典 ポケモングローバルリンク

  24. ポケモンの役割に関する仮説 ある単語の意味は同じ文中で 同時に使用される単語によって決まる (分布仮説) あるポケモンの役割は同じパーティで 同時に使用されるポケモンによって決まる 24

  25. 実験 • データセット作り a. ネット上からポケモンの対戦データをクロール b. ポケモンの並びを無視してデータの重複を取り除く 約 5,000件 •

    学習 ◦ ポケモンのパーティを文とみなしてword2vec (CBoW) を PythonのNeural Networkフレームワークのchainerで学習 • リポジトリ ◦ odanado/poke2vec 25
  26. 実験結果の可視化 26

  27. デモサイト • https://bit.ly/poke2vec ◦ 役割ベクトルの加減算 ◦ 2次元可視化 ◦ 3次元可視化 27

  28. 役割ベクトルの加減算 28

  29. 可視化 29

  30. 可視化 30

  31. まとめ • 分布仮説は周囲の単語の出現頻度から 単語の意味が決まる仮説 • 同時にパーティに採用されるポケモンの頻度から ポケモンの役割ベクトルを学習した • 今後 ◦

    持ち物を考慮したベクトルを学習したい ▪ 現状だとデータ数が圧倒的に不足 ◦ パーティのうち5匹決まっている時に 残り1匹をレコメンドとかしたい 31
  32. Appendix 32

  33. Continuous Bag-of-Words Model 33

  34. Continuous Bag-of-Words Model • 単語をベクトル化 (word2vec) する手法の1つ 34 りんご 彼女

    は を 食べる 総和 ベクトル化 誤差計算
  35. Continuous Bag-of-Words Model • 単語をベクトル化 (word2vec) する手法の1つ 35 りんご 彼女

    は を 食べる 総和 ベクトル化 誤差計算