$30 off During Our Annual Pro Sale. View Details »

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

odanado
PRO
September 18, 2018

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

odanado
PRO

September 18, 2018
Tweet

More Decks by odanado

Other Decks in Programming

Transcript

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

    View Slide

  2. 自己紹介
    ● Twitter: @odan3240
    ● 新卒エンジニア
    ● 五反田のIT企業に所属
    ● 大学では自然言語処理の研究
    ● 今はフロントエンドエンジニア
    ● PyCon JP初参加!!
    ● 登壇も初!!
    ● 緊張してます
    2

    View Slide

  3. 目次
    ● 分布仮説
    ● word2vec
    ● ポケモンにおける役割
    ● ポケモンへの応用
    ● 実験結果の可視化
    ● まとめ 3

    View Slide

  4. 分布仮説
    4

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. word2vec
    13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. ポケモンへの応用
    21

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 実験
    ● データセット作り
    a. ネット上からポケモンの対戦データをクロール
    b. ポケモンの並びを無視してデータの重複を取り除く
    約 5,000件
    ● 学習
    ○ ポケモンのパーティを文とみなしてword2vec (CBoW) を
    PythonのNeural Networkフレームワークのchainerで学習
    ● リポジトリ
    ○ odanado/poke2vec
    25

    View Slide

  26. 実験結果の可視化
    26

    View Slide

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

    View Slide

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

    View Slide

  29. 可視化
    29

    View Slide

  30. 可視化
    30

    View Slide

  31. まとめ
    ● 分布仮説は周囲の単語の出現頻度から
    単語の意味が決まる仮説
    ● 同時にパーティに採用されるポケモンの頻度から
    ポケモンの役割ベクトルを学習した
    ● 今後
    ○ 持ち物を考慮したベクトルを学習したい
    ■ 現状だとデータ数が圧倒的に不足
    ○ パーティのうち5匹決まっている時に
    残り1匹をレコメンドとかしたい
    31

    View Slide

  32. Appendix
    32

    View Slide

  33. Continuous
    Bag-of-Words Model
    33

    View Slide

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

    View Slide

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

    View Slide