概要
ディープラーニングの適用範囲が拡がり,画像認識や音声認識の精度が高くなる一方,モデルに対して細工した画像を送り,誤った分類結果を引き起こす攻撃などが懸念され始めています。海外では非常に活発な研究領域です。たとえば,敵対的サンプル(Adversarial example)として,パンダ(Panda)の画像にノイズを少し加えることでテナガザル(Gibbon)と誤認識させる現象が有名です。
本書では,これらを理解するためにディープラーニングの基礎からハンズオンによる実装方法まで解説しています。ディープラーニングは数式などがあって難易度が高く感じる方にも最適な一冊です。
こんな方におすすめ
- ディープラーニングのセキュリティを学びたい人
- ディープラーニングをハンズオンを通して理解したい人
目次
第1部 ディープラーニングの基礎
第1章 ディープラーニングの全体像
- 1.1 ディープラーニングとは
- 1.2 ディープラーニングが対象とする問題
- 1.3 ディープラーニングの構成要素
- 1.4 ディープラーニングの脅威とは
第2章 ディープラーニングを始めるための環境構築
- 2.1 Dockerのインストール
- 2.2 イメージのビルド
- 2.3 コンテナの起動とJupyter Notebookの稼働確認
- 2.4 Jupyter Notebookの基本操作
第3章 ディープラーニングに必要な数学とNumPyの操作
- 3.1 NumPyの基本
- 3.2 ベクトル(1次元配列)
- 3.3 行列(2次元配列)
- 3.4 ndarrayの軸(axis)
- 3.5 3次元以上の配列
- 3.6 微分
- 3.7 偏微分
- 3.8 勾配
- 3.9 まとめ
第2部 ディープラーニングの仕組み
第4章 ディープニューラルネットワーク
- 4.1 DNNのアーキテクチャ(入力層/隠れ層/出力層)
- 4.2 順伝播/重み/バイアス
- 4.3 活性化関数
- 4.4 出力層とソフトマックス関数
- 4.5 入力データのバッチ化
- 4.6 正解データ
- 4.7 正解率
第5章 分類モデルを開発してみよう
- 5.1 事前準備
- 5.2 Layerクラスの開発
- 5.3 順伝播を体験しよう
- 5.4 SimpleClassifierクラスの開発
- 5.5 画像分類を体験しよう
- 5.6 活性化関数によるモデルの表現力の変化を体験しよう
第6章 ディープニューラルネットワークの学習
- 6.1 学習の全体像
- 6.2 推論と正解の誤差を把握する
- 6.3 勾配降下法による重みとバイアスの更新
- 6.4 合成関数と連鎖律
- 6.5 誤差逆伝播
- 6.6 ミニバッチによる学習
- 6.7 学習に関するその他のトピック
第7章 分類モデルの学習機能開発
- 7.1 ユーティリティ関数の準備
- 7.2 Layerクラスの改修
- 7.3 SimpleClassifierクラスの改修
- 7.4 学習
- 7.5 クイズ
第8章 畳み込みニューラルネットワーク
- 8.1 CNNの全体像
- 8.2 畳み込み演算
- 8.3 畳み込み演算による特徴の抽出
- 8.4 3次元の畳み込み演算
- 8.5 畳み込み層の連結
- 8.6 最大プーリング層
- 8.7 畳み込みブロックから全結合層への連結
- 8.8 CNNの学習
第3部 ディープラーニングのフレームワーク
第9章 TensorFlowとKeras
- 9.1 TensorFlowとKerasとは
- 9.2 KerasによるMNIST分類モデルの開発
- 9.3 Kerasを利用したCNNによる画像分類
- 9.4 Tensorオブジェクト
- 9.5 TensorFlowによる勾配降下法の体験
- 9.6 Kerasによる最適化アルゴリズムの体験
第4部 ディープラーニングのセキュリティ
第10章 ディープニューラルネットワークへの攻撃
- 10.1 敵対的サンプルとは
- 10.2 ノルム
- 10.3 Fast Gradient Sign Method
- 10.4 Fast Gradient Sign Methodの実装
- 10.5 Jacobian Saliency Map Attack
- 10.6 Jacobian Saliency Map Attackの実装
- 10.7 C&W Attack
- 10.8 C&W Attackの実装
- 10.9 Boundary Attack
- 10.10 Boundary Attackの実装
- 10.11 Projected Gradient Descent Attack
- 10.12 OSSを利用したPGD Attackの体験
第11章 ディープニューラルネットワークの防御
- 11.1 敵対的サンプルに対する防御の現状
- 11.2 敵対的サンプルに対する防御の種類
- 11.3 敵対的トレーニング
- 11.4 敵対的トレーニングを体験しよう
- 11.5 Feature Squeezingによる防御
- 11.6 プリプロセスを利用した敵対的サンプルの検知方法
- 11.7 Median Smoothingの実装
- 11.8 Squeezing Color Bitsの実装
第12章 リアル空間上での脅威
- 12.1 自動運転領域での敵対的サンプル
- 12.2 物理セキュリティへの脅威
- 12.3 マルウェア検知の回避
- 12.4 音声の敵対的サンプル
- 12.5 ディープフェイクとその検知の回避
サポート
ダウンロード
本書で利用するソースコードは次のWebページからダウンロードできます。
(2021年1月4日更新)
正誤表
本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。
P.69 図4.4
一部の文字要素が間違っていました。
P.121 図6.12
この図は発散を表現しており,下2つの矢印線の向きが逆になっていました。
P.211 本文 上から3~4行目
誤 |
敵対的サンプル生成アルゴリズ
|
---|
正 |
敵対的サンプル生成アルゴリズム
|
---|
P.165 図8.14内
誤 |
垂直エッジフィルター
|
---|
正 |
水平エッジフィルター
|
---|
P.285 本文 上から4~5行目
誤 |
敵対的トレーニングにおいて有用な攻撃方法とされています。
|
---|
正 |
敵対的トレーニングにおいて有用とされています。
|
---|
P.292 本文 上から2~3行目
誤 |
最終的な敵対的サンプルとオリジナル画像のLinfが
|
---|
正 |
最終的な敵対的サンプルとオリジナル画像の差のLinfが
|
---|