Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AdaNet
Search
Shuhei Fujiwara
June 26, 2019
Research
1
370
AdaNet
Shuhei Fujiwara
June 26, 2019
Tweet
Share
More Decks by Shuhei Fujiwara
See All by Shuhei Fujiwara
Model Building in Mathematical Programming #2
shuheif
0
46
Nesterov #2
shuheif
0
65
TensorFlow Docs Translation Proofreading
shuheif
0
810
Model Building in Mathematical Programming #1
shuheif
0
68
Nesterov
shuheif
2
140
tbf07-seat-optim.pdf
shuheif
1
9.4k
Google Cloud Next Extended 2019 ML Day
shuheif
4
1.1k
TensorFlow Docs Translation JA
shuheif
1
920
TensorFlow DevSummit 2019 Recap
shuheif
0
710
Other Decks in Research
See All in Research
MIRU2024_招待講演_RALF_in_CVPR2024
udonda
1
330
文献紹介:A Multidimensional Framework for Evaluating Lexical Semantic Change with Social Science Applications
a1da4
1
220
Embers of Autoregression: Understanding Large Language Models Through the Problem They are Trained to Solve
eumesy
PRO
7
1.2k
機械学習でヒトの行動を変える
hiromu1996
1
310
12
0325
0
190
授業評価アンケートのテキストマイニング
langstat
1
360
The Fellowship of Trust in AI
tomzimmermann
0
130
渋谷Well-beingアンケート調査結果
shibuyasmartcityassociation
0
260
湯村研究室の紹介2024 / yumulab2024
yumulab
0
280
論文紹介/Expectations over Unspoken Alternatives Predict Pragmatic Inferences
chemical_tree
1
260
非ガウス性と非線形性に基づく統計的因果探索
sshimizu2006
0
370
ミニ四駆AI用制御装置の事例紹介
aks3g
0
160
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Designing for humans not robots
tammielis
250
25k
For a Future-Friendly Web
brad_frost
175
9.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
The Invisible Side of Design
smashingmag
298
50k
Fireside Chat
paigeccino
34
3k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Music & Morning Musume
bryan
46
6.2k
Transcript
論文紹介 AdaNet: Adaptive Structural Learning of Artificial Neural Networks @shuhei_fujiwara
2019-06-26 1
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
Basic Idea of AdaNet
The Goal of AdaNet Feed forward network よりも一般的なネットワーク構成の中から良いものを探す ▶ 後ろの任意の層の任意のノードに対して辺を繋げる
▶ 実際には汎化誤差の上界を保証するためにもう少し制約を入れる 3
Basic Idea ▶ 最初は小さいネットワークで普通に学習 この時点での目的関数 (正則化項は省略) 1 m m ∑
i=1 Φ (1 − yif1(xi)) ▶ yi ∈ {−1, +1}: label, Φ(·): loss function ▶ f1(·): 1 反復目のモデルの出力 ▶ 汎化誤差の上界を保証するには 最後の層への重みに L1 正則化が必要 Input Output 4
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
How to Add Subnetwork Subnetwork の候補 以下の 2 種類を試して良かった方をくっつける: ▶
以下の 2 種類を試して良かった方を使う ▶ 今のネットワークと同じ深さのもの ▶ 今のネットワークより 1 段深いもの ▶ Subnetwork の制約 ▶ 1 つ前の層としか結合しない (汎化誤差の上界を保証するのに必要) Input Output 6
Algorithm 1. 2 種類の subnetwork を作る ▶ 今と同じ深さのやつと 1 段深いやつ
2. それぞれくっつけて学習させてみる 3. より性能が良い方の subnetwork を採用する ▶ 性能は正則化なども込みの目的関数で測る ▶ 本当はこの部分に Rademacher complexity (の推定値) とかが隠れているので 結構重要 ▶ 改善しなかったらアルゴリズム終了 4. 1 へ戻る 7
Generalization Bound
汎化誤差の上界に関する議論の定石 手持ちのサンプルに対する誤判別率を使って持っていない母集団に対する 誤判別率を評価したい ▶ 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
Formal Formulation 仮説集合 (アルゴリズムで探索対象となる関数の集合) を定義 今回はノードや層ごとに分けて定義するところが少し特徴的 入力から最初の層への仮説集合 H1 = {
x → u · Ψ(x) : u ∈ Rn0 , ∥u∥p ≤ Λ1,0 } ▶ Ψ(·): 入力データからベクトルへの写像 (たとえば文章と BoW) ▶ h1,j ∈ H1 : x ∈ X から 1 層目のノード j に渡る値への写像 9
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
Rademacher Complexity 汎化誤差の上界を議論するための道具で、仮説 (関数) 集合の複雑さの指標 ^ RS(G) = 1 m
Eσ [ sup h∈G m ∑ i=1 σih(xi) ] R(G) = ES∼D [ ^ RS(G) ] ▶ ランダムにラベルを付与したデータに対してどれくらい正しく判別できる 関数が仮説内に存在するか ▶ R が大きすぎる ==> 関数が複雑すぎて過学習する 11
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
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
Objective Function
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
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
Numerical Experiments
Experiments with CIFAR-10 詳しくは論文参照 ▶ 普通のニューラルネットや Logistic Regression と比べて高精度 ▶
Subnetwork のくっつけ方は工夫の余地があるので AdaNet 同士でも比較 ▶ AdaNet.R: L1 正則化を追加 ▶ AdaNet.P: 新しい subnetwork は前回加えたものにだけ接続 ▶ AdaNet.D: 前回加えたものとの接続に dropout を入れる ▶ 疎結合にしても精度は落ちない 16
Implementation
TensorFlow Implementation ▶ TensorFlow での実装 ▶ https://github.com/tensorflow/adanet ▶ 研究の実験用コードじゃなくてマジでちゃんと API
整えられたやつ ▶ とても嬉しい ▶ TensorFlow の Estimator API として作られている 17
Conclusions
Conclusions ▶ 論文ではきちんと汎化誤差の上界など理論的な面が議論されている ▶ 実装はマジでそのまま使えるやつが公開されてる ▶ Estimator の流儀で書くだけなので、最悪地雷を踏んでも 別の手法にすぐ逃げられる ▶
AutoML Table みたいなサービスにも投入された 研究 ==> 実用化の流れが芸術点高い 18