最近理論保証がある研究に関心があり、いくつか文献を調査しています。本記事はその中間まとめ的な役割の個人的なメモです。いくつかの文献を参考に、初歩的な事柄をまとめようと思います。注意点は以下の通りです。
- 数式多めです。
- なるべく正確な記述を心がけていますが、誤りが含まれる場合もあります。
それでは本題に入ります。
ニューラルネットワークの頑健性
パンダの画像で有名なAdversarial exampleですが、その存在を指摘したのはChristian Szegedyを筆頭とするGoogle, New York University, University of Montreal, Facebook (現Meta)の研究者グループです。Adversarial exampleとは、人間には知覚できないほど小さく摂動された入力であり、モデルの出力結果が正常な入力と比較して大きく異なるようなものを指します。入力の変化はとても小さいのに出力は大きく変化する、という点がポイントです。Szegedyらはニューラルネットワークのリプシッツ定数 (Lipschitz constant)が大きいせいでこのような現象が発生している、との仮説を立てました。(その後の研究では、リプシッツ定数が大きいのにロバスト性が高いモデルが存在することがわかっています。また、リプシッツ定数が小さいモデルはロバスト性が高いことも知られています。)Lipschitz Bounded Neural Networkはこの仮説に基づいて考案されたと考えることができます。
敵対的攻撃に関する記事はこちらです。
(蛇足です)Adversarial exampleがなぜ存在するのか?という問いには明確な答えが与えられておらず、データの分布や活性化関数などのモデル構造が持つ特性、理論解析などさまざまな方面から研究が行われています。
ロバスト性に関する理論保証
理論保証つきロバスト性 (Certifiable robustness)に関する研究は、大きく以下の三種類に大別されます。
- Verification: 正常な入力を中心とする半径$\varepsilon$の$\ell_2$-ballに含まれるすべてのサンプルが正解クラスに分類されることを保証する。VerificationはNP-hardであることが知られている。
- Randomized Smoothing: ノイズ除去と組み合わせることで最先端のロバスト性を達成。一つの入力に対して最大100k回程度の順伝播計算が必要
- Lipschitz Bounded Neural Network: 本記事の主題。後述するリプシッツ定数が1のlayerを重ねることで、ネットワーク全体のリプシッツ定数が1となるように設計されたネットワーク。(リプシッツ定数は必ずしも1である必要はなくて、設計者が陽に制御できることが大事)
Lipschitz Bounded Neural Network
ネットワークの設計を工夫することで、ネットワークのリプシッツ定数を陽に設定できるようなNeural networkをLipschitz Bounded Neural Networkと呼びます。準備としてリプシッツ連続の定義を紹介します。
リプシッツ連続 (Lipschitz continuity)
$X,Y$を距離空間, $d_X, d_Y$をそれぞれ$X,Y$における距離関数とする。この時、写像$f:X\to Y$がリプシッツ連続(Lipschitz continuous)であるとは、任意の$x_1, x_2\in X$に対してある正の実数$L\in\mathbb{R}$が存在して、$d_Y(f(x_i), f(x_2))\leq L d_x(x_1, x_2)$を満たすことをいう。
例えば$X$を$n$次元の実ベクトル空間、$Y$を実数空間として上記定義を書き下すと、
$$\forall x, y \in \mathbb{R}^n, \exists L>0~s.t.~\|f(x)-f(y)\|_2\leq L\|x-y\|_2$$が成り立つ時、$f:\mathbb{R}^n \to\mathbb{R}$はリプシッツ連続である、と言います。
リプシッツ定数とは、上記不等式が成立するような最小の$L$を指します。ここでは簡単のために、リプシッツ定数が$L$であるような関数を$L$-Lipschitzであるということにします。例えばReLU関数は1-Lipschitzです。
リプシッツ連続関数同士の合成はリプシッツ連続である
リプシッツ連続性の定義から導かれる事実として、リプシッツ連続関数同士の合成がまたリプシッツ連続関数になることが挙げられます。ニューラルネットワーク、特に全結合ネットワークは線形関数と活性化関数の合成で表現されるため、活性化関数がリプシッツ連続であればネットワーク全体もまたリプシッツ連続になります。非常に簡単なので書くまでもありませんが、以下証明です。
$f:X\to Y, g: Z:\to X$をそれぞれ$L_f$-Lipschitz, $L_g$-Lipschitzであるとします。この時、任意の$u, v\in Z$について、
$$
\begin{align}
d_Y((f\circ g)(u), (f\circ g)(v)) & \leq L_f d_X(g(u), g(v)) \\
&\leq L_fL_g d_Z(u, v)
\end{align}
$$
が成り立ちます。したがって、$f\circ g$は$L_fL_g$-Lipschitzです。3つ以上の関数の合成も同様に示すことができます。
1-Lipschitz layer
ニューラルネットワークにおける層の入出力(行列やテンソルなど)をベクトル化した関数を考えます。この関数が1-Lipschitzとなるような層を、1-Lipschitz layerと呼びます。Lipschitz Bounded Neural Networkは1-Lipschitz layerを重ねることで作られます。
線型ネットワークのリプシッツ定数は、係数行列$W$のスペクトルノルム、すなわち$\|W\|=\sup_{v}\dfrac{\|Wv\|_2}{\|v\|_2}$です。線型ネットワークかつヤコビ行列($W$)が直交行列となる場合、リプシッツ連続性の定義における等号が常に成り立ちます。(これは、$W$のスペクトルノルムが1になるためです。$W^\top W=I$を使えばすぐに導かれます。)したがって、多くの研究はヤコビ行列が直交する1-Lipschitz layerの作成を目標としています。
線形層の場合、ヤコビ行列は重み行列と一致します。したがって、重み行列を直交化することでLipschitz定数をコントロールできます。線型ネットワークを対象とした研究はこのアプローチをとる場合が多いと考えられます。畳み込みニューラルネット(CNN)への拡張は非自明なので、凸ポテンシャル関数の導入や指数畳み込み、直交行列の近似などが行われています。詳しくは参考文献(CVPR2024)を参照ください。良いレビューが記述されています。
素朴な疑問として、すべての層を1-Lipschitzにする必要があるのか?という問いが考えられると思います。ネットワークのロバスト性を維持したまま表現能力を改善する方法があったら嬉しいですよね。この問いに対して一定の回答を与える論文がExpressive 1-Lipschitz Neural Networks for Robust Multiple Graph Learning against Adversarial Attacks (ICML2021)です。重みをもつ層は$1/K_l$-Lipschitz, 活性化関数として$K_l$-Lipschitzなものを用いることで通常の1-Lipschitz layerを用いたモデルよりも高い表現能力を獲得できる、という主張です。ただ、証明に目を通したところ、本当にこの証明でいいのかな?と思う部分があり、理論的にきちんと説明されているのか少し疑問です。引き続き情報収集を続けていくと思います。
参考文献
- Intriguing properties of neural networks (ICLR2014)
- Expressive 1-Lipschitz Neural Networks for Robust Multiple Graph Learning against Adversarial Attacks (ICML2021)
- 1-Lipschitz Layers Compared: Memory, Speed, and Certifiable Robustness (CVPR 2024)
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント