日本ソフトウェア科学会第 35 回大会 (2018 年度) 講演論文集

深層学習システムのミューテーションテスト
馬 雷謝 超劉 楊

趙 建軍

深層学習のロジックは, 訓練データによって形成される. 深層学習モデルを評価する方法は, テストデータセットのパフォーマンスを調べることである. 従って, テストデータセットの品質はに非常に重要である. ミューテーションテストは, ソフトウェアテストでテストスイートの品質を評価する技術である. しかし, 伝統的なミューテーションテスト技術を直接に深層学習システムに適用することができない. 本研究では, 深層学習システムに対して特化するミューテーションテストフレー
ムワークを提案する. まず, 伝統的なミューテーションテストと似ているソースレベルのミューテーションテストを提案する.
次に, 訓練完了した深層学習モデル上で直接にテストするモデルレベルのミューテーションテストオペレータを設計する.
更に, 提案されたミューテーションテスト技術の有効性を検証するために, 深層学習モデルを有する2つの公開データセ
ットMNISTとCIFAR-10を用いて実証される.

The internal system logic of deep learning (DL) is largely shaped by the training data. The standard way ofevaluating DL models is to examine their performance on a test data set. The quality of the test data set is of great
importance to gain confidence of the trained models. In traditional software testing, mutation testing is a wellestablished technique for quality evaluation of test suites, which analyzes to what extent a test suite detects the injectedfaults. However, due to the fundamental difference of traditional software and deep learning-based software, traditional
mutation testing techniques cannot be directly applied to DL systems. In this paper, we propose a mutation testing
framework specialized for DL systems, to facilitate quality measurement and weakness analysis of test data. We first
define a set of source-level mutation operators to inject faults to the source of DL. Then we further design a set ofmodel-level mutation operators that directly inject faults to DL models without a training process. The usefulness of theproposed mutation testing techniques is demonstrated on two public data sets, MNIST and CIFAR-10, with three DLmodels.

1 背景
過去数十年間, 自律運転車[1], ロボット[2], ゲーム[3], ビデオ監視[4]など, 深層学習（DL）は多くの分野で大きな成功を収めてきた. しかし, DLに関連する最近の壊滅的な事故（例えば, テスラ/ウバーの自律運転車の事故）ので, DLシステムの堅牢性および安全性が重要になる. テストデータの品質はDLシステムの堅牢性と一般性を示している. DLシステムの独自の特性のために, テストデータの品質評価は特に重要である.

伝統的なソフトウェアで, ミューテーションテストは,システムの品質を評価し, テストデータの弱点を突き止める最も重要な技術の1つである. ミューテーシ
ョンテストの重要な手順は, 被験ソフトウェア（SUT）に潜在的な欠陥を導入してSUT [5], [6]の改変バージョン（すなわちミュータント）を作成するミューテーション演算子を設計することである.

ミューテーシ ョン テ ストは , ミュー タン トおよび対応 する元 のSUTの違いを, テストセットがどの程度検出できるかを調べることによって, 試験の質を測定する.
DLシステムは, ネットワークの接続重みだけでな

Lei Ma, School of Computer Science and Technology, Harbin
Institute of Technology
Chao Xie, 九州大学システム情報科学府, Graduate
School of Information Science and Electrical Engineering,
Kyushu University
Yang Liu, School of Computer Science and Engineering,
Nanyang Technological University
Jianjun Zhao, 九州大学システム情報科学研究院,
Faculty of Information Science and Electrical Engineering,
Kyushu University
This is an unreferred paper. Copyrights belong to the Author(s).

く, ディープニューラルネットワーク（DNN）の構造によってほとんど決定される. したがって, DLシス
テムのミューテーションテストの合理的なアプローチ
は, ミューテーション演算子を設計して, 潜在的な欠 陥 を 訓 練 デ ー タ ま た は DNN 訓 練 プ ロ グ

表１ ソースレベルのミューテーション演算子

的測定および評価のためのミューテーションテスト測図１ ソースレベルのミューテーションテストのワークフロー定基準を定義する.

ラムに注入することである. 障害が注入された後, ミューテーションした訓練データまたは訓練プログラム

2. 1 ソースレベルのミューテーションテストのワークを使用し, 対応するミューテーションDLモデルを生フロー
図1は, ソースレベルのミューテーションテストのワ成するために, 訓練プロセスが再実行される. ミュークフローを示している. まず, DL開発者が訓練ーテーションしたDLモデルが得られた後, テストセプログラムPおよび訓練データDを準備する. 訓練ットT使用して分析される. 伝統的なソフトウェア[6]プロセスの後, DLモデルMが得られる. ミューテーのミューテーションテストと同様に, 元のDL系およびションテストが開始されると, 元の訓練データDおよ突然変異体のより多くの行動の差異をTによって検びプログラムPは, ミューテーション演算子（表1に定出することができ, より高いTの品質が示される.

義される）を適用することによってわずかに変更され,我々は, DLシステムに特化したミューテーションテストのフレームワークを提案する. まず, 訓練デー
タと訓練プログラムを直接操作する8つのソースレベ
ルミューテーション演算子を設計する. 設計意図は,対応す るミュータント D j および Pj が生成 され る.
次のステップでは, 訓練データのミュータントまたは訓練プログラムのミュータントいずれかが, ミューテ潜在的な欠陥をDLプログラミングソースに導入するーションしたDLモデル M j を生成するために訓練プことであり, これは訓練データを収集し, 訓練プログロセスに参加する. ミューテーションしたDLモデル

ラムを実装するプロセスで潜在的に発生する可能性が得られると, フィルタリングされたテストセット T jがある. ソースレベルのミューテーションテストは数分, 数時間, さらに長くかかる. したがって, 我々は8つのモデルレベルミューテーション演算子を設計し, 訓練完了したDLモデルを直接にミューテーションさせる.
我々は, MNISTとCIFAR-10という2つの広く使用を利用し, テストデータの品質を評価する.

2. 2 ソースレベルのミューテーション演算子
我々はミューテーション演算子の2つのグループ,すなわちデータミューテーション演算子とプログラムミューテーション演算子を提案する（表1参照）.

されているデータセットと, 多様な構造と複雑さを持2. 2. 1 データミューテーション演算子

つ3つの一般的なDLモデルについて, 提案されたミデータミューテーション演算子は, データ収集プューテーションテ スト技術の詳細な評価を行った.

ロセス中に発生する可能性のある問題の観察に基評価結果は, 最終的にDLシステムのロバスト性向づいて設計される.

上を促進する高品質のテストデータセットを設計し構築するための有望な測定として, 提案された技術が有用であることを示している.

Data Repetition (DR): DR演算子は訓練データの一部を複製する.
Label Error (LE): LE演算子は データのラベルを変更する.

2 DLシステムのソースレベルミューテーション
テスト

Data Missing (DM): DM演算子は訓練データの一部を削除する.

このセクションでは, DLシステムのためのソースレ

Data Shuffle (DF): DF演算子は, 訓練プロセス

ベルのミューテーションテスト技術を提案する.の前に訓練データをさまざまな順序にシャッフルす

我々は, DLシステムのための一般的なミューテーシる. DF演算子は, データ順序に関連するこのようなョンテストのワークフローを設計する. さらに, 定量問題をシミュレートしようとする.

T ' におけるテストデータによって殺された m' のクラスの集合である.

''

また, 各ミューテーションモデル m  M に対'する T の平均誤差率（AER）を定義し, すべてのミューテーション演算子によってもたらされる全体的
図2 モデルレベルのミューテーションテストのワークフローな影響を測定する.

Noise Perturbation (NP): NP演算子は訓練データにノイズをランダムに追加する.

2. 2. 2 プログラムミューテーション演算子

