nekonookangae / SummarizePapers

個人用。翻訳した論文をIssuesにまとめていきます。
1 stars 0 forks source link

Simple And Efficient Architecture Search For Convolutional Neural Networks #12

Open nekonookangae opened 4 years ago

nekonookangae commented 4 years ago

一言でいうと

これまでエキスパートの手によって設計されてきたネットワークアーキテクチャを、進化的アルゴリズムの一つである山登り法を用いて自動的に探索する論文。 このような手法はNAS(Neural Architecture Search)と呼ばれており、論文では本手法をNASH (NAS by Hillclimbing) と称している。 NASはこれ以前にも多くの研究がなされてきたが、アーキテクチャを作り直す = モデルを0から再学習する事になり、数百のGPU×数週間をかけてモデルを構築するものが殆どであったため、探索時間の短縮が課題とされていた。 そこで本手法では、小規模な1つのネットワークから始め、遺伝の際に層やブロックを追加することでネットワークの重みを再利用=転移しつつ拡張する手法を採用している。 実験はCIFAR-10 / 100によって行われ、1つのGPUで1日学習するだけで、 従来の人手で設計されたアーキテクチャや自動化アーキテクチャの殆どに匹敵する性能を示した。

論文リンク

https://arxiv.org/pdf/1711.04528.pdf

著者/所属機関

Thomas Elsken, Jan-Hendrik Metzen, Frank Hutter

投稿日付

2017/11/13

概要

ニューラルネットワークは最近、多くのタスクで大きな成功を収めています。 ただし、パフォーマンスの良いニューラルネットワークアーキテクチャは、通常、面倒な試行錯誤プロセスの専門家によって手動で設計されています。 演算子がネットワークモーフィズム※1 を適用し、その後Cosine Annealing※2 によって短い最適化を実行する単純な山登り手順に基づいて、パフォーマンスの高いCNNアーキテクチャを自動的に検索する新しい方法を提案します。 驚くべきことに、単一のネットワークの学習と同じ桁のリソースしか必要としないにもかかわらず、この単純な方法は競争力のある結果を生み出します。 例えば、CIFAR-10では、私たちの方法は、単一のGPUでわずか12時間でエラー率6%未満のネットワークを設計および学習できます。 1日の学習により、このエラーはさらに減少し、ほぼ5%になります。

※1 morphism:射。ある数学的構造を持つ数学的対象から別の数学的対象への「構造を保つ」写像の意味。

※2 下図のように、学習率を一定間隔で上げ下げする手法の一つ。   Lossの1%程度の軽減効果があると言われている。 image

はじめに

ニューラルネットワークは、画像認識、音声認識、機械翻訳などの様々なタスクでの成功により、ここ数年で急速に人気を博しています。 殆どの場合、これらのニューラルネットワークは依然として手作業で設計されており、時間のかかる複雑なプロセスです。 さらに、膨大な量の可能な構成には、探索を制限するための専門知識が必要です。 したがって、自然な目標は、このニューラルアーキテクチャ検索を自動化する最適化アルゴリズムを設計することです。 ただし、アーキテクチャの検索空間は離散的であり (例えば、層数、層の種類)、条件付き (例えば、層を定義するパラメータの数は層の種類によって異なる) であるため、ほとんどの古典的な最適化アルゴリズムはこの問題には適用できません。 したがって、微分可能性や独立したパラメータに依存する方法は適用できません。 これにより、CNNアーキテクチャの自動設計において、進化的アルゴリズムと強化学習の使用に対する関心が高まりました。 一方で、残念ながら、提案されている殆どの方法は非常にコストがかかる (数百または数千のGPU日数を必要とする) か、競合力のないパフォーマンスをもたらします。 この作業では、競争力のあるパフォーマンスを達成しながら、これらの計算コストを劇的に削減することを目指しています。 具体的には、次のような貢献があります。

