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

統計的な部分オラクルによるテスティング方法
中島 震

ソフトウェア技術の広がりと共に，検査条件が不確かさを伴う，正解値が既知でない，といった 2 つの問題を考慮したテスティング方法の確立が期待されている．本稿では，統計的なメタモルフィク・テスティングの考え方を整理し，統計的な手法と部分オラクルを組み合わせる一般的なテスティング・フレームワークを提案する．次いで，このようなソフトウェアの代表例である機械学習プログラムのテスティングへの適用法を示し，ニューラル・ネットワー
クの訓練・学習プログラム検査の実験結果を報告する．

New methods of software testing are called for to take into account two issues on the test oracle problems,
uncertainties of the testing conditions and unknown correctness criteria. This paper proposes a testing
framework general enough to account for the existing statistical metamorphic testing methods. The framework is amenable to adapt itself to machine learning testing, which is illustrated with an experiment on
testing of neural network programs.

本稿では，不確かさを考慮したテスティングの技術

1 はじめにを整理し，統計的なオラクルと部分オラクルを組みソフトウェア・テスティング [2] は，プログラムが合わせた一般的なテスティング・フレームワークを提期待される機能振舞いを実現しているかを検査する

案する．次いで，機械学習プログラムのテスティング

現実的な方法である．ソフトウェア工学の主要な分野

への応用方法を示し，ニューラル・ネットワークの訓のひとつとして，さまざまな観点から基本的な技術の練・学習プログラム検査の実験結果を報告する．

研究が進められてきた [24]．
ソフトウェア技術の広がりと共に，新しい特徴を持つプログラムが検査対象になっている．CPS [18]やビッグデータ・アナリティックス [25] は，現実世界

2 統計的なテスティング法
テスト・オラクルの基本を紹介し，既存の統計的な
テスティング法を整理する．

の現れとしてのデータを取り扱う．このようなプログラムの検査では，多様な原因から生じた不確かさ

2. 1 テスト・オラクル（Uncertainty）を前提とする方法を考えなければな

ソフトウェア・テスティングでは，検査対象プログらない [8]．深層ニューラル・ネットワーク（DNN）

ラムの出力が正しいか否かを調べるテスト・オラクル[10] に代表される機械学習ソフトウェアのテスティン（オラクル）が存在することを仮定する．

グ技術 [20] [33] は同様な特徴を持つ．検査対象プログ

今 ，簡 単 化 し て ，検 査 対 象 プ ロ グ ラ ム を 関 数

ラムの正しさを確認するテスト・オラクル（オラクf ∈D→D′ とする．オラクルは，f (x) が正しいことのル） [13] を定義することが難しい．オラクル問題 [3]

検査に関わる [13]．素朴には，テスト入力値 a∈D にに新たな挑戦課題をもたらしたといえる．

対する出力結果 f (a)∈D′ が正しい値 Ca ∈D′ に一致す
[N ] def

Software Testing with Statistical Partial Oracles.
Shin Nakajima, 国立情報学研究所, National Instituteof Informatics.

るかを調べる方法である．述語 OT= (Ca = f (a))

で表す．
入力 a に対する正解値がプログラム f (x) の機能仕

様あるいは理論値 Sa から決まっている場合，仕様に基づくオラクル（Specified Test Oracle） [3] と呼ぶ．

2. 2 統計的なオラクル
確率的な振舞いを示すプログラムは，入力データが′はプログラムよりも高い抽象レベル
一般に，Sa ∈DA

同一の値であっても出力結果が実行毎に異なる可能の形式で表されていることから，事前に Sa をプログ性がある．そのような振舞いがプログラム内部の確ラムで扱えるデータに具体化して（Concretizing）お率変数 p に依存することを fp (x) と表すことにする．

′′
く．Ca から Sa への抽象化関数を abs∈D →DAとす

ここで，確率変数 p が確率分布 ρ（p∼ρ）にしたがう

ると，Sa = abs(Ca ) の関係が成り立つ．オラクルはとした．

[S] def= (abs−1 (Sa ) = f (a)) である．

入力データ a を決めても，これに対する出力結果

仕様に基づくオラクルが存在しないプログラムの検ya （ya = fp (a)）の値は一意に定まらない．素朴に査では，検査対象以外のプログラムが出力した結果をは，p∼ρ についての平均値を検査対象にする．入力を利用する [7]. これを導出に基づくオラクル（Derived

a としてプログラム実行 fp (a) を繰り返し，実行結果

Test Oracle） [3] と呼ぶ．N バージョン・プログラミの集まりを Ya = {ya } とする．Ya の標本平均 µa を

ングあるいはデザイン多様性の方法 [1] で開発した

求めて統計的な推定を行えば良い [27]．

abs を含み，OT

プログラム g(x) の計算結果を疑似オラクル（Pseudo[D] def
Oracles）として検査する．OT =統計的なオラクル（Statistical Oracle） [14] は，仮(g(a) = f (a))

