SlideShare a Scribd company logo
1 of 28
ディープラーニングによる
ゆるキャラグランプリの得票数予想
とっしんの会 第3回
石山 賢也
自己紹介
• 石山 賢也(いしやま かつや)
Github: Katsuya-Ishiyama
Qiita: @kishiyama
• ソーシャルアプリ・ゲームを企画・開発・運営する某社のデー
タサイエンティスト
• 現在の興味
- 画像データから人気度を定量化する
- 統計学
- 機械学習
この発表の要約
• 得票数を予想するモデルを構築するために、VGG19の損失関数
をポアソン分布のものに変更した。
• ポアソン分布に従う場合の損失関数を導出した。
• TensorFlowまたはkerasのそれぞれの場合でどのように損失関
数を変更して学習させるのかを説明した。
• Google Machine Learningでトレーニングを実行した。
• が、、、現段階ではうまく学習できていない…
ゆるキャラグランプリとは?
ゆるキャラグランプリのWebサイトより転載 http://www.yurugp.jp/about/
• ご当地キャラや企業・団体のマスコットによる年1回の人気投票
• 「ご当地」と「企業・その他」の2つのランキングに分かれている
• エントリー数は、ご当地で681、企業・その他で477
データ収集方法
• オフィシャルサイトのランキングからスクレイピング
http://www.yurugp.jp/vote/result_ranking.php
• 収集した項目は以下の通り
項目 説明 保存時のカラム名
エントリーNo. entry_no
キャラクターの種別 ご当地、企業・その他 character_type
キャラクター名 character_name
出身地 prefecture
順位 投票数の順位 ranking
投票数 point
画像取得元のURL url
保存時のファイル名 上記データと紐づけるため filename
ゆるキャラグランプリ2017のBEST10
ゆるキャラグランプリ2017のWORST10
ゆるキャラグランプリの得票数の分布
VGG19とは?
• ディープラーニングのアルゴリズムの1つ
• 2014年の画像認識のコンペティションILSVRCで2位になる
• 畳み込み層とプーリング層を合計19層も重ねて画像分類の精度
を上げた事が特徴
• 比較的シンプルな構成なのに画像分類精度が高いため、様々な
アルゴリズムに応用されている
モデルが論文として公開されている
Simonyan and Zisserman(2015) “VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE
IMAGE RECOGNITION”
https://arxiv.org/pdf/1409.1556.pdf
VGG19の応用例(画像のスタイル合成)
Gatys et al.(2016) “Image Style Transfer Using Convolutional Neural Networks” より転載
VGG19のアルゴリズム
入
力
Softmax
畳み込み
Max Pooling
フラット化
全結合
原理
• 画像分類の基本は多項ロジスティック回帰モデル
• 統計学には複数のモデルを統一的に扱える一般化線形モデルと
いう枠組みがある
• ロジスティック回帰は一般化線形モデルで扱えるモデルの1つ
• 一般化線形モデルで扱える他の回帰モデルでもニューラルネッ
トワークができる。
• ポアソン回帰でモデル化してみる
分類タスク以外を行うために必要なこと
• 学習データからどのようにして教師データを予想するか明確に
する
→ ここは数式で!
• 損失関数を求める
• 評価値を決める(例 正誤率)
• 損失関数と評価値を実装する
想定するモデル
𝑍𝑖を第𝑖番目のキャラクターの得票数で、𝑍𝑖 ~ 𝑃𝑜𝑖𝑠𝑠𝑜𝑛(𝑥𝑖)とする。
このとき、𝑍𝑖の期待値𝐸(𝑍𝑖)に対して
𝐸 𝑍𝑖 = 𝑥𝑖 = exp(𝑤1 𝑒𝑖1 + ⋯ + 𝑤 𝑚 𝑒𝑖𝑚)
とする。
ただし、𝑒𝑖1, … , 𝑒𝑖𝑚は全結合層の出力値、𝑤1, … , 𝑤 𝑚は重みである。
ゆるキャラの得票数はポアソン分布に従っていて、その期待値は画像をVGG19で抽
出した特徴量の和で表すことができる。
これを数式で表すと次のようになる。
ポアソン回帰の損失関数の導出(1/2)
𝑍𝑖 ~ 𝑃𝑜𝑖𝑠𝑠𝑜𝑛 𝑥𝑖 (𝑖 = 1, … , 𝑛) とすると、結合確率関数は
𝑃 𝑍1, … , 𝑍 𝑛 𝑥1, … , 𝑥 𝑛) =
𝑖=1
𝑛
exp −𝑥𝑖 𝑥𝑖
𝑧 𝑖
𝑧𝑖!
.
したがって、尤度関数(Likelihood function)は
𝐿 𝑥1, … , 𝑥 𝑛 𝑍1, … , 𝑍 𝑛 = 𝑃 𝑍1, … , 𝑍 𝑛 𝑥1, … , 𝑥 𝑛) =
𝑖=1
𝑛
exp −𝑥𝑖 𝑥𝑖
𝑧 𝑖
𝑧𝑖!
.
この両辺に対数をとって対数尤度関数を求めると
log 𝐿 𝑥1, … , 𝑥 𝑛 𝑍1, … , 𝑍 𝑛 = 𝑙𝑜𝑔
𝑖=1
𝑛
exp −𝑥𝑖 𝑥𝑖
𝑧 𝑖
𝑧𝑖!
=
𝑖=1
𝑛
(log exp −𝑥𝑖 + log 𝑥𝑖
𝑧 𝑖
− log(𝑧𝑖!))
最適化に必要なのはここだけ!
よって損失関数は
𝐿𝑜𝑠𝑠 𝑥1, … , 𝑥 𝑛 𝑧1, … , 𝑧 𝑛 = −log 𝐿 𝑥1, … , 𝑥 𝑛 𝑍1, … , 𝑍 𝑛 =
𝑖=1
𝑛
(− log exp −𝑥𝑖 − log 𝑥𝑖
𝑧 𝑖
)
ポアソン回帰の損失関数の導出(2/2)
想定したモデルでは𝐸 𝑍𝑖 = 𝑥𝑖 = exp(𝑤1 𝑒𝑖1 + ⋯ + 𝑤 𝑚 𝑒𝑖𝑚)だったので、
𝐶𝑖 = log 𝑥𝑖 = 𝑤1 𝑒𝑖1 + ⋯ + 𝑤 𝑚 𝑒𝑖𝑚.
𝐿𝑜𝑠𝑠 𝑥1, … , 𝑥 𝑛 𝑧1, … , 𝑧 𝑛 =
𝑖=1
𝑛
(exp(𝑐𝑖) + 𝑧𝑖 𝑐𝑖)
よってTensorFlowの損失関数の記述に合わせて表記すると
TensorFlowで用意されている損失関数
TensorFlowではポアソン回帰の損失関数をlog_poisson_lossというAPIで提供している。
教師データ
最後の結合層の出力
ポアソン回帰での評価値
真の得票数に対しての予測した得票数の誤差率をaccuracyとして定義した。
𝑎𝑐𝑐𝑢𝑟𝑎𝑐𝑦 =
exp 𝑐𝑖 − 𝑧𝑖
𝑧𝑖
=
exp 𝑤1 𝑒𝑖1 + ⋯ + 𝑤 𝑚 𝑒𝑖𝑚 − 𝑧𝑖
𝑧𝑖
エポックが進むごとにaccuracyが0に近づくのが良い。
ソースコード(1/3)
ソースコード(2/3)
ソースコード(3/3)
Google Machine Learningの設定
• マスターノード large_model × 1
• ワーカーノード large_model × 1
• パラメーターサーバーノード large_model × 1
結果(1/2)
失敗…
結果(2/2)
失敗…
失敗に対する仮説
• 畳み込み、MaxPooling、ReLUを多く積み重ねたことによって、
個性となる部分が消失してしまっている。
→すりガラスを通して画像を見ているような状況?
• 畳み込みのフィルターの設定が悪かった。
• ミニバッチの作成が適切ではなかった。
Image Style Transfer Using Convolutional
Neural Networksのアルゴリズム
参考文献
Gatys et al.(2016): L. A. Gatys, A. S. Ecker and M. Bethge, "Image Style Transfer Using
Convolutional Neural Networks," 2016 IEEE Conference on Computer Vision and Pattern
Recognition (CVPR), Las Vegas, NV, 2016, pp. 2414-2423.
Simonyan and Zisserman(2015): K. Shimonyan and A. Zisserman, “VERY DEEP CONVOLUTIONAL
NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION”, https://arxiv.org/pdf/1409.1556.pdf
Brahmbhatt and Hays(2017): S. Brahmbhatt and J. Hays, "DeepNav: Learning to Navigate Large
Cities," 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Honolulu, HI,
2017, pp. 3087-3096.
VGG19の応用例(DeepNav)
S. Brahmbhatt and J. Hays, “DeepNav: Learning to Navigate Large Cities”より転載

More Related Content

What's hot

What's hot (20)

楽天における機械学習アルゴリズムの活用
楽天における機械学習アルゴリズムの活用楽天における機械学習アルゴリズムの活用
楽天における機械学習アルゴリズムの活用
 
Prml14 5
Prml14 5Prml14 5
Prml14 5
 
PySpark を分析用途に使っている話
PySpark を分析用途に使っている話PySpark を分析用途に使っている話
PySpark を分析用途に使っている話
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
機械学習と深層学習の数理
機械学習と深層学習の数理機械学習と深層学習の数理
機械学習と深層学習の数理
 
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
[DL輪読会]Transframer: Arbitrary Frame Prediction with Generative Models
 
独立成分分析 ICA
独立成分分析 ICA独立成分分析 ICA
独立成分分析 ICA
 
時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証時系列問題に対するCNNの有用性検証
時系列問題に対するCNNの有用性検証
 
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
 
[DL輪読会]Inverse Constrained Reinforcement Learning
[DL輪読会]Inverse Constrained Reinforcement Learning[DL輪読会]Inverse Constrained Reinforcement Learning
[DL輪読会]Inverse Constrained Reinforcement Learning
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
Deep Learningと自然言語処理
Deep Learningと自然言語処理Deep Learningと自然言語処理
Deep Learningと自然言語処理
 