•ネットワークをランダムに構築し、SGDR※3 を使用してそれらを学習するベースライン方式を提案します。 この単純なベースラインは、CIFAR-10で6%〜7%のテストエラーを達成することを示しています。CIFAR-10は、Neural Architecture Search (NAS)※4 の既存のいくつかの手法に匹敵します。その単純さのため、このベースラインが将来のより高度な手法の開発の貴重な出発点となることを願っています。

•Skip ConnectionやBatch Normalization (BN) などの一般的なネットワークビルディングブロックを提供するために、ネットワークモーフィズムに関する作業を定式化および拡張します。

•山登り法 (NASH) によるNASを提案します。これは、各ステップで現在のネットワーク (=親ネットワーク) に一連の代替ネットワークモーフィズムを適用し、Cosine Annealingの短い最適化実行で結果のChildネットワークを学習する単純な反復アプローチです。そして最も有望なChildネットワークに移動します。NASHは、単一のネットワークの学習と同じ桁数の計算コストで、競合するアーキテクチャを見つけて学習します。たとえば、CIFAR-10では、NASHは単一のGPUで約12時間でエラー率が6%未満のCNNを見つけて学習します。1日後、エラーはほぼ5%に減少します。アルゴリズムのさまざまな段階のモデルを組み合わせて、単一のGPUで2日以内に4.7%のエラーを達成できます。CIFAR-100では、1日で24%未満のエラーが発生し、2日後には20%に近づきます。

•私たちの方法は、使いやすく拡張も簡単なので、将来の作業の基礎として役立つことを期待しています。

まず、第2章で関連研究について説明します。 次に、第3章でネットワークモーフィズムの概念を定式化し、第4章でそれらに基づいたNASを提案します。 第5章で手法を評価し、第6章で結論づけます。

※3 Stocastic Gradient Descent with Warm Restarts。Cosine Annealingと同意。

※4 ニューラルネットワークの最適な構造を自動的に探索する手法。

関連研究

ハイパーパラメータ最適化 ニューラルネットワークは、学習率や正則化定数などのさまざまなハイパーパラメータの設定に非常に敏感であることが知られています。 これらのハイパーパラメータを設定するための自動化された方法に関する長い歴史上の研究が存在します。 ランダムサーチ、ベイズ最適化、バンディットベースのアプローチ、および進化戦略 (Evolutionary Strategies) 。

自動化されたアーキテクチャ検索 近年、研究の焦点はハイパーパラメータの最適化からアーキテクチャの最適化に移行しました。 アーキテクチャの選択は離散ハイパーパラメータとして扱うことができ、標準のハイパーパラメータ最適化手法で最適化できますが、現在の焦点は、アーキテクチャの最適化のための特別な手法の開発です。 非常に人気のあるアプローチの1つは、パフォーマンスの良いCNNを設計する目的で強化学習 (RL) エージェントを学習することです。エージェントを学習して、層の種類 (畳み込み、プーリング、全結合) とそのパラメータを順次選択します。 Zoph&Le (2017) は、RNNコントローラーを使用して、ネットワークアーキテクチャを表す文字列を順次生成します。どちらのアプローチも、生成されたネットワークを「0から学習」し、Validationセットでそのパフォーマンスを評価します。これは非常にコストのかかる手順です。 後の研究 (Zoph et al、2017)で、RLエージェントはセルを構築する方法を学びました。これは、固定されたグローバル構造を持つニューラルネットワークのビルディングブロックとして使用されます。 残念ながら、アーキテクチャの設計を目的としたRLエージェントの学習は非常に費用がかかります。 Baker et al. (2016) とZoph&Le (2017) は10.000以上の完全学習済みネットワークを必要とし、数百から数千のGPU日を必要としました。 この欠点を克服するために、Cai et al. (2017) はRL内でネットワーク変換/モーフィズムの概念を適用することを提案しました。 私たちの (独立した、並列の) 研究と同様に、基本的な考え方は、これらの変換を使用して新しい事前学習済みアーキテクチャを生成し、すべてのネットワークを最初から学習するという多大なコストを回避することです。 この研究と比較して、私たちのアプローチははるかに単純で15倍高速でありながら、優れたパフォーマンスを実現しています。 Real et al. (2017) とSuganuma et al. (2017) は、小規模なネットワークから強力なネットワークを繰り返し生成するために進化的アルゴリズム (EA)※5 を利用しました。 層の挿入、層のパラメータの変更、Skip Connectionの追加などの操作は、進化のフレームワークで「突然変異」として機能します。 一方、Real et al. はまた、膨大な計算リソース (250 GPU、10日間) を使用しました、Suganuma et al,は、ネットワークの集団を取り扱うため、比較的小規模なネットワークに制限されていました。 時間の経過とともにネットワーク容量が増加する以前の方法とは対照的に、Saxena&Verbeek(2016)は、大規模ネットワーク (「畳み込みニューラルファブリック」) の学習から開始し、最後にこれをプルーニングします。 ごく最近、Block et al. (2017) はハイパーネットワーク (Ha et al. 2017) を使用して、膨大な量のネットワークを学習するコストのかかるプロセスを排除することを目的として、ランダムにサンプリングされたネットワークアーキテクチャの重みを生成しました。