説検定 [29] で，検査対象プログラムの欠陥有無を調べである．f (x) を検査対象とする時，疑似オラクルは，る方法である．正解の平均値 Ca が既知の時，帰無仮g(x) の開発と実行 g(a) の手順を含む．特に，g(a)説を µa =Ca ，対立仮説を µa ̸=Ca とする．プログラの計算結果をゴールデン出力（Golden Outputs）と

ム実行の試行回数を N ，sa 2 を不偏分散として，µa − Cata = √
sa 2 /N
は，自由度 N − 1 の t-分布にしたがう†1 ．両側検定

呼ぶ．
また，メタモルフィック・テスティングの方法 [5]で は ，入 力 デ ー タ の 変 換 関 数（ フォロ ー アップ・を行って，|ta | > tα/2 (N − 1) の時，有意水準 α で帰テ ス ト 入 力 生 成 関 数 ）T ∈D→D に 対 し て ，述 語

無仮説を棄却する．つまり，fp (x) に欠陥があると推RT (f (a), f (T (a)) をメタモルフィック関係と呼ぶ．

定する．

メタモルフィック関係が等価関係（ = ∈D′ ×D′ ）の[M ] def

時，OT

検査対象プログラム g(x) が決定論的な振舞いをす= (f (a) = f (T (a))) である．

る場合でも，大規模な分散ソフトウェア・システム

なお，f (a) と f (T (a)) は共に，プログラムの実行

等では動作条件を一意的に定めることが難しいこと結果であり，どちらか一方が正しいということはない．

が多い．入力に不確かさがあると考えて確率変数 a2 つの実行結果の整合性を調べている．そこで，f (a)（a∈P ）を導入する．g∈P →D′ ならびに a∼ρ とすると f (T (a)) は互いに部分オラクル（Partial Oracle）と，出力値 y の全体 { y | y = g(a) ∧ a∼ρ } が検査[6] の関係になる．デザイン多様性の方法による疑似対象の挙動を表す．カオス・エンジニアリング [4] は，オラクルにおいても，ゴールデン出力 g(a) の正しさ

欠陥挿入した g(x) を検査対象として，時系列をなすは確認されているわけではない．f (a) と g(a) も互い

確率変数がもたらす安定状態の振舞い（Stable Stateに部分オラクルといえる．

Behavior）を異常検知の方法で調べる検査法である．

さて，ここまでは，検査対象プログラムの挙動が確

また，先の確率的な振舞いを示す検査対象 fp (x)定的（Deterministic），つまり，同一の入力データ a（fp ∈D→D′ ）の 確 率 変 数 p を 入 力 に 明 示 し て ，に対して，f (a) の計算結果は常に同じとした．一方，

f ∈D→(P →D′ ) と表現しよう．入力値 a∈D に対し不確かさの下で作動するプログラムあるいは不確かさて，f (a)∈P →D′ である．g を f (a) に対応させれば，を取り扱うプログラムの振舞いは確定的ではない．テ

共に P →D′ の形になる．多数回の g( ) を実行した結スト実行毎に異なる結果を出力するかもしれない．テスト・オラクル OT の考え方を拡張する必要がある．

†1 Ya の母集団分布は正規分布とする．

果の平均 µ を求めて，また，この正解値 C が既知であれば，上記に示した仮説検定に基づく統計的なオラクルの適用が可能なことがわる．

3. 1 フレームワーク
確率的な振舞いを示す検査対象プログラムを

Fp ∈V →V ′ ，検 査 対 象 の 値 を 求 め る プ ロ グ ラ ム を
obs∈(V →V ′ )→(V →(D→D′ )) とする．大きさ N の

2. 3 統計的なメタモルフィック・テスティング

評価データの集まり ES = { e(j) } （e(j) ∈D）に対

DNN ソフトウェアのようなテスト不可能プログラ

して，O∈(V →V ′ )→(V →(PD→PD′ )) をム [31] を検査する時は，ゴールデン出力を正解値のO(Fp )(a)(ES) = { (obs(Fp )(a))(e(j) ) }代替に使う部分オラクルの方法を用いる．このようなと 定 義 す る ．y (j) =(obs(Fp )(a))(e(j) ) と す る と ，

検査対象 f (x) が前項と同様に確率的な振舞いを示す

O(Fp )(a)(ES) の平均値は1 ∑N (j)
y
µa =
j=1
N
であり，また，不偏分散 sa 2 も同様に
2
1 ∑N
sa 2 =(y (j) − µa )j=1
N −1と計算できる．

場合，2 標本仮説検定の方法を応用する．検査対象を

f(1) (x)，ゴールデン出力を得るプログラムを f(2) (x)とし，各々の実行回数 N および M に対する統計指標（j = 1, 2 として，標本平均 µ(j) ，不偏分散 s(j) 2 ）を求める．

今，2 つのプログラムを F(1) と F(2) とし，共通す

メタモルフィック・テスティングの方法 [5] [6] を用る評価データ ES を準備する．O によって得られる

いる場合，検査対象を f ，フォローアップ・テスト

標本の平均値ならびに不偏分散などを求めるプログラ

入力変換関数を T として，f(1) (a) = f (a) ならびに

ムを U とすると，U∈P V →V ′′ である．ここで，得f(2) (a) = f (T (a)) とする．検査対象プログラム f (x)られる統計指標の型を V ′′ とした．たとえば，平均は共通なので，2 つの標本の母集団分布は同一の分散

値，不偏分散，標本数の組とすると，R を実数，Nを持つとして良い．そこで，(N − 1)s(1) 2 + (M − 1)s(2) 2
s2 =N +M −2として，µ(1) − µ(2)ta = √
s2 /N + s2 /Mを計算する．

を自然数として，V ′′ = R×R×N である．

前項の統計的なオラクルと同様に，両側検定を行っ

さらに，仮説検定に基づく推論機構を HT と書き表すと，一般的なフレームワークを，次のように整理することができる．

HT ( U( O(F(1) )(A(1) )(ES) ),U( O(F(2) )(A(2) )(ES) ) )て |ta | > tα/2 (N + M − 2) の時，有意水準 α で帰素朴なオラクル OT

無仮説を棄却する．つまり，欠陥があると推定する．

ログラムの入出力にのみ着目する一方，HT は仮説

この方法を統計的なメタモルフィック・テスティング

検定の手続きにしたがった判定処理を含む．互いに[N ]等（第 2.1 節）が検査対象プ（SMT）と呼ぶ [11]．メタモルフィック関係 RT とし

部分オラクルとなる 2 つのプログラム F(1) (A(1) ) とて等価関係を用いる場合に対応する．

F(2) (A(2) ) の統計的なオラクルの一般形になっていなお，検査対象 f(1) (x) に対して，f(2) (x) をデザイる．また，評価用データ ES を A(j) から独立に導入

ン多様性の方法で求めても良い．この時は，SMT の可能とし，検査を柔軟に行えるようにした．具体的な場合と異なり，2 つの母集団分布が同じ分散を持つと方法は第 4 節の事例で説明する．

仮定できない．ta 値の計算法を変更し，自由度にウェルチの方法（Welch Method）を用いる．

3. 2 機械学習ソフトウェアの検査
深層ニューラル・ネットワークの教師あり学習タス

3 提案手法クのソフトウェアについて，前記のフレーワークを具部分オラクルと仮説検定の方法を一般化したテス

体化する．標準的な深層ニューラル・ネットワークのティングのフレームワークを提案する．

方法 [10] [12] では，訓練・学習プログラム Lf と予測・

推論プログラム If の２つが関わることに注意する．
学習モデルを Y (W ; x) とし，W は重み（学習パラメータ）の集まりを表す．YW (x) と表記し，W をイを比較する．一方，学習モデルのデザイン多様性の場合，Of (Lf (Y(1) )(LS))( ) と Of (Lf (Y(2) )(LS))( )を比較する．

ンデックスとする関数の集まりと考える．訓練済み
学習モデルは具体的な値 W c とする関数 YW c (x) で

3. 3 検査指標の具体例

ある．x∈V ，YW c ∈V →T とすると，学習モデルは，

次に，検査指標を標本を求めるプログラム Of の具Y ∈W →(V →T ) あるいは，インデックスを明示しな

体例 2 つを導入する．具体的な問題として，C 個のいで，Y ∈P(V →T ) である．

クラスへの分類タスクを考える．

訓練データセット LS は多次元ベクトルと正解タグ

3. 3. 1 予測の確からしさの組（データ点）の集まりなので LS∈P(V ×T ) であ

評 価 用 デ ー タ セット を ES∈P(V ×T ) と す る 時 ，り，LS = {⟨x

′

(n)

,t

(n)

⟩} と表記する．特に，LS の経V= [0, 1]C と し て ，予 測・推 論 プ ロ グ ラ ム

験分布を ρEM P とし，⟨x(n) , t(n) ⟩ ∼ ρEM P である．

If (YW ∗ )(x(j) ) は入力データ ⟨x(j) , t(j) ⟩∈ES のクラ

訓練・学習プログラム Lf は，学習モデルを決め，

ス c∈[1, · · ·, C] に分類する確からしさを求める．この訓練データセットを入力として，訓練済み学習モデル

結果の値を C 次元ベクトル P （P = If (YW ∗ )(x(j) )）（関数）を求める（Lf (Y )(LS)）．

と表す．ここで，確からしさの値が最大となる分類カ

Lf ∈P(V →T )→(P(V ×T )→(V →T ))テゴリ（c∗ = argmax P [c]）が，教師タグ t(j) の情と表せる．Lf は，具体的には，次の最適化問題を解報と一致する時，YW ∗ は正解タグを再現する．正解

いて得る関数 Y (W ∗ ; ) を返すプログラムである．

タグがワンホット表現（One Hot）のベクトルであれW∗= argmin E⟨x,t⟩∼ρEM P [[ ℓ(Y (W ; x), t) ]]W

ここで，ℓ( , ) を適切な損失関数とした．
予測・推論プログラム If は，訓練済み学習モデル（関数）を用いて，入力データのベクトルに対する予測・推論結果を返す（If (YW ∗ )( )）．

If ∈ (V →T )→(V →V ′ )また，関数 Of は，If と同様に，訓練済み学習モデ
ル（関数）を用いる一方で，評価データの集まりに対する検査指標の標本を計算する（Of (YW ∗ )( )）．Dと D′ を適切に選んで，Of ∈ (V →T )→(P D→ P D′ )である．評価データの集まり ES = {e(j) }（ES∈PD）と す る ．第 3.1 節 と 同 様 に ，個々の デ ー タ に 対
し て 検 査 指 標 を 計 算 す る 関 数 を obs と す る と ，Of (YW ∗ )(ES) = { obs(YW ∗ )(e(j) ) } である．この時，ES についての期待値は
N
1∑
µLS =
obs(Lf (Y )(LS))(e(j) )N j=1
で，第 3.1 節の µa に対応する．
最後に，メタモルフィック・テスティングの場合，Tc

ば，T = {0, 1}C で t(j) [c∗ ] = 1，t(j) [c] = 0（c̸=c∗ ）である．
予測の確からしさからなる標本は次のように求めることができる．

Oprob (YW ∗ )(ES) = { P [c∗ ] }また，正解率は t(j) [c∗ ] = 1 となる頻度で，♯S を有限集合 S の大きさとする時，Acc(YW ∗ )(ES) =♯{j|t(j) [c∗ ] = 1}/♯(ES) である．
3. 3. 2 内部活性率
次に，内部活性率を，YW ∗ の最後から 2 番目の層
（Penultimate Layer）に対するニューロン・カバレッ
ジ ν@P L で定義する．
訓練済み学習モデル YW ∗ の構成要素のニューロン
全体を {νk } とする．着目したニューロン νk の入出∑力関係を ok = σk ( j wj∗ ×inj ) とし，閾値を th とする．入力が定まった時，出力が閾値より大きなニューロン（ok >th）を活性状態にあるという．ニューロン・
カバレッジ（NC） [26] は全ニューロンに対する活性状態ニューロンの比率として定義された．
今 ，ν@P L ∈(V →T )→(V →[0, 1]) と し て ，D =をデータセット多様性に基づく変換関数 [17] [20] [21] とV ，D ′

して，Of (Lf (Y )(LS))( ) と Of (Lf (Y )(T (LS)))( )♯{k|ok >th}/♯{νk } を用いて，=[0, 1] と 選 ぶ ．ν@P L (YW ∗ )(x(j) )=ティック・ノイズ生成関数を Sf とする．

Sf ∈(V →T )→(V ×T →V )ベクトルと正解タグの組 ⟨x, t⟩ と，訓練済み学習モ
デル YW ∗ が与えられた時，t を再現する新しいデー
タを X ∗ = Sf (YW ∗ )(x, t) で求める．X ∗ は，入力
データ x にセマンティック・ノイズが付加される．
ここで，Sf は L-BFGS [28] を基にした次の制約条
図1

セマンティック・ノイズによる生成データ

件付き最適化問題 [22] を解くプログラムである．

X ∗ = argmin ℓ(YW ∗ (X), t) + λ·ℓ′ (X, x)
X

Oact (YW ∗ )(ES) = { ν@P L (YW ∗ )(x(j) ) }
である．

4 事例
提案フレームワークでメタモルフィック・テスティ
ングを用いる場合の検査実験結果を報告する．

s.t. 0 ≤ Xj ≤ 1 ∧ Ψ(X, x)
上式で ℓ( , ) ならびに ℓ′ ( , ) は損失関数で，たとえば，L2 ノルムによって定義する．第 1 項は X の予測
結果が正解タグ t を再現すること，第 2 項は X が与えられたデータ x に十分に似ていることを表す．ハ
イパー・パラメータ λ の値をうまく選ぶと，目視上，x と最適解 X ∗ の区別がつきにくくなる．
今，MNIST 訓練データセット LS を用いて訓練済

4. 1 訓練・学習ソフトウェアの検査

み学習モデルを求めたとする．MNIST 試験データ

検査対象が満たすメタモルフィック性を考える．

セット LS = {⟨x(n) , t(n) ⟩} に，Sf を適用し，4. 1. 1 MNIST 手書き数字分類タスク

LS ′ = { ⟨x∗(n) , t(n) ⟩ |手書き数字分類学習タスクの標準的なベンチマー
ク MNIST データセット†2 を用いて実験する．

MNIST は，手書き数字を 28×28 のピクセルからなる画像データを 784 次元ベクトルで表し，このベx∗(n) = Sf (Lf (Y )(LS))(x(n) , t(n) )}を得る．図 1 に画像の一部を示した．
次に，上記の LS から LS ′ を直接求める関数 Tx は
データセットの変換子

クトルと 0 から 9 の分類タグを組としてデータ点とTx ∈(V →T )→(P(V ×T )→P(V ×T ))

する．各ピクセルはグレー階調を表し，0 から 255 ので，LS = Tx (Lf (Y )(LS))(LS) と表せる．簡単化し値をとるが，ベクトル表現ではピクセル値を 0.0 からて Tf (LS) = Tx (Lf (Y )(LS))(LS) とする．

′

def

1.0 に規格化する．
60, 000 個 の デ ー タ 点 を 訓 練 デ ー タ セット LS ，10, 000 個 を 試 験 デ ー タ セット T S とす る ．LS とT S を合計 70, 000 個のデータ・プールから均等に選ぶと，両者の経験分布に大きな差がない．訓練・学
習では LS を入力し訓練済み学習モデルを求める．

YW ∗ = Lf (Y )(LS) である．また，T S は LS と共に，訓練・学習過程で，正解率の計算に用いられ，汎化ギャップが生じるかを確認する．

4. 1. 2 フォローアップ・テスト入力生成
次に，テスト入力の生成方法を説明する．セマン†2 http://yann.lecun.com/exdb/mnist/

Tf ∈P(V ×T )→P(V ×T )である．学習モデル Y (W ; ) を決めれば，Tf は訓練
データセット LS にのみ依存することがわかる．

LS (0) = LS とし，LS (K) = Tf (LS (K−1) )（K =1, · · ·, N ）とする．LS (K) = Tf K (LS) である．この よ う に し て 構 成 し た デ ー タ セット の 集 ま り{LS, LS (1) , · · ·, LS (N ) } はデータセット多様性 [20] [22]を示す．

4. 1. 3 メタモルフィック性
今 ，YW (K−1)∗ = Lf (Y )(LS (K−1) ) と 表 記 す る ．

LS (K) は YW (K−1)∗ をもとに最適化問題の解として生成されるので，LS (K−1) よりも YW (K−1)∗ に過適合す

る．また，YW (K)∗ = Lf (Y )(LS (K) ) なので，YW (K)∗は LS (K) に対する最適解であり，YW (K−1)∗ よりも

LS (K) に過適合する．

MD
MD
行う．YW
(Y )(LS (K) M D )(K)∗ = Lf

2. T S を 評 価 デ ー タ セット と し て 正 解 率 と 内

繰り返し行うと，ある M に対して，YW (M )∗ とYW (M −1)∗ に有意な差が見られなくなり，LS

1. LS (K) M D と T S (K) M D を用いて訓練・学習を(M +1)とMD
部 活 性 率 を 測 定 す る ．Acc(YW(K)∗ )(T S) とMD
Oact (YW(K)∗ )(T S) である．

LS (M ) に差がなくなる．LS (M +1) ≈LS (M ) なので，

MD
3. YW
(K)∗ を利用して，セマンティック・ノイズを挿Lf (Y ) を適用しても YW (M )∗ が変わらない．その結入したデータセット LS (K+1) M D と T S (K+1) M D

果，M 以降，評価用データセット ES に対する内部を作成する．LS (K+1) M D = Tf (LS (K) M D ) と活性率が一定になる．

T S (K+1) M D = Tf (T S (K) M D ) である．

訓練・学習プログラム Lf (Y ) に欠陥がなければ，

4. K = K + 1 として繰り返す．

LS を初期値として Tf を繰り返し適用し，M 回目とまた，K≥1 の時，内部活性率（上記ステップ 2）に

M + 1 回目の内部活性率が一致する．繰り返し適用

対する仮説検定の方法によって，メタモルフィック関しても，一致しなければ欠陥があると推測できる．内係（第 4.1.3 節）を調べる．つまり，部活性率は評価データ ES についての ν@P L の平均

D
HTM D ( U( Oact (LM(LS (K−1) ))(T S) ),f

値なので，一致しないことを仮説検定の方法で確認すれば良い．

D
U( Oact (LM(LS (K) ))(T S) ) )fである．同じ評価用データを用いることから，2 つの標本数は同一（N = M ）である．この時，t-値は簡4. 2 対照実験
セマンティック・ノイズを利用したメタモルフィッ
ク性の方法では，Tf の繰り返し適用回数を実験的に調べる必要がある．最適化問題（第 4.1.2 節）の形か

単になり，µ(1) − µ(2)t= √(s(1) 2 + s(2) 2 )/Nを計算すれば良い．また，N は十分に大きいので，自由度 ∞ の t-分布にしたがうとする．

ら，繰り返し回数 M は大きな値にならないと考えられる．対照実験によって確認しよう．
C
標準的な学習方式を実現したプログラム LPをf

準備し，これに欠陥挿入したプログラム LBIを作f
成した [21] [22]．P C は Probably Correct（おそらく正しい），BI は Bug Injected（バグ挿入した）を

4. 3 実験結果と考察
図 2 は横軸に繰り返し適用の回数 K （Tf K ），縦軸に正解率 Acc（図 2(a)）、予測の確からしさ Oprob（図 2(b)），および内部活性率 Oact （図 2(c)）をプロットした．

示す．また，学習モデル YW ( ) は P C と BI で共通

正解率は，PC と BI 共に 90% を超える値をとり，で，古典的な全結合ニューラル・ネットワーク（Fully

その違いが現れにくい．つまり，正解率を監視していConnected）とする．さらに，活性関数を ReLU とても欠陥の有無が判断しにくい．また，繰り返しと共し，ν@P L 計算に用いる閾値を 0 とする．

に単調減少するのは，各ステップで用いた訓練データ

2 つの訓練・学習プログラムを対象として，次の手順で実験する．ここで，記号 M D は P C あるいは BIを示し，P C の実験系列と BI の系列を並行して実施する．また，MNIST のデータセット LS と T S を

セット LS (K) の経験分布と評価に用いたデータセッ
ト T S の経験分布の違い（データ・シフト）が大きくなるからである．さらに，K≥2 では，BI の予測の確からしさが PC よりも劣る．データ・シフトが大きく

各々LS (0) M D（T S (0) M D ）とする．LS = LS (0) P C =なると共に確からしさが低下する．つまり，欠陥があLS (0) BI （T S = T S (0) P C = T S (0) BI ）である．一ると，ロバスト性に影響する．

方，K≥1 の時，LS (K) P C と LS (K) BI （T S (K) P C

内部活性率の値は PC と BI で大きく異なる．PCと T S (K) BI ）は一致しない．K = 0 から開始する．

が 60% 以上のニューロンを有効に使用しているのに

1.0

PC

1

BI

103
102
10

0.9

-1

0

1

2

3

4

1 0

5

1

2

3

4

5

6

(a) 正解率
1.0)%

PC

!"&#%

BI

!"&$%

図3

t-値の変化

陥挿入したことと整合している．

!"&(%
!"&'%

なお，仮説検定の方法を用いたので，M ≥2 で PC

!"&%
0.9

が収束する，つまり，欠陥がないと結論できるわけで

!"##%
!"#$%
-1

ないことに注意して欲しい．通常のソフトウェア・テ
0

1

2

3

4

5

スティングと同様に，欠陥があることを確認する方法
である．

(b) 予測の確からしさ
1.0

5 議論

0.8

5 つの観点から既存研究との関係を整理する．
統計的な検査法 統計的な検査の方法は，第 2 節に触0.6

れたように，確率的な挙動を示すプログラムのテス

0.4

ティングに用いられている [14] [11] [27]．一方，CPS
0.2
-1

0

1

2

3

4

5

[18] の代表的な計算モデルとして用いられるハイブ

リッド・システムを対象とした形式検証に確率・統計(c) 内部活性率
図2

的な方法を用いる研究 がある．統計モデル検査 [32]と呼ばれるが，実行時検証と仮説検定を組み合わせた指標の変化手法である．このような統計モデル検査と統計的なソ
対して，BI は 40% 程度のニューロンだけが予測・推フトウェア・テスティングには共通点があり，統一的論に関わる．また，繰り返しと共に，単調増加するな視点から整理可能である．

PC に比べて，BI は単調減少する．BI がモデル・キャ

本稿のフレームワークは，部分オラクルと仮説検定

パシティを有効に活用していないことを示唆する．こを組み合わせた統計的なメタモルフィック・テスティのように，有効利用できていないことが，K≥2 でロ

ング [11] を再考し，テスト・オラクルの定義（第 3.1

バスト性の段階的な低下として現れる原因と考えら節）を関数モデリングの方法で明確化した．

れる．

内部活性 ニューロン・カバレッジ（NC）は，訓練

図 3 は縦軸に内部活性率についての t-値を示す．横軸は仮説検定の対象であって，Tf

K

と Tf

K+1

データ補完の指針を得る方法として提案された [26]．

の比較

NC 値が小さい場合，訓練データセットに問題があるを表す．点線は，有意水準 0.001/2 (0.0005) の t-値とする．NC を増加するようなデータを自動合成し，に対応する．両側検定によると，グラフから BI は有訓練データセットに追加する．

意水準 0.001 以下で一致しないと推測でき，BI に欠

本稿では，訓練済み学習モデルの特定の層の NC 値

をもとに内部活性率を定義した．検査対象の訓練・学いる．一方で，ランダム生成の方法では，欠陥箇所を習プログラムが欠陥を含む場合，欠陥がないプログラ

