(57)【要約】【課題】ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込む。【解決手段】モデル取得部１１０は、ニューラルネットワークを構成する２つの異なる層のうち、入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得する。代表値算出部１１２は、第２層を構成するノード毎に重みパラメータの代表値を算出する。付加情報取得部１１３は、学習モデルに埋め込むための付加情報を取得する。第１変更部１１４は、代表値の順序が付加情報を表現するように、第１層と第２層との間の重みパラメータの順序を変更する。第２変更部１１５は、順序の変更を打ち消すように、第２層と第２層よりも出力層側に存在する層である第３層との間の重みパラメータの順序を変更する。【選択図】図２
2020149342.tif 000002
【特許請求の範囲】
【請求項１】
入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置であって、
前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得するモデル取得部と、
前記第２層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、
前記学習モデルに埋め込むための付加情報を取得する付加情報取得部と、
前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更する第１変更部と、
前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更する第２変更部と、
を備える付加情報埋込装置。
【請求項２】
前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込むための層を選択する埋込層選択部をさらに備える、
請求項１に記載の付加情報埋込装置。
【請求項３】
前記埋込層選択部は、
（１）前記第１層と前記第２層とが全結合であり、かつ前記第２層と前記第３層とが全結合であること、又は
（２）前記第１層と前記第２層とが畳込み層であり、かつ前記第２層と前記第２層よりも前記出力層側に存在するプーリング層を除く層である前記第３層とが畳み込み層であること、
を条件として前記付加情報を埋め込むための層を選択する、
請求項２に記載の付加情報埋込装置。
【請求項４】
前記付加情報取得部は、前記付加情報としてビット列を取得し、
前記第１変更部は、隣り合うノード間の代表値の大小関係が前記ビット列と対応するように、前記重みパラメータの順序を変更する、
請求項１から３のいずれか１項に記載の付加情報埋込装置。
【請求項５】
前記付加情報取得部は、前記付加情報としてビット列を取得し、
前記第１変更部は、各ノードの代表値の正負が前記ビット列と対応するように、前記重みパラメータの順序を変更する、
請求項１から３のいずれか１項に記載の付加情報埋込装置。
【請求項６】
前記代表値算出部は、交換法則が成り立つ演算を前記重みパラメータに施すことにより前記代表値を算出する、
請求項１から５のいずれか１項に記載の付加情報埋込装置。
【請求項７】
請求項１から６のいずれか１項に記載の付加情報埋込装置が重みパラメータを変更した学習モデルを取得する変更済みモデル取得部と、
前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込み可能な層を選択する埋込層選択部と、
前記埋込層選択部が選択した層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、
前記代表値の順序に基づいて、前記学習モデルに埋め込まれた付加情報を特定する付加情報特定部と、
を備える付加情報検出装置。
【請求項８】
入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置のプロセッサが、
前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得するステップと、
前記第２層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、
前記学習モデルに埋め込むための付加情報を取得するステップと、
前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更するステップと、
前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更するステップと、
を実行する付加情報埋込方法。
【請求項９】
入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むコンピュータに、
前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得する機能と、
前記第２層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、
前記学習モデルに埋め込むための付加情報を取得する機能と、
前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更する機能と、
前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更する機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）及びＧＰＵ（Graphics Processing Unit）の高速化、メモリの大容量化、及び機械学習技術が急速に進んできている。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術が確立されつつある。これらの機械学習によって生成された学習モデルのモデルパラメータに出所や提供先等の電子透かしを埋め込むことで出所を特定するための技術も提案されている（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】U.Uchida, Y.Nagai, S.Sakazawa, S.Sato, “Embedding Watermarks into Deep Neural Networks”, ICMR2017.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記は、ニューラルネットワークの学習モデルを対象とし、その学習モデルの学習時に重みパラメータに著作者等の付加情報を埋め込む技術である。付加情報の埋め込みにより学習モデルの性能が変化し、基本的には劣化する。
【０００５】
本発明はこれらの点に鑑みてなされたものであり、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込む技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様は、入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置である。この装置は、前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得するモデル取得部と、前記第２層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、前記学習モデルに埋め込むための付加情報を取得する付加情報取得部と、前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更する第１変更部と、前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更する第２変更部と、を備える。
【０００７】
前記付加情報埋込装置は、前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込むための層を選択する埋込層選択部をさらに備えてもよい。
【０００８】
前記埋込層選択部は、（１）前記第１層と前記第２層とが全結合であり、かつ前記第２層と前記第３層とが全結合であること、又は（２）前記第１層と前記第２層とが畳込み層であり、かつ前記第２層と前記第２層よりも前記出力層側に存在するプーリング層を除く層である前記第３層とが畳み込み層であること、を条件として前記付加情報を埋め込むための層を選択してもよい。
【０００９】
前記付加情報取得部は、前記付加情報としてビット列を取得してもよく、前記第１変更部は、隣り合うノード間の代表値の大小関係が前記ビット列と対応するように、前記重みパラメータの順序を変更してもよい。
【００１０】
前記付加情報取得部は、前記付加情報としてビット列を取得してもよく、前記第１変更部は、各ノードの代表値の正負が前記ビット列と対応するように、前記重みパラメータの順序を変更してもよい。
【００１１】
前記代表値算出部は、交換法則が成り立つ演算を前記重みパラメータに施すことにより前記代表値を算出してもよい。
【００１２】
本発明の第２の態様は、付加情報検出装置である。この装置は、上記の付加情報埋込装置が重みパラメータを変更した学習モデルを取得する変更済みモデル取得部と、前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込み可能な層を選択する埋込層選択部と、前記埋込層選択部が選択した層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、前記代表値の順序に基づいて、前記学習モデルに埋め込まれた付加情報を特定する付加情報特定部と、を備える。
【００１３】
本発明の第３の態様は、付加情報埋込方法である。この方法において、入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置のプロセッサが、前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得するステップと、前記第２層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、前記学習モデルに埋め込むための付加情報を取得するステップと、前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更するステップと、前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更するステップと、を実行する。
【００１４】
本発明の第４の態様は、プログラムである。このプログラムは、入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むコンピュータに、前記ニューラルネットワークを構成する２つの異なる層のうち、前記入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第２層を構成する各ノードへの入力となる学習モデルを取得する機能と、前記第２層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、前記学習モデルに埋め込むための付加情報を取得する機能と、前記代表値の順序が前記付加情報を表現するように、前記第１層と前記第２層との間の前記重みパラメータの順序を変更する機能と、前記順序の変更を打ち消すように、前記第２層と前記第２層よりも前記出力層側に存在する層である第３層との間の重みパラメータの順序を変更する機能と、を実現させる。
【００１５】
このプログラムを提供するため、あるいはプログラムの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【００１６】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１７】
本発明によれば、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。
【図面の簡単な説明】
【００１８】
【図１】実施の形態の概要を説明するための図である。
【図２】実施の形態に係る付加情報埋込装置の機能構成を模式的に示す図である。
【図３】実施の形態に係る第１変更部及び第２変更部が実行する処理を説明するための図である。
【図４】畳込み層への付加情報の埋め込みを説明するための図である。
【図５】並べ替え後の代表値の一例を示す図である。
【図６】代表値を並び替えたときの順番の決定方法の一例を説明するための図である。
【図７】第１変更部が決定した代表値を並び替えたときの順番の一例を示す図である。
【図８】実施の形態に係る付加情報埋込装置が実行する付加情報埋込処理の流れを説明するためのフローチャートである。
【図９】実施の形態に係る付加情報検出装置の機能構成を模式的に示す図である。
【図１０】実施の形態に係る付加情報検出装置が実行する付加情報検出処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１９】
＜実施の形態の概要＞
図１（ａ）−（ｃ）は、実施の形態の概要を説明するための図である。以下、図１（ａ）−（ｃ）を参照して、実施の形態の概要を述べる。
【００２０】
図１（ａ）は、一般的なニューラルネットワークの層構造を示す図である。図１（ａ）に示すように、ニューラルネットワークは、入力層と、１以上の中間層と、出力層とを備える。ニューラルネットワークにおける各層は、それぞれ複数のノードによって構成され、ノード間はエッジによって接続されている。ニューラルネットワークの構造は、層の数と、各層を構成するノードの数、及びノード間を接続するエッジによって定められる。また、ニューラルネットワークにおける各エッジには、それぞれ重みパラメータが割り当てられている。ニューラルネットワークの学習モデルは、ニューラルネットワークの構造と、各エッジに割り当てられた重みパラメータとによって決定される。
【００２１】
図１（ｂ）は、図１（ａ）に示すニューラルネットワークを構成する層の１つである第１層Ｌ１、第１層Ｌ１に隣接する第２層Ｌ２、第２層Ｌ２に隣接する第３層Ｌ３と、各層に含まれるノードと、ノード間を接続するエッジと、各エッジに割り当てられた重みを示す図である。説明の便宜のため、図１（ｂ）においてはバイアス項、活性化関数、及びプーリングを除いて簡略化しているが、以下の議論はこれらがある場合であっても成立する。
【００２２】
なお、第１層Ｌ１、第２層Ｌ２、及び第３層Ｌ３における「第１」、「第２」、及び「第３」という用語は、数字が小さいほど入力層側に存在する層を示す相対的な概念であり、第１層がニューラルネットワークにおける１番目の層（すなわち入力層）を必ずしも意味するわけではない。
【００２３】
図１（ｂ）において、第１層Ｌ１及び第３層Ｌ３は２つのノードを備え、第２層Ｌ２は３つのノードを備えている。図１（ｂ）に示すように、第１層Ｌ１及び第２層Ｌ２は全結合層である。ニューラルネットワークにおいては、各ノードはそれぞれ実数値を出力し、その実数値にエッジに割り当てられた重みパラメータが乗じられて接続先のノードに入力される。
【００２４】
図１（ｂ）において、第１層Ｌ１の２つのノードは、それぞれＸ１１とＸ２１とを出力する。説明の便宜のため、あるノードの出力値でそのノードを表すこととする。例えば、図１（ｂ）において、Ｘ１１を出力するノードをノードＸ１１で表す。また、ノードの出力値において、上付き文字は層を識別するための番号を表し、下付き文字はノードを識別するための番号を表す。例えば、ノードＸ２３は、第３層Ｌ３の２番目のノードであることを示す。例えば、図１（ｂ）において、第２層Ｌ２のノードは図中上からノードＸ１２、ノードＸ２２、及びノードＸ３２の順番である。なお、各ノードの出力値は、そのノードに入力される値の大小によって大きさが変わる変数であり、必ずしも一定の値というわけではない。
【００２５】
説明の便宜のため、エッジに割り当てられた重みパラメータを用いて各エッジを表す。例えば重みパラメータＷ２１１が割り当てられたエッジをエッジＷ２１１と表す。重みパラメータにおいて、上付き文字は出力元の層を識別するための番号を表し、下付き文字は伝搬先のノード及び伝搬元のノードを並べた番号を表す。
【００２６】
例えば、重みパラメータＷ２１１は第１層Ｌ１と第２層Ｌ２とを接続するエッジであって、第２層Ｌ２の２番目のノードＸ２２に向かって第１層Ｌ１の１番目のノードＸ１１から接続されたエッジであることを表す。なお、各重みパラメータの値は、学習モデルの学習が終了したときに決定され、その後変更されることはない。したがって、重みパラメータの値は定数であり、学習モデルが再学習されない限り不変の値である。
【００２７】
上記の表記を用いると、図１（ｂ）において第１層Ｌ１から第２層Ｌ２への伝搬は、以下の式（１）で示される。
【００２８】
【数１】
2020149342.tif 000003
【００２９】
同様に第２層Ｌ２から第３層Ｌ３への伝搬は、以下の式（２）で示される。
【００３０】
【数２】
2020149342.tif 000004
【００３１】
式（１）及び式（２）より、第１層Ｌ１から第３層Ｌ３への伝搬は、以下の式（３）で示される。
【００３２】
【数３】
2020149342.tif 000005
【００３３】
このように、ニューラルネットワークにおけるノード間の伝搬は、ノードの出力値と重みパラメータとの積の総和で表される。
【００３４】
図１（ｃ）は、図１（ｂ）に示すニューラルネットワークの構造は変えずに、ノード間を接続するエッジに割り当てられた重みパラメータを置換した場合のニューラルネットワークを示す図である。具体的には、図１（ｂ）に示す第２層Ｌ２のノードが図中上からノードＸ２２、ノードＸ３２、及びノードＸ１２の順番となるように重みパラメータが置換されている。
【００３５】
図１（ｃ）において、第１層Ｌ１から第２層Ｌ２への伝搬は、以下の式（１’）で示される。
【００３６】
【数４】
2020149342.tif 000006
【００３７】
同様に第２層Ｌ２から第３層Ｌ３への伝搬は、以下の式（２’）で示される。
【００３８】
【数５】
2020149342.tif 000007
【００３９】
式（１’）及び式（２’）より、第１層Ｌ１から第３層Ｌ３への伝搬は、以下の式（３’）で示される。
【００４０】
【数６】
2020149342.tif 000008
【００４１】
式（１）及び式（１’）から、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータの順序を変更すること、すなわち右辺第１項の行を入れ替えることにより、第２層Ｌ２の各ノードの出力値の順序が変更されていることがわかる。一方、式（３）及び式（３’）から、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータの順序変更を打ち消すように第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータの列の順序を変更することにより、第３層Ｌ３の各ノードの出力値の順序を元の順序に戻せることがわかる。以下本明細書において、重みパラメータの順序変更を打ち消すための操作を「調整」と記載することがある。
【００４２】
このことから、ニューラルネットワークにおける全結合層では、ある層間におけるエッジに割り当てられた重みパラメータの順序を変更しても、別の層間におけるエッジに割り当てられた重みパラメータの順序を適切に変更することでその変更による影響を打ち消し、同一の出力を保つことができることがわかる。これはすなわち、ニューラルネットワークにおける全結合層では、ノードの順序、すなわち重みパラメータの接続の順序には自由度があり、意図的にその順序を変更できることを意味している。
【００４３】
詳細は後述するが、図１（ｂ）において、ノードＸ１２、ノードＸ２２、及び、ノードＸ３２それぞれに各ノードに接続されているエッジに割り当てられた重みパラメータの値から何らかの方法（例えば、重みパラメータの総和を算出するという方法）で算出された値を紐付けることができたと仮定する。上述したように、各ノードに接続されている重みパラメータは定数であるため、何らかの方法を固定すれば、各ノードには常に同じ値が紐付けられることになる。したがって、以下この値を各ノードの「代表値」と記載することにする。
【００４４】
いま、図１（ｂ）において、ノードＸ１２、ノードＸ２２、及び、ノードＸ３２それぞれの代表値の大小関係が、ノードＸ１２＜ノードＸ３２＜ノードＸ２２で順であったとする。ここで、第２層Ｌ２において互いに隣接するノードの代表値の大小関係を図中上から順に評価し、上側のノードの出力値が下側のノードの出力値よりも大きい場合１、小さい場合は０で符号化することとする。このとき、図１（ｂ）において、各ノードの代表値の大小関係がノードＸ１２＜ノードＸ２２であり、ノードＸ２２＞ノードＸ３２であるから、第２層Ｌ２は［０，１］と符号化される。
【００４５】
第２層Ｌ２に符号［１，１］を埋め込む場合、例えばノードの代表値の大小関係がノードＸ２２＞ノードＸ３２及びノードＸ３２＞ノードＸ１２であることを利用して、図中上から順にノードＸ２２、ノードＸ３２、及びノードＸ１２の順となるようにエッジに割り当てられた重みパラメータの順序を入れ替えればよい。この結果、図１（ｃ）に示すニューラルネットワークとなる。
【００４６】
このように、ニューラルネットワークのエッジに割り当てられた重みパラメータの順序を入れ替えることによって全結合層のノードの代表値の大小関係を制御し、ニューラルネットワークの学習モデルにビット列を埋め込むことができる。図１（ｂ）及び図１（ｃ）において第２層Ｌ２は３つのノードから構成されていたため２ビットの情報しか埋め込めないが、一般に、Ｎ＋１個のノードを含む全結合層にはＮビットの情報を埋め込むことができる。学習モデルに埋め込みたい付加情報を何らかの変換規則を用いてビット列で表すことができれば、ノードの数によって定まるビット長の範囲において、任意の付加情報をニューラルネットワークの学習モデルに埋め込むことができる。なお、ビット情報の埋め込みについては後述する。
【００４７】
上述したように、ノードの代表値の大小関係を制御するためにエッジに割り当てられた重みパラメータの順序を変更した場合、ネットワークの下流においてその変更を打ち消して調整することができる。したがって、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。
【００４８】
＜実施の形態に係る付加情報埋込装置１の機能構成＞
図２は、実施の形態に係る付加情報埋込装置１の機能構成を模式的に示す図である。付加情報埋込装置１は、記憶部１０と制御部１１とを備える。図２において、矢印は主なデータの流れを示しており、図２に示していないデータの流れがあってもよい。図２において、各機能ブロックはハードウェア（装置）単位の構成ではなく、機能単位の構成を示している。そのため、図２に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【００４９】
記憶部１０は、付加情報埋込装置１を実現するコンピュータのＢＩＯＳ（Basic Input Output System）等を格納するＲＯＭ（Read Only Memory）や付加情報埋込装置１の作業領域となるＲＡＭ（Random Access Memory）、ＯＳ（Operating System）やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の大容量記憶装置である。
【００５０】
制御部１１は、付加情報埋込装置１のＣＰＵやＧＰＵ等のプロセッサであり、記憶部１０に記憶されたプログラムを実行することによってモデル取得部１１０、埋込層選択部１１１、代表値算出部１１２、付加情報取得部１１３、第１変更部１１４、及び第２変更部１１５として機能する。
【００５１】
なお、図２は、付加情報埋込装置１が単一の装置で構成されている場合の例を示している。しかしながら、付加情報埋込装置１は、例えばクラウドコンピューティングシステムのように複数のプロセッサやメモリ等の計算リソースによって実現されてもよい。この場合、制御部１１を構成する各部は、複数の異なるプロセッサの中の少なくともいずれかのプロセッサがプログラムを実行することによって実現される。
【００５２】
実施の形態に係る付加情報埋込装置１は、入力層、出力層、及び１以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むための装置である。上述したように、ニューラルネットワークにおいては、ニューラルネットワークを構成する２つの異なる層のうち、入力層に近い方の層である第１層を構成する各ノードの出力と重みパラメータとの積の和が、入力層から遠い方の層である第２層を構成する各ノードへの入力となる。モデル取得部１１０は、学習が完了している学習モデルを取得する。
【００５３】
埋込層選択部１１１は、モデル取得部１１０が取得した学習モデルにおける複数の層の中から、付加情報を埋め込むための層を選択する。具体的には、埋込層選択部１１１は、モデル取得部１１０が取得した学習モデルを構成する層のうち、全結合層と畳込み層とを検出して付加情報を埋め込むための層として選択する。埋込層選択部１１１が学習モデルを構成する層の中から付加情報を埋め込むことのできる層を検出することにより、学習モデルに埋め込むことのできる情報量の上限値を特定することができる。
【００５４】
代表値算出部１１２は、埋込層選択部１１１が選択した層において、入力層から遠い方の層である第２層を構成するノード毎に重みパラメータの代表値を算出する。以下説明の便宜のため、制御部１１が選択した層が全結合層の場合について説明する。なお、埋込層選択部１１１が選択した層が畳込み層である場合については後述する。
【００５５】
代表値算出部１１２が算出する「代表値」は、後述する第１変更部１１４がエッジに割り当てられた重みパラメータの順序を入れ替えるために参照する値であり、各ノードに接続されているエッジに割り当てられた重みパラメータから算出される値である。上述したように、エッジに割り当てられた重みパラメータは定数であるため、代表値の演算方法を固定することによって各ノードの代表値も固定することができる。
【００５６】
以下、限定はしないが、代表値算出部１１２が算出するノード毎の重みパラメータの代表値が、そのノードに接続されているエッジに割り当てられた重みパラメータの総和であることを前提とする。この場合、例えば図１（ｂ）において、ノードＸ２２の代表値ｔ２２は、ｔ２２＝Ｗ２１１＋Ｗ２２１となる。
【００５７】
付加情報取得部１１３は、学習モデルに埋め込むための付加情報を取得する。例えば、付加情報取得部１１３は、付加情報埋込装置１の図示しない入力インターフェースを介して、付加情報埋込装置１のユーザから学習モデルに埋め込むための付加情報を取得する。付加情報取得部１１３は、取得した付加情報がビット列以外の形式である場合、あらかじめ定められた手順によって付加情報をビット列に変換する。この手順は、学習モデルに埋め込む付加情報として想定されるデータ形式に応じてあらかじめ定めておけばよい。以下では、付加情報がビット列であることを前提とする。
【００５８】
第１変更部１１４は、代表値算出部１１２が算出した代表値の順序が付加情報を表現するように、第１層と第２層との間の重みパラメータの順序を変更する。第２変更部１１５は、第１変更部１１４が実行した重みパラメータの順序の変更を打ち消すように、第２層と第２層よりも出力層側に存在する層である第３層との間の重みパラメータの順序を変更する。
【００５９】
図３（ａ）−（ｃ）は、実施の形態に係る第１変更部１１４及び第２変更部１１５が実行する処理を説明するための図である。具体的には、図３（ａ）は図１（ｂ）に示すニューラルネットワークの伝搬を行列形式で表した図であり、図３（ｂ）は図１（ｃ）に示すニューラルネットワークの伝搬を行列形式で表した図である。
【００６０】
図３（ａ）に示すように、第２層Ｌ２の出力は第１層Ｌ１の出力及び第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータによって決定される。同様に、第３層Ｌ３の出力は第２層Ｌ２の出力及び第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータによって決定される。図３（ａ）において、第２層Ｌ２を構成するノードの順序は、図中上からノードＸ１２、ノードＸ２２、及び、ノードＸ３２の順である。
【００６１】
ここで、第２層Ｌ２を構成する各ノードの代表値を、図中上からｔ１２、ｔ２２、及びｔ３２であり、大小関係はｔ３２＜ｔ１２＜ｔ２２であるとする。いま、第２層Ｌ２に付加情報［１，１］を埋め込むためには、例えばｔ１２＜ｔ２２であり、ｔ３２＜ｔ２２であることを考慮して、図中上からｔ２２、ｔ３２、及びｔ１２の順に並ぶようにすればよい。これは、図３（ｂ）に示すように、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータに対応する行列の各行の順序を入れ替えることに対応する。そこで、第１変更部１１４は、図１（ｃ）に示すように、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータの順序を変更する。
【００６２】
図１（ｂ）に示すように、第１変更部１１４が第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータの順序を変更すると、第２層を構成する各ノードの出力値も、図中上からノードＸ２２、ノードＸ３２、及び、ノードＸ１２の順序となる。
【００６３】
第２変更部１１５は、第３層Ｌ３の出力値が、第２層を構成する各ノードの出力値の順序が入れ替わっていない場合と同一の出力値となるように、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータの順序を変更する。具体的には、図３（ｂ）に示すように、第２変更部１１５は、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の各列の順序を入れ替える。これにより、第２変更部１１５は、第１変更部１１４が実行した重みパラメータの順序変更の影響を打ち消して調整することができる。
【００６４】
ここで、第１変更部１１４が実行する変更は、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータに対応する行列の各「行」の順序の入れ替えである。これに対し、第２変更部１１５が実行する変更は、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の各「列」の順序の入れ替えである。したがって、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の各列の順序を入れ替えたまま、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の各行の順序の入れ替えをすることができる。
【００６５】
図３（ｃ）は、重みパラメータに対応する行列の行及び列それぞれの順序を入れ替えた場合の一例を示す図である。具体的には、図３（ｃ）は、図３（ａ）に示す行列の行及び列それぞれの順序を入れ替えた行列を示している。図３（ｃ）に示す第２層Ｌ２を構成するノードの順序は、図中上からノードＸ２２、ノードＸ３２、及び、ノードＸ１２の順であり、これは図３（ｂ）に示す第２層Ｌ２を構成するノードの順序と同じである。
【００６６】
一方、図３（ｃ）に示す第３層Ｌ３を構成するノードの順序は、図中上からノードＸ２３、及び、ノードＸ１３の順であり、図３（ｂ）に示す第３層Ｌ３を構成するノードの順序に対して入れ替わっている。これは、第１変更部１１４が第３層Ｌ３のノード毎に算出された代表値に基づいて第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の行の順序を変更することにより、付加情報を埋め込むことができることを示している。
【００６７】
例えば、第３層Ｌ３の出力層側に第４層Ｌ４（不図示）がある場合、第２変更部１１５は、第３層Ｌ３と第４層Ｌ４との間のエッジに割り当てられた重みパラメータに対応する行列の列の順序を変更して第１変更部１１４が実行した変更を打ち消して調整することができる。つまり、ある層とその次の層の間のエッジに割り当てられた特定の重みパラメータについて、調整も埋め込みも同時に行うことができることを示している。このように、実施の形態に係る付加情報埋込装置１は、埋込層選択部１１１が選択した各層に連続して付加情報を埋め込むことができる。
【００６８】
［付加情報の符号化の変形例］
上記では、第１変更部１１４は、隣り合うノード間の代表値の大小関係がビット列と対応するように、重みパラメータの順序を変更する場合について説明した。しかしながら、第１変更部１１４は、隣り合うノード間の代表値の大小関係以外の情報に基づいて重みパラメータの順序を変更してもよい。
【００６９】
例えば、第１変更部１１４は、各ノードの代表値の正負がビット列と対応するように、重みパラメータの順序を変更してもよい。より具体的には、第１変更部１１４は、各ノードの代表値が正の値の場合に１を符号化し、負の値の場合に０を符号化することにより、付加情報取得部１１３が取得したビット列を符号化することができる。
【００７０】
［代表値の計算］
上記では、埋込層選択部１１１が選択した層の各ノードに接続されている重みパラメータの値から代表値算出部１１２が何らかの方法で代表値を算出する場合について説明した。ここで、代表値算出部１１２は、交換法則が成り立つ演算を重みパラメータに施すことにより代表値を算出してもよい。
【００７１】
代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算が、例えば加算、絶対値の加算、乗算等の交換法則が成り立つ演算であるとする。このとき、同一の層が付加情報の埋め込みと調整との対象となる場合において、第１変更部１１４による埋め込みと第２変更部１１５による調整との順番が問われなくなる。例えば、図３（ｂ）に示すように、第１層Ｌ１と第２層Ｌ２との間のエッジに割り当てられた重みパラメータに対応する行列の「行」の順序を変換して付加情報を埋め込み、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の「列」の順序を変換して調整したとする。さらに、図３（ｃ）に示すように、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータに対応する行列の「行」の順序を変換して付加情報を埋め込んだとする。
【００７２】
この場合、第２層Ｌ２と第３層Ｌ３との間のエッジに割り当てられた重みパラメータは、付加情報の埋め込みと調整との両方の役割を担うことになる。代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合、付加情報の埋め込み（すなわち「行」の入れ替え）と、それを打ち消すため調整（すなわち「列」の入れ替え）とは、この順序で実行される必要がある。
【００７３】
具体的には、重みパラメータＷ１とＷ２とについて、代表値算出部１１２が、代表値ｔ＝Ｗ１−Ｗ２という減算式に基づいて算出するとする。ここで、減算は交換法則が成り立たないため、一般にＷ１−Ｗ２とＷ２−Ｗ１とは異なる値となる。上述した「調整」は重みパラメータに対応する行列の列の順序を入れ替えるため、代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合は、列の入れ替えによって減算の演算順序が変更されうる。したがって、代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合には、付加情報の埋め込みと調整とはこの順序で実行される必要がある。
【００７４】
これに対し、代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立つ場合には、付加情報の埋め込みと調整とは任意の順序で実行されてもよい。したがって、代表値算出部１１２が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立つ場合には、出力側の層に付加情報が埋め込まれている場合であっても、それよりも入力側の層に追加で新たに付加情報を埋め込むことができる。代表値の演算に交換法則が成り立つ場合には、代表値は列の順序変更（行内の要素の順番に対する変更）に対して不変だからである。
【００７５】
［畳込み層への付加情報の埋め込み］
続いて、畳込み層への付加情報の埋め込みについて説明する。
【００７６】
全結合層への付加情報の埋め込みでは、層間を接続するエッジに割り当てられた重みパラメータの順序を変更することにより、付加情報の埋込及び調整を実現した。畳込み層への付加情報の埋め込みも、全結合層への情報の埋め込みと同様の考え方で実現できる。
【００７７】
また、第２層Ｌ２の後にプーリング層のように係数の積和を行わない演算が途中にあっても以下は成立する。例えば、第１層Ｌ１のノードと第２層Ｌ２のノード間では畳み込み演算を行い、第２層Ｌ２のノードと第３層Ｌ３のノード間はプーリングを行い、第３層Ｌ３のノードと第４層Ｌ４のノード間は畳み込み演算を行う場合、第１層Ｌ１のノードと第２層Ｌ２のノード間の重みパラメータに情報を埋め込み、第３層Ｌ３のノードと第４層Ｌ４のノード間の重みパラメータで調整できるが、プーリング層が入る場合にはその層はないものとして第１層と第２層のノード間の重みパラメータに埋め込み、第２層と第３層のノード間の重みパラメータで調整するとして以下で説明している。
【００７８】
図４（ａ）−（ｂ）は、畳込み層への付加情報の埋め込みを説明するための図である。図４（ａ）−（ｂ）において、第１層Ｌ１の深さ方向の次元は１であり、３つの畳込みフィルタ（畳込みフィルタＦ１１、畳込みフィルタＦ１２、及び畳込みフィルタＦ１３）を備える。畳込み層への付加情報の埋め込みにおいては、複数の畳込みフィルタそれぞれの重み係数が、全結合層における重みパラメータに相当する。このため、代表値算出部１１２は、各畳込みフィルタの重み係数を用いて何らかの方法（例えば、重み係数の総和を求める方法）を用いて代表値を算出する。
【００７９】
周知のように、ニューラルネットワークの畳込み層において、ある層における畳込みフィルタの出力が次の層の入力となる。例えば、図４（ａ）において、２次元データである第１層Ｌ１上において畳込みフィルタＦ１１を走査させながら畳込み演算を実行し、その出力である２次元データが第２層Ｌ２の入力となる。すなわち、第１層Ｌ１の特定の場所における畳込み演算の結果は、第２層Ｌ２における特定の場所に入力される。この意味で、第２層Ｌ２を構成する１つのデータは、全結合層における１つのノードに対応する。
【００８０】
図４（ａ）では、第１層Ｌ１は３つの畳込みフィルタを備えるため、それぞれの畳込みフィルタの出力が第２層Ｌ２の入力となる。したがって、図４（ａ）に示すように、第２層Ｌ２は深さ方向の次元が３（すなわち、第２層Ｌ１における畳込みフィルタの数）となる。ここで、第２層Ｌ２は深さ方向のデータの順序は、第１層Ｌ１において畳込みフィルタを用いる畳込み演算の順序となる。図４（ａ）では、畳込みフィルタＦ１１、畳込みフィルタＦ１２、及び畳込みフィルタＦ１３の順番で第１層Ｌ１に対して畳込み演算が実行されたため、第２層Ｌ２は、畳込みフィルタＦ１１、畳込みフィルタＦ１２、及び畳込みフィルタＦ１３の畳込み演算の出力が同じ順番で積層されている。
【００８１】
全結合層への付加情報の埋め込みと同様に、第１変更部１１４は、畳み込みフィルタの代表値の大小関係がビット列と対応するように、畳み込みの順序を変更することができる。例えば、例えば、畳込みフィルタＦ１１、畳込みフィルタＦ１２、及び畳込みフィルタＦ１３の代表値がそれぞれｔ１１、ｔ１２、及びｔ１３、であり、それらの大小関係がｔ１１＜ｔ１３＜ｔ１２であったとする。付加情報取得部１１３が取得した付加情報がビット列［１，１］とすると、第１変更部１１４は、畳込み演算の順序を畳込みフィルタＦ１２、畳込みフィルタＦ１３、及び畳込みフィルタＦ１１に入れ替える。ｔ１１＜ｔ１３＜ｔ１２でるため、ｔ１２＞ｔ１３かつｔ１３＞ｔ１１が成り立つからである。
【００８２】
図４（ｂ）は、第１変更部１１４が畳込み演算の順序を変更した場合の第２層Ｌ２を示す図である。図４（ｂ）に示す第２層Ｌ２の深さ方向のデータは、第１変更部１１４による順序変更に伴って、図４（ａ）に示す第２層Ｌ２と比較して積層の順序が変換されている。
【００８３】
周知のように、畳込み層の深さ方向の次元と、畳み込みフィルタの深さ方向の次元とは同一である。図４（ａ）−（ｂ）において、第２層Ｌ２はそれぞれ１つの畳み込みフィルタＦ２１及びをＦ’２１備えており、深さ方向の次元はいずれも３である。ここで、図４（ａ）における畳み込みフィルタＦ２１は深さ方向が１次元の３つのフィルタ（第１フィルタＫ１、第１フィルタＫ２、及び第１フィルタＫ３）がこの順序で積層されている。したがって、第１層Ｌ１に対する畳込みフィルタＦ１１の演算結果に対して第１フィルタＫ１が実行された結果と、畳込みフィルタＦ１２の演算結果に対して第２フィルタＫ２が実行された結果と、畳込みフィルタＦ１３の演算結果に対して第３フィルタＫ３が実行された結果との総和が、第３層Ｌ３の出力となる。
【００８４】
そこで、第１変更部１１４によって変更された第１層Ｌ１における畳込み演算の順序を打ち消して調整するために、第２変更部１１５は、第２層Ｌ２の畳込みフィルタＦ２１の積層の順序を入れ替える。具体的には、第２変更部１１５は、第１変更部１１４が変更した第１層Ｌ１における畳込み演算の順序と同じ順序となるように、第２層Ｌ２の畳込みフィルタＦ２１の積層の順序を入れ替える。この結果、図４（ｂ）に示すように、第２層Ｌ２の畳み込みフィルタＦ’２１は、第２フィルタＫ２、第３フィルタＫ３、及び第１フィルタＫ１の順序となっている。これにより、第１層Ｌ１における畳込み演算の順序の入れ替えの影響は打ち消され、入れ替えの有無にかかわらず第３層Ｌ３のデータの同一性が保持される。
【００８５】
このように、実施の形態に係る付加情報埋込装置１は、全結合層のみならず畳込み層にもニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。したがって、埋込層選択部１１１は、（１）第１層Ｌ１と第２層Ｌ２とが全結合であり、かつ第２層Ｌ２と第３層Ｌ３とが全結合であること、又は（２）第１層Ｌ１と第２層Ｌ２とが畳込み層であり、かつ第２層Ｌ２と第３層Ｌ３とが畳み込み層であること、を条件として付加情報を埋め込むための層を選択すればよい。
【００８６】
［代表値の差分符号を用いた埋め込み法の詳細］
続いて、重みパラメータの行列の行や、畳込フィルタから算出した代表値ｔの順序を変更し、付加情報であるビット情報ｓを埋め込むための順序決定の仕方について説明する。
【００８７】
ビット情報ｓのビット数をＮとしたとき、ビット情報ｓは、ビット数がＮ＋１の代表値ｔに埋め込むことができる。ここで、ｔの数値は全て異なっているとする。例えば、ｓ＝｛１，１，０，０，１，１，０，１｝とすると、Ｎ＝８である。また、ｔｉを９つの行から算出した異なる代表値であるとする。ただし、行数分（フィルタ枚数分）すべてにビットを埋め込まない場合は、同じ代表値が出現した場合や最小値又は最大値が出現した場合に検出終了とし、終了条件や終了コードを埋め込む。
【００８８】
まず、第１変更部１１４は、代表値ｔを昇順に並び替える。並び替え後の代表値ｔをｎｋ（ｎ１〜ｎＮ＋１）とする。図５は、並べ替え後の代表値ｔの一例を示す図である。
【００８９】
図６（ａ）−（ｅ）は、代表値ｔを並び替えたときの順番Ｔｊの決定方法の一例を説明するための図である。第１変更部１１４は、代表値ｔを並び替えたときの順番Ｔｊを求める。順番の決定方法は種々考えられるが、以下、図６を参照して、第１変更部１１４による順番の決定方法の一例を示す。
【００９０】
第１変更部１１４は、Ｔｊのスタート地点であるＴ１におけるｎの添え字の数値、すなわち代表値ｔを小さい方から数えてｋ番目の数を決定する。スタート地点のｎの添え字の数値は、（ｓの０のビット数＋１）番目とする。上述した具体例はｓ＝｛１，１，０，０，１，１，０，１｝であり、０が３ビットのため、図６（ａ）で示すように、ｎの添え字の数値は（３＋１）番目であるｎ４から開始し、Ｔ１＝ｎ４とする。
【００９１】
第１変更部１１４は、決定したＴｊのスタート地点からＴｊと対応するｎｋを順次決定する。まず、第１変更部１１４は、Ｔｊ＋１−Ｔｊ＞０で‘１’を、Ｔｊ＋１−Ｔｊ＜０で‘０’を埋め込むものとする。Ｔｊ＋１−Ｔｊ＞０ならば、第１変更部１１４は、スタート地点のｎよりも大きくまだ使われていないｎの中で最小となるｎｋを次の数値Ｔｊ＋１用に選択する。Ｔｊ＋１−Ｔｊ＜０ならば、第１変更部１１４は、スタート地点のｎよりも小さくまだ使われていないｎの中で最大となるｎｋを次の数値Ｔｊ＋１用に選択する。これを繰り返すことにより、図６（ｂ）−（ｅ）に例示するように、第１変更部１１４は、Ｔｊを決定できる。
図７は、第１変更部１１４が決定した代表値ｔを並び替えたときの順番Ｔｊの一例を示す図である。
【００９２】
最後に、第１変更部１１４は、図５および図７の同一のｎｋをキーとしてＴｊとｔｉとの対応関係を得て、ｔｉの順番をどのように変更するかを取得する。上述の例では、ｔｉの順番は、Ｔ１＝ｔ８、Ｔ２＝ｔ４、Ｔ３＝ｔ９、Ｔ４＝ｔ１、Ｔ５＝ｔ５、Ｔ６＝ｔ２、Ｔ７＝ｔ７、Ｔ８＝ｔ６、及びＴ９＝ｔ３となる。つまり、変更後の行列の１行目は元の重みパラメータ（畳込みフィルタ）の８行目（８番目）とすればよく、変更後の行列の２行目は元の重みパラメータ（畳込みフィルタ）の４行目（４番目）とすればよく、変更後の行列の３行目は元の重みパラメータ（畳込みフィルタ）の９行目（９番目）とすればよい。以下同様である。
【００９３】
第１変更部１１４は、必要がある場合には、順位決定した最後のＴｌａｓｔの次に、終了条件や終了コードとする代表値となるようなＴｌａｓｔ＋１を入れてもよい。これは、これまでに出てきた数と同一の代表値となるｔの行、最大値又は最小値などが考えられる。
【００９４】
なお、上記の方法を用いることによって第１変更部１１４はビット情報ｓを一意に埋め込むことができるが、ビット情報ｓが全て１や０でなければ、条件を満たす並び変えは他にも存在する。例えば、具体例において、Ｔ５とＴ８とを入れ替え、ｎ１＝Ｔ５、ｎ２＝Ｔ８としても同じビット情報ｓが埋め込めることが分かる。そのため、代表値を用いた差分符号の並び変えの手法は上記に限らない。
【００９５】
＜付加情報埋込装置１が実行する付加情報埋込処理の処理フロー＞
図８は、実施の形態に係る付加情報埋込装置１が実行する付加情報埋込処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば付加情報埋込装置１が起動したときに開始する。
【００９６】
モデル取得部１１０は、ニューラルネットワークによる学習済みの学習モデルを取得する（Ｓ２）。埋込層選択部１１１は、モデル取得部１１０が取得した学習モデルにおける複数の層の中から、付加情報を埋め込むための層を選択する（Ｓ４）。
【００９７】
代表値算出部１１２は、埋込層選択部１１１が選択した層のうち入力層から遠い方の層である第２層を構成するノード毎に重みパラメータの代表値を算出する（Ｓ６）。付加情報取得部１１３は、モデル取得部１１０が取得した学習モデルに埋め込むための付加情報を取得する（Ｓ８）。
【００９８】
第１変更部１１４は、代表値の順序が付加情報を表現するように、埋込層選択部１１１が選択した層のうち入力層から近い方の層である第１層と第２層との間の重みパラメータの順序を変更し、第２変更部１１５は、第１変更部１１４が実行した順序の変更を打ち消すように、第２層と第２層よりも出力層側に存在する層である第３層との間の重みパラメータの順序を変更する（Ｓ１０）。
【００９９】
第２変更部１１５が重みパラメータの順序を変更すると、本フローチャートにおける処理は終了する。
【０１００】
＜実施の形態に係る付加情報検出装置２の機能構成＞
続いて、付加情報埋込装置１によって学習装置に埋め込まれた付加情報を検出するための付加情報検出装置２の機能構成について説明する。
【０１０１】
図９は、実施の形態に係る付加情報検出装置２の機能構成を模式的に示す図である。付加情報検出装置２は、記憶部２０と制御部２１とを備える。図９において、矢印は主なデータの流れを示しており、図９に示していないデータの流れがあってもよい。図９において、各機能ブロックはハードウェア（装置）単位の構成ではなく、機能単位の構成を示している。そのため、図９に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【０１０２】
記憶部２０は、付加情報検出装置２を実現するコンピュータのＢＩＯＳ等を格納するＲＯＭや付加情報埋込装置１の作業領域となるＲＡＭ、ＯＳやアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するＨＤＤやＳＳＤ等の大容量記憶装置である。
【０１０３】
制御部２１は、付加情報検出装置２のＣＰＵやＧＰＵ等のプロセッサであり、記憶部２０に記憶されたプログラムを実行することによって変更済みモデル取得部２１０、埋込層選択部２１１、代表値算出部２１２、及び付加情報特定部２１３として機能する。
【０１０４】
なお、図９は、付加情報検出装置２が単一の装置で構成されている場合の例を示している。しかしながら、付加情報検出装置２は、例えばクラウドコンピューティングシステムのように複数のプロセッサやメモリ等の計算リソースによって実現されてもよい。この場合、制御部２１を構成する各部は、複数の異なるプロセッサの中の少なくともいずれかのプロセッサがプログラムを実行することによって実現される。
【０１０５】
変更済みモデル取得部２１０は、付加情報埋込装置１が重みパラメータを変更した学習モデルを取得する。埋込層選択部２１１は、変更済みモデル取得部２１０が取得した学習モデルにおける複数の層の中から、付加情報を埋め込み可能な層を選択する。
【０１０６】
代表値算出部２１２は、埋込層選択部２１１が選択した層を構成するノード毎に重みパラメータの代表値を算出する。付加情報特定部２１３は、代表値算出部２１２が算出した代表値の順序に基づいて、変更済みモデル取得部２１０が取得した学習モデルに埋め込まれた付加情報を特定する。これにより、付加情報検出装置２は、付加情報埋込装置１が付加情報を埋め込んだ学習モデルから、付加情報を検出することができる。
【０１０７】
＜付加情報検出装置２が実行する付加情報検出処理の処理フロー＞
図１０は、実施の形態に係る付加情報検出装置２が実行する付加情報検出処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば付加情報検出装置２が起動したときに開始する。
【０１０８】
変更済みモデル取得部２１０は、付加情報埋込装置１が重みパラメータを変更した学習モデルを取得する（Ｓ１２）。埋込層選択部２１１は、変更済みモデル取得部２１０が取得した学習モデルにおける複数の層の中から、付加情報を埋め込み可能な層を選択する（Ｓ１４）。
【０１０９】
代表値算出部２１２は、埋込層選択部２１１が選択した層を構成するノード毎に重みパラメータの代表値を算出する（Ｓ１６）。付加情報特定部２１３は、代表値算出部２１２が算出した代表値の順序に基づいて、変更済みモデル取得部２１０が取得した学習モデルに埋め込まれた付加情報を特定する（Ｓ１８）。
【０１１０】
付加情報特定部２１３が付加情報を特定すると、本フローチャートにおける処理は終了する。
【０１１１】
＜実施の形態に係る付加情報埋込装置１及び付加情報検出装置２が奏する効果＞
以上説明したように、実施の形態に係る付加情報埋込装置１によれば、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。また、実施の形態に係る付加情報検出装置２によれば、付加情報埋込装置１が学習モデルに埋め込んだ付加情報を読み出すことができる。
【０１１２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果をあわせ持つ。
【符号の説明】
【０１１３】
１・・・付加情報埋込装置
１０・・・記憶部
１１・・・制御部
１１０・・・モデル取得部
１１１・・・埋込層選択部
１１２・・・代表値算出部
１１３・・・付加情報取得部
１１４・・・第１変更部
１１５・・・第２変更部
２・・・付加情報検出装置
２０・・・記憶部
２１・・・制御部
２１０・・・変更済みモデル取得部
２１１・・・埋込層選択部
２１２・・・代表値算出部
２１３・・・付加情報特定部
【図１】
2020149342.tif 000009
【図２】
2020149342.tif 000010
【図３】
2020149342.tif 000011
【図４】
2020149342.tif 000012
【図５】
2020149342.tif 000013
【図６】
2020149342.tif 000014
【図７】
2020149342.tif 000015
【図８】
2020149342.tif 000016
【図９】
2020149342.tif 000017
【図１０】
2020149342.tif 000018