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

Google Cloud Next Extended 2019 ML Day

Shuhei Fujiwara
June 04, 2019
1.1k

Google Cloud Next Extended 2019 ML Day

Shuhei Fujiwara

June 04, 2019
Tweet

Transcript

  1. 自己紹介 藤原秀平 (FUJIWARA Shuhei) Twitter: @shuhei_fujiwara ▶ 株式会社メルペイ所属 ▶ TensorFlow

    User Group Tokyo Organizer ▶ Google Developer Expert (Machine Learning) ▶ GCPUG Tokyo Staff ▶ 今年は Google Cloud Next 行ってません 2
  2. 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
  3. ML APIs 何気に待望の機能っぽいものが色々追加されてて話題になってないけど 結構良い話では...? ▶ Vision API ▶ Object detection

    ▶ Natural Language API ▶ カスタム辞書が使用可能に (これ欲しかったよね?) ▶ 領収書や請求書の読み取り などなど 6
  4. AI Platform (1/2) Next 以前からこっそり出てたものも含め色々整理された感じ ▶ Training ▶ 実は Docker

    image が使えるようになってた ▶ Prediction ▶ 実は scikit-learn と XGBoost のモデルもホストできるようになってた ▶ Custom prediction routine でわりと何でもアリになった ▶ 若干 Cloud Run で良くね? という気がしてきたけど、どう住み分けるんだろ...? ▶ Notebook ▶ 実はあった 7
  5. AI Platform (2/2) ▶ AI Hub ▶ TensorFlow Hub 用のモデル・

    Kubeflow の pipeline、Jupyter Notebook とか 諸々共有できる ▶ TF Hub 用のモデル置き場ができたのはまあまあ嬉しい ▶ Publish できる条件が謎 (企業アカウントじゃないとだめ? ▶ Kubeflow ▶ Kubeflow on GKE をシュッと準備してくれるやつ ▶ Data Labeling ▶ Google がラベリングしてくれる謎サービス (誰か使ってみてくれ...! ▶ AutoML のデータアップロードする画面と統合されてることを期待したが そんなことはなかった 8
  6. 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
  7. 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
  8. 基本的なアイデア ▶ 最初は小さいネットワークで普通に学習 ▶ 赤い矢印が学習対象の weight この時点での loss (正則化項は省略) 1

    m m ∑ i=1 Φ (1 − yif1(xi)) ▶ yi ∈ {−1, +1}: label, Φ(·): loss function ▶ f1(·): 1 反復目のモデルの出力 Input Output 13
  9. Subnetwork のくっつけ方 Subnetwork の候補 以下の 2 種類を試して良かった方をくっつける: ▶ 今のネットワークと同じ深さのもの ▶

    今のネットワークより 1 段深いもの 多少はハイパーパラメータもある ▶ Subnetwork のノード数 ▶ 正則化周りの係数 ▶ etc... Input Output 15
  10. Algorithm 1. 2 種類の subnetwork を作る ▶ 今と同じ深さのやつと 1 段深いやつ

    2. それぞれくっつけて学習させてみる 3. より性能が良い方の subnetwork を採用する ▶ 性能は正則化なども込みの目的関数で測る ▶ 本当はこの部分に Rademacher complexity (の推定値) とかが隠れているので 結構重要 ▶ 改善しなかったらアルゴリズム終了 4. 1 へ戻る 16
  11. 汎化誤差の上界 (おまけ) Theorem 1, Lemma 1, Lemma2, Corollary 1 ▶

    すごく雑な言い方をすると、データを増やせば 過学習が減ることを保証 (自明ではない) R(f) ≤ ^ RS,ρ(f) + hoge √ fuga #sample ▶ f: このアルゴリズムで探索対象になる (ニューラルネット) ▶ RS,ρ(f): 学習に使ったサンプル S に対する (マージン ρ での) 誤判別率 ▶ R(f): 母集団に対する誤判別率 17
  12. Experiments with CIFAR-10 ▶ 普通のニューラルネットや Logistic Regression と比べて高精度 ▶ Subnetwork

    のくっつけ方は工夫の余地があるので AdaNet 同士でも比較 ▶ AdaNet.R: L1 正則化を追加 ▶ AdaNet.P: 新しい subnetwork は前回加えたものにだけ接続 ▶ AdaNet.D: 前回加えたものとの接続に dropout を入れる 18