ネットワーク変換/モーフィズム。 ネットワーク変換は (私たちの知る限りでは)、転移学習の文脈でChen et al. (2015) によって最初に導入されました。 著者らは、ネットワークアーキテクチャの学習と探索を高速化することを目的として、ネットワークをより深く (「Net2Deeper」と呼ばれる) またはより広く (「Net2Wider」) する関数保存操作について説明しました。 Wei et al. (2016) は、非冪等活性化関数の処理やカーネルサイズの変更などの追加の操作を提案し、ネットワークモーフィズムという用語を導入しました。 上記のように、Wei ei al. (2017) は、ネットワークモーフィズムをアーキテクチャ検索に使用しましたが、Chen et al. (2015) のNet2DeeperおよびNet2Wider演算子を使用しています。 カーネルサイズを変更するだけでなく、接続をスキップすることなく、検索空間を単純なアーキテクチャに制限します。

※5 進化的アルゴリズム:進化計算の一分野であり、解の探索空間が広大など、通常の計算では解くことが難しい問題の最適解の近似解を求めるためのアルゴリズム。代表的な手法に遺伝的アルゴリズム(GA)、遺伝的プログラミング (GP)、進化的戦略 (ES) がある。

手法

image 図1:私たちの手法の可視化。 現在の最良のモデルに基づいて、新しいモデルが生成され、後で学習されます。 最高のモデルが更新されています。

アルゴリズム1:提案手法のアルゴリズムの擬似コード。 ![Uploading スクリーンショット 2020-04-22 3.42.11.png…]()

ネットワークモーフィズムによるアーキテクチャ検索

私たちが提案するアルゴリズムは、単純な山登り戦略です。 小規模な (恐らく) 事前学習済みのネットワークから始めます。 次に、この初期ネットワークにネットワークモーフィズムを適用して、さらに学習したときにパフォーマンスが向上するより大きなネットワークを生成します。 これらの新しい「Child」ネットワークは、ネットワークアーキテクチャの領域では、最初の「Parent」ネットワークの近隣と見なすことができます。 ネットワークモーフィズムの方程式 (1) により、Childネットワークは親と同じパフォーマンスで開始します。 つまり、本質的に、ネットワークモーフィズムは、Childネットワークを初期化して適切に実行し、0からそれらを学習するというコストのかかるステップを回避し、それによって評価のコストを削減する方法と見なすことができます。次に、さまざまなChildネットワークを短時間学習して、ネットワークモーフィズムによって得られた追加の容量を活用し、最適な子ネットワークに検索を進めることができます。 これは、提案されたアルゴリズムの1つのステップを構成します。これは、山登り法 (NASH) によるNASです。 NASHは、Validationセットのパフォーマンスが飽和するまで、このステップを数回実行できます。この貪欲なプロセスは、原則としてパフォーマンスが低下し、そこから逃れることはできない領域に行き詰まる可能性があることに注意してください。(= 山登り法だから局所最適解に陥る可能性を示唆している?)