3 DLシステムのモデルレベルミューテーション
テスト

DL訓練プログラムの特性を考慮して, 潜在的なセクション2では, ソースレベルのミューテーショ障害を注入するために以下の演算子を設計する.

ンテストのワークフローと演算子を定義した. ミューLayer Removal (LR): LR演算子は, 削除されたテーションテストを効率的に改善するために, DLシレイヤーの入出力構造が同じであるという条件で,ステムのモデルレベルのミューテーションテストを提DNNのレイヤーをランダムに削除する.

案する.

Layer Addition (LR): LR演 算 子 と は 対 照 的 に ,演算子はDNN構造体にレイヤーを追加する.
Activation Function Missing (AFM): 演 算 子 は ,レイヤのすべてのアクティベーション機能をランダムに削除する.

3. 1 モデルレベルのミューテーションテストのワークフロー
図2は, DLモデルレベルのミューテーションテストのワークフローを示している. モデルレベルのミューテーションテストは, 分析のためにセクション2. 3

表2 モデルレベルのミューテーション演算子で定義したのと同じミューテーション測定基準を採用する.

3. 2 モデルレベルのミューテーション演算子
表2は, 提案されたモデルレベルのミューテーション演算子を要約したものであり, 演算子の適用範
囲に関して重みレベルから層レベルに及ぶ.
Gaussian Fuzzing (GF): GF演算子は, ガウス分

2. 3 DLシステムのミューテーションテスト測定基準

C  c1 ,..., ck は入本文ではk分類問題があり,力データのすべてのk個のクラスである. テストデー'''

タ点 t  T について, （1） t が元のDLモデルM'によって正確に ci に分類され, （2） t が以下の条'''

布X（w,  2 ）に従い, 与えられた重み値wを変化させる. σはユーザが設定可能な標準偏差パラメータである. GF演算子は, ウェイトをその近くの値域にあいまいにするが（すなわち, ファジー化された値は, 99. 7％の確率で[w-3σ, w +3σ]に位置する）, ウェイトを小さなチャンスでより大きな距離に変更することもできる.

t はミュータント m  M の ci

Weight Shuffling (WS): WS演算子は, ニューロ

m' に よっ て ci と して 分類 さ れ る .

ンをランダムに選択し, 前の層との接続の重みをシ

以下のように, DLシステムのミューテーションスコア

Neuron Effect Blocking (NEB): NEB演算子は,件を満たす場合,を 殺す と 言 う.

''を定義する. ここで, KilledClasses（ T , m ）は ,ャッフルする.

次のレイヤの接続ニューロンのすべてからのニューロン効果をブロックする. これは, 次のレイヤの接表３ 選んだDNNの構造と複雑さ, および元のデータセッ

表４ 制御された実験データ準備設定

トと訓練プログラムの訓練を通して得られた予測精度用いてKeras（ver. 2. 1. 3）[8]に基づいて提案された
む DL ミ ュ ー テ ー シ ョ ン テ ス ト の フ レ ー ム ワ ー ク ：DeepMutationを実装した. ソースレベルのミューテーションテスト技術はPythonによって実装される.
我々は, 2つの一般的に利用可能なデータセッ
続重みをゼロにリセットすることで実現できる.

トMNIST [37]およびCIFAR-10 [10]を評価対象としNeuron Activation Inverse (NAI): 活 性 化 関 数て選択する. MNISTは, 60,000の訓練データポイ

は, DNNの非線形動作の作成に重要な役割を果ント（すなわち, 画像データ）および10,000のテストたす. NAI演算子は, ニューロンの活性化状態をを含む, 手書き数字画像認識用である10個のクラ反転しようとします. これは, その活性化関数を適ス（0〜9の数字）に合計70,000個のデータポイント用する前にニューロンの出力値の符号を変更するがある.

ことによって達成できる.

データおよび10の異なるクラス（例えば, 飛行機,CIFAR-10データセットは, 50,000の訓練

Neuron Switch (NS): DNN 層 の ニ ュ ー ロ ン は ,自動車, 鳥, および猫）の10,000個のテストデータ

次の層 の連結ニュー ロン に異な る影響を与え る.

を含む汎用画像分類のための画像の集合である.

NS演算子は, 1つのレイヤ内の2つのニューロンを切り替えて, 次のレイヤの役割と影響を交換する.

各データセットについて, 広く使用されている一般的なDLモデル[11], [12], [13]を使う.

表3は,Layer Deactivation (LD): LD演算子は, レイヤ

選んだDNNの構造と複雑さ, および元のデータセーレベルのミューテーション演算子で, DNNから削ットと訓練プログラムの訓練を通して得られた予測除されたかのようにレイヤーの変換効果全体を削除

精度を要約したものである.

する. ただし, 訓練されたDLモデルからレイヤーを削除すると, モデル構造が破損する可能性がある.
我々は, 訓練可能なパラメータなしで入力と出力の形状が一致しているレイヤ（例えば, Maxpooling とRegularization）に対してのみ, LD演算子を使用する.
Layer Addition ( LA m ): LA m 演算子は, ネット

4. 1 テストデータの準備
ミューテーションテストの第一段階は, 評価のために試験データを準備することである. 我々は2つのデータ設定について制御され た実験を行った（表4参照）.

1つのサンプルを元の訓練データから5, 000サンプルをサンプリングし, 同時に2つのサンプリングされたサンプルデータを伴ったテストデワークにレイヤーを追加することによって, LD演算ータから1, 000サンプルを設定する. 両方とも対応子の反対の効果を出そうとする. LD演算子と同様するデータセットの約10％を占める. 各設定には,に, LA m 演算子は, 層の入力と出力の形状が一致することも必要とする.
Activation Function Removal ( AFR m ): AFR m演算子は, レイヤ全体の活性化関数の影響を除去する.

T1 がすべてのクラスから均一にサンプリングされ,T2 が不均一にサンプリングされるデータセット（ T1 ,T2 ）のペアがある. サンプリング中のランダム効果に対処するため, 各設定のデータサンプリングを5回繰り返す. これにより, 各設定（すなわち4 評価
我々は, 高性能コンピュータクラスタ上で実験を実 行 す る . 各 ク ラ ス タ ノ ー ド は , 18 コ ア 2. 3GHz

（T1 , T2）
5 ）に対し1 , （T1 , T2）
2 , . . . , （T1 , T2）て5対のデータを得ることができる. 生成されたDL
ミュータントモデルで各対のデータが評価され, ミ

Xeon 64ビットCPUと196 GB RAMを搭載したLinuxューテーションテストの分析結果が平均化される.

カ ー ネ ル 3.10.0 と 24G 搭 載 の NVIDIA Tesla M40

候補データがミューテーションテストのために準備GPUを搭載したGNU / Linuxシステムを実行する.

された後, 対応する元のDLモデルのそれぞれでそれに, Tensorflow（ver.1.5.0）バックエンド[7]を

表５ DL変異体モデルにおける制御された実験データの平均エラー率. サンプリング方法とデータサイズが同じになるように制御し, データ選択範囲を変数にする

実行されて, それらの失敗したケースを除外し, 渡されたデータのみがさらなるミューテーション解析に使用される. この手順では, 合計30個（= 2設定* 3モデル* 5反復）の候補データセットのペアが生成され, 3つのDLモデル分析のためのデータセットの図３ ソースレベルミューテーションテストの平均ミューテーションスコア10個の対（すなわち, 各設定に対して5個）を有す
る.

4. 2 ミュータントモデルの生成
ソースレベルDLミューテーションモデルを作成するために, データレベルミューテーション演算子を構成して, 元の訓練データの1％を自動的に突然変異させ, 各プログラムレベルミューテーション演算子を訓練プログラムに適用する（表１参照）.

各