実行する頻度が小さくなる．そこで，生成データ分布

ムに比べて，内部活性率が小さくなることを実験でに偏りを持たせてコーナーケース・テスティングを行確認した．内部活性率に着目することで，訓練データ

い，検査結果の統計的な信頼度を改善する方法が知

セットの不足あるいは偏り，訓練・学習プログラムのられている．たとえば，モンテカルロ法で知られてい欠陥，といった何らかの問題があることが従来論じらる重点サンプリングの方法を用いた事例 [16] や深層れていた [23]．この考察結果をもとにメタモルフィッ

ニューラル・ネットワークのロバスト性検査に用いらク関係を定義した．特に，仮説検定の方法を組み合われている [30]．

せた点が新しい．

本稿が検査対象とする訓練・学習プログラムでは，

セマンティック・ノイズ 実験では，セマンティック・検査に用いる評価用データセットと欠陥箇所の関係

ノイズ [22] をもとにしたフォローップ・テスト入力が明らかでないことから，コーナーケースを重点的生成と組み合わせることで，内部活性率をメタモルに調べるような偏りを導入することが難しい．逆に，フィック関係から参照する検査法を用いた．このセ検査対象問題の性質を忠実に反映する評価用データ

マンティック・ノイズ生成関数 Sf によって得られるを用いるほうが好ましい．そこで，試験データセット

