FindYourCandyでの転移学習の話
by
Norihiro Shimoda
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
FindYourCandyにおける 転移学習の話 by Norihiro Shimdoa
Slide 2
Slide 2 text
⾃自⼰己紹介 • 下⽥田倫倫⼤大(@rindai87) • データ分析専業の企業のエンジニアマネージャー • TensorFlow User Group(TFUG)主催者 • 最近GDE(Google Developer Expert)のML Expertにな りました
Slide 3
Slide 3 text
特別ゲストがきたので I/Oの話はスキップします Google I/O報告会で話をして 資料料は公開済みです
Slide 4
Slide 4 text
URL: https://speakerdeck.com/rindai87/o-‐‑‒bao-‐‑‒gao-‐‑‒hui-‐‑‒ml-‐‑‒dan-‐‑‒dang Google I/O 報告会での資料料は公開済み
Slide 5
Slide 5 text
体験ブースで展⽰示中のコイツの話 FindYourCandy
Slide 6
Slide 6 text
TFUG#5での発表 URL: https://sho-‐‑‒soar.github.io/slides/tfug5/
Slide 7
Slide 7 text
URL: https://sho-‐‑‒soar.github.io/slides/tfug5/#/6 この説明で理理解しろ だなんて無茶茶だよな
Slide 8
Slide 8 text
本⽇日の話 転移学習(画像)
Slide 9
Slide 9 text
画像認識識をしたい時 • 深層学習が精度度⾼高そうだしやりたい • 深層学習で画像処理理といえばCNN • Kerasを使うと簡単にできるらしい
Slide 10
Slide 10 text
Keras • TensorFlowをバックエンドに持つラッパーライブラリ – データサイエンティストには⽣生TFより⼈人気な印象
Slide 11
Slide 11 text
KerasでCNN
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
KerasでCNN フィルタサイズ はコレで良良い? プーリングのサイズは? 全結合層のユニット サイズは? ドロップアウトする? そもそも何層にする?
Slide 14
Slide 14 text
⼀一から取り組むCNNは初⼼心者に優しくない • パラメータ多すぎ問題 • うまくいったらいいけど、いかない時すごい⼤大変
Slide 15
Slide 15 text
学習済みモデル すでに学習された 精度度の良良いモデル
Slide 16
Slide 16 text
学習済みモデルを使う • オープンソースでけっこう公開されています • 例例えばGoogleによって公開されているInception V3 URL:https://github.com/tensorflow/models/tree/master/inception
Slide 17
Slide 17 text
Kerasで学習済みモデルを使う この2⾏行行でinception v3 が使えるようになる! この2⾏行行でinception v3 が使えるようになる!
Slide 18
Slide 18 text
学習済みモデルの問題 • 学習してないものには弱い、というか対応できない • Kerasの学習済みモデルはコンテストで使われたものなの で、1000クラスを分類するようにできている – つまり、1000クラスに⼊入っていなければ、まともに分類でき ない • 何とかうまく学習済みモデルを使いたい – 最後だけちょろっと学習させたらけっこう良良いという – それが転移学習や!
Slide 19
Slide 19 text
転移学習 学習済みモデルを使いつつ 独⾃自の概念念も学習させる
Slide 20
Slide 20 text
転移学習イメージ • 追加で適当に層を追加する • 適当なので、何層つけたら良良いかとかはまあやっぱり分 からない 端っこのここ(出⼒力力層)を 取っ払ってネットワークを 追加する
Slide 21
Slide 21 text
URL: https://sho-‐‑‒soar.github.io/slides/tfug5/#/6 追加したネットワーク (ただし、けっこう適当)
Slide 22
Slide 22 text
転移学習その他 • Fine-‐‑‒tuneっていうのもあります • 層の⼀一部だけ学習させるというやつ 出⼒力力層近くの ⼀一部だけ学習させる その他はそのまま
Slide 23
Slide 23 text
FindYourCandyの場合 CloudMLを使っての 転移学習の実現
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
FindYourCandyの場合 • 1⽉月後半からの⼀一ヶ⽉月程度度の開発 – TensorFlow v1.0が出る前 • つまりKerasの統合が発表される前 – Cloud MLはv0.11, v0.12が混在して割当てられる • 発⽣生した問題あれこれ – TFのバージョン違いによるモデルのフォーマット違い – そもそも⽣生TF使っても、Protobufのバージョンによって InceptionV3がうまく読み込めない! – etc…
Slide 26
Slide 26 text
思いつきました • 1つのネットワークで全部転移学習させる必要はない • アイデア:ネットワークを分割する – ネットワーク1:最終層を取ったInception-‐‑‒V3 • ⼊入⼒力力:画像、出⼒力力:ネットワークを通った後の特徴量量 • 実⾏行行環境:ローカルのTensorFlow – ネットワーク2:中間層2のFull-‐‑‒connectedなNN • ⼊入⼒力力:Inception-‐‑‒V3を通った特徴量量、出⼒力力:ラベルに属する確率率率 • 実⾏行行環境:Cloud ML Engine
Slide 27
Slide 27 text
ネットワーク1 ネットワーク2
Slide 28
Slide 28 text
ちゃんとできた! • それなりにいい感じに動いている! – デモなので定性的な評価 • クラウドに画像データを持っていかなくて良良い! – 帯域の節約になる • Cloud ML Engineはクラスタの⽴立立ち上がりが読めない – 早い時もあれば遅い時もある
Slide 29
Slide 29 text
まとめ • Kerasを使うとモデル作るのはけっこう簡単 • ただし、パラメータ多すぎるし案外何やったらいいかわ からなくなる • 学習済みモデルを使おう!転移学習をやってみよう! • FindYourCandyでも転移学習は活躍しています
Slide 30
Slide 30 text
Thanks!!