データレベルミューテーション演算子について20個のDLミュータントを生成する（すなわち, グローバ
ルレベルで10, ローカルレベルで10）.

4. 3 ミューテーションテストの評価と結果
まず, 各データセットについてミューテーションスコアおよび平均エラー率（AER）を計算する. 表5は,すべてのDLミュータントモデル上の各制御データ
セ ットに つい て 得られ たAER を示 す. ほと んどのAERは比較的小さいことがわかります. これは, 得られたDLミュータントモデルが実際にDLモデルに欠陥を注入することを可能にすることを意味する.
図３および図４に示されるように, 各設定（表４参照）の平均ミューテーションスコアも, 制御されたデータ対のすべての設定について計算され, より高いミューテーションスコアが均一なサンプリング法によって得られ, データ品質をテストする. ミューテーションモデルの欠損を検出するデータの割合を測定するAERのほかに, ミューテーションスコアは ,試験データがミューテーションモデルを試験ユース
ケース多様性の観点からどの程度うまくカバーしているかを測定する. 次のセクションで示すように, ミューテーションスコアは必ずしもAERと正の相関を示すわけではない.
同じデータセットで実施された場合, ソースレベ
ルミューテーションテストおよびモデルレベルミューテーションテストは, いくつかの異なる挙動を示す.

図４ モデルレベルミューテーションテストの平均ミューテーションスコア

ソースレベルでは, 訓練データの1％を変更するように設定しています. モデルレベルでは, 重みおよびニューロンレベルのミューテータに対して同じ比率（すなわち, 1％）を使用する. ソースレベル
およびモデルレベルミューテーションテストによるミュータントモデルは, 異なる挙動を示す. 例えば,
図３（a）および図4（a）の同じデータ対の設定を比較すると, ソースレベルミューテーションテストはモデルAについてより低いミューテーションスコアを得るが, モデルBではより高いミューテーションスコアを得る. これは, 同じ1％ミューテーション率が, ソースレベルおよびモデルレベルミューテーションテスト
手順によって異なるDLミュータントモデル効果をもたらすことを意味する.
図3および図4の両方において, ミューテーションスコアは多くの場合に依然として低いことが観察される. それは, 対応する評価された試験が低次元であり, 高次元空間において理解可能であることを示している. テストデータの高性能にもかかわらず,DLが多くの既存の敵対的技術によって容易に攻撃される可能性があるという事実[14]も, 我々の発見を裏付ける.

survey of the development of mutation testing, ”IEEE Trans. Softw. Eng. , vol. 37, no. 5, pp.
649–678, Sep. 2011.

5 まとめ
本文では, DLシステムのミューテーションテスト技術の有用性について検討する.

ミューテーションテストのフレームワークDeepMutationを実施し, 3つのDLモデルを有する2つの一般的なデータセット
MNISTおよびCIFAR-10にその有用性を実証する.
ミューテーションテストは, 伝統的なソフトウェアにおけるテストデータ品質評価のための確立された技術であり, 多くの応用分野に広く適用されている.
ミューテーションテストは, DL開発者がより高品質の試験データを生成するのを容易にする有望な技術であると我々は考えている. 高品質のテストデー
タは, DLシステムの深い理解と構築のために, より[6] R. A. DeMillo and A. J. Offutt, “Constraintbased automatic test data generation, ” IEEE
Transactions on Software Engineering, vol. 17,
no. 9, pp. 900–910, September 1991.
[7] M. Abadi, P. Barham, J. Chen, Z. Chen, A.
Davis, J. Dean, M. Devin, S. Ghemawat, G.
Irving, M. Isard, M. Kudlur, J. Levenberg, R.
Monga, S. Moore, D. G. Murray, B. Steiner,
P. Tucker, V. Vasudevan, P. Warden, M.
Wicke, Y. Yu, and X. Zheng, “Tensorflow: A
system for large-scale machine learning, ” in12th USENIX Symposium on Operating Systems
Design and Implementation (OSDI 16), 2016,
pp. 265–283.