図1は、NASHアプローチの1つのステップを視覚化し、アルゴリズム1は、アルゴリズムの詳細を提供します。 私たちの実装では、関数ApplyNetMorph (model、n)がn個のネットワークモーフィズムを適用し、それぞれが次の3つからランダムに一様にサンプリングされます。

•ネットワークを深くします。つまり、第3章の最後に説明されているように、「Conv-BatchNorm-Relu」ブロックを追加します。ブロックを追加する位置とカーネルサイズ (∈{3、5})は、一様にサンプリングされます。 チャネル数は、直前の畳み込みのチャネル数と等しくなるように選択されます。

•ネットワークモーフィズム Type IIを使用して、ネットワークを広くする、つまりチャネル数を増やします。広くする畳み込み層と拡大係数 (∈{2、4}) は、ランダムに均一にサンプリングされます。

・それぞれネットワークモーフィズム Type IIまたはIVを使用して、層iから層jに (連結または追加-均一にサンプリングされた) Skip Connectionを追加します。層iと層jも均一にサンプリングされます。

現在の最良のモデルもChildと見なされることに注意してください。つまり、アルゴリズムは新しいモデルを選択するように強制されるのではなく、他のモデルがそれを改善しない場合でも古いモデルを維持できます。 Childネットワークは、いくつかのエポック (17行目) についてのみ学習する必要があることが、この方法では重要です。 したがって、いつでもパフォーマンスの良い最適化アルゴリズムが必要です。 したがって、私たちはLoshchilov&Hutter(2017)のCosine Annealing戦略を選択しましたが、学習率は暗黙的に再開されます。17行目の学習は常にepoch_neigh エポックの後にλ_endにアニーリングされる学習率λ_startで始まります。 最終学習 (=モデル確定後の学習) では同じ学習率スケジューラを使用します (エポック数が異なることを除いて)。 私たちの方法を単純な山登り法として提示しましたが、それはまた、n_neighの集団サイズ、交叉なし、突然変異として扱うネットワークモーフィズム、および最高のパフォーマンスを持つ個体を次世代の親とみなします。この解釈はまた、単純な方法を拡張するためのいくつかの有望な可能性を示唆しています。

実験

CIFAR-10とCIFAR-100で提案手法を評価します。 最初に、前章の考察が実証結果と一致するかどうかを調査します。 また、ネットワークの変更と学習の相互作用が最終的なパフォーマンスに悪影響を与えるかどうかも確認します。 最後に、提案された方法を他の自動化アーキテクチャアルゴリズムや人手で作成したアーキテクチャと比較します。 以下のすべての実験でLoshchilov&Hutter (2017) が使用した両方のCIFARデータセットに対して、同じ標準データ拡張スキームを使用します。 学習セット (50.000サンプル) は、アーキテクチャ検索の目的で学習 (40.000) とValidation (10.000) セットに分割されます。 最終的に、パフォーマンスはテストセットで評価されます。 すべての実験は、TensorFlowバックエンドを使用してKerasで実装されたコードを使用して、Nvidia Titan X GPUで実行されます。

CIFAR-10による実験

ベースライン

