Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Cloud Next Extended 2019 ML Day

Shuhei Fujiwara
June 04, 2019
1k

Google Cloud Next Extended 2019 ML Day

Shuhei Fujiwara

June 04, 2019
Tweet

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. 目次
    News
    ML APIs
    AI Platform
    AutoML
    AdaNet
    4

    View Slide

  5. News

    View Slide

  6. 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

    View Slide

  7. ML APIs
    何気に待望の機能っぽいものが色々追加されてて話題になってないけど
    結構良い話では...?
    ▶ Vision API

    Object detection
    ▶ Natural Language API
    ▶ カスタム辞書が使用可能に (これ欲しかったよね?)
    ▶ 領収書や請求書の読み取り
    などなど
    6

    View Slide

  8. AI Platform (1/2)
    Next 以前からこっそり出てたものも含め色々整理された感じ
    ▶ Training
    ▶ 実は Docker image が使えるようになってた
    ▶ Prediction
    ▶ 実は scikit-learn と XGBoost のモデルもホストできるようになってた

    Custom prediction routine でわりと何でもアリになった
    ▶ 若干 Cloud Run で良くね? という気がしてきたけど、どう住み分けるんだろ...?
    ▶ Notebook
    ▶ 実はあった
    7

    View Slide

  9. AI Platform (2/2)
    ▶ AI Hub

    TensorFlow Hub 用のモデル・ Kubeflow の pipeline、Jupyter Notebook とか
    諸々共有できる

    TF Hub 用のモデル置き場ができたのはまあまあ嬉しい

    Publish できる条件が謎 (企業アカウントじゃないとだめ?
    ▶ Kubeflow

    Kubeflow on GKE をシュッと準備してくれるやつ
    ▶ Data Labeling

    Google がラベリングしてくれる謎サービス (誰か使ってみてくれ...!

    AutoML のデータアップロードする画面と統合されてることを期待したが
    そんなことはなかった
    8

    View Slide

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

    View Slide

  11. 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

    View Slide

  12. AdaNet

    View Slide

  13. 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

    View Slide

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

    View Slide

  15. 基本的なアイデア
    ▶ 最初は小さいネットワークで普通に学習
    ▶ 赤い矢印が学習対象の weight
    この時点での loss (正則化項は省略)
    1
    m
    m

    i=1
    Φ (1 − yif1(xi))
    ▶ yi ∈ {−1, +1}: label, Φ(·): loss function
    ▶ f1(·): 1 反復目のモデルの出力
    Input
    Output
    13

    View Slide

  16. 基本的なアイデア
    ▶ 真の値と現時点でのモデルの output の差を
    予測するようなネットワークを継ぎ足す
    新しい subnetwork の出力を足し込む
    F(w, u) =
    1
    m
    m

    i=1
    Φ (1 − yif1(xi) − yiw · u(xi))
    ▶ −yiw · u(xi): 赤い subnetwork の出力
    Input
    Output
    14

    View Slide

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

    View Slide

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

    View Slide

  19. 汎化誤差の上界 (おまけ)
    Theorem 1, Lemma 1, Lemma2, Corollary 1
    ▶ すごく雑な言い方をすると、データを増やせば
    過学習が減ることを保証 (自明ではない)
    R(f) ≤ ^
    RS,ρ(f) + hoge

    fuga
    #sample
    ▶ f: このアルゴリズムで探索対象になる (ニューラルネット)
    ▶ RS,ρ(f): 学習に使ったサンプル S に対する (マージン ρ での) 誤判別率
    ▶ R(f): 母集団に対する誤判別率
    17

    View Slide

  20. Experiments with CIFAR-10
    ▶ 普通のニューラルネットや Logistic Regression と比べて高精度
    ▶ Subnetwork のくっつけ方は工夫の余地があるので AdaNet 同士でも比較

    AdaNet.R: L1 正則化を追加

    AdaNet.P: 新しい subnetwork は前回加えたものにだけ接続

    AdaNet.D: 前回加えたものとの接続に dropout を入れる
    18

    View Slide

  21. TensorFlow Implementation
    ▶ TensorFlow での実装

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

    View Slide

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

    View Slide