対照学習と畳み込みグラフネットワークを用いた、ニューラルネットのアーキテクチャ比較手法
3つの要点
✔️ 対照学習と畳み込みグラフネットワークを用いて、アーキテクチャの性能を比較
✔️ 比較に基づいて強化学習エージェントの報酬を計算することで安定な推論を行える
✔️ 既存手法よりも高い精度のアーキテクチャをより少ないコストで探索することに成功
Contrastive Neural Architecture Search with Neural Architecture Comparators
written by Yaofo Chen, Yong Guo, Qi Chen, Minli Li, Wei Zeng, Yaowei Wang, Mingkui Tan
(Submitted on 8 Mar 2021 (v1), last revised 6 Apr 2021 (this version, v2))
Comments:Accpeted by CVPR 2021.
Subjects: Computer Vision and Pattern Recognition (cs.CV)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
ディープニューラルネットワークは、様々な分野において大きな成果を挙げてきました。しかし、効果的なニューラルネットのアーキテクチャを設計するには多くの労力が必要になり、人間の専門知識に大きく依存します。
ハンドメイドでアーキテクチャを設計する以外にも、自動で設計する方法があります。その方法をNAS (Neural Architecure Search)と呼び、ハンドメイドのアーキテクチャよりも高い性能のアーキテクチャを設計することを目指しています。既存のNASでは、探索したアーキテクチャの性能をどのように推定するかが重要な課題となっています。というのも、探索したアーキテクチャを毎回工夫なしにデータセットで学習させていては非常に時間と計算コストがかかってしまうからです。
この点について行われている工夫としては、スーパーネット(大きな親ネットワーク)を学習させてその中からアーキテクチャを探索することで重みを共有する手法や、予測器を用いてアーキテクチャの性能を推定する手法があります。しかし、ランダムなシード値で学習していると性能が大きく変動する可能性があり、正確な性能を予測することは困難であると考えられます。
本論文では、アーキテクチャの比較により探索を行うContrastive Neural Architecture Search (CTNAS)手法を提案しています。アーキテクチャの比較という形で探索したアーキテクチャの評価を行うことで、絶対的なアーキテクチャの性能評価を必要としないため、評価精度の向上が見込めます。また、対照学習や畳み込みグラフネットワークを用いることで精度・安定性の向上を図っています。
提案手法(CTNAS)の概要
提案手法(CTNAS)の概要は次の図のようになります。
Controllerによって探索されたアーキテクチャ(Sampled Architecture α) と、ベースラインとの比較をNACによって行い、Controllerの報酬を計算します。
Contrastive Neural Architecture Search
本提案手法では、絶対性能を利用せず、比較を用いて候補アーキテクチャのランキングを得ることを目指しています。そのためのモジュールをNACと命名しています。
NACは、任意の二つのアーキテクチャα,α'を比較して、αがα'よりもの優れている確率を出力するモジュールです。すなわち、以下のような確率pを出力します。
Controllerは、NACによって与えられた確率pを報酬として学習します。具体的には、下の最適化問題を解くことによって方策π(α;θ)を学習します。
上の式において、βはベースラインモデルのアーキテクチャを表します。アーキテクチャの比較においては、ベースラインを設定し、そのベースラインを上回る確率の期待値を報酬として設定しています。
比較のためのベースラインの更新
CTNASはベースラインのアーキテクチャとの比較結果を報酬としているので、探索性能はベースラインに設定したアーキテクチャに大きく依存します。そのため、ベースラインのアーキテクチャを固定してしまうとそのベースラインより優れたアーキテクチャを探すだけにとどまってしまうため、十分高い性能のアーキテクチャを探索することが難しくなってしまいます。よって、探索中にベースラインを改善していくことが必要になります。ここでは、そのためのベースライン更新アルゴリズムについて説明します。
ベースラインのアーキテクチャを改良していくために、過去に探索されたアーキテクチャの中から最適なアーキテクチャをベースラインとして設定することを目指します。具体的には、ベースライン候補集合Hを構築して、Controllerによってサンプリングされたアーキテクチャを動的に取り込んでいきます。任意のアーキテクチャαiをH内のほかのアーキテクチャと比較することによって下の式に従って平均比較確率を計算します。
過去の最良のアーキテクチャをベースラインとして、ベースラインよりもさらに優れたアーキテクチャを探索することによって探索性能をより向上させることを狙いとしています。
Neural Architecture Comparator (NAC)
ここまででは、提案手法の基本的なコンセプトを説明してきました。ここからは本提案手法の肝のモジュールであるNACについて詳細を説明します。
NACの機能は前述したとおり、二つのアーキテクチャを入力し、ベースラインよりも探索したアーキテクチャが優れている確率を出力するものになっています。アーキテクチャを入力するとありますが、具体的にどのようにアーキテクチャを入力するのでしょうか?
GCNによるアーキテクチャ比較
モデルにアーキテクチャを入力する方法として本論文では、GCN(Graph Convolutional Networks)を用いています。ニューラルネットワークの構造はグラフという風に捉えることができることと、スーパーネット主体のアーキテクチャ探索手法であることからこの方法を利用しています。
GCNにおいて、アーキテクチャは下の図のように表現することで入力します。
これは、各ノードをDAG(有向非巡回グラフ)として表現し、Adjacent Matrixで各ノードの接続状態を表現しています。また、各ノードごとに特徴量を持たせるため、Nodes Attributesを用意します。
本論文では二層のGCNを用いているため、アーキテクチャαの全結合層に入力する直前の特徴量は以下のように計算できます。
このように計算した特徴量を全結合層に入力し、下の式のように探索したアーキテクチャの性能がベースラインよりも優れている確率を出力します。
NACを学習させるためには、CIFAR-10などのなんらかのデータセット上で評価されたアーキテクチャとその性能から成るデータセットが必要になります。アーキテクチャとその性能のペアデータは、スーパーネットを学習させるか、アーキテクチャの集合を一から学習させることで得ることができます。このデータセット内のすべてのアーキテクチャに対して全パターン分ペアを作り、それぞれに対してどちらが優れているかをラベルとして付与します。このようにすることによって、NACの学習は二値分類問題として考えることができます。
NAC学習のためのデータ探索
良いNACを学習するためには、アーキテクチャとその推定精度のペアデータができるだけ多く必要になります。しかし、実際には計算コストの制限から限られた数のペアデータしか用意できません。限られた学習データセットでは、NACモデルの性能が低下する可能性があり、アーキテクチャ探索のための学習が困難になることが想定されます。
この問題を解決するために、本論文では探索中にサンプリングされたアーキテクチャをラベルなしデータとして採用するデータ探索手法を提案しています。この手法では、ラベルなしデータに対して、NACによって予測された最大確率のクラスをラベルとして採用します。すなわち、探索したアーキテクチャAとベースラインBの比較をNACが行った際、Aの方が優れているとNACが予測した場合、この二つのペアのラベルとしてA>Bを付けます。具体的には下の式のようにラベル付けを行います。
しかし、NACが誤った予測をする可能性があるので、予測されたラベルはノイズになる可能性が考えられます。そこで、アーキテクチャのペアについて信頼度スコアを計算することで予測品質を評価します。k番目のアーキテクチャペアの信頼度スコアは以下のように計算できます。
信頼度スコアが上位K位の予測ラベルを持つデータを選択し、ラベル付きデータと組み合わせてNACを学習させます。元からラベルが付いているデータとNACによって後付けしたデータの二種類のデータのバランスをとるため、予測ラベルデータの割合を0.5とします。
このようにラベルなしデータを増加させることでNACは未知のアーキテクチャに対する繁華性能を向上させることができると考えられます。
以上がNACの説明になります。最後にまとめとして、NACが既存手法に対して優れている点を列挙します。
- 絶対性能を推定するのではなく、比較を用いることによってより安定した報酬を提供することができる。
- アーキテクチャグラフを比較することでアーキテクチャを評価するので、検証データ上で性能を評価するよりも高速に動作する。
- NACの学習データはm個のアーキテクチャとその推定精度のペアデータを用意したとき、m(m-1)/2個の学習ペアを用意することができるが、直接精度を推定する方法ではm個の学習データしか用意できない。そのため、NACの方が学習サンプルの必要数を減らすことができる。
実験
ここからは提案手法の有効性を検証した結果を見ていきます。
NAS-Bench-101における実験
まず、NACによるアーキテクチャ比較の性能を検証します。アーキテクチャ比較の性能を比較するために、順位相関を考えます。順位相関とは、ランキング間の相関を測る指標で、Ground-Truthの順位とNACによって予測された順位がどの程度相関があるかを測ることで、NACの正確性を検証します。
比較した結果は下の図のようになりました。
この結果を見ると、提案手法が最も高い順位相関(KTau)を示していることがわかります。また、平均精度も最も高い精度を達成できていることがわかります。
Image Netにおける実験
次に、Image Netにおける提案手法の性能をほかのNAS手法と比較します。その結果は以下の表のようになりました。
この表を見ると、探索されたアーキテクチャの性能はほかの手法と比較して高い水準にありながら、探索時間は非常に短く済んでいることがわかります。
NACの各モジュールの性能検証
アーキテクチャ評価の時間コスト
ほかのNAS手法と、アーキテクチャ評価にかかる時間コストとの比較結果は下の式のようになります。
これをみると、提案手法(CTNAS)が非常に短い時間でアーキテクチャ評価を行えることがわかります。
ベースライン更新の効果
ベースライン更新の効果を検証するために、ベースラインを固定してCTNASを実行した場合、ベースラインをランダムに選択してCTNASを実行した場合、提案手法の場合の三つを比較します。その結果は以下のようになります。
これをみると、ベースラインをランダムに選択した場合は精度の分散が大きいことがわかります。また、固定のベースラインと提案手法を比較すると、大きな差はないものの、ある程度性能が向上していることがわかります。
データ探索手法の効果
データ探索手法の効果を検証するために、データ探索を行った場合とそうでない場合を比較します。データ探索によるデータの割合をrとして、rを変動させて結果を確認します。その結果は以下のようになります。
この表を見ると、データ探索を行わない場合(r=0)の時は精度が低く、探索に頼りすぎる場合(r=0.8)のときは分散が大きくなっていることがわかります。この結果から、データの割合はr=0.5が適切であるとわかります。
まとめ
本論文では、サンプリングされたアーキテクチャとベースラインの比較結果に基づいて探索を行う、Contrastive Neural Architecture Searchを提案しました。比較に基づくアーキテクチャ評価や、グラフネットワークを用いてアーキテクチャを入力するなど、非常に興味深い内容だと思いました。
この記事に関するカテゴリー