私たちの方法を他の方法と比較する前に、いくつかのベースライン実験を実行して、前の章からの考察が経験的データと一致するかどうかを確認します。 最初に、単純な山登り戦略が高パフォーマンスと低パフォーマンスのモデルを区別できるかどうかを調査します。 このため、n_neigh = 1を設定します。つまり、モデル選択はありません。ランダムネットワークを構築して学習するだけです。 次に、n_neigh = 8で実験を実行し、両方の結果を比較します。この実験では、他の全てのパラメータは同じです。つまり、n_steps = 5、n_NM = 5、epoch_neigh = 17、epoch_final = 100です。 Loshchilov&Hutter (2017) と同様に、λ_start= 0.05、λ_end= 0.0を選択します。 model_0は単純な変換ネットでした:Conv-MaxPool-Conv-MaxPool-Conv-FC-Softmax 20エポックで事前学習され、約75%のValidation精度を達成します (収束するまで学習した場合は最大91%)。付録の図3を参照してください。 私たちのアルゴリズムがより良いネットワークを識別できれば、n_neigh = 8の設定でより良い結果が得られると期待できます。 2番目の実験として、山登り段階で再起動によるCosine Annealing (SGDR) をオフにします。つまり、アルゴリズム1の17行目の学習は、一定の学習率、つまりSGDRの開始学習率λ_start= 0.05で行われます。 最終学習にはまだコサイン減衰(=SGDR?)を使用していることに注意してください。 これら2つの実験の結果を表1にまとめます。

スクリーンショット 2020-04-22 3 49 13

山登り戦略では、実際にはより優れたモデルを特定できます(5.7%対6.5%)。 山登り法がより大きなモデルを好むことに注目してください (平均で570万のパラメータに対して440万のパラメータ)。 また、SGDRも重要な役割を果たします。 一定の学習率で学習が行われたときにアルゴリズムによって選択された結果のモデルは、モデル選択戦略なしのモデル (それぞれ6.8%および6.5%) と同様に機能します。 SGDRを使用せずに学習した場合のValidationセットのいくつかのエポックは、SGDRを使用した学習の場合と同様に、テストセットの最終的なパフォーマンスとあまり相関しません。 一定の学習率では、費やされたいくつかのエポックはモデルのパフォーマンスを改善するのに十分ではありません。 図2は、2つの (ランダムに選択された) 例のアルゴリズムを実行しているときの進行状況を示しています。 image 図2:経時的に追跡されたアルゴリズム1によって検出された最良のモデル。ヒルクライミング内の学習にSGDRを使用する場合と使用しない場合 (17行目)の最終学習 (24行目) はプロットされていません。赤い縦線は、ネットワークモーフィズムが適用される時間を強調しています(19行目)。

スクラッチ学習からの再学習

この実験では、アルゴリズムで使用されるネットワークモーフィズムによる「重みの継承」が最終モデルの最終パフォーマンスに悪影響を与えるかどうかを調査します。 この重みの継承は、重みの強い事前評価と見なすことができ、新しいより大きなモデルでは、おそらく不適切な事前評価を克服できない可能性があると考えられます。さらに、アーキテクチャ検索プロセスのオーバーヘッドを測定することに関心があったため、モデルを生成して学習する時間と、最終モデルを0から学習するときに必要な時間を比較しました。 0からの再学習は、アルゴリズムによって返されたモデルを学習するために費やされたエポックの総数と同じ数のエポックに対して行われます。 結果を表2に示します。

スクリーンショット 2020-04-22 3 47 45

唯一の大きな違いは、モデル3で観察できます。 他のすべてのケースでは、差は0.5%未満です。アルゴリズムに有利な場合もあれば、0からの再学習に有利な場合もあります。 この実験は、アルゴリズムがモデルの最終的なパフォーマンスに悪影響を与えないことを示しています。 実行時間に関しては、最初にアーキテクチャを検索する必要があるオーバーヘッドは、おおよそ3倍になります。 これは私たちの方法の大きな利点であると私たちは考えており、アーキテクチャ検索は単一の学習と同じ桁数で実行できることを示しています。

人手で作成されたモデルおよびその他の自動生成されたアーキテクチャとの比較