データは，この関数が利用する訓練済み学習モデルをを評価用に用いた．LS (K) と T S は同じ手書き数字

得る際に用いたデータセット LS の経験分布との関係

分類の学習タスクを適切に表す一方，データ・シフト

が明確でない．この点，基本となるデータ分布との関が生じている．訓練・学習に用いられる LS (K) を基

係性が明確な GAN [9] と異なることに注意して欲し

準とすると，T S は適切に生成されたファズ [15] と同い．テスト入力作成の観点では，GAN による方法が様な役割を担う．

想定する条件（LS の経験分布）下での網羅性向上であるのに対して，本稿の Sf が生成するデータは，基6 おわりに本とした LS からみて大きな偏りを持つ可能性のある

統計的なオラクルと部分オラクルを組み合わせた一ファズ [15] といえる．

般的なテスティング・フレームワークを整理し，ニューT の繰り返し適用 実験では，フォローアップ・テス

ラル・ネットワークの訓練・学習プログラムのデバッ

ト入力生成関数 T を繰り返し適用し，生成した入力

グ・テスティングへの適用例として簡単な分類学習のデータに対する実行結果をメタモルフィック関係の評

MNIST データセットを用いた実験を報告した．

価対象とした．この時，さまざまなデータセットが機械学習ソフトウェア開発では，オープン・ソフト

