ホーム›Part 3 ディープラーニングとAI›3.8

Part 3 · ディープラーニングとAI

3.8 頑健性と敵対的サンプル

小さな変化で大きく間違える理由

読了目安 10分前提:3.1 ニューラルネットワーク、3.2 誤差逆伝播法▶ 動画(約5分)

この回で分かること

  • 頑健性(入力が少し変わっても判断が変わらないこと)と、自然な変化・意図的な変化(敵対的サンプル)の違いを説明できる
  • 1画素ずつはわずかな変化でも、たくさんの画素を合わせると大きな影響になる理由を、内積の計算で説明できる
  • 頑健性の評価のしかたと、データ拡張・敵対的訓練・多重化などの対策を、自動運転と結びつけて説明できる

直感で理解する

人は、少し雨粒がついていても、多少暗くても、同じ標識を同じ標識だと分かります。入力が少し変わっても判断が変わらない性質を 頑健性(ロバスト性)と呼びます。AI の認識にとっても大切な性質ですが、深いニューラルネットワークは、ときに驚くほどもろいことが分かっています。

よく知られているのが 敵対的サンプル です。画像のすべての画素を、人の目には分からないほどわずかに(明るさの1%程度)、ただし「狙った向き」に変えると、AI が自信たっぷりに別の物だと答えてしまうことがあります。一時停止の標識に数枚のシールを貼っただけで、速度制限の標識と誤認識させた実験も報告されています。

ここで大事なのは、ランダムな変化と、狙った変化はまったく違う ということです。同じ大きさの変化でも、でたらめなノイズではほとんど影響がないのに、最悪の向きに合わせた変化では正解率がほぼ0まで落ちることがあります。

正解率 0% 50% 100% 0% 1% 2% 3% 4% 1画素あたりの明るさの変化の大きさ(最大) 通常のモデル・ランダムなノイズ 通常のモデル・狙った変化 敵対的訓練のモデル・狙った変化
変化の大きさを増やしたときの正解率。同じ大きさでも、ランダムなノイズと狙った変化(敵対的サンプル)とでは影響がまったく違う。敵対的訓練をしたモデルは、変化がないときの正解率が少し下がる代わりに、狙った変化に強くなる。数値は説明用の例。

数式で確かめる

① 頑健性を式で書く

モデルを f、入力を x、少し変えた入力を x′ とします。すべての画素の変化が ε 以下なら答えが変わらないとき、f は x のまわりで頑健です。

$$\max_i\, |x'_i - x_i| \le \varepsilon \;\Longrightarrow\; f(x') = f(x)$$

ε(イプシロン)は、許す変化の大きさです(記号表)。

② 小さな変化の足し算:なぜもろいのか

3.1 のニューロンの点数 \(z = \mathbf{w} \cdot \mathbf{x} + b\) で考えます。各画素 \(x_i\) を、重み \(w_i\) の符号と同じ向きに ε だけ動かすと、点数の変化は

