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

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

▶ KDDI株式会社の特許一覧

特許7028819付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム
<>
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図1
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図2
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図3
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図4
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図5
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図6
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図7
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図8
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図9
  • 特許-付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-21
(45)【発行日】2022-03-02
(54)【発明の名称】付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラム
(51)【国際特許分類】
   G06N 3/08 20060101AFI20220222BHJP
   G06N 3/04 20060101ALI20220222BHJP
【FI】
G06N3/08
G06N3/04
【請求項の数】 9
(21)【出願番号】P 2019046175
(22)【出願日】2019-03-13
(65)【公開番号】P2020149342
(43)【公開日】2020-09-17
【審査請求日】2021-01-20
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100166006
【弁理士】
【氏名又は名称】泉 通博
(74)【代理人】
【識別番号】100124084
【弁理士】
【氏名又は名称】黒岩 久人
(74)【代理人】
【識別番号】100153280
【弁理士】
【氏名又は名称】寺川 賢祐
(72)【発明者】
【氏名】明堂 絵美
(72)【発明者】
【氏名】田坂 和之
(72)【発明者】
【氏名】酒澤 茂之
【審査官】今城 朋彬
(56)【参考文献】
【文献】国際公開第2018/131405(WO,A1)
【文献】特開2018-055260(JP,A)
【文献】米国特許出願公開第2017/0206449(US,A1)
【文献】米国特許出願公開第2019/0205508(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-20/00
(57)【特許請求の範囲】
【請求項1】
入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置であって、
前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得するモデル取得部と、
前記第2層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、
前記学習モデルに埋め込むための付加情報を取得する付加情報取得部と、
前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更する第1変更部と、
前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更する第2変更部と、
を備える付加情報埋込装置。
【請求項2】
前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込むための層を選択する埋込層選択部をさらに備える、
請求項1に記載の付加情報埋込装置。
【請求項3】
前記埋込層選択部は、
(1)前記第1層と前記第2層とが全結合であり、かつ前記第2層と前記第3層とが全結合であること、又は
(2)前記第1層と前記第2層とが畳込み層であり、かつ前記第2層と前記第2層よりも前記出力層側に存在するプーリング層を除く層である前記第3層とが畳み込み層であること、
を条件として前記付加情報を埋め込むための層を選択する、
請求項2に記載の付加情報埋込装置。
【請求項4】
前記付加情報取得部は、前記付加情報としてビット列を取得し、
前記第1変更部は、隣り合うノード間の代表値の大小関係が前記ビット列と対応するように、前記重みパラメータの順序を変更する、
請求項1から3のいずれか1項に記載の付加情報埋込装置。
【請求項5】
前記付加情報取得部は、前記付加情報としてビット列を取得し、
前記第1変更部は、各ノードの代表値の正負が前記ビット列と対応するように、前記重みパラメータの順序を変更する、
請求項1から3のいずれか1項に記載の付加情報埋込装置。
【請求項6】
前記代表値算出部は、交換法則が成り立つ演算を前記重みパラメータに施すことにより前記代表値を算出する、
請求項1から5のいずれか1項に記載の付加情報埋込装置。
【請求項7】
請求項1から6のいずれか1項に記載の付加情報埋込装置が重みパラメータを変更した学習モデルを取得する変更済みモデル取得部と、
前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込み可能な層を選択する埋込層選択部と、
前記埋込層選択部が選択した層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、
前記代表値の順序に基づいて、前記学習モデルに埋め込まれた付加情報を特定する付加情報特定部と、
を備える付加情報検出装置。
【請求項8】
入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置のプロセッサが、
前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得するステップと、
前記第2層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、
前記学習モデルに埋め込むための付加情報を取得するステップと、
前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更するステップと、
前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更するステップと、
を実行する付加情報埋込方法。
【請求項9】
入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むコンピュータに、
前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得する機能と、
前記第2層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、
前記学習モデルに埋め込むための付加情報を取得する機能と、
前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更する機能と、
前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更する機能と、
を実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、付加情報埋込装置、付加情報検出装置、付加情報埋込方法、及びプログラムに関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)の高速化、メモリの大容量化、及び機械学習技術が急速に進んできている。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術が確立されつつある。これらの機械学習によって生成された学習モデルのモデルパラメータに出所や提供先等の電子透かしを埋め込むことで出所を特定するための技術も提案されている(非特許文献1参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】U.Uchida, Y.Nagai, S.Sakazawa, S.Sato, “Embedding Watermarks into Deep Neural Networks”, ICMR2017.
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記は、ニューラルネットワークの学習モデルを対象とし、その学習モデルの学習時に重みパラメータに著作者等の付加情報を埋め込む技術である。付加情報の埋め込みにより学習モデルの性能が変化し、基本的には劣化する。
【0005】
本発明はこれらの点に鑑みてなされたものであり、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込む技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様は、入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置である。この装置は、前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得するモデル取得部と、前記第2層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、前記学習モデルに埋め込むための付加情報を取得する付加情報取得部と、前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更する第1変更部と、前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更する第2変更部と、を備える。
【0007】
前記付加情報埋込装置は、前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込むための層を選択する埋込層選択部をさらに備えてもよい。
【0008】
前記埋込層選択部は、(1)前記第1層と前記第2層とが全結合であり、かつ前記第2層と前記第3層とが全結合であること、又は(2)前記第1層と前記第2層とが畳込み層であり、かつ前記第2層と前記第2層よりも前記出力層側に存在するプーリング層を除く層である前記第3層とが畳み込み層であること、を条件として前記付加情報を埋め込むための層を選択してもよい。
【0009】
前記付加情報取得部は、前記付加情報としてビット列を取得してもよく、前記第1変更部は、隣り合うノード間の代表値の大小関係が前記ビット列と対応するように、前記重みパラメータの順序を変更してもよい。
【0010】
前記付加情報取得部は、前記付加情報としてビット列を取得してもよく、前記第1変更部は、各ノードの代表値の正負が前記ビット列と対応するように、前記重みパラメータの順序を変更してもよい。
【0011】
前記代表値算出部は、交換法則が成り立つ演算を前記重みパラメータに施すことにより前記代表値を算出してもよい。
【0012】
本発明の第2の態様は、付加情報検出装置である。この装置は、上記の付加情報埋込装置が重みパラメータを変更した学習モデルを取得する変更済みモデル取得部と、前記学習モデルにおける前記複数の層の中から、前記付加情報を埋め込み可能な層を選択する埋込層選択部と、前記埋込層選択部が選択した層を構成するノード毎に前記重みパラメータの代表値を算出する代表値算出部と、前記代表値の順序に基づいて、前記学習モデルに埋め込まれた付加情報を特定する付加情報特定部と、を備える。
【0013】
本発明の第3の態様は、付加情報埋込方法である。この方法において、入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込む付加情報埋込装置のプロセッサが、前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得するステップと、前記第2層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、前記学習モデルに埋め込むための付加情報を取得するステップと、前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更するステップと、前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更するステップと、を実行する。
【0014】
本発明の第4の態様は、プログラムである。このプログラムは、入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むコンピュータに、前記ニューラルネットワークを構成する2つの異なる層のうち、前記入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、前記入力層から遠い方の層である第2層を構成する各ノードへの入力となる学習モデルを取得する機能と、前記第2層を構成するノード毎に前記重みパラメータの代表値を算出するステップ、前記学習モデルに埋め込むための付加情報を取得する機能と、前記代表値の順序が前記付加情報を表現するように、前記第1層と前記第2層との間の前記重みパラメータの順序を変更する機能と、前記順序の変更を打ち消すように、前記第2層と前記第2層よりも前記出力層側に存在する層である第3層との間の重みパラメータの順序を変更する機能と、を実現させる。
【0015】
このプログラムを提供するため、あるいはプログラムの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【0016】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0017】
本発明によれば、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。
【図面の簡単な説明】
【0018】
図1】実施の形態の概要を説明するための図である。
図2】実施の形態に係る付加情報埋込装置の機能構成を模式的に示す図である。
図3】実施の形態に係る第1変更部及び第2変更部が実行する処理を説明するための図である。
図4】畳込み層への付加情報の埋め込みを説明するための図である。
図5】並べ替え後の代表値の一例を示す図である。
図6】代表値を並び替えたときの順番の決定方法の一例を説明するための図である。
図7】第1変更部が決定した代表値を並び替えたときの順番の一例を示す図である。
図8】実施の形態に係る付加情報埋込装置が実行する付加情報埋込処理の流れを説明するためのフローチャートである。
図9】実施の形態に係る付加情報検出装置の機能構成を模式的に示す図である。
図10】実施の形態に係る付加情報検出装置が実行する付加情報検出処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【0019】
<実施の形態の概要>
図1(a)-(c)は、実施の形態の概要を説明するための図である。以下、図1(a)-(c)を参照して、実施の形態の概要を述べる。
【0020】
図1(a)は、一般的なニューラルネットワークの層構造を示す図である。図1(a)に示すように、ニューラルネットワークは、入力層と、1以上の中間層と、出力層とを備える。ニューラルネットワークにおける各層は、それぞれ複数のノードによって構成され、ノード間はエッジによって接続されている。ニューラルネットワークの構造は、層の数と、各層を構成するノードの数、及びノード間を接続するエッジによって定められる。また、ニューラルネットワークにおける各エッジには、それぞれ重みパラメータが割り当てられている。ニューラルネットワークの学習モデルは、ニューラルネットワークの構造と、各エッジに割り当てられた重みパラメータとによって決定される。
【0021】
図1(b)は、図1(a)に示すニューラルネットワークを構成する層の1つである第1層L1、第1層L1に隣接する第2層L2、第2層L2に隣接する第3層L3と、各層に含まれるノードと、ノード間を接続するエッジと、各エッジに割り当てられた重みを示す図である。説明の便宜のため、図1(b)においてはバイアス項、活性化関数、及びプーリングを除いて簡略化しているが、以下の議論はこれらがある場合であっても成立する。
【0022】
なお、第1層L1、第2層L2、及び第3層L3における「第1」、「第2」、及び「第3」という用語は、数字が小さいほど入力層側に存在する層を示す相対的な概念であり、第1層がニューラルネットワークにおける1番目の層(すなわち入力層)を必ずしも意味するわけではない。
【0023】
図1(b)において、第1層L1及び第3層L3は2つのノードを備え、第2層L2は3つのノードを備えている。図1(b)に示すように、第1層L1及び第2層L2は全結合層である。ニューラルネットワークにおいては、各ノードはそれぞれ実数値を出力し、その実数値にエッジに割り当てられた重みパラメータが乗じられて接続先のノードに入力される。
【0024】
図1(b)において、第1層L1の2つのノードは、それぞれX とX とを出力する。説明の便宜のため、あるノードの出力値でそのノードを表すこととする。例えば、図1(b)において、X を出力するノードをノードX で表す。また、ノードの出力値において、上付き文字は層を識別するための番号を表し、下付き文字はノードを識別するための番号を表す。例えば、ノードX は、第3層L3の2番目のノードであることを示す。例えば、図1(b)において、第2層L2のノードは図中上からノードX 、ノードX 、及びノードX の順番である。なお、各ノードの出力値は、そのノードに入力される値の大小によって大きさが変わる変数であり、必ずしも一定の値というわけではない。
【0025】
説明の便宜のため、エッジに割り当てられた重みパラメータを用いて各エッジを表す。例えば重みパラメータW21 が割り当てられたエッジをエッジW21 と表す。重みパラメータにおいて、上付き文字は出力元の層を識別するための番号を表し、下付き文字は伝搬先のノード及び伝搬元のノードを並べた番号を表す。
【0026】
例えば、重みパラメータW21 は第1層L1と第2層L2とを接続するエッジであって、第2層L2の2番目のノードX に向かって第1層L1の1番目のノードX から接続されたエッジであることを表す。なお、各重みパラメータの値は、学習モデルの学習が終了したときに決定され、その後変更されることはない。したがって、重みパラメータの値は定数であり、学習モデルが再学習されない限り不変の値である。
【0027】
上記の表記を用いると、図1(b)において第1層L1から第2層L2への伝搬は、以下の式(1)で示される。
【0028】
【数1】
【0029】
同様に第2層L2から第3層L3への伝搬は、以下の式(2)で示される。
【0030】
【数2】
【0031】
式(1)及び式(2)より、第1層L1から第3層L3への伝搬は、以下の式(3)で示される。
【0032】
【数3】
【0033】
このように、ニューラルネットワークにおけるノード間の伝搬は、ノードの出力値と重みパラメータとの積の総和で表される。
【0034】
図1(c)は、図1(b)に示すニューラルネットワークの構造は変えずに、ノード間を接続するエッジに割り当てられた重みパラメータを置換した場合のニューラルネットワークを示す図である。具体的には、図1(b)に示す第2層L2のノードが図中上からノードX 、ノードX 、及びノードX の順番となるように重みパラメータが置換されている。
【0035】
図1(c)において、第1層L1から第2層L2への伝搬は、以下の式(1’)で示される。
【0036】
【数4】
【0037】
同様に第2層L2から第3層L3への伝搬は、以下の式(2’)で示される。
【0038】
【数5】
【0039】
式(1’)及び式(2’)より、第1層L1から第3層L3への伝搬は、以下の式(3’)で示される。
【0040】
【数6】
【0041】
式(1)及び式(1’)から、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータの順序を変更すること、すなわち右辺第1項の行を入れ替えることにより、第2層L2の各ノードの出力値の順序が変更されていることがわかる。一方、式(3)及び式(3’)から、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータの順序変更を打ち消すように第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータの列の順序を変更することにより、第3層L3の各ノードの出力値の順序を元の順序に戻せることがわかる。以下本明細書において、重みパラメータの順序変更を打ち消すための操作を「調整」と記載することがある。
【0042】
このことから、ニューラルネットワークにおける全結合層では、ある層間におけるエッジに割り当てられた重みパラメータの順序を変更しても、別の層間におけるエッジに割り当てられた重みパラメータの順序を適切に変更することでその変更による影響を打ち消し、同一の出力を保つことができることがわかる。これはすなわち、ニューラルネットワークにおける全結合層では、ノードの順序、すなわち重みパラメータの接続の順序には自由度があり、意図的にその順序を変更できることを意味している。
【0043】
詳細は後述するが、図1(b)において、ノードX 、ノードX 、及び、ノードX それぞれに各ノードに接続されているエッジに割り当てられた重みパラメータの値から何らかの方法(例えば、重みパラメータの総和を算出するという方法)で算出された値を紐付けることができたと仮定する。上述したように、各ノードに接続されている重みパラメータは定数であるため、何らかの方法を固定すれば、各ノードには常に同じ値が紐付けられることになる。したがって、以下この値を各ノードの「代表値」と記載することにする。
【0044】
いま、図1(b)において、ノードX 、ノードX 、及び、ノードX それぞれの代表値の大小関係が、ノードX <ノードX <ノードX で順であったとする。ここで、第2層L2において互いに隣接するノードの代表値の大小関係を図中上から順に評価し、上側のノードの出力値が下側のノードの出力値よりも大きい場合1、小さい場合は0で符号化することとする。このとき、図1(b)において、各ノードの代表値の大小関係がノードX <ノードX であり、ノードX >ノードX であるから、第2層L2は[0,1]と符号化される。
【0045】
第2層L2に符号[1,1]を埋め込む場合、例えばノードの代表値の大小関係がノードX >ノードX 及びノードX >ノードX であることを利用して、図中上から順にノードX 、ノードX 、及びノードX の順となるようにエッジに割り当てられた重みパラメータの順序を入れ替えればよい。この結果、図1(c)に示すニューラルネットワークとなる。
【0046】
このように、ニューラルネットワークのエッジに割り当てられた重みパラメータの順序を入れ替えることによって全結合層のノードの代表値の大小関係を制御し、ニューラルネットワークの学習モデルにビット列を埋め込むことができる。図1(b)及び図1(c)において第2層L2は3つのノードから構成されていたため2ビットの情報しか埋め込めないが、一般に、N+1個のノードを含む全結合層にはNビットの情報を埋め込むことができる。学習モデルに埋め込みたい付加情報を何らかの変換規則を用いてビット列で表すことができれば、ノードの数によって定まるビット長の範囲において、任意の付加情報をニューラルネットワークの学習モデルに埋め込むことができる。なお、ビット情報の埋め込みについては後述する。
【0047】
上述したように、ノードの代表値の大小関係を制御するためにエッジに割り当てられた重みパラメータの順序を変更した場合、ネットワークの下流においてその変更を打ち消して調整することができる。したがって、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。
【0048】
<実施の形態に係る付加情報埋込装置1の機能構成>
図2は、実施の形態に係る付加情報埋込装置1の機能構成を模式的に示す図である。付加情報埋込装置1は、記憶部10と制御部11とを備える。図2において、矢印は主なデータの流れを示しており、図2に示していないデータの流れがあってもよい。図2において、各機能ブロックはハードウェア(装置)単位の構成ではなく、機能単位の構成を示している。そのため、図2に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【0049】
記憶部10は、付加情報埋込装置1を実現するコンピュータのBIOS(Basic Input Output System)等を格納するROM(Read Only Memory)や付加情報埋込装置1の作業領域となるRAM(Random Access Memory)、OS(Operating System)やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDD(Hard Disk Drive)やSSD(Solid State Drive)等の大容量記憶装置である。
【0050】
制御部11は、付加情報埋込装置1のCPUやGPU等のプロセッサであり、記憶部10に記憶されたプログラムを実行することによってモデル取得部110、埋込層選択部111、代表値算出部112、付加情報取得部113、第1変更部114、及び第2変更部115として機能する。
【0051】
なお、図2は、付加情報埋込装置1が単一の装置で構成されている場合の例を示している。しかしながら、付加情報埋込装置1は、例えばクラウドコンピューティングシステムのように複数のプロセッサやメモリ等の計算リソースによって実現されてもよい。この場合、制御部11を構成する各部は、複数の異なるプロセッサの中の少なくともいずれかのプロセッサがプログラムを実行することによって実現される。
【0052】
実施の形態に係る付加情報埋込装置1は、入力層、出力層、及び1以上の中間層を含む複数の層から構成されるニューラルネットワークによる学習済みの学習モデルに付加情報を埋め込むための装置である。上述したように、ニューラルネットワークにおいては、ニューラルネットワークを構成する2つの異なる層のうち、入力層に近い方の層である第1層を構成する各ノードの出力と重みパラメータとの積の和が、入力層から遠い方の層である第2層を構成する各ノードへの入力となる。モデル取得部110は、学習が完了している学習モデルを取得する。
【0053】
埋込層選択部111は、モデル取得部110が取得した学習モデルにおける複数の層の中から、付加情報を埋め込むための層を選択する。具体的には、埋込層選択部111は、モデル取得部110が取得した学習モデルを構成する層のうち、全結合層と畳込み層とを検出して付加情報を埋め込むための層として選択する。埋込層選択部111が学習モデルを構成する層の中から付加情報を埋め込むことのできる層を検出することにより、学習モデルに埋め込むことのできる情報量の上限値を特定することができる。
【0054】
代表値算出部112は、埋込層選択部111が選択した層において、入力層から遠い方の層である第2層を構成するノード毎に重みパラメータの代表値を算出する。以下説明の便宜のため、制御部11が選択した層が全結合層の場合について説明する。なお、埋込層選択部111が選択した層が畳込み層である場合については後述する。
【0055】
代表値算出部112が算出する「代表値」は、後述する第1変更部114がエッジに割り当てられた重みパラメータの順序を入れ替えるために参照する値であり、各ノードに接続されているエッジに割り当てられた重みパラメータから算出される値である。上述したように、エッジに割り当てられた重みパラメータは定数であるため、代表値の演算方法を固定することによって各ノードの代表値も固定することができる。
【0056】
以下、限定はしないが、代表値算出部112が算出するノード毎の重みパラメータの代表値が、そのノードに接続されているエッジに割り当てられた重みパラメータの総和であることを前提とする。この場合、例えば図1(b)において、ノードX の代表値t は、t =W21 +W22 となる。
【0057】
付加情報取得部113は、学習モデルに埋め込むための付加情報を取得する。例えば、付加情報取得部113は、付加情報埋込装置1の図示しない入力インターフェースを介して、付加情報埋込装置1のユーザから学習モデルに埋め込むための付加情報を取得する。付加情報取得部113は、取得した付加情報がビット列以外の形式である場合、あらかじめ定められた手順によって付加情報をビット列に変換する。この手順は、学習モデルに埋め込む付加情報として想定されるデータ形式に応じてあらかじめ定めておけばよい。以下では、付加情報がビット列であることを前提とする。
【0058】
第1変更部114は、代表値算出部112が算出した代表値の順序が付加情報を表現するように、第1層と第2層との間の重みパラメータの順序を変更する。第2変更部115は、第1変更部114が実行した重みパラメータの順序の変更を打ち消すように、第2層と第2層よりも出力層側に存在する層である第3層との間の重みパラメータの順序を変更する。
【0059】
図3(a)-(c)は、実施の形態に係る第1変更部114及び第2変更部115が実行する処理を説明するための図である。具体的には、図3(a)は図1(b)に示すニューラルネットワークの伝搬を行列形式で表した図であり、図3(b)は図1(c)に示すニューラルネットワークの伝搬を行列形式で表した図である。
【0060】
図3(a)に示すように、第2層L2の出力は第1層L1の出力及び第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータによって決定される。同様に、第3層L3の出力は第2層L2の出力及び第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータによって決定される。図3(a)において、第2層L2を構成するノードの順序は、図中上からノードX 、ノードX 、及び、ノードX の順である。
【0061】
ここで、第2層L2を構成する各ノードの代表値を、図中上からt 、t 、及びt であり、大小関係はt <t <t であるとする。いま、第2層L2に付加情報[1,1]を埋め込むためには、例えばt <t であり、t <t であることを考慮して、図中上からt 、t 、及びt の順に並ぶようにすればよい。これは、図3(b)に示すように、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータに対応する行列の各行の順序を入れ替えることに対応する。そこで、第1変更部114は、図1(c)に示すように、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータの順序を変更する。
【0062】
図1(b)に示すように、第1変更部114が第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータの順序を変更すると、第2層を構成する各ノードの出力値も、図中上からノードX 、ノードX 、及び、ノードX の順序となる。
【0063】
第2変更部115は、第3層L3の出力値が、第2層を構成する各ノードの出力値の順序が入れ替わっていない場合と同一の出力値となるように、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータの順序を変更する。具体的には、図3(b)に示すように、第2変更部115は、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の各列の順序を入れ替える。これにより、第2変更部115は、第1変更部114が実行した重みパラメータの順序変更の影響を打ち消して調整することができる。
【0064】
ここで、第1変更部114が実行する変更は、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータに対応する行列の各「行」の順序の入れ替えである。これに対し、第2変更部115が実行する変更は、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の各「列」の順序の入れ替えである。したがって、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の各列の順序を入れ替えたまま、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の各行の順序の入れ替えをすることができる。
【0065】
図3(c)は、重みパラメータに対応する行列の行及び列それぞれの順序を入れ替えた場合の一例を示す図である。具体的には、図3(c)は、図3(a)に示す行列の行及び列それぞれの順序を入れ替えた行列を示している。図3(c)に示す第2層L2を構成するノードの順序は、図中上からノードX 、ノードX 、及び、ノードX の順であり、これは図3(b)に示す第2層L2を構成するノードの順序と同じである。
【0066】
一方、図3(c)に示す第3層L3を構成するノードの順序は、図中上からノードX 、及び、ノードX の順であり、図3(b)に示す第3層L3を構成するノードの順序に対して入れ替わっている。これは、第1変更部114が第3層L3のノード毎に算出された代表値に基づいて第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の行の順序を変更することにより、付加情報を埋め込むことができることを示している。
【0067】
例えば、第3層L3の出力層側に第4層L4(不図示)がある場合、第2変更部115は、第3層L3と第4層L4との間のエッジに割り当てられた重みパラメータに対応する行列の列の順序を変更して第1変更部114が実行した変更を打ち消して調整することができる。つまり、ある層とその次の層の間のエッジに割り当てられた特定の重みパラメータについて、調整も埋め込みも同時に行うことができることを示している。このように、実施の形態に係る付加情報埋込装置1は、埋込層選択部111が選択した各層に連続して付加情報を埋め込むことができる。
【0068】
[付加情報の符号化の変形例]
上記では、第1変更部114は、隣り合うノード間の代表値の大小関係がビット列と対応するように、重みパラメータの順序を変更する場合について説明した。しかしながら、第1変更部114は、隣り合うノード間の代表値の大小関係以外の情報に基づいて重みパラメータの順序を変更してもよい。
【0069】
例えば、第1変更部114は、各ノードの代表値の正負がビット列と対応するように、重みパラメータの順序を変更してもよい。より具体的には、第1変更部114は、各ノードの代表値が正の値の場合に1を符号化し、負の値の場合に0を符号化することにより、付加情報取得部113が取得したビット列を符号化することができる。
【0070】
[代表値の計算]
上記では、埋込層選択部111が選択した層の各ノードに接続されている重みパラメータの値から代表値算出部112が何らかの方法で代表値を算出する場合について説明した。ここで、代表値算出部112は、交換法則が成り立つ演算を重みパラメータに施すことにより代表値を算出してもよい。
【0071】
代表値算出部112が代表値を算出するために重みパラメータに対して施す演算が、例えば加算、絶対値の加算、乗算等の交換法則が成り立つ演算であるとする。このとき、同一の層が付加情報の埋め込みと調整との対象となる場合において、第1変更部114による埋め込みと第2変更部115による調整との順番が問われなくなる。例えば、図3(b)に示すように、第1層L1と第2層L2との間のエッジに割り当てられた重みパラメータに対応する行列の「行」の順序を変換して付加情報を埋め込み、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の「列」の順序を変換して調整したとする。さらに、図3(c)に示すように、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータに対応する行列の「行」の順序を変換して付加情報を埋め込んだとする。
【0072】
この場合、第2層L2と第3層L3との間のエッジに割り当てられた重みパラメータは、付加情報の埋め込みと調整との両方の役割を担うことになる。代表値算出部112が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合、付加情報の埋め込み(すなわち「行」の入れ替え)と、それを打ち消すため調整(すなわち「列」の入れ替え)とは、この順序で実行される必要がある。
【0073】
具体的には、重みパラメータWとWとについて、代表値算出部112が、代表値t=W-Wという減算式に基づいて算出するとする。ここで、減算は交換法則が成り立たないため、一般にW-WとW-Wとは異なる値となる。上述した「調整」は重みパラメータに対応する行列の列の順序を入れ替えるため、代表値算出部112が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合は、列の入れ替えによって減算の演算順序が変更されうる。したがって、代表値算出部112が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立たない場合には、付加情報の埋め込みと調整とはこの順序で実行される必要がある。
【0074】
これに対し、代表値算出部112が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立つ場合には、付加情報の埋め込みと調整とは任意の順序で実行されてもよい。したがって、代表値算出部112が代表値を算出するために重みパラメータに対して施す演算において交換法則が成り立つ場合には、出力側の層に付加情報が埋め込まれている場合であっても、それよりも入力側の層に追加で新たに付加情報を埋め込むことができる。代表値の演算に交換法則が成り立つ場合には、代表値は列の順序変更(行内の要素の順番に対する変更)に対して不変だからである。
【0075】
[畳込み層への付加情報の埋め込み]
続いて、畳込み層への付加情報の埋め込みについて説明する。
【0076】
全結合層への付加情報の埋め込みでは、層間を接続するエッジに割り当てられた重みパラメータの順序を変更することにより、付加情報の埋込及び調整を実現した。畳込み層への付加情報の埋め込みも、全結合層への情報の埋め込みと同様の考え方で実現できる。
【0077】
また、第2層L2の後にプーリング層のように係数の積和を行わない演算が途中にあっても以下は成立する。例えば、第1層L1のノードと第2層L2のノード間では畳み込み演算を行い、第2層L2のノードと第3層L3のノード間はプーリングを行い、第3層L3のノードと第4層L4のノード間は畳み込み演算を行う場合、第1層L1のノードと第2層L2のノード間の重みパラメータに情報を埋め込み、第3層L3のノードと第4層L4のノード間の重みパラメータで調整できるが、プーリング層が入る場合にはその層はないものとして第1層と第2層のノード間の重みパラメータに埋め込み、第2層と第3層のノード間の重みパラメータで調整するとして以下で説明している。
【0078】
図4(a)-(b)は、畳込み層への付加情報の埋め込みを説明するための図である。図4(a)-(b)において、第1層L1の深さ方向の次元は1であり、3つの畳込みフィルタ(畳込みフィルタF11、畳込みフィルタF12、及び畳込みフィルタF13)を備える。畳込み層への付加情報の埋め込みにおいては、複数の畳込みフィルタそれぞれの重み係数が、全結合層における重みパラメータに相当する。このため、代表値算出部112は、各畳込みフィルタの重み係数を用いて何らかの方法(例えば、重み係数の総和を求める方法)を用いて代表値を算出する。
【0079】
周知のように、ニューラルネットワークの畳込み層において、ある層における畳込みフィルタの出力が次の層の入力となる。例えば、図4(a)において、2次元データである第1層L1上において畳込みフィルタF11を走査させながら畳込み演算を実行し、その出力である2次元データが第2層L2の入力となる。すなわち、第1層L1の特定の場所における畳込み演算の結果は、第2層L2における特定の場所に入力される。この意味で、第2層L2を構成する1つのデータは、全結合層における1つのノードに対応する。
【0080】
図4(a)では、第1層L1は3つの畳込みフィルタを備えるため、それぞれの畳込みフィルタの出力が第2層L2の入力となる。したがって、図4(a)に示すように、第2層L2は深さ方向の次元が3(すなわち、第2層L1における畳込みフィルタの数)となる。ここで、第2層L2は深さ方向のデータの順序は、第1層L1において畳込みフィルタを用いる畳込み演算の順序となる。図4(a)では、畳込みフィルタF11、畳込みフィルタF12、及び畳込みフィルタF13の順番で第1層L1に対して畳込み演算が実行されたため、第2層L2は、畳込みフィルタF11、畳込みフィルタF12、及び畳込みフィルタF13の畳込み演算の出力が同じ順番で積層されている。
【0081】
全結合層への付加情報の埋め込みと同様に、第1変更部114は、畳み込みフィルタの代表値の大小関係がビット列と対応するように、畳み込みの順序を変更することができる。例えば、例えば、畳込みフィルタF11、畳込みフィルタF12、及び畳込みフィルタF13の代表値がそれぞれt11、t12、及びt13、であり、それらの大小関係がt11<t13<t12であったとする。付加情報取得部113が取得した付加情報がビット列[1,1]とすると、第1変更部114は、畳込み演算の順序を畳込みフィルタF12、畳込みフィルタF13、及び畳込みフィルタF11に入れ替える。t11<t13<t12でるため、t12>t13かつt13>t11が成り立つからである。
【0082】
図4(b)は、第1変更部114が畳込み演算の順序を変更した場合の第2層L2を示す図である。図4(b)に示す第2層L2の深さ方向のデータは、第1変更部114による順序変更に伴って、図4(a)に示す第2層L2と比較して積層の順序が変換されている。
【0083】
周知のように、畳込み層の深さ方向の次元と、畳み込みフィルタの深さ方向の次元とは同一である。図4(a)-(b)において、第2層L2はそれぞれ1つの畳み込みフィルタF21及びをF’21備えており、深さ方向の次元はいずれも3である。ここで、図4(a)における畳み込みフィルタF21は深さ方向が1次元の3つのフィルタ(第1フィルタK、第1フィルタK、及び第1フィルタK)がこの順序で積層されている。したがって、第1層L1に対する畳込みフィルタF11の演算結果に対して第1フィルタKが実行された結果と、畳込みフィルタF12の演算結果に対して第2フィルタKが実行された結果と、畳込みフィルタF13の演算結果に対して第3フィルタKが実行された結果との総和が、第3層L3の出力となる。
【0084】
そこで、第1変更部114によって変更された第1層L1における畳込み演算の順序を打ち消して調整するために、第2変更部115は、第2層L2の畳込みフィルタF21の積層の順序を入れ替える。具体的には、第2変更部115は、第1変更部114が変更した第1層L1における畳込み演算の順序と同じ順序となるように、第2層L2の畳込みフィルタF21の積層の順序を入れ替える。この結果、図4(b)に示すように、第2層L2の畳み込みフィルタF’21は、第2フィルタK、第3フィルタK、及び第1フィルタKの順序となっている。これにより、第1層L1における畳込み演算の順序の入れ替えの影響は打ち消され、入れ替えの有無にかかわらず第3層L3のデータの同一性が保持される。
【0085】
このように、実施の形態に係る付加情報埋込装置1は、全結合層のみならず畳込み層にもニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。したがって、埋込層選択部111は、(1)第1層L1と第2層L2とが全結合であり、かつ第2層L2と第3層L3とが全結合であること、又は(2)第1層L1と第2層L2とが畳込み層であり、かつ第2層L2と第3層L3とが畳み込み層であること、を条件として付加情報を埋め込むための層を選択すればよい。
【0086】
[代表値の差分符号を用いた埋め込み法の詳細]
続いて、重みパラメータの行列の行や、畳込フィルタから算出した代表値tの順序を変更し、付加情報であるビット情報sを埋め込むための順序決定の仕方について説明する。
【0087】
ビット情報sのビット数をNとしたとき、ビット情報sは、ビット数がN+1の代表値tに埋め込むことができる。ここで、tの数値は全て異なっているとする。例えば、s={1,1,0,0,1,1,0,1}とすると、N=8である。また、tを9つの行から算出した異なる代表値であるとする。ただし、行数分(フィルタ枚数分)すべてにビットを埋め込まない場合は、同じ代表値が出現した場合や最小値又は最大値が出現した場合に検出終了とし、終了条件や終了コードを埋め込む。
【0088】
まず、第1変更部114は、代表値tを昇順に並び替える。並び替え後の代表値tをn(n~nN+1)とする。図5は、並べ替え後の代表値tの一例を示す図である。
【0089】
図6(a)-(e)は、代表値tを並び替えたときの順番Tの決定方法の一例を説明するための図である。第1変更部114は、代表値tを並び替えたときの順番Tを求める。順番の決定方法は種々考えられるが、以下、図6を参照して、第1変更部114による順番の決定方法の一例を示す。
【0090】
第1変更部114は、Tのスタート地点であるTにおけるnの添え字の数値、すなわち代表値tを小さい方から数えてk番目の数を決定する。スタート地点のnの添え字の数値は、(sの0のビット数+1)番目とする。上述した具体例はs={1,1,0,0,1,1,0,1}であり、0が3ビットのため、図6(a)で示すように、nの添え字の数値は(3+1)番目であるnから開始し、T=nとする。
【0091】
第1変更部114は、決定したTのスタート地点からTと対応するnを順次決定する。まず、第1変更部114は、Tj+1-T>0で‘1’を、Tj+1-T<0で‘0’を埋め込むものとする。Tj+1-T>0ならば、第1変更部114は、スタート地点のnよりも大きくまだ使われていないnの中で最小となるnを次の数値Tj+1用に選択する。Tj+1-T<0ならば、第1変更部114は、スタート地点のnよりも小さくまだ使われていないnの中で最大となるnを次の数値Tj+1用に選択する。これを繰り返すことにより、図6(b)-(e)に例示するように、第1変更部114は、Tを決定できる。
図7は、第1変更部114が決定した代表値tを並び替えたときの順番Tの一例を示す図である。
【0092】
最後に、第1変更部114は、図5および図7の同一のnをキーとしてTとtとの対応関係を得て、tの順番をどのように変更するかを取得する。上述の例では、tの順番は、T=t、T=t、T=t、T=t、T=t、T=t、T=t、T=t、及びT=tとなる。つまり、変更後の行列の1行目は元の重みパラメータ(畳込みフィルタ)の8行目(8番目)とすればよく、変更後の行列の2行目は元の重みパラメータ(畳込みフィルタ)の4行目(4番目)とすればよく、変更後の行列の3行目は元の重みパラメータ(畳込みフィルタ)の9行目(9番目)とすればよい。以下同様である。
【0093】
第1変更部114は、必要がある場合には、順位決定した最後のTlastの次に、終了条件や終了コードとする代表値となるようなTlast+1を入れてもよい。これは、これまでに出てきた数と同一の代表値となるtの行、最大値又は最小値などが考えられる。
【0094】
なお、上記の方法を用いることによって第1変更部114はビット情報sを一意に埋め込むことができるが、ビット情報sが全て1や0でなければ、条件を満たす並び変えは他にも存在する。例えば、具体例において、TとTとを入れ替え、n=T、n=Tとしても同じビット情報sが埋め込めることが分かる。そのため、代表値を用いた差分符号の並び変えの手法は上記に限らない。
【0095】
<付加情報埋込装置1が実行する付加情報埋込処理の処理フロー>
図8は、実施の形態に係る付加情報埋込装置1が実行する付加情報埋込処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば付加情報埋込装置1が起動したときに開始する。
【0096】
モデル取得部110は、ニューラルネットワークによる学習済みの学習モデルを取得する(S2)。埋込層選択部111は、モデル取得部110が取得した学習モデルにおける複数の層の中から、付加情報を埋め込むための層を選択する(S4)。
【0097】
代表値算出部112は、埋込層選択部111が選択した層のうち入力層から遠い方の層である第2層を構成するノード毎に重みパラメータの代表値を算出する(S6)。付加情報取得部113は、モデル取得部110が取得した学習モデルに埋め込むための付加情報を取得する(S8)。
【0098】
第1変更部114は、代表値の順序が付加情報を表現するように、埋込層選択部111が選択した層のうち入力層から近い方の層である第1層と第2層との間の重みパラメータの順序を変更し、第2変更部115は、第1変更部114が実行した順序の変更を打ち消すように、第2層と第2層よりも出力層側に存在する層である第3層との間の重みパラメータの順序を変更する(S10)。
【0099】
第2変更部115が重みパラメータの順序を変更すると、本フローチャートにおける処理は終了する。
【0100】
<実施の形態に係る付加情報検出装置2の機能構成>
続いて、付加情報埋込装置1によって学習装置に埋め込まれた付加情報を検出するための付加情報検出装置2の機能構成について説明する。
【0101】
図9は、実施の形態に係る付加情報検出装置2の機能構成を模式的に示す図である。付加情報検出装置2は、記憶部20と制御部21とを備える。図9において、矢印は主なデータの流れを示しており、図9に示していないデータの流れがあってもよい。図9において、各機能ブロックはハードウェア(装置)単位の構成ではなく、機能単位の構成を示している。そのため、図9に示す機能ブロックは単一の装置内に実装されてもよく、あるいは複数の装置内に分かれて実装されてもよい。機能ブロック間のデータの授受は、データバス、ネットワーク、可搬記憶媒体等、任意の手段を介して行われてもよい。
【0102】
記憶部20は、付加情報検出装置2を実現するコンピュータのBIOS等を格納するROMや付加情報埋込装置1の作業領域となるRAM、OSやアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するHDDやSSD等の大容量記憶装置である。
【0103】
制御部21は、付加情報検出装置2のCPUやGPU等のプロセッサであり、記憶部20に記憶されたプログラムを実行することによって変更済みモデル取得部210、埋込層選択部211、代表値算出部212、及び付加情報特定部213として機能する。
【0104】
なお、図9は、付加情報検出装置2が単一の装置で構成されている場合の例を示している。しかしながら、付加情報検出装置2は、例えばクラウドコンピューティングシステムのように複数のプロセッサやメモリ等の計算リソースによって実現されてもよい。この場合、制御部21を構成する各部は、複数の異なるプロセッサの中の少なくともいずれかのプロセッサがプログラムを実行することによって実現される。
【0105】
変更済みモデル取得部210は、付加情報埋込装置1が重みパラメータを変更した学習モデルを取得する。埋込層選択部211は、変更済みモデル取得部210が取得した学習モデルにおける複数の層の中から、付加情報を埋め込み可能な層を選択する。
【0106】
代表値算出部212は、埋込層選択部211が選択した層を構成するノード毎に重みパラメータの代表値を算出する。付加情報特定部213は、代表値算出部212が算出した代表値の順序に基づいて、変更済みモデル取得部210が取得した学習モデルに埋め込まれた付加情報を特定する。これにより、付加情報検出装置2は、付加情報埋込装置1が付加情報を埋め込んだ学習モデルから、付加情報を検出することができる。
【0107】
<付加情報検出装置2が実行する付加情報検出処理の処理フロー>
図10は、実施の形態に係る付加情報検出装置2が実行する付加情報検出処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば付加情報検出装置2が起動したときに開始する。
【0108】
変更済みモデル取得部210は、付加情報埋込装置1が重みパラメータを変更した学習モデルを取得する(S12)。埋込層選択部211は、変更済みモデル取得部210が取得した学習モデルにおける複数の層の中から、付加情報を埋め込み可能な層を選択する(S14)。
【0109】
代表値算出部212は、埋込層選択部211が選択した層を構成するノード毎に重みパラメータの代表値を算出する(S16)。付加情報特定部213は、代表値算出部212が算出した代表値の順序に基づいて、変更済みモデル取得部210が取得した学習モデルに埋め込まれた付加情報を特定する(S18)。
【0110】
付加情報特定部213が付加情報を特定すると、本フローチャートにおける処理は終了する。
【0111】
<実施の形態に係る付加情報埋込装置1及び付加情報検出装置2が奏する効果>
以上説明したように、実施の形態に係る付加情報埋込装置1によれば、ニューラルネットワークの学習モデルの性能を維持しつつ付加情報を埋め込むことができる。また、実施の形態に係る付加情報検出装置2によれば、付加情報埋込装置1が学習モデルに埋め込んだ付加情報を読み出すことができる。
【0112】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の全部又は一部は、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果をあわせ持つ。
【符号の説明】
【0113】
1・・・付加情報埋込装置
10・・・記憶部
11・・・制御部
110・・・モデル取得部
111・・・埋込層選択部
112・・・代表値算出部
113・・・付加情報取得部
114・・・第1変更部
115・・・第2変更部
2・・・付加情報検出装置
20・・・記憶部
21・・・制御部
210・・・変更済みモデル取得部
211・・・埋込層選択部
212・・・代表値算出部
213・・・付加情報特定部


図1
図2
図3
図4
図5
図6
図7
図8
図9
図10