IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2022-156786検査プログラム、情報処理装置および検査方法
<>
  • 特開-検査プログラム、情報処理装置および検査方法 図1
  • 特開-検査プログラム、情報処理装置および検査方法 図2A
  • 特開-検査プログラム、情報処理装置および検査方法 図2B
  • 特開-検査プログラム、情報処理装置および検査方法 図3
  • 特開-検査プログラム、情報処理装置および検査方法 図4
  • 特開-検査プログラム、情報処理装置および検査方法 図5
  • 特開-検査プログラム、情報処理装置および検査方法 図6
  • 特開-検査プログラム、情報処理装置および検査方法 図7
  • 特開-検査プログラム、情報処理装置および検査方法 図8
  • 特開-検査プログラム、情報処理装置および検査方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022156786
(43)【公開日】2022-10-14
(54)【発明の名称】検査プログラム、情報処理装置および検査方法
(51)【国際特許分類】
   G06N 3/02 20060101AFI20221006BHJP
【FI】
G06N3/02
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021060652
(22)【出願日】2021-03-31
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田渕 晶大
(57)【要約】
【課題】比較対象のニューラルネットワーク同士が機能的に同一か否かを示す等価性を検査する。
【解決手段】情報処理装置1は、比較対象のニューラルネットワークを取得する。情報処理装置1は、取得した比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割する。情報処理装置1は、分割したそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較する。そして、情報処理装置1は、出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで分割処理および比較処理を繰り返す。
【選択図】図2A
【特許請求の範囲】
【請求項1】
比較対象のニューラルネットワークを取得し、
取得した前記比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割し、
該分割したそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較し、
出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで分割処理および比較処理を繰り返す
処理をコンピュータに実行させることを特徴とする検査プログラム。
【請求項2】
該分割する処理は、前記比較対象のニューラルネットワークを、レイヤーの種類に基づいて、それぞれの部分ニューラルネットワークに分割する
ことを特徴とする請求項1に記載の検査プログラム。
【請求項3】
該分割する処理は、前記部分ニューラルネットワークの中に畳み込みレイヤーまたはデンスレイヤーを含んでも1つだけとなるように前記ニューラルネットワークを分割する
ことを特徴とする請求項1または請求項2に記載の検査プログラム。
【請求項4】
該分割する処理は、さらに、前記部分ニューラルネットワークに含まれるレイヤーおよび直後のレイヤーのうち、丸め誤差の影響が軽微となる所定の条件を満たさないレイヤーが1以下となるように前記部分ニューラルネットワークを分割する
ことを特徴とする請求項3に記載の検査プログラム。
【請求項5】
前記所定の条件は、element-wiseかつ一次の変換、もしくはデータの形状のみ変化するレイヤーである
ことを特徴とする請求項4に記載の検査プログラム。
【請求項6】
該比較する処理は、それぞれの前記部分ニューラルネットワークに対して同じ重みを設定してから同じデータを前方側に入力して、後方側に出力される出力結果を比較するとともに、それぞれの前記部分ニューラルネットワークに対して同じ重みを設定してから同じデータを後方側に入力して、前方側に出力される出力結果および重みの勾配を比較する
ことを特徴とする請求項1に記載の検査プログラム。
【請求項7】
比較対象のニューラルネットワークを取得する取得部と、
前記取得部によって取得された前記比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割する分割部と、
前記分割部によって分割されたそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較する比較部と、を有し、
前記比較部によって出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで前記分割部および前記比較部を繰り返す
ことを特徴とする情報処理装置。
【請求項8】
比較対象のニューラルネットワークを取得し、
取得した前記比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割し、
該分割したそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較し、
出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで分割処理および比較処理を繰り返す
処理をコンピュータが実行することを特徴とする検査方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークの等価性の検査技術に関する。
【背景技術】
【0002】
ニューラルネットワークには、多数のフレームワークが存在する。フレームワークの一例として、TensorFlow(登録商標)、Pytorch(登録商標)やmxnet(登録商標)が挙げられる。
【0003】
あるフレームワークで作成および学習したニューラルネットワークのモデルを他のフレームワークに移植したい場合がある。例えば、より高速なフレームワークを使いたい場合や、処理能力を高めるために使いたいアクセラレータが他のフレームワークでしかサポートされていない場合があるからである。
【0004】
かかる場合に、ニューラルネットワークのモデルを様々なフレームワーク間で交換するためのフォーマットとしてONNX(Open Neural eXchange)が提案されている。ところが、ONNXは、フレームワーク間で未だ完全に相互変換できない。例えば、TensorFlowとmxnetとは、相互変換できるが、TensorFlowとPytorchとは相互変換できない。
【0005】
ここで、第1の学習モデルと第2の学習モデルとの振舞いを比較する学習モデルの評価方法に関する技術が開示されている(例えば、特許文献1参照)。かかる技術では、第1の学習モデルに基づく第1の実行結果と第2の学習モデルに基づく第2の実行結果を求め、第1及び第2の実行結果が論理式を満たすか否かを判定し、判定結果に基づいて、第1の学習モデルと第2の学習モデルとの振舞いを比較する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2020-4178号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、比較対象のニューラルネットワーク(NN)同士が機能的に同一か否かを示す等価性を検査することは難しいという問題がある。かかる問題について説明する。
【0008】
図9は、等価性の検査が困難であることを説明する参考図である。図9に示すように、比較対象であるNNおよびNNに同じデータを入力し、出力結果を比較することで、NN同士の等価性を検査する。
【0009】
ここで、NN同士の等価性の検査では、以下の点について計算の等価性を考慮する必要がある。(1)NNの計算では、主に浮動小数点数が用いられる。このため、計算時の丸め誤差による違いは、考慮される必要がある。(2)レイヤー(層)によっては計算量がより少ないアルゴリズムで代替されることがある。このため、アルゴリズムの違いから発生する誤差は、考慮される必要がある。例えば、畳み込み(convolution)が、高速フーリエ変換(FFT)によって代替される場合等である。(3)比較対象のNNは、複数のレイヤーと、複数のレイヤーとを融合したレイヤーとなることがある。このため、レイヤーの構造による違いからの誤差は、考慮される必要がある。例えば、畳み込みのレイヤー(convolution)とバイアスのレイヤー(bias)とを独立に持ったNNおよび、畳み込みのレイヤーとバイアスのレイヤーとを融合したレイヤーを持ったNNのようなレイヤーの構造による違いの場合である。
【0010】
ところが、比較対象のNN全体に対して同じ入力に対する出力を比較しても、出力の差の原因が丸め誤差等の誤差なのか、NNの違いなのかの判断がつきにくい。例えば、丸め誤差、アルゴリズムの違いからの誤差およびレイヤーの構造による違いからの誤差は、機能的同一に関し許容されるが、これらの誤差なのか、NNの違いなのかの判断がつきにくい。また、入力の要素数に対して出力の要素数が少ないため、判断材料が少ない。
【0011】
したがって、比較対象のNN同士が機能的に同一か否かを示す等価性を検査することは難しい。
【0012】
一つの側面では、比較対象のニューラルネットワーク同士が機能的に同一か否かを示す等価性を検査することを目的とする。
【課題を解決するための手段】
【0013】
第1の案では、検査プログラムは、比較対象のニューラルネットワークを取得し、取得した前記比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割し、該分割したそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較し、出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで分割処理および比較処理を繰り返す、処理をコンピュータに実行させる。
【発明の効果】
【0014】
一実施態様によれば、比較対象のニューラルネットワーク同士が機能的に同一か否かを示す等価性を検査することができる。
【図面の簡単な説明】
【0015】
図1図1は、実施例に係る情報処理装置の機能構成を示すブロック図である。
図2A図2Aは、実施例に係る部分NN比較を説明する図(1)である。
図2B図2Bは、実施例に係る部分NN比較を説明する図(2)である。
図3図3は、実施例に係る検査処理を説明する図である。
図4図4は、実施例に係る検査処理のフローチャートの一例を示す図である。
図5図5は、実施例に係る部分NN探索処理のフローチャートの一例を示す図である。
図6図6は、実施例に係る部分NN探索の一例を示す図である。
図7図7は、実施例に係る部分NN探索の別例を示す図である。
図8図8は、ハードウェア構成例を説明する図である。
図9図9は、等価性の検査が困難であることを説明する図である。
【発明を実施するための形態】
【0016】
以下に、本発明にかかる検査プログラム、情報処理装置および検査方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【0017】
図1は、実施例に係る情報処理装置の機能構成を示すブロック図である。情報処理装置1は、比較対象の2つのニューラルネットワーク(以降、「NN」と略記)を取得し、各NNの先頭から比較可能な部分NNを選択し、部分NN単位で機能的に同一であるかを検査する。なお、ここでいう部分NNとは、NNの中の単一の層(レイヤー)であっても良いし、複数のレイヤーを結合したレイヤーであっても良い。
【0018】
情報処理装置1は、対象NN取得部10、部分NN探索部20、部分NN比較部30および結果出力部40を有する。なお、対象NN取得部10は、取得部の一例である。部分NN探索部20は、分割部の一例である。部分NN比較部30は、比較部の一例である。
【0019】
対象NN取得部10は、比較対象の2つのNNを取得する。例えば、対象NN取得部10は、比較対象の2つのNNを、外部装置からネットワークを介して取得しても良いし、予め記憶された記憶部(図示せず)から取得しても良い。
【0020】
部分NN探索部20は、比較対象の2つのNNの先頭から比較可能な部分NNを探索する。
【0021】
ここで、部分NNの選択基準には、一例として、レイヤーの種類の同一性が挙げられる。レイヤーの種類には、例えば、畳み込みレイヤー(convolution layer)、biasレイヤー、denseレイヤー、reluレイヤー、reshapeレイヤー、transposeレイヤー、activationレイヤー等がある。各NNのレイヤーごとの種類の名称は、各NNのモデル内に記憶されている。なお、畳み込みレイヤーは、以降、「convレイヤー」と略記する。
【0022】
また、部分NNの選択基準には、出力形状の同一性(次元の順序が変わっても同一性の範囲内)が挙げられる。また、部分NNの選択基準には、データを入力した時に最も近い出力の箇所の同一性が挙げられる。また、部分NNの選択基準は、レイヤーの種類の同一性、出力形状の同一性、出力の箇所の同一性の組み合わせであっても良い。以降の説明では、レイヤーの種類の同一性を一例として、説明する。
【0023】
例えば、部分NN探索部20は、比較対象の2つのNNの先頭から、レイヤーの種類に基づいて、比較可能な最小の部分NNを選択する。そして、部分NN探索部20は、部分NNを構成するレイヤーの最大数を示す最大部分NNサイズを予め定めておき、最大部分NNサイズ以下のより大きな部分NNを選択する。より大きな部分NNを選択するのは、後述する部分NN比較部30による比較回数を削減するためである。つまり、部分NN探索部20は、誤差が大きくならない範囲でできる限り大きな部分NNを選択することで、部分NN比較部30による比較回数を削減する。
【0024】
また、部分NN探索部20は、より大きな部分NNを選択する際、以下の<1>、<2>の条件に基づいて、部分NNを探索する。<1>部分NNは、convレイヤーまたはdenseレイヤーを含む場合には、1つだけ含むようにする。convレイヤーやdenseレイヤーは、1レイヤーでの演算量が多いので、丸め誤差が大きくなりやすいからである。<2>部分NNと直後のレイヤーにおいて、1つのレイヤー以外は、element-wiseかつ一次の変換、もしくはデータの形状のみ変化するレイヤーであるようにする。element-wiseかつ一次の変換であれば、丸め誤差がレイヤーごとに加算されても、比較的小さいからである。これに対して、activationのように一次変換でない(非線形変換の)場合には、値の変化自体がわからなくなる可能性が大きいからである。また、データの形状のみ変化するレイヤーであれば、値自体は変化しないからである。なお、<2>を満たすレイヤーには、例えば、biasレイヤー、reshpaeレイヤー、transposeレイヤーが含まれる。
【0025】
部分NN比較部30は、比較対象の2個のNNの対応する各部分NNに対して同じデータを入力し、入力データに対する出力結果を比較する。部分NN単位で比較するのは、後方のレイヤー程、誤差が蓄積されるのを防ぐためである。各部分NNに対して同じデータを入力するのは、より比較の精度を良くするためである。
【0026】
例えば、部分NN比較部30は、部分NN探索部20によって選択された対応する各部分NNのレイヤーの重みに同じ値を入力する。入力する重みは、一様乱数または学習済みの重みであり、各部分NNで用いられるデータ型で表現可能な値である。そして、部分NN比較部30は、対応する各部分NNの前方から同じデータを入力して順伝播を行い、各出力結果を取得する。入力するデータは、一様乱数等であり、各部分NNで用いられるデータ型で表現可能な値である。そして、部分NN比較部30は、各出力結果を比較し、予め定められた許容誤差ε以下であれば、機能的に同一候補と判定する。加えて、部分NN比較部30は、対応する各部分NNの後方から同じデータを入力して逆伝播を行い、各出力結果を取得する。入力するデータは、一様乱数等であり、各部分NNで用いられるデータ型で表現可能な値である。そして、部分NN比較部30は、各出力結果および各重みの勾配を比較し、予め定められた許容誤差ε以下であれば、機能的に同一候補と判定する。そして、部分NN比較部30は、順伝播および逆伝播から取得される各判定結果がどちらも機能的に同一候補であれば、機能的に同一と判定する。なお、対応する各部分NNに入力するデータは、1つに限定されず、複数であるのが望ましい。これは、同一性判定の精度を上げるためである。
【0027】
また、部分NN比較部30は、対応する各部分NNを比較した結果、機能的に同一であると判定した場合には、比較対象のNNから対応する各部分NNを除外する。そして、除外後の比較対象のNNのどちらか一方が末尾になるまで、除外後の比較対象のNNに対して、部分NN探索部20による探索処理および部分NN比較部30による比較処理が繰り返される。
【0028】
結果出力部40は、除外後の比較対象のNNが共に末尾であれば、比較対象のNNが機能的に同一である旨の結果を出力する。また、結果出力部40は、除外後の比較対象のNNのどちらか一方が末尾であれば、比較対象のNNが機能的に同一でない旨の結果を出力する。また、結果出力部40は、部分NN探索部20によって部分NNが探索されない場合にも、比較対象のNNが機能的に同一でない旨の結果を出力する。
【0029】
[部分NN比較の説明]
ここで、実施例に係る部分NN比較について、図2Aおよび図2Bを参照して説明する。図2Aおよび図2Bは、実施例に係る部分NN比較を説明する図である。図2Aに示すように、部分NN探索部20は、比較対象の2つのNNの先頭から、レイヤーの種類に基づいて、比較可能な最小の部分NNを選択する。そして、部分NN比較部30は、部分NN単位で比較する。
【0030】
ここでは、比較対象の2つのNNは、NN、NNであるとする。各枠が、各レイヤーであるとする。NNには、convがbiasと融合したレイヤーが含まれているので、この単位で探索処理および比較処理がなされる。例えば、部分NN探索部20は、レイヤーの種類に基づいて、NNから抽出されるconvレイヤーとbiasレイヤーを結合した部分NNと、NNから抽出されるconvがbiasと融合したレイヤーの部分NNとを選択する。そして、部分NN比較部30は、選択した部分NNと部分NNとを比較する。そして、部分NN比較部30は、比較結果が機能的に同一であれば、次の部分NNの探索および比較に移行する。すなわち、部分NN探索部20は、レイヤーの種類に基づいて、NNのreluレイヤーから構成される部分NNと、NNのreluレイヤーから構成される部分NNとを選択する。そして、部分NN比較部30は、選択した部分NNと部分NNとを比較する。
【0031】
図2Bには、部分NNと、部分NNとの比較について表わされている。図2Bに示すように、部分NN比較部30は、対応する各部分NNについて、順伝播および逆伝播を行い、順伝播による出力結果の差分および逆伝播による出力結果の差分がどちらも許容誤差ε以下であれば機能的に同一と判定する。なお、図2Bでは、部分NNは、レイヤーA1とレイヤーA2とを結合した部分NNを示す。部分NNは、レイヤーB1から構成される部分NNを示す。
【0032】
図2B左図には、部分NNと部分NNとの順伝播による比較が示されている。部分NN比較部30は、部分NNと部分NNのレイヤーの重みWに同じ値を入力する。そして、部分NN比較部30は、部分NNと部分NNの前方から同じデータを入力して順伝播を行い、OutputAとOutputBを取得する。そして、部分NN比較部30は、OutputAとOutputBとを比較し、予め定められた許容誤差ε以下であれば、機能的に同一候補と判定する。
【0033】
図2B右図には、部分NNと部分NNとの逆伝播による比較が示されている。部分NN比較部30は、部分NNと部分NNのレイヤーの重みWに同じ値を入力する。そして、部分NN比較部30は、対応する各部分NNの後方から同じデータを入力して逆伝播を行い、OutputA´とOutputB´を取得する。そして、部分NN比較部30は、OutputA´とOutputB´、重みWの勾配gradA1とgradB1、および重みWの勾配gradB1とgradB2をそれぞれ比較し、全ての比較結果が予め定められた許容誤差ε以下であれば、機能的に同一候補と判定する。
【0034】
そして、部分NN比較部30は、順伝播および逆伝播から取得される各判定結果がどちらも機能的に同一候補であれば、部分NNと部分NNとは機能的に同一と判定する。
【0035】
[検査処理の説明]
ここで、実施例に係る検査処理について、図3を参照して説明する。図3は、実施例に係る検査処理を説明する図である。図3に示すように、なお、比較対象の2つのNNは、NN、NNであるとする。各枠が、各レイヤーであるとする。
【0036】
部分NN探索部20は、比較対象の2つのNNの先頭から、レイヤーの種類に基づいて、比較可能な部分NNを探索する。ここでは、NNについて、レイヤーA1とA2とを結合した部分NNが選択される。NNについて、レイヤーB1から構成される部分NNが選択される。
【0037】
部分NN比較部30は、対応する各部分NNについて、順伝播および逆伝播を行い、順伝播による出力結果の差分および逆伝播による出力結果の差分がどちらも許容誤差ε以下であれば機能的に同一と判定する。ここでは、一方の部分NNにデータを入力して順伝播、逆伝播で流し、他方の部分NNには対応する部分NNの入力データをコピーして与えて順伝播、逆伝播で流す。部分NNに部分NNと同じ入力データを入力するのは、より比較の精度を良くするためである。そして、部分NNおよび部分NNの順伝播から出力された各出力結果の差分が許容誤差ε以下であって部分NNおよび部分NNの逆伝播から出力された各出力結果の差分が許容誤差ε以下であれば、機能的に同一と判定される。部分NN単位で比較するのは、後方のレイヤー程、誤差が蓄積されるのを防ぐためである。
【0038】
続いて、部分NN探索部20は、同一と判定された部分NNを除外した2つのNNから、レイヤーの種類に基づいて、比較可能な部分NNを探索する。ここでは、NNについて、レイヤーA3から構成される部分NNが選択される。NNについて、レイヤーB2から構成される部分NNが選択される。
【0039】
部分NN比較部30は、対応する各部分NNについて、順伝播および逆伝播を行い、各部分NNの全出力結果の差分が許容誤差ε以下であれば機能的に同一と判定する。ここでは、一方の部分NNにデータを入力して順伝播、逆伝播で流し、他方の部分NNには対応する部分NNの入力データをコピーして与えて順伝播、逆伝播で流す。そして、部分NNおよび部分NNの順伝播から出力された各出力結果の差分が許容誤差ε以下であって部分NNおよび部分NNの逆伝播から出力された各出力結果の差分が許容誤差ε以下であれば、機能的に同一と判定される。
【0040】
続いて、部分NN探索部20は、同一と判定された部分NNを除外した2つのNNから、レイヤーの種類に基づいて、比較可能な部分NNを探索する。ここでは、NNについて、レイヤーA4とA4とから結合された部分NNが選択される。NNについて、レイヤーB3から構成される部分NNが選択される。
【0041】
部分NN比較部30は、対応する各部分NNについて、順伝播および逆伝播を行い、各部分NNの全出力結果の差分が許容誤差ε以下であれば機能的に同一と判定する。ここでは、一方の部分NNにデータを入力して順伝播、逆伝播で流し、他方の部分NNには対応する部分NNの入力データをコピーして与えて順伝播、逆伝播で流す。そして、部分NNおよび部分NNの順伝播から出力された各出力結果の差分が許容誤差ε以下であって部分NNおよび部分NNの逆伝播から出力された各出力結果の差分が許容誤差ε以下であれば、機能的に同一と判定される。
【0042】
そして、結果出力部40は、除外後の比較対象のNNが共に末尾であれば、比較対象のNNが機能的に同一である旨の結果を出力する。すなわち、結果出力部40は、最終的に両方のNNの一番下まで到達すれば、2つのNN全体は等しいので、2つのNN全体が等しい旨の結果を出力する。また、結果出力部40は、除外後の比較対象のNNのどちらか一方が末尾であれば、比較対象のNNが機能的に同一でない旨の結果を出力する。
【0043】
[検査処理のフローチャート]
図4は、実施例に係る検査処理のフローチャートの一例を示す図である。なお、図4では、検査対象の2つのNNをNNおよびNNとして説明する。
【0044】
まず、対象NN取得部10は、検査対象のNNとNNを取得する(ステップS11)。そして、部分NN探索部20は、NNとNNが共に空であるか否かを判定する(ステップS12)。すなわち、部分NN探索部20は、NNとNNが共に検査済みであるか否かを判定する。
【0045】
NNとNNが共に空でないと判定した場合には(ステップS12;No)、部分NN探索部20は、NNとNNの片方が空であるか否かを判定する(ステップS13)。NNとNNのどちらも空でないと判定した場合には(ステップS13;No)、部分NN探索部20は、NNとNNの先頭から部分NN候補を探索する(ステップS14)。なお、部分NN候補を探索する部分NN探索処理のフローチャートは、後述する。
【0046】
そして、部分NN探索部20は、部分NN候補があるか否かを判定する(ステップS15)。部分NN候補がないと判定した場合には(ステップS15;No)、部分NN探索部20は、NNとNNが同等でないと判断し、ステップS19に移行する。
【0047】
一方、部分NN候補があると判定した場合には(ステップS15;Yes)、部分NN比較部30は、部分NNと部分NNが等しいか否かを判定する(ステップS16)。例えば、部分NN比較部30は、部分NNと部分NNのレイヤーの重みに同じ値を入力する。部分NN比較部30は、部分NNと部分NNの前方から同じデータを入力して順伝播を行い、各出力結果を取得する。部分NN比較部30は、各出力結果を比較し、予め定められた許容誤差ε以下であるか否かを判定する。加えて、部分NN比較部30は、部分NNと部分NNの後方から同じデータを入力して逆伝播を行い、各出力結果を取得する。部分NN比較部30は、各出力結果および各重みの勾配を比較する。部分NN比較部30は、各出力結果を比較し、予め定められた許容誤差ε以下であるか否かを判定する。そして、部分NN比較部30は、順伝播による各出力結果および逆伝播による各出力結果が全て許容誤差ε以下であると判定した場合には、部分NNと部分NNが機能的に同一(等しい)と判定する。部分NN比較部30は、順伝播による各出力結果および逆伝播による各出力結果のうちいずれか1つでも許容誤差ε以下でないと判定した場合には、部分NNと部分NNが機能的に同一でない(等しくない)と判定する。
【0048】
部分NNと部分NNが等しくないと判定した場合には(ステップS16;No)、部分NN探索部20は、再度部分NN候補を探索すべく、ステップS14に移行する。選択した部分NNが違っている可能性があるからである。
【0049】
一方、部分NNと部分NNが等しいと判定した場合には(ステップS16;Yes)、部分NN探索部20は、NNから部分NNを除外する(ステップS17)。すなわち、部分NN探索部20は、NNから部分NNを除外し、NNから部分NNを除外する。そして、部分NN探索部20は、除外後のNNとNNにおける処理をすべく、ステップS12に移行する。
【0050】
ステップS12において、NNとNNが共に空であると判定した場合には(ステップS12;Yes)、部分NN探索部20は、NNとNNが同等である旨を出力する(ステップS18)。そして、プロセスは、検査処理を終了する。
【0051】
また、ステップS13において、NNとNNの片方が空であると判定した場合には(ステップS13;Yes)、部分NN探索部20は、NNとNNが同等でない旨を出力する(ステップS19)。そして、プロセスは、検査処理を終了する。
【0052】
[部分NN探索処理のフローチャート]
図5は、実施例に係る部分NN探索処理のフローチャートの一例を示す図である。なお、図5では、図4と同様に、検査対象のNNをNNおよびNNとして説明する。
【0053】
部分NN探索部20は、レイヤーの種類をベースに、NNとNNの先頭から比較可能な最小の部分NNと部分NNを見つける(ステップS21)。そして、部分NN探索部20は、部分NNと部分NNのレイヤー数が最大部分NNサイズ以下であるか否かを判定する(ステップS22)。部分NNと部分NNのレイヤー数が最大部分NNサイズより大きいと判定した場合には(ステップS22;No)、部分NN探索部20は、部分NN探索処理を終了する。
【0054】
一方、部分NNと部分NNのレイヤー数が最大部分NNサイズ以下であると判定した場合には(ステップS22;Yes)、部分NNと部分NNにconvレイヤーまたはdenseレイヤーを含まないかどうかを判定する(ステップS23)。convレイヤーまたはdenseレイヤーを含むと判定した場合には(ステップS23;No)、部分NN探索部20は、部分NN探索処理を終了する。すなわち、より大きな部分NNを選択する際の<1>の条件(部分NNは、convレイヤーまたはdenseレイヤーを含む場合には、1つだけ含むようにする)である。convレイヤーやdenseレイヤーは、1レイヤーでの演算量が多いので、丸め誤差が大きくなりやすいからである。
【0055】
convレイヤーまたはdenseレイヤーを含まないと判定した場合には(ステップS23;Yes)、部分NN探索部20は、以下の処理を行う。部分NN探索部20は、部分NNと部分NN、および各直後のレイヤーのうち所定の条件を満たさないレイヤーが1以下であるか否かを判定する(ステップS24)。所定の条件は、element-wiseかつ一次変換のレイヤー、もしくはデータの形状のみ変化するレイヤーであることである。すなわち、より大きな部分NNを選択する際の<2>の条件(部分NNと直後のレイヤーにおいて、1つのレイヤー以外は、element-wiseかつ一次の変換、もしくはデータの形状のみ変化するレイヤーであるようにする)である。element-wiseかつ一次の変換であれば、丸め誤差がレイヤーごとに加算されても、比較的小さいからである。また、データの形状のみ変化するレイヤーであれば、値自体は変化しないからである。
【0056】
部分NNと部分NN、および各直後のレイヤーのうち所定の条件を満たさないレイヤーが1以下でない、2以上であると判定した場合には(ステップS24;No)、部分NN探索部20は、部分NN探索処理を終了する。
【0057】
一方、部分NNと部分NN、および各直後のレイヤーのうち所定の条件を満たさないレイヤーが1以下であると判定した場合には(ステップS24;Yes)、部分NN探索部20は、以下の処理を行う。部分NN探索部20は、部分NNと部分NNの各直後のレイヤーを部分NNと部分NNに結合する(ステップS25)。そして、部分NN探索部20は、部分NN探索処理を継続すべく、ステップS22に移行する。
【0058】
これにより、情報処理装置1が実施する検査処理は、丸め誤差等の影響を低減しつつ、比較対象のNN同士が機能的に同一かどうかを検査することができる。
【0059】
[部分NN探索の一例]
図6は、実施例に係る部分NN探索の一例を示す図である。なお、比較対象の2つのNNは、NN、NNであるとする。各枠が、各レイヤーであるとする。また、最大部分NNサイズは、例えば3であるとする。また、reluレイヤーは、一次変換でないレイヤーである。baisレイヤー、reshapeレイヤーは、一次変換と形状のみ変化するレイヤーである。
【0060】
部分NN探索部20は、レイヤーの種類をベースに、比較対象のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、convレイヤーを構成とする部分NN、部分NNが選択される。そして、部分NN探索部20は、部分NN、部分NNにconvレイヤーを含むので、convレイヤーを構成とする部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NNと部分NNとを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0061】
次に、部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、biasレイヤーを構成とする部分NN、部分NNが選択される。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「3」)以下であり、部分NNと部分NNにconvレイヤーまたはdenseレイヤーを含まないので、次の処理に移行する。そして、部分NN探索部20は、部分NNと部分NNおよび直後のreluレイヤーのうち条件を満たさないレイヤーが1以下であるので、部分NNと部分NNに直後のreluレイヤーを結合する。reluレイヤーは一次変換ではないが、biasレイヤーは一次変換と形状のみ変化するレイヤーであり、条件を満たさないレイヤーが1以下であるので、reluレイヤーは各部分NNに結合される。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「3」)以下であり、部分NNと部分NNにconvレイヤーまたはdenseレイヤーを含まないので、次の処理に移行する。そして、部分NN探索部20は、部分NNと部分NNおよび直後のreshapeレイヤーのうち条件を満たさないレイヤーが1以下であるので、部分NNと部分NNに直後のreshapeレイヤーを結合する。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「3」)以下であるが、直後のレイヤーがconvレイヤーまたはdenseレイヤーを含むので、bias、reluおよびreshpaeレイヤーを構成する部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0062】
次に、部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、denseレイヤーを構成とする部分NN、部分NNが選択される。そして、部分NN探索部20は、部分NN、部分NNにdenseレイヤーを含むので、denseレイヤーを構成とする部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0063】
次に、部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、biasレイヤーを構成とする部分NN、部分NNが選択される。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「3」)以下であり、部分NNと部分NNにconvレイヤーまたはdenseレイヤーを含まないので、次の処理に移行する。そして、部分NN探索部20は、部分NNと部分NNおよび直後のreluレイヤーのうち条件を満たさないレイヤーが1以下であるので、部分NNと部分NNに直後のreluレイヤーを結合する。reluレイヤーは一次変換ではないが、biasレイヤーは一次変換と形状のみ変化するレイヤーであり、条件を満たさないレイヤーが1以下であるので、reluレイヤーは各部分NNに結合される。この後、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。
【0064】
そして、結果出力部40は、同一である部分NNを除外後の比較対象のNNcおよびNNが共に末尾になると、比較対象のNNが機能的に同一である旨の結果を出力する。これに対して、結果出力部40は、同一である部分NNを除外後の比較対象のNNcおよびNNのどちらか一方が末尾であれば、比較対象のNNが機能的に同一でない旨の結果を出力する。
【0065】
[部分NN探索の別例]
図7は、実施例に係る部分NN探索の別例を示す図である。なお、比較対象の2つのNNは、NN、NNであるとする。各枠が、各レイヤーであるとする。また、最大部分NNサイズは、例えば2であるとする。また、reluレイヤーは、一次変換でないレイヤーである。baisレイヤー、reshapeレイヤーは、一次変換と形状のみ変化するレイヤーである。
【0066】
部分NN探索部20は、レイヤーの種類をベースに、比較対象のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、NNでは、biasがconvと融合したレイヤーとなっている。そこで、convレイヤーとbiasレイヤーを構成とする部分NN、convとbiasが融合したレイヤーを構成とする部分NNが選択される。そして、部分NN探索部20は、部分NN、部分NNにconvレイヤーを含むので、convレイヤーを含む構成の部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0067】
次に、部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、reluレイヤーを構成とする部分NN、部分NNが選択される。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「2」)以下であり、部分NNと部分NNにconvレイヤーまたはdenseレイヤーを含まないので、次の処理に移行する。そして、部分NN探索部20は、部分NNと部分NNおよび直後のreshapeレイヤーのうち条件を満たさないレイヤーが1以下であるので、部分NNと部分NNに直後のreshapeレイヤーを結合する。reluレイヤーは一次変換ではないが、reshapeレイヤーは一次変換と形状のみ変化するレイヤーであり、条件を満たさないレイヤーが1以下であるので、reshapeレイヤーは各部分NNに結合される。そして、部分NN探索部20は、各部分NNが最大部分NNサイズ(「2」)以下であるが、直後のレイヤーがconvレイヤーまたはdenseレイヤーを含むので、reluおよびreshpaeレイヤーを構成する部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0068】
部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、NNでは、biasがdenseと融合したレイヤーとなっている。そこで、denseレイヤーとbiasレイヤーを構成とする部分NN、denseとbiasが融合したレイヤーを構成とする部分NNが選択される。そして、部分NN探索部20は、部分NN、部分NNにdenseレイヤーを含むので、denseレイヤーを含む構成の部分NN、部分NNを部分NN候補とする。そして、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。ここでは、部分NN、部分NNが機能的に同一であると判定したとする。そして、部分NN探索部20は、NNから部分NNを除外するとともに、NNから部分NNを除外する。
【0069】
次に、部分NN探索部20は、レイヤーの種類をベースに、除外後のNNとNNの先頭から、比較可能な最小の部分NNと部分NNを選択する。ここでは、reluレイヤーを構成とする部分NN、部分NNが選択される。この後、部分NN比較部30は、部分NN、部分NNを比較し、機能的に同一であるか否かを検査する。
【0070】
そして、結果出力部40は、同一である部分NNを除外後の比較対象のNNcおよびNNが共に末尾になると、比較対象のNNが機能的に同一である旨の結果を出力する。これに対して、結果出力部40は、同一である部分NNを除外後の比較対象のNNcおよびNNのどちらか一方が末尾であれば、比較対象のNNが機能的に同一でない旨の結果を出力する。
【0071】
[実施例の効果]
上記実施例によれば、情報処理装置1は、比較対象のニューラルネットワークを取得する。情報処理装置1は、取得した比較対象のニューラルネットワークを先頭から比較可能なそれぞれの部分ニューラルネットワークに分割する。情報処理装置1は、該分割したそれぞれの部分ニューラルネットワークに対して同じデータを入力し、入力データに対する出力結果を比較する。そして、情報処理装置1は、出力結果が等しいと判定された場合には、ニューラルネットワークの末尾まで分割処理および比較処理を繰り返す。これにより、情報処理装置1は、比較可能な部分ニューラルネットワーク単位で等しいか否かの比較を繰り返すことで、比較対象のニューラルネットワーク同士が機能的に同一か否かを示す等価性を検査することができる。
【0072】
また、上記実施例によれば、情報処理装置1は、比較対象のニューラルネットワークを、レイヤーの種類に基づいて、それぞれの部分ニューラルネットワークに分割する。これにより、情報処理装置1は、比較対象のニューラルネットワークの分割にレイヤーの種類を用いることで、同じ種類同士の部分ニューラルネットワークに分割できることとなり、部分ニューラルネットワーク同士の機能的な同一性を検査することが可能となる。
【0073】
また、上記実施例によれば、情報処理装置1は、部分ニューラルネットワークの中に畳み込みレイヤーまたはデンスレイヤーを含んでも1つだけとなるようにニューラルネットワークを分割する。これにより、情報処理装置1は、部分ニューラルネットワークに演算量が多いレイヤーを1つだけとすることで、丸め誤差が大きくなることを防止できる。この結果、情報処理装置1は、丸め誤差の影響を低減しつつ、比較対象のニューラルネットワーク同士が機能的に同一か否かを精度良く検査できる。
【0074】
また、上記実施例によれば、情報処理装置1は、さらに、部分ニューラルネットワークに含まれるレイヤーおよび直後のレイヤーのうち、丸め誤差の影響が軽微となる所定の条件を満たさないレイヤーが1以下となるように前記部分ニューラルネットワークを分割する。これにより、情報処理装置1は、部分ニューラルネットワークに含まれるレイヤーについて、丸め誤差の影響が軽微となる条件を満たさないレイヤーを1以下とすることで、丸め誤差が大きくなることを防止できる。この結果、情報処理装置1は、丸め誤差の影響を低減しつつ、比較対象のニューラルネットワーク同士が機能的に同一か否かを精度良く検査できる。
【0075】
また、上記実施例によれば、所定の条件は、element-wiseかつ一次の変換、もしくはデータの形状のみ変化するレイヤーである。これにより、情報処理装置1は、所定の条件を満たさないレイヤーを1以下とすることで、丸め誤差が大きくなることを防止できる。この結果、情報処理装置1は、丸め誤差の影響を低減しつつ、比較対象のニューラルネットワーク同士が機能的に同一か否かを精度良く検査できる。
【0076】
また、上記実施例によれば、情報処理装置1は、それぞれの部分ニューラルネットワークに対して同じ重みを設定してから同じデータを前方側に入力して、後方側に出力される出力結果を比較する。加えて、情報処理装置1は、それぞれの部分ニューラルネットワークに対して同じ重みを設定してから同じデータを後方側に入力して、前方側に出力される出力結果および重みの勾配を比較する。これにより、情報処理装置1は、比較対象の部分ニューラルネットワークに対して入力データを共通にすることで、比較の精度を上げることができる。また、情報処理装置1は、出力結果だけでなく重みの勾配も比較することで、さらに比較の精度を上げることができる。
【0077】
[その他]
なお、上記実施例では、比較対象のNNの個数を2つとして説明した。すなわち、情報処理装置1は、比較対象の2つのNNを取得し、各NNの先頭から比較可能な部分NNを選択し、部分NN単位で機能的に同一であるかを検査する。しかしながら、比較対象のNNは、2つに限定されず、3つ以上であっても良い。
【0078】
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0079】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0080】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0081】
図8は、ハードウェア構成例を説明する図である。図8に示すように、情報処理装置1は、通信装置100、HDD(Hard Disk Drive)110、メモリ120、プロセッサ130を有する。また、図8に示した各部は、バス等で相互に接続される。
【0082】
通信装置100は、ネットワークインタフェースカード等であり、他の装置との通信を行う。HDD110は、図1に示した機能を動作させるプログラムやDBを記憶する。
【0083】
プロセッサ130は、図1に示した各処理部と同様の処理を実行するプログラムをHDD110等から読み出してメモリ120に展開することで、図1等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置1が有する各処理部と同様の機能を実行する。具体的には、プロセッサ130は、対象NN取得部10、部分NN探索部20、部分NN比較部30および結果出力部40等と同様の機能を有するプログラムをHDD110等から読み出す。そして、プロセッサ130は、対象NN取得部10、部分NN探索部20、部分NN比較部30および結果出力部40等と同様の処理を実行するプロセスを実行する。
【0084】
このように、情報処理装置1は、プログラムを読み出して実行することで検査方法を実行する情報処理装置として動作する。また、情報処理装置1は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置1によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【0085】
このプログラムは、インターネット等のネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【0086】
1 情報処理装置
10 対象NN取得部
20 部分NN探索部
30 部分NN比較部
40 結果出力部
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9