生成されることを，データセット多様性 [20] と呼ぶ．

ウェアとして公開されている既存フレームワークを使

このデータセット多様性による繰り返し法を機械学習

うことが多い．本稿の方法は，訓練・学習プログラム

ソフトウェアの検査に適用するアイデアは SVM の検Lf を対象とするものであり，既存フレームワークの査に見られる [17]．また，ニューラル・ネットワーク

品質確認に用いることができるという点で，他の機械訓練・学習プログラムの検査への応用 [19] が論じら

学習テスティングの研究 [33] と異なる．深層ニューラ

れ，ネットワーク構造の情報を利用したホワイトボッ

ル・ネットワークのテスティング技術として新しい視

クス的な方法が試みられた [21]．

点を導入したといえる．今後，他のデータセットへの

本稿では，より適用範囲を広げることを目的とし適用を通して，提案方法の実用的な有用性を確認してて，最適化問題の定式化によって，ブラックボックス

いきたい．

的にテスト入力を自動生成する方法を導入し，統計的謝辞 本研究の一部は JSPS 科研費 JP18H03224 のなオラクルを用いるテスティングの実験を行った．

助成および NEDO の委託業務（NII へは再委託）に評価用データ分布 統計的な動的検査では，多様な状よって実施した．実験に協力して下さった今井克則氏

況を得る方法として，ランダム生成したデータを用（アイティスミス）に感謝する．

