Neural Architecture Searchの最前線　P-DARTSについて【論文読み】

## Neural Architecture Search P-DARTSについての説明
Neural Architecture Search(以下よりNAS）について何か知りたい人は近日公開の別の記事をお読みください。
ここでは微分可能であるNASのDARTSよりも良い性能である論文を読んだので、読んだことをまとめようと思います。
原論文は以下のサイトから

https://arxiv.org/abs/1904.12760

## 要約
左が今までのNASの手法。基本的には浅いネットワークを探索してしまう。しかし提案手法の右側はより深いネットワークを探索することでerrorが2.5%とよりよい性能を出した

論文図１より
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656436/f17cbdd3-e347-31f2-45c8-3d17cb5b90e9.png)

↓もう少し詳しく知りたい人
（微分可能なNASは計算コストを抑える。この論文ではNASは小さな浅いネットワークやスキップ接続を多いに使ったネットワークをよく用いる。しかし実際は深いネットワークの方がより良い性能を出す。このギャップを埋める。深いネットワークを探索できるようにする。（図１）

## 貢献
この論文では少ない計算量でより深いネットワークを探索し、これまでのNASよりもよい精度を出した。

↓もう少し詳しく知りたい人
1.cifar-10ではGPU0.3daysで2.50%のエラー率でDARTSやENASの精度を上回った
2.ImageNetではtop1のエラーが24.4%,top5のエラー率が7.4%
3.他のデータセットに適用しやすいcifar-100では15.92%のエラー率
この３つの貢献を計算コストを抑えながら行った。

## 提案手法の全体
深さを増やすネットワークを作成するが、計算コストと深さはトレードオフの関係。
これを改善するために以下の２つを行う。
1. Search Space Approximation(探索空間の近似）
2. Search Space Regularization(探索空間の正規化）

これらのおかげで深いネットワークを計算コストを抑えながら探索することができる。

## Search Space Approximation
図２より
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656436/7a03d5f3-a7ec-f36b-c827-a8c59ae87153.png)
探索空間を３つのステージに分解する。ネットワークの深さは5,11,17とだんだん増やしていく。
(1) Initial Stage
始めのステージでは５つの候補から一番小さい重みのものをドロップアウトする。

(2) Intermediate Stages
このステージは論文では１つだが、いくつかあってもよい。
ここでも１と同様に重みが小さいものをドロップアウトする。図の例では0.14,0.006,0.38の中から一番小さい0.006がドロップアウトされる。

(3) Fianl Stage
ここでも２つのうち小さい重みをドロップアウトする。
ドロップアウトのおかげで少ないGPUでも簡単に実装が可能に！

## Search Space Regularization
NASの特性としてスキップ接続を多いに用いる。これにより過学習を引き起こしている。なので正規化を用いる。正規化には２つのプロセルがある。

 1.スキップ接続のドロップアウト
スキップ接続をドロップアウトすることで他の候補解も探索できるようにする。しかし他の候補解は重みが小さく、ドロップアウトされる可能性があるので、ドロップアウト率をはじめは小さく、だんだん層が増えるごとに大きくしていく。

2.スキップ接続の最大値
スキップ接続は画像検出において影響が強すぎるため、スキップ接続の個数を制限する。
これにより最大値M個を超えた場合はスキップ接続の重みを０にしもう一度学習する。この２つ目の方法はスキップ接続のドロップアウトがあってこその意味がある。

## 実験
## データセット
cifar-10,cifar-100,ISLVRC2012の３つを使用。ISLVRC2012はcifar-10,100で行ったアーキテクチャの転移性を調べるために使用

## 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656436/874bd1e3-468a-5a8b-7779-dd630e2995ea.png)
(a) Stage1
(b) Stage2
(c) Stage 3
(d) DARTS
のようになっている。(c)Stage3のfianl Stageでは（ｄ）のＤＡＲＴＳと比較してより複雑な関係になっており、深いアーキテクチャを表現できている。またP-DARTSはcifar-100での学習も可能にした。（表２）
表２より
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656436/64053338-3191-fdd3-e76c-16c84342b3f2.png)
P-DARTSはGPU0.3daysでエラー率2.5%を達成
## discussion
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656436/621f8a76-e45b-d2cb-3ff2-9e115c2859f0.png)
P-DARTS（提案手法）が上回っている。cifar-10で学習させたものをcifar-100に転移させるとcifar-100で学習したよりも精度がよくなる。逆でも同じことがいえる。cifar-100で学習したのり、cifar-10に転移させるとよくなる。データセットのバイアスが問題である。

ImageNetに移植させた場合でも表２より、ＤＡＲＴＡＳやSNAS,ProxylessNASよりも良い性能を実現できている。すごいことは、mageNet用に carefully designed された検索空間を持つMnasNet [31]やProxylessNAS [2]よりも低いテストエラーを達成していることです。

## 検討
stageごとにaccuracyを調査した。(図３）final stageが一番低いことから提案手法の有効性がある。また、（a)などは浅い接続だけで終わってしまっているが、stageがあがるにつれ、後ろのノードは中間ノードの出力を待ってから接続されているようになっている。


またdropout率の有効性を検証するためにdropout率をなしと、0,0.3,0.6と変化させながら行う。結果が2.93%,3.28%,3.51%とdropout率を関係している。

またスキップ接続の最大値Mに対してはMの値を2,3,4と変化させた場合、それぞれ2.93%,3.28%,3.51%となる。

なのでドロップアウト率やスキップ接続の個数は結果に大きく影響をもたらす。しかし、スキップ接続の個数は小さい方が良いというわけではない。Mを0〜4まで変化させた場合、2.78%,2.68%,2.69%,2,84%となる。0にしたからといっていいわけではない。