包括的なフィードバックとガイダンスを提供します.

[8] F. Chollet et al. , “ Keras, ” https://github.
com/fchollet/keras, 2015.

この論文では, 深い学習システムのミューテーショ[9]ンテストの潜在的有用性を実証するための初期の探索的試みを行っている. 今後の研究では, DLシステムの多様な側面をカバーする先進的なミューテーション演算子を提案し, ミューテーション演算子の関係を調べるために, 我々は, DLシステムのための新しいミューテーションテスト誘導自動試験,攻撃および防御, ならびに修復技術についても調査する予定である.

参考文献[1] P. Holley, “ Texas becomes the latest state to
get a self-driving car service, ” https://www.
washingtonpost. com/news/innovations/wp/2018/05/07/texas-becomes-the-latest-state-to-get-aself-driving-car-service/?noredirect=on&utm
term=. 924daa775616, 2018.
[2]

F. Zhang, J. Leitner, M. Milford, B.
Upcroft, and P. Corke, “ Towards vision-based
deep reinforcement learning for robotic motion
control, ” arXiv:1511. 03791, 2015.

[3] D. Silver, A. Huang, C. J. Maddison, A.
Guez, L. Sifre, G. Van Den Driessche, J.
Schrittwieser,I.
Antonoglou,V.
Panneershelvam, M. Lanctot et al. , “Mastering
the game of go with deep neural networks andtree search, ” Nature, vol. 529, no. 7587, pp.
484–489, 2016.
[4] A. Karpathy, G. Toderici, S. Shetty, T.
Leung, R. Sukthankar, and L. Fei-Fei, “Largescale video classification with convolutional
neural networks, ” in Proceedings of the IEEE
conference on Computer Vision and Pattern
Recognition, 2014, pp. 1725–1732.
[5] Y. Jia and M. Harman, “ An analysis andC. Francois, Deep Learning with Python.
Manning Publications Company, 2017.

[10] N. Krizhevsky, H. Vinod, C. Geoffrey, M.
Papadakis, and A. Ventresque, “ The cifar-10
dataset, ” http://www. cs. toronto. edu/kriz/cifar.
html, 2014.
[11] Y. LeCun, L. Bottou, Y. Bengio, and P.
Haffner, “ Gradient-based learning applied todocument recognition, ” Proc. of the IEEE, vol.
86, no. 11, pp. 2278–2324, 1998.
[12] C. Xiao, B. Li, J. -Y. Zhu, W. He, M. Liu,and D.
Song,“ Generating Adversarial
Examples with Adversarial Networks, ” ArXiv eprints, Jan. 2018.
[13] N. Carlini and D. Wagner, “ Towards
evaluating the robustness of neural networks,” inSecurity and Privacy (SP), IEEE Symposium on,
2017, pp. 39–57.
[14] Ma, Lei, Zhang, Fuyuan, Sun Jiyuan, Xue
Minhui, Li Bo , Juefei-Xu Fei, Xie Chao, Li Li,Liu Yang, Zhao
Jianjun, Wang Yadong,“DeepMutation: Mutation Testing of Deep
Learning Systems,” International Symposium on
Software Reliability Engineering (ISSRE), 2018[15] Ma Lei, Zhang Fuyuan, Xue Minhui, Li Bo,Liu Yang, Zhao Jianjun, Wang Yadong,“Combinatorial Testing for Deep Learning
Systems,” arXiv preprint arXiv:1806.07723[16] Ma Lei, Juefei-Xu Felix, Sun Jiyuan, Chen
Chunyang, Su Ting,Zhang Fuyuan, Xue Minhui,
Li Bo, Li Li, Liu Yang, “DeepGauge: MultiGranularity Testing Criteria for Deep Learning
Systems,” The 33rd IEEE/ACM International
Conference on Automated Software Engineering(ASE 2018)