Meta-Learning with Memory Augmented Neural Network
Meta-Learning with Memory Augmented Neural NetworkMeta-Learning with Memory Augmented Neural Network
Meta-Learning with Memory Augmented Neural Network
 
OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較OSS強化学習フレームワークの比較
OSS強化学習フレームワークの比較
 
Lp Boost
Lp BoostLp Boost
Lp Boost
 
強化学習6章
強化学習6章強化学習6章
強化学習6章
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
独立低ランク行列分析に基づくブラインド音源分離(Blind source separation based on independent low-rank...
独立低ランク行列分析に基づくブラインド音源分離(Blind source separation based on independent low-rank...独立低ランク行列分析に基づくブラインド音源分離(Blind source separation based on independent low-rank...
独立低ランク行列分析に基づくブラインド音源分離(Blind source separation based on independent low-rank...
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
[DL輪読会]Parallel WaveNet: Fast High-Fidelity Speech Synthesis
 

Similar to ディープラーニングによるゆるキャラグランプリの得票数予想

ディープラーニングのすごさを共有したい.pdf
ディープラーニングのすごさを共有したい.pdfディープラーニングのすごさを共有したい.pdf
ディープラーニングのすごさを共有したい.pdf
Yusuke Hayashi
 
テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
digitalghost
 

Similar to ディープラーニングによるゆるキャラグランプリの得票数予想 (18)

ディープラーニングのすごさを共有したい.pdf
ディープラーニングのすごさを共有したい.pdfディープラーニングのすごさを共有したい.pdf
ディープラーニングのすごさを共有したい.pdf
 
Curiosity driven exploration
Curiosity driven explorationCuriosity driven exploration
Curiosity driven exploration
 
IkaLog Presentation v1.3
IkaLog Presentation v1.3IkaLog Presentation v1.3
IkaLog Presentation v1.3
 
ICLR2018読み会@PFN 論文紹介:Intrinsic Motivation and Automatic Curricula via Asymmet...
ICLR2018読み会@PFN 論文紹介:Intrinsic Motivation and Automatic Curricula via Asymmet...ICLR2018読み会@PFN 論文紹介:Intrinsic Motivation and Automatic Curricula via Asymmet...
ICLR2018読み会@PFN 論文紹介:Intrinsic Motivation and Automatic Curricula via Asymmet...
 
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
[DL輪読会]Differentiable Mapping Networks: Learning Structured Map Representatio...
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
Decision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence ModelingDecision Transformer: Reinforcement Learning via Sequence Modeling
Decision Transformer: Reinforcement Learning via Sequence Modeling
 
Deep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlowDeep Learning基本理論とTensorFlow
Deep Learning基本理論とTensorFlow
 
Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!Enjoy handwritten digits recognition AI !!
Enjoy handwritten digits recognition AI !!
 
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用 2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
2015年9月18日 (GTC Japan 2015) 深層学習フレームワークChainerの導入と化合物活性予測への応用
 
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
カスタムSIで使ってみよう ~ OpenAI Gym を使った強化学習
 
Raspberry Pi Deep Learning Hand-on
Raspberry Pi Deep Learning Hand-onRaspberry Pi Deep Learning Hand-on
Raspberry Pi Deep Learning Hand-on
 
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った 機械学習ことはじめ (GDG京都 機械学習勉強会)
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
20170806 Discriminative Optimization
20170806 Discriminative Optimization20170806 Discriminative Optimization
20170806 Discriminative Optimization
 
SeRanet
SeRanetSeRanet
SeRanet
 
テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
 
Deep nlp 4.2-4.3_0309
Deep nlp 4.2-4.3_0309Deep nlp 4.2-4.3_0309
Deep nlp 4.2-4.3_0309
 

ディープラーニングによるゆるキャラグランプリの得票数予想