$$\Delta z = \mathbf{w} \cdot (\mathbf{x}' - \mathbf{x}) = \varepsilon \sum_{i} |w_i|$$

になります。1つひとつは小さくても、すべての画素の効果が同じ向きにそろって足し合わさるのがポイントです。たとえば画素が10万個、重みの大きさの平均が0.01、ε = 0.01(明るさの1%)なら、\(\Delta z = 0.01 \times 100{,}000 \times 0.01 = 10\) です。もともと z = 4(シグモイド関数で「歩行者 0.98」)だった答えが、z = 4 − 10 = −6(「歩行者 0.002」)にひっくり返ります。画素の数が多い、つまり入力の次元が高いほど、この足し算は大きくなります。ランダムなノイズでは、プラスとマイナスの向きが打ち消し合うので、こうはなりません。

③ 狙った変化の作り方

本物のネットワークは直線ではありませんが、同じ考え方で狙った変化を作れます。3.2 の誤差逆伝播法で、重みの代わりに 入力の画素について損失の傾き を求め、損失が増える向きに ε だけ動かします。

$$\mathbf{x}' = \mathbf{x} + \varepsilon\, \mathrm{sign}\bigl(\nabla_{\mathbf{x}} L\bigr)$$

sign は、プラスなら +1、マイナスなら −1 を返す関数です。この方法(FGSM と呼ばれます)は、傾きを1回計算するだけで敵対的サンプルを作れます。

④ 評価と対策

  • 劣化を加えた試験:雨・霧・雪・ぶれ・ノイズ・明るさの変化などを段階的に加え、図のように変化の大きさと性能の関係を調べます。自然な劣化をまとめた評価用のデータも公開されています。
  • 最悪のケースを探す:ランダムな変化だけでなく、傾きを使って最悪の変化を探し、そのときの性能も確かめます。小さなモデルでは、範囲内で答えが変わらないことを数学的に証明する手法もあります。
  • データ拡張:雨や明るさの変化などを加えた画像で学習し、自然な変化に強くします。
  • 敵対的訓練:学習中に敵対的サンプルを作り、それでも正しく答えられるように学習します。狙った変化に強くなる代わりに、変化がないときの正解率が少し下がることが多く、計算にも時間がかかります。

自動運転との接点

  • まずは自然な変化への頑健性:雨粒、汚れ、逆光、雪、霧、ぶれ、センサの劣化などは毎日起こります。こうした条件は SOTIF のトリガー条件の候補で、劣化を段階的に加えた試験で性能の落ち方を確かめます。自動車の AI の安全を扱う ISO/PAS 8800 でも、頑健性は AI に求める大事な性質の一つとして扱われています。→ 5.3 機能不十分とトリガー条件、5.9 AIコンポーネントの安全
  • ランダムな試験では最悪が見えない:図のように、ランダムなノイズで93%でも、狙った変化では0%になりえます。平均的な性能だけでなく、最悪の方向を探す試験も組み合わせます。→ 5.8 未知の危険を探す
  • 現実の世界での攻撃:標識へのシール、道路への模様、LiDAR に偽の点を見せるといった攻撃が研究されています。意図的な攻撃は、サイバーセキュリティ(ISO/SAE 21434)とも連携して扱います。
  • 多様性で守る:カメラ・LiDAR・レーダーは、同じ変化で同じように間違えることが少ないので、組み合わせると守りが強くなります(2.5 の共通原因の考え方)。地図の情報や、時間を追った一貫性との照らし合わせも有効です。→ 4.3 センサとフュージョン

まとめ

  • 頑健性は、入力が少し変わっても判断が変わらない性質。深いネットワークは、人に見えないほど小さな狙った変化(敵対的サンプル)で大きく間違えることがある
  • 理由の一つは高次元の足し算:1画素ずつは小さな変化でも、向きをそろえると合計で大きな点数の変化になる。狙った変化は、入力についての傾きで作れる
  • 評価はランダムな劣化と最悪の変化の両方で行う。対策はデータ拡張・敵対的訓練、そして異なるセンサや情報の組み合わせ

確認クイズ

Q1. 画素が5万個、重みの大きさの平均が0.01のモデルで、各画素を重みの符号の向きに ε = 0.02 だけ動かすと、点数 z はどれだけ変わる?

\(\Delta z = 0.02 \times 50{,}000 \times 0.01 = 10\) です。1画素あたり2%のわずかな変化でも、答えがひっくり返るほどの大きさになります。

Q2. ランダムなノイズを加えた試験で、正解率がほとんど落ちませんでした。敵対的サンプルにも強いと言える?

言えません。ランダムなノイズでは、画素ごとの効果が打ち消し合うので影響が小さくなります。狙った変化は最悪の向きにそろえるので、ランダムな試験の結果からは最悪のケースは分かりません。

Q3. 敵対的訓練の主な欠点は?

変化がないふつうの入力での正解率が少し下がることが多く、学習中に敵対的サンプルを作り続けるため計算にも時間がかかることです。

Q4. 標識にシールを貼る攻撃に対して、認識モデルを強くする以外にどんな守り方がある?

地図に登録された標識の情報と照らし合わせる、LiDAR など別のセンサの結果と比べる、時間を追って判断が急に変わらないか確かめる、などがあります。1つの手段が間違えても、ほかで気づけるようにします。

もっと知りたい人へ