参 考 文 献[ 1 ] Ammann, P. and Knight, J.C. : Data Diversity:
An Approach to Software Fault Tolerance, IEEETC, 37 (4), 1988, pp.418-425.
[ 2 ] Ammann, P. and Oﬀutt, J. : Introduction to
Software Testing, Cambridge University Press 2008.
[ 3 ] Barr, E.T., Harman, M., McMinn, P., Shahbaz,
M., and Yoo, S.: The Oracle Problem in Software
Testing: A Survey, IEEE TSE, 41 (5), 2015, pp.507525.
[ 4 ] Basiri, A., Behnam, N., de Rooji, Hochstein,R.L., Kosewski, L., Reynolds, J.,and Rosenthal, C.:
Chaos Engineering, IEEE Software, 33 (3), 2016,
pp.35-41.
[ 5 ] Chen, T.Y., Chung, S.C., and Yiu, S.M. : Metamorphic Testing - A New Approach for Generating
Next Test Cases, HKUST-CS98-01, The Hong Kong
University of Science and Technology, 1998, and also
arXiv:2002.12543, 2020.
[ 6 ] Chen, T.Y., Kuo, F.-C., Liu, H., Poon, P.-L.,
Towey, D., Tse, T.H., and Zhou, Z.Q. : Metamorphic Testing: A Review of Challenges and Opportunities, ACM Computing Surveys 51 (1), Article
No.4, 2018, pp. 1-27.
[ 7 ] Davies, M. and Weyuker, E. : Pseudo-oracles for
Non-testable Programs, In Proc. ACM‘81 Conference, 1981, pp.254-257.
[ 8 ] Elbaum, S. and Rosenblum, D.S.: Known Unknowns - Testing in the Presence of Uncertainty, In
Proc. 22nd FSE, 2014, pp.833-836.
[ 9 ] Goodfellow, I.J., Pouget-Abadie, J., Mirza, M.,
Xu, B., Warde-Farley, D., Ozair, S., Courville, A.,
and Bengio, Y.: Generative Adversarial Nets, In
Adv. NIPS 27, 2014, pp.2672-2680.
[10] Goodfellow, I., Bengio, Y., and Courville, A.:
Deep Learning, The MIT Press 2016. [邦訳] 岩澤有祐，鈴木雅大，中山浩太郎，松尾豊 監修，味曽野雅史，
黒滝紘生，保住純，野中尚輝，河野慎，冨山翔司，角田貴大 共訳，深層学習，KADOKAWA 2018.
[11] Guderlei, R., and Mayer, J.: Statistical Metamorphic Testing - Testing Programs with Random
Output by Means of Statistical Hypothesis Tests
and Metamorphic Testing, In Proc. 7th QSIC, 2007,
pp.404-409.
[12] Haykin, S.: Neural Networks and Learning Machines (3ed.), Pearson India 2016.
[13] Howden, W.E.: Theoretical and Empirical Studies of Program Testing, In Proc. 3rd ICSE, 1978,
pp.305-311.
[14] Mayer, J. and Guderlei, R.: Test Oracles Using Statistical Methods, In Proc. 1st SOQUA, 2004,
pp.179-189.
[15] Miller, B.P. , Fredricksen, L. , and So, B. : An
Empirical Study of the Reliability of UNIX Utilities,
Comm. ACM, 33 (12), 1990, pp.32-44.

[16] 中島震: 実行時干渉の発生確率予測，コンピュータ・
ソフトウェア, 30 (3), 2013, pp.95-101.
[17] Nakajima, S. and Bui, H.N.: Dataset Coverage
for Testing Machine Learning Computer Programs,
In Proc. 23rd APSEC, 2016, pp.297-304.
[18] 中島震：CPS:そのビジョンとテクノロジー，研究/
技術/計画，32 (3), 2017, pp.235-250.
[19] Nakajima, S.: Generalized Oracle for Testing
Machine Learning Computer Programs, In Proc.
SEFM Workshop, 2017, pp.174-179.
[20] 中島震: データセット多様性のソフトウェア・テス
ティング，コンピュータ・ソフトウェア，35 (2), 2018,
pp.26-32.
[21] Nakajima, S. : Dataset Diversity for Metamorphic Testing of Machine Learning Software, In Proc.
8th SOFL+MSVL, 2019, pp.21-38.
[22] Nakajima, S. and Chen, T.Y.: Generating Biased Dataset for Metamorphic Testing of Machine
Learning Programs, In Proc. 31st IFIP-ICTSS,
2019, pp.56-64.
[23] Nakajima, S.: Distortion and Faults in Machine
Learning Software, Proc. 9th SOFL+MSVL, 2020,
pp.29-41, and also arXiv:1911.11596, 2019.
[24] 中谷多哉子，中島震: ソフトウェア工学，放送大学
教育振興会 2019.
[25] Ng, A. and Soo, K.: Numsense! Data Science forthe Layman: No Math Added, Brite Koncept Ltd.,2017. [邦訳] 上藤一郎 訳: 数式なしでわかるデータサ
イエンス，オーム社 2019.
[26] Pei, K., Cao, Y., Yang, J., and Jana, S.: DeepXplore: Automated Whitebox Testing of Deep Learning Systems, In Proc. 26th SOSP, 2017, pp.1-18.
[27] Servcikova, H., Borning, A., Socha, D., andBleek, W.-G.: Automated Testing of Stochastic Systems: A Statistically Grounded Approach, In Proc.
ISSTA‘06, 2006, pp.215-224.
[28] Szegedy, C., Zaremba, W., Sutskever, I., Bruna,J., Erhan, D., Goodfellow, I., and Fergus, R.: Intriguing properties of neural networks, In Proc.
ICLR, 2014, and also arXiv:1312.6199, 2013.
[29] 東京大学教養学部統計学教室（編）: 統計学入門，
東京大学出版 1991.
[30] Webb, S., Rainforth, T., Teh, Y.W., and Kumar,
M.P.: A Statistical Approach to Assessing Neural
Network Robustness, In Proc. ICLR, 2019, and also
arXiv:1811.07209, 2018.
[31] Weyuker, E.J.: On Testing Non-testable Programs, Computer Journal, 25 (4), 1982, pp.465-470.
[32] Younes, H.L.S., Kwiatkowska, M., Norman,
G.and Parker, D. : Numerical vs. Statistical Probabilistic Model Checking, J. STTT, 8 (3), 2006, pp.
216-228.
[33] Zhang, J.M., Harman, M., Ma, L., Liu, Y.: Machine Learning Testing: Survey, Landscapes andHorizons, arXiv:1906.10742, 2019.