Slide 1

Slide 1 text

今日は AdaNet の話をしたいだけ Google Cloud Next Extended 2019 ML Day @shuhei_fujiwara 2019-06-04 1

Slide 2

Slide 2 text

自己紹介 藤原秀平 (FUJIWARA Shuhei) Twitter: @shuhei_fujiwara ▶ 株式会社メルペイ所属 ▶ TensorFlow User Group Tokyo Organizer ▶ Google Developer Expert (Machine Learning) ▶ GCPUG Tokyo Staff ▶ 今年は Google Cloud Next 行ってません 2

Slide 3

Slide 3 text

とりあえず会場の雰囲気を知りたい Google Cloud Next 2019 ▶ 現地に行った人 ▶ 何かしら報告会に既に行った人 Google Cloud Platform ▶ 普段使ってる人 3

Slide 4

Slide 4 text

目次 News ML APIs AI Platform AutoML AdaNet 4

Slide 5

Slide 5 text

News

Slide 6

Slide 6 text

News 既にあちこちで語り尽くされていますが... ▶ Rename: Cloud ML Engine ==> AI Platform ▶ 機能と新サービスの追加 ▶ ML APIs にいくつかの機能追加 ▶ AutoML の機能と新サービス追加 ▶ 細かいことはだいたいここでわかる ▶ https://cloud-ja.googleblog.com/2019/04/100-plus-announcements-from- google-cloud-next19.html Next 前後に出た重要度高そう (主観) なところだけ軽くおさらい 5

Slide 7

Slide 7 text

ML APIs 何気に待望の機能っぽいものが色々追加されてて話題になってないけど 結構良い話では...? ▶ Vision API ▶ Object detection ▶ Natural Language API ▶ カスタム辞書が使用可能に (これ欲しかったよね?) ▶ 領収書や請求書の読み取り などなど 6

Slide 8

Slide 8 text

AI Platform (1/2) Next 以前からこっそり出てたものも含め色々整理された感じ ▶ Training ▶ 実は Docker image が使えるようになってた ▶ Prediction ▶ 実は scikit-learn と XGBoost のモデルもホストできるようになってた ▶ Custom prediction routine でわりと何でもアリになった ▶ 若干 Cloud Run で良くね? という気がしてきたけど、どう住み分けるんだろ...? ▶ Notebook ▶ 実はあった 7

Slide 9

Slide 9 text

AI Platform (2/2) ▶ AI Hub ▶ TensorFlow Hub 用のモデル・ Kubeflow の pipeline、Jupyter Notebook とか 諸々共有できる ▶ TF Hub 用のモデル置き場ができたのはまあまあ嬉しい ▶ Publish できる条件が謎 (企業アカウントじゃないとだめ? ▶ Kubeflow ▶ Kubeflow on GKE をシュッと準備してくれるやつ ▶ Data Labeling ▶ Google がラベリングしてくれる謎サービス (誰か使ってみてくれ...! ▶ AutoML のデータアップロードする画面と統合されてることを期待したが そんなことはなかった 8

Slide 10

Slide 10 text

AutoML ▶ 何かたくさん出てきたね ▶ 僕の番が来る頃には全部語り尽くされてるんじゃないですかね...? 9

Slide 11

Slide 11 text

AutoML Table ▶ テーブルデータを渡すと学習から API の生成までやっておいてくれる ▶ というのは皆聞き飽きてそう 裏で動いてるアルゴリズム気になりません...? https://cloud.google.com/automl-tables/docs/features ▶ Linear <== とりあえず最初にやるやつ ▶ Feedforward deep neural network <== いつもの ▶ Gradient Boosted Decision Tree <== いつもの ▶ Ensembles of various model architectures <== 面倒臭いけどたまにやる ▶ AdaNet <== 知らない子ですね...? 10

Slide 12

Slide 12 text

AdaNet

Slide 13

Slide 13 text

AdaNet AutoML Table の裏で使われている (という噂の) 手法 ▶ Google AI Blog: ▶ https://ai.googleblog.com/2018/10/introducing-adanet-fast-and-flexible.html ▶ ICML 2017 ▶ http://proceedings.mlr.press/v70/cortes17a.html ▶ TensorFlow implementation ▶ https://github.com/tensorflow/adanet 11

Slide 14

Slide 14 text

The Goal of AdaNet Feed forward network よりも一般的なネットワーク構成の中から良いものを探す ▶ 後ろの任意の層の任意のノードに対して辺を繋げる ▶ もちろん全てのパターンを調べ切るのは不可能 12

Slide 15

Slide 15 text

基本的なアイデア ▶ 最初は小さいネットワークで普通に学習 ▶ 赤い矢印が学習対象の weight この時点での loss (正則化項は省略) 1 m m ∑ i=1 Φ (1 − yif1(xi)) ▶ yi ∈ {−1, +1}: label, Φ(·): loss function ▶ f1(·): 1 反復目のモデルの出力 Input Output 13

Slide 16

Slide 16 text

基本的なアイデア ▶ 真の値と現時点でのモデルの output の差を 予測するようなネットワークを継ぎ足す 新しい subnetwork の出力を足し込む F(w, u) = 1 m m ∑ i=1 Φ (1 − yif1(xi) − yiw · u(xi)) ▶ −yiw · u(xi): 赤い subnetwork の出力 Input Output 14

Slide 17

Slide 17 text

Subnetwork のくっつけ方 Subnetwork の候補 以下の 2 種類を試して良かった方をくっつける: ▶ 今のネットワークと同じ深さのもの ▶ 今のネットワークより 1 段深いもの 多少はハイパーパラメータもある ▶ Subnetwork のノード数 ▶ 正則化周りの係数 ▶ etc... Input Output 15

Slide 18

Slide 18 text

Algorithm 1. 2 種類の subnetwork を作る ▶ 今と同じ深さのやつと 1 段深いやつ 2. それぞれくっつけて学習させてみる 3. より性能が良い方の subnetwork を採用する ▶ 性能は正則化なども込みの目的関数で測る ▶ 本当はこの部分に Rademacher complexity (の推定値) とかが隠れているので 結構重要 ▶ 改善しなかったらアルゴリズム終了 4. 1 へ戻る 16

Slide 19

Slide 19 text

汎化誤差の上界 (おまけ) Theorem 1, Lemma 1, Lemma2, Corollary 1 ▶ すごく雑な言い方をすると、データを増やせば 過学習が減ることを保証 (自明ではない) R(f) ≤ ^ RS,ρ(f) + hoge √ fuga #sample ▶ f: このアルゴリズムで探索対象になる (ニューラルネット) ▶ RS,ρ(f): 学習に使ったサンプル S に対する (マージン ρ での) 誤判別率 ▶ R(f): 母集団に対する誤判別率 17

Slide 20

Slide 20 text

Experiments with CIFAR-10 ▶ 普通のニューラルネットや Logistic Regression と比べて高精度 ▶ Subnetwork のくっつけ方は工夫の余地があるので AdaNet 同士でも比較 ▶ AdaNet.R: L1 正則化を追加 ▶ AdaNet.P: 新しい subnetwork は前回加えたものにだけ接続 ▶ AdaNet.D: 前回加えたものとの接続に dropout を入れる 18

Slide 21

Slide 21 text

TensorFlow Implementation ▶ TensorFlow での実装 ▶ https://github.com/tensorflow/adanet ▶ 研究の実験用コードじゃなくてマジでちゃんと API 整えられたやつ ▶ とても嬉しい ▶ TensorFlow の Estimator API として作られている 19

Slide 22

Slide 22 text

AdaNet 所感 ▶ 論文ではきちんと汎化誤差の上界など理論的な面が議論されている ▶ 実装はマジでそのまま使えるやつが公開されてる ▶ AutoML Table みたいなサービスにも投入された 研究 ==> 実用化の流れが芸術点高い 20