Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

分布仮説 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

word2vec 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

ポケモンにおける役割 16

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

ポケモンへの応用 21

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

実験結果の可視化 26

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

役割ベクトルの加減算 28

Slide 29

Slide 29 text

可視化 29

Slide 30

Slide 30 text

可視化 30

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Appendix 32

Slide 33

Slide 33 text

Continuous Bag-of-Words Model 33

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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