ここで、アルゴリズムを人気のある広いResidualネットワーク (Zagoruyko&Komodakis、2016)、Gastaldi (2017) の最新モデル、およびその他の自動化されたアーキテクチャ検索方法と比較します。前の章のn_steps = 5の結果に加えて、より大きなモデルを生成するためにn_steps = 8も試しました。 結果をさらに改善するために、Huang et al. (2017) のアイデアに従ってアルゴリズムを実行しながら、すべてのIterationから最良のモデルのスナップショット※6 を取得します。学習にSGDR (Loshchilov&Hutter、2017) を使用する場合。 しかしHuang et al. (2017)とは異なり、スナップショットはまだValidationセットではなく学習セットでのみ学習されているため、完全に学習されたモデルをすぐに無料で入手することはできません。 したがって、追加のリソースを費やして、両方のセットでスナップショットを学習しました。 その後、スナップショットモデルと均一の重みを組み合わせて、アンサンブルモデルを構築します。 最後に、すべての実行にわたってアルゴリズムによって返されたモデルからアンサンブルを構築します。 結果を表3に示します。

スクリーンショット 2020-04-22 3 45 07

提案された方法は、わずか12時間で競争力のあるネットワークアーキテクチャを生成できます。 さらに12時間を費やすことで、ほとんど全ての自動化されたアーキテクチャ検索方法よりもパフォーマンスが向上しますが、それらのすべてが (部分的にはるかに) 多くの時間とGPUを必要とします。 Zoph&Le (2017) とBrock et al. (2017) が見つけた2つの手作りのアーキテクチャのパフォーマンスには到達していません。 ただし、Zoph&Le (2017) は、私たちよりもはるかに多くのリソースを費やしていることに注意してください。 当然のことながら、アンサンブルモデルのパフォーマンスは向上します。 これは結果を改善する簡単で安価な方法であり、パラメータの数が関係ない場合に誰でも検討できます。

CIFAR-100による実験

CIFAR-100で前の実験を繰り返します。 ハイパーパラメータは変更されていません。 結果を表4に示します。

スクリーンショット 2020-04-22 3 46 37

残念ながら、ほとんどの自動化されたアーキテクチャ手法はCIFAR-100を考慮していませんでした。 私たちの方法は、Real et al. (2017)と同等であり、1つのGPUで1日です。 スナップショットアンサンブルは、Brock et al. (2017) と同様に動作します。 5回の実行から構築されたアンサンブルモデルは、人手のWRN 28-10と競合できます(=同等の結果)。 Shake-Shakeネットワーク (Gastaldi、2017) のパフォーマンスは達成されていません。

※6 スナップショット:ある時点のメモリーやレジスタの内容出力。           ここでは学習終了時点でのモデルの出力を指す。

おわりに

NASHを提案しました。 これは、山登り戦略、ネットワークモーフィズム、SGDRを介した学習に基づく自動アーキテクチャ検索のシンプルで高速な方法です。CIFAR-10とCIFAR-100の実験により、この方法では競合する結果が得られる一方で、必要な計算リソースが他のほとんどのアプローチよりもかなり少ないことがわかりました。 私たちのアルゴリズムは、例えば、他のネットワークモーフィズム、新しいモデルを生成するための進化的アプローチ、安価なパフォーマンス評価のための他の方法 (例えば、学習曲線予測 (Klein et al. 2017) またはハイパーネットワーク (Ha et al. 2017; Brock et al. 2017)、またはより優れたリソース処理戦略 (Hyperband (Li et al. 2016))。 この意味で、私たちのアプローチが、パフォーマンスのさらなる改善をもたらすより洗練された手法の開発の基礎として役立つことを願っています。

コメント

日本語の解説スライドはここにあります

実装

nekonookangae commented 4 years ago

Qiitaの解説ページもあります https://qiita.com/cvusk/items/536862d57107b9c190e2