AdaNet

 AdaNet

D6bf88af4f3c68f688d433ad0c3c1345?s=128

Shuhei Fujiwara

June 26, 2019
Tweet

Transcript

  1. 論文紹介 AdaNet: Adaptive Structural Learning of Artificial Neural Networks @shuhei_fujiwara

    2019-06-26 1
  2. What’s AdaNet? ▶ ICML 2017 ▶ http://proceedings.mlr.press/v70/cortes17a.html ▶ Google AI

    Blog: ▶ https://ai.googleblog.com/2018/10/introducing-adanet-fast-and-flexible.html ▶ AutoML Table の裏で使われている (という噂の) 手法 ▶ https://cloud.google.com/automl-tables/docs/features ▶ TensorFlow implementation ▶ https://github.com/tensorflow/adanet 2
  3. Basic Idea of AdaNet

  4. The Goal of AdaNet Feed forward network よりも一般的なネットワーク構成の中から良いものを探す ▶ 後ろの任意の層の任意のノードに対して辺を繋げる

    ▶ 実際には汎化誤差の上界を保証するためにもう少し制約を入れる 3
  5. Basic Idea ▶ 最初は小さいネットワークで普通に学習 この時点での目的関数 (正則化項は省略) 1 m m ∑

    i=1 Φ (1 − yif1(xi)) ▶ yi ∈ {−1, +1}: label, Φ(·): loss function ▶ f1(·): 1 反復目のモデルの出力 ▶ 汎化誤差の上界を保証するには 最後の層への重みに L1 正則化が必要 Input Output 4
  6. Basic Idea ▶ 真の値と現時点でのモデルの output の差を 予測するようなネットワークを継ぎ足す 新しい subnetwork の出力を足し込む

    F(w, u) = 1 m m ∑ i=1 Φ (1 − yif1(xi) − yiw · u(xi)) ▶ −yiw · u(xi): 赤い subnetwork の出力 Input Output 5
  7. How to Add Subnetwork Subnetwork の候補 以下の 2 種類を試して良かった方をくっつける: ▶

    以下の 2 種類を試して良かった方を使う ▶ 今のネットワークと同じ深さのもの ▶ 今のネットワークより 1 段深いもの ▶ Subnetwork の制約 ▶ 1 つ前の層としか結合しない (汎化誤差の上界を保証するのに必要) Input Output 6
  8. Algorithm 1. 2 種類の subnetwork を作る ▶ 今と同じ深さのやつと 1 段深いやつ

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

  10. 汎化誤差の上界に関する議論の定石 手持ちのサンプルに対する誤判別率を使って持っていない母集団に対する 誤判別率を評価したい ▶ S = ((x1, y1), . .

    . , (xm, ym)): 持っているサンプル ▶ R(f) = E(x,y)∼D [ 1yf(x)≤0 ] : 母集団に対する誤判別率の期待値 ▶ ^ RS,ρ(f) = 1 m ∑ m i=1 1yif(xi)≤ρ : 持っているサンプル集合 S に対する誤判別率 ▶ マージン ρ だけ余裕を持って判別させるのがミソ R(f) ≤ ^ RS,ρ(f)+「十分サンプル数を大きくすれば定数に近付く何か」 という形がゴール 8
  11. Formal Formulation 仮説集合 (アルゴリズムで探索対象となる関数の集合) を定義 今回はノードや層ごとに分けて定義するところが少し特徴的 入力から最初の層への仮説集合 H1 = {

    x → u · Ψ(x) : u ∈ Rn0 , ∥u∥p ≤ Λ1,0 } ▶ Ψ(·): 入力データからベクトルへの写像 (たとえば文章と BoW) ▶ h1,j ∈ H1 : x ∈ X から 1 層目のノード j に渡る値への写像 9
  12. Formal Formulation 2 層目以降の (k 層目の各ノードを構成する) 仮説集合 Hk = {

    x → k−1 ∑ s=1 us · (φs ◦ hs)(x) : us ∈ Rns , ∥us∥p ≤ Λ1,0, hk,s ∈ Hs } ▶ hs : ネットワークの s 層目 ▶ φ: 活性化関数 ▶ u: s 層目全ノードから k 層目のある 1 ノードへ繋がる重み 10
  13. Rademacher Complexity 汎化誤差の上界を議論するための道具で、仮説 (関数) 集合の複雑さの指標 ^ RS(G) = 1 m

    Eσ [ sup h∈G m ∑ i=1 σih(xi) ] R(G) = ES∼D [ ^ RS(G) ] ▶ ランダムにラベルを付与したデータに対してどれくらい正しく判別できる 関数が仮説内に存在するか ▶ R が大きすぎる ==> 関数が複雑すぎて過学習する 11
  14. Theorem 1 のお気持ち Theorem 1 R(f) ≤ ^ RS,ρ(f) +

    4 ρ l ∑ k=1 ∥wk∥1Rm( ˜ Hk) + 2 ρ √ log l m + ˜ O ( 1 ρ √ log l m ) where ˜ Hk = Hk ∪ (−Hk) ▶ サンプル数 m を十分大きく取れば右の 2 項はゼロ ▶ Rademacher complexity と正則化項でおさえられる 12
  15. Lemma 2 のお気持ち ▶ Rademacher complexity って具体的にどれくらいの大きさ? ▶ 仮説集合 Hk

    をちょっと狭めると議論できる ▶ H∗ k : Hk に「1 つ前の層にしか接続しない」という制約を加えた版 Lemma 2 ^ RS(H∗ k ) ≤ r∞ΛkN 1 q k √ log(2n0) 2m ▶ r∞ = maxi∈[1,m] ∥Ψ(xi)∥∞ 13
  16. Objective Function

  17. Objective Function 汎化誤差の上界を踏まえて目的関数を次のように設定 F(w) = 1 m m ∑ i=1

    Φ  1 − yi N ∑ j=1 wjhj   + N ∑ j=1 Γj|wj| where Γj = λRm(Hkj ) + β, hj ∈ H∗ = ∪l k=1 ˜ H∗ k Rademacher complexity は lemma 2 の上界で代用する 14
  18. Iterations 各反復では次のような部分問題を解けば良い Ft(w, u) = 1 m m ∑ i=1

    Φ  1 − yi N ∑ j=1 wjhj − yiw · u(xi)   + N ∑ j=1 Γu∥w∥1 ▶ u: Subnetwork の最後の層 ▶ 裏にそこまでのネットワークの重みが変数として隠れている ▶ w: Subnetwork の最後の層から出力への重み ▶ Γu : Subnetwork の深さで R が変わる (ので u が添字) 15
  19. Numerical Experiments

  20. Experiments with CIFAR-10 詳しくは論文参照 ▶ 普通のニューラルネットや Logistic Regression と比べて高精度 ▶

    Subnetwork のくっつけ方は工夫の余地があるので AdaNet 同士でも比較 ▶ AdaNet.R: L1 正則化を追加 ▶ AdaNet.P: 新しい subnetwork は前回加えたものにだけ接続 ▶ AdaNet.D: 前回加えたものとの接続に dropout を入れる ▶ 疎結合にしても精度は落ちない 16
  21. Implementation

  22. TensorFlow Implementation ▶ TensorFlow での実装 ▶ https://github.com/tensorflow/adanet ▶ 研究の実験用コードじゃなくてマジでちゃんと API

    整えられたやつ ▶ とても嬉しい ▶ TensorFlow の Estimator API として作られている 17
  23. Conclusions

  24. Conclusions ▶ 論文ではきちんと汎化誤差の上界など理論的な面が議論されている ▶ 実装はマジでそのまま使えるやつが公開されてる ▶ Estimator の流儀で書くだけなので、最悪地雷を踏んでも 別の手法にすぐ逃げられる ▶

    AutoML Table みたいなサービスにも投入された 研究 ==> 実用化の流れが芸術点高い 18