(57)【特許請求の範囲】
【請求項１】
第１のニューラルネットワークの重みに透かしビットを埋め込むための情報処理方法であって、
前記第１のニューラルネットワークの複数の重みから求めた複数の入力値を、第２のニューラルネットワークへ入力し、前記第２のニューラルネットワークの出力を得ることと、
前記第２のニューラルネットワークの出力と前記透かしビットとの誤差に基づき、前記複数の入力値それぞれの第２勾配を求めることと、
誤差逆伝播法に基づき求めた前記第１のニューラルネットワークの重みの第１勾配と、前記第２勾配とを加算した値に基づき、当該重みを更新することと、
を含む、情報処理方法。
【請求項２】
前記第１のニューラルネットワークは、畳み込みに使用する複数の重みを有する重みフィルタをＮ個有し、
前記複数の入力値は、Ｎ個の重みフィルタの同じ位置の重みの平均値である、請求項１に記載の情報処理方法。
【請求項３】
前記第１のニューラルネットワークの前記重みフィルタの第１位置の重みは、当該重みについての前記第１勾配と、前記複数の入力値のうち、前記Ｎ個の重みフィルタの前記第１位置の重みの平均値である第１入力値についての前記第２勾配とを加算した値に基づき更新される、請求項２に記載の情報処理方法。
【請求項４】
前記第２のニューラルネットワークは、前記複数の入力値に所定の演算を行った結果を出力する、請求項１から３のいずれか１項に記載の情報処理方法。
【請求項５】
前記第２のニューラルネットワークは、前記複数の入力値から前記透かしビットと同じ数の入力値を選択し、選択した入力値それぞれを活性化関数の入力として出力を計算する、請求項４に記載の情報処理方法。
【請求項６】
前記第２のニューラルネットワークは、前記複数の入力値から前記透かしビットと同じ数の入力値の組を選択し、選択した各組の入力値の差分それぞれを活性化関数の入力とし出力を計算する、請求項４に記載の情報処理方法。
【請求項７】
第１のニューラルネットワークと第２のニューラルネットワークとを使用して前記第１のニューラルネットワークの重みに透かしビットを埋め込むための情報処理装置であって、
前記第１のニューラルネットワークの複数の重みから複数の入力値を求める算出手段と、
前記複数の入力値を前記第２のニューラルネットワークへ入力し、前記第２のニューラルネットワークの出力を得る出力算出手段と、
前記第２のニューラルネットワークの出力と前記透かしビットとの誤差に基づき、前記複数の入力値それぞれの第２勾配を求める勾配算出手段と、
前記第１のニューラルネットワークの学習を行う学習手段と、
を備えており、
前記学習手段は、誤差逆伝播法に基づき求めた前記第１のニューラルネットワークの重みの第１勾配と、前記第２勾配とを加算した値に基づき、当該重みを更新する、情報処理装置。
【請求項８】
プログラムを格納したコンピュータ可読記憶媒体であって、
前記プログラムは、コンピュータの１つ以上のプロセッサで実行されると、前記コンピュータに、
第１のニューラルネットワークの複数の重みから求めた複数の入力値を、第２のニューラルネットワークへ入力し、前記第２のニューラルネットワークの出力を得ることと、
前記第２のニューラルネットワークの出力と透かしビットとの誤差に基づき、前記複数の入力値それぞれの第２勾配を求めることと、
誤差逆伝播法に基づき求めた前記第１のニューラルネットワークの重みの第１勾配と、前記第２勾配とを加算した値に基づき、当該重みを更新することと、
を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク(Neural Network)に透かし情報を埋め込む技術に関する。
【背景技術】
【０００２】
近年、画像認識や音声認識、自然言語処理の分野について、ニューラルネットワークが注目されている。ニューラルネットワークとは、生体の脳における特性を計算機上のシミュレーションによって表現することを目指した数学モデルをいう。シナプスの結合によってネットワークを形成した人工ニューロン（ユニット）が、学習によってシナプスの結合強度を変化させ、問題解決能力を持つようなモデル全般をいう。【０００３】
特許文献１〜３及び非特許文献１〜３は、ニューラルネットワークの構造を最適化する技術を開示している。また、特許文献２は、大規模な畳み込みニューラルネットワークの重みを効率的に設定する技術を開示している。更に、特許文献３は、ニューラルネットワークを用いて、音響イベントを検出する技術を開示している。更に、非特許文献１及び２は、画像認識に適した畳み込みニューラルネットワークを開示している。更に、非特許文献３は、ニューラルネットワークを用いて、単語の品詞を推定する技術を開示している。【０００４】
大規模なニューラルネットワークのモデルパラメータは、大規模なデータセットに対して、長時間の学習が必要となる。例えば、非特許文献２は、４つのＧＰＵ(Graphics Processing Unit)を用いて２〜３週間の学習が必要であるとしている。このため、非特許文献４及び５は、ニューラルネットワーク内部のモデルパラメータを学習することなく、予め学習済みのモデルパラメータの一部を流用したり、そのモデルパラメータを初期値として再学習したりすることを開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１１５１０号公報
【特許文献２】特開２０１５−５２８３２号公報
【特許文献３】特開２０１５−５７６３０号公報
【非特許文献】
【０００６】
【非特許文献１】A. Krizhevsky, I. Sutskever and G. E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks," NIPS'12.
【非特許文献２】K. Simonyan and A. Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition," ICLR'15.
【非特許文献３】X. Ma and E. Hovy, "End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF," ACL'16.
【非特許文献４】S. Ren, K. He, R. Girshick, and J. Sun, "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks," NIPS'15.
【非特許文献５】W. Liu, et al., "SSD: Single Shot MultiBox Detector," ECCV'16.
【非特許文献６】P.-T. Yu, H.-H. Tsai, and J.-S. Lin, "Digital watermarking based on neural networks for color images," in Signal Processing, vol. 81, no. 3,2001.
【非特許文献７】M. Elarbi, C. B. Amar, and H. Nicolas, "Video Watermarking Based on Neural Networks," in Proc. of ICME, 2006.
【非特許文献８】Fei-Fei Li & Andrej Karpathy & Justin Johnson、Lecture 7、Convolutional Neural Networks、27 Jan 2016、[online]、［平成２９年１月４日検索］、インターネット＜URL:http://cs231n.stanford.edu/slides/winter1516_lecture7.pdf＞
【非特許文献９】正則化、[online]、［平成２９年１月５日検索］、インターネット＜URL:https://ja.wikipedia.org/wiki/%E6%AD%A3%E5%89%87%E5%8C%96＞
【非特許文献１０】A. Krogh and J. A. Hertz, "A Simple Weight Decay Can Improve Generalization," in Proc. of NIPS, 1992.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、大規模なニューラルネットワークを用いて、全てのモデルパラメータを最初から学習する場合、大量の計算コストや労力が必要となる。そのため、例えば研究の効率化を主な目的とし、研究機関によって、学習済みのモデルパラメータが、流用可能なライセンス形態で、配布される場合もある。【０００８】
しかしながら、商用サービスにおいては、学習済みのモデルパラメータ自体が、そのサービスにおけるコアな技術であり、一般には流用を禁止するケースが多い。【０００９】
例えば画像等の不正利用であれば、目視による発見が容易である。しかしながら、モデルパラメータの不正利用を目視により発見することは容易ではない。これは、利用対象のモデルパラメータの一部が修正された上で、利用対象のモデルパラメータを初期値として再学習が行われると、モデル構造及びモデルパラメータのどちらもオリジナルとは一致しなくなるからである。【００１０】
非特許文献６、７は、動画像データに透かし情報を埋め込むために、ニューラルネットワークを用いる技術を提案している。これに対し、本願の発明者らは、ニューラルネットワークのモデルパラメータ自体に、透かし情報を埋め込むことはできないか、と考えた。即ち、一部が改変されたモデルパラメータを用いて再学習されたとしても、そのモデルパラメータから透かし情報を検出することができれば、不正利用となるモデルパラメータを検出することができるのではないか、と考えた。【００１１】
そこで、本発明は、ニューラルネットワークに透かし情報を埋め込む技術を提供する。
【課題を解決するための手段】
【００１２】
本発明の一態様によると、情報処理方法は、第１ニューラルネットワークの重みに透かしビットを埋め込むための情報処理方法であって、前記第１のニューラルネットワークの複数の重みから求めた複数の入力値を、第２のニューラルネットワークへ入力し、前記第２のニューラルネットワークの出力を得ることと、前記第２のニューラルネットワークの出力と前記透かしビットとの誤差に基づき、前記複数の入力値それぞれの第２勾配を求めることと、誤差逆伝播法に基づき求めた前記第１のニューラルネットワークの重みの第１勾配と、前記第２勾配と、を加算した値に基づき、当該重みを更新することと、を含む。
【発明の効果】
【００１３】
本発明によれば、ニューラルネットワークに透かし情報を埋め込むことができる。【００１４】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１５】
【図１】ニューラルネットワークの一般的な機能構成図である。
【図２】入力データと特徴マップとの畳み込みの関係を表す説明図である。
【図３】重みフィルタを用いた特徴マップの生成を表す説明図である。
【図４】Ｎ個の重みフィルタとＮ段の特徴マップとの関係を表す説明図である。
【図５】一実施形態による情報処理装置における情報処理方法の説明図である。
【図６】一実施形態による情報処理方法における処理ステップを表す説明図である。
【図７】一実施形態による第２のニューラルネットワークの構成図である。
【図８Ａ】一実施形態による平均重みフィルタの各重みと、各透かしビットとの対応を表す説明図である。
【図８Ｂ】一実施形態による平均重みフィルタの各重みと、各透かしビットとの対応を表す説明図である。
【図９】一実施形態の第２のニューラルネットワークによる、他のニューラルネットワークの重みフィルタからの透かし情報の抽出を表す説明図である。
【図１０】一実施形態による既存のニューラルネットワークの出力結果を教師データとして学習することを表す説明図である。
【図１１】一実施形態による情報処理装置の構成図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
【００１７】
図１は、ニューラルネットワークの一般的な機能構成図である。
【００１８】
ニューラルネットワークとしては、様々な構成があるが、基本的には複数種類の層の重ね合わせ（又はグラフ構造）で表現される。ニューラルネットワークには、入力データと正解ラベルとが対応付けられた教師データが入力される。そして、ニューラルネットワークは、入力データに対する最終的な出力結果が、その正解ラベルと一致するように、モデルパラメータを学習する（タスクに応じて入力に対する出力を近似させる）。
【００１９】
図１によれば、順伝播型ニューラルネットワークは、入力層(input layer)と、隠れ層(hidden layer)と、出力層(output layer)との３つの層から構成され、入力データは、入力層から出力層へ向けて一方向に伝播する。隠れ層は、複数の層から構成することができる。各層は、複数のユニット（ニューロン）を持ち、前方層のユニットから後方層のユニットの入力それぞれには、「重み(weight)」と呼ばれるパラメータが対応付けられる。学習とは、適切な「重み」を算出することにある。
【００２０】
図１には、畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)が表されている。畳み込みニューラルネットワークは、入力層と、畳み込み層(convolutional layer)と、プーリング層(pooling layer)と、全結合層(full-connected layer)と、出力層とから構成される。
【００２１】
学習とは、入力データに対する出力層からの出力データと、当該入力データに対する正解ラベルとの誤差を用いて、各層の重みを最適に更新することをいう。その誤差を算出するために、「損失関数」(loss function)が定義される。誤差は、「誤差逆伝播法」によって、出力層側から入力層側へ向けて次々に伝播され、これにより各層の重みを少しずつ更新していく。最終的に、誤差が小さくなるように、各層の重みを適切な値に調整する収束計算を実行する。
【００２２】
図２は、入力データと特徴マップとの畳み込みの関係を表す説明図である。
【００２３】
図２における処理は、畳み込み層及び全結合層によって実行される。図２によれば、入力データに対して、１個の重みフィルタを使用することで１つの特徴マップを生成している。なお、本実施形態において、入力データ、重みフィルタ及び特徴マップのサイズは以下の通りである。
入力データ  ：32×32×3個の要素
重みフィルタ：5×5×3個の要素（重み）
特徴マップ  ：28×28個の要素
【００２４】
なお、重みフィルタは、Ｎ個分用意され、これがモデルパラメータとなる。即ち、本例において、モデルパラメータとは、Ｎ個の重みフィルタを意味する。但し、ここでは、バイアス項は考慮しないものとする。
【００２５】
図３は、重みフィルタを用いた特徴マップの生成を表す説明図である。
【００２６】
図３によれば、5×5×3個の重みを有する１個の重みフィルタを、入力データに充てて、入力データと重みフィルタの対応する位置の値の積を積算した値を、特徴マップの１個の要素の値とする。そして、同じ重みフィルタを、入力データに対して移動させて、１枚の特徴マップを生成する。ここで、移動させる要素の数（移動量）を「ストライド(stride)」と称す。入力データの周囲の縁（ふち）には、要素0を埋めたゼロパディング(zero-padding)の領域を設けることができる。これによって、入力データの縁の要素にも、同数の重みフィルタをあてることができる。
【００２７】
図４は、Ｎ個の重みフィルタとＮ段の特徴マップとの関係を表す説明図である。
【００２８】
重みフィルタは、Ｎ個から構成される。図２及び図３によれば、１個の重みフィルタによって１枚の特徴マップが生成される。したがって、図４に示す様に、Ｎ個の重みフィルタによって、Ｎ段の特徴マップが生成される。
【００２９】
図５は、本実施形態による情報処理装置における情報処理方法の説明図である。
【００３０】
本実施形態においては、透かしビット、より詳しくは、透かしビットの数及び各ビットの値（０又は１）を予め定義する。以下の説明においては、透かしビットの数をＢとする。図５に示す様に、情報処理装置は、目的タスク用の第１のニューラルネットワークと、第２のニューラルネットワークとを構成するための情報をそれぞれ保持している。目的タスクとは、例えば画像認識や音声認識、自然言語処理に基づくニューラルネットワークにおけるその利用用途に基づくタスクをいう。第２のニューラルネットワークは、第１のニューラルネットワークの重み（モデルパラメータ）に基づく値から透かしビットを抽出するためのニューラルネットワークである。なお、以下の説明において、第２のニューラルネットワークが抽出した透かしビットを、予め定義した透かしビットと区別するため、第２のニューラルネットワークが抽出（出力）した透かしビットを抽出透かしビットと呼ぶものとする。第２のニューラルネットワークに対しても、抽出透かしビットと、透かしビットとの誤差を評価するための損失関数が定義される。なお、第２のニューラルネットワークの構成及び各パラメータについては後述するが、そのパラメータ（重み）の値は予め決定した値で固定される。つまり、第２のニューラルネットワークは、第１のニューラルネットワークの重みに基づく値を入力とし、透かしビットと同じ数の抽出透かしビットを出力する固定的な関数でもある。
【００３１】
通常のニューラルネットワークの学習においては、各重みそれぞれについて、誤差逆伝播法により勾配を求め、各重みを対応する勾配に基づき更新することを繰り返す。本実施形態でも、第１のニューラルネットワークに入力データを入力し、その入力データに対する正解ラベルに基づき、第１のニューラルネットワークの各重みそれぞれについて第１の勾配ΔＥを求める。また、このとき、第１のニューラルネットワークの各重みから求めた平均重みを第２のニューラルネットワークに入力して抽出透かしビットを出力させる。そして抽出透かしビットと透かしビットとの誤差に基づき、入力された平均重みそれぞれについて誤差逆伝播法により第２の勾配ΔＡＥを求める。なお、通常のニューラルネットワークでは、入力データではなく、変数である重みについての勾配を求める。しかしながら、上述したように、本実施形態において第２のニューラルネットワークのパラメータ（重み）は、固定値であり、本実施形態では、通常とは逆に、入力データであり、第１のニューラルネットワークの重みから計算される平均重みそれぞれについての第２の勾配を求める。これは、第１のニューラルネットワークの重みから求められる平均重みが、第２のニューラルネットワークのパラメータ（重み）であり、あらかじめ決定した固定的な値が、第２のニューラルネットワークへの入力データとして重みを更新しているのと等価である。そして、第１のニューラルネットワークの各重みについて求めた第１の勾配に、第２のニューラルネットワークの入力データである各平均重みについて求めた第２の勾配を加算し、第１のニューラルネットワークの各重みについては加算後の勾配に基づき調整を行う。以下、図６により、情報処理装置における情報処理方法について詳細に説明する。
【００３２】
図６は、情報処理方法の処理ステップを表す説明図である。
【００３３】
（Ｓ１１）最初に、第１のニューラルネットワークの「重み」に基づく値を、第２のニューラルネットワークへ入力する。本実施形態では、Ｎ個の重みフィルタから平均重みフィルタを求め、平均重みフィルタの各重みを第２のニューラルネットワークへの入力とする。平均重みフィルタの各位置の重みは、Ｎ個の重みフィルタそれぞれの対応する位置の重みの平均値である。例えば、第１のニューラルネットワークの１つの「重みフィルタ」のサイズが、図２に示す様にＭ＝５×５×３であると、平均重みフィルタは、図６に示す様に５×５×３の重みを有し、この合計７５個の値が第２のニューラルネットワークに入力される。具体的には、第１のニューラルネットワークのｎ番目のフィルタ（ｎは１からＮの整数）の位置ｗ×ｈ×ｃの重みをＦｎｗｈｃと表記し、平均重みフィルタの位置ｗ×ｈ×ｃの重みをＰｗｈｃと表記すると、
Ｐｗｈｃ＝Σｎ＝１ＮＦｎｗｈｃ／Ｎ
である。
【００３４】
ここで、平均重みフィルタを第２のニューラルネットワークへの入力とする理由は、Ｎ個の重みフィルタに対して、入力データに充てる順序を入れ替える改変を考慮したからである。Ｎ個の重みフィルタの順序を入れ替えたとしても、本質的には同等のニューラルネットワークが構成される。したがって、個々の重みフィルタに透かし情報を埋め込むことができたとしても、重みフィルタを充てる順序を入れ替えることによって、簡単に透かし情報が破壊されてしまう。そのために、本発明によれば、Ｎ個の重みフィルタの重みを平均した「平均重みフィルタ」を生成し、第２のニューラルネットワークの入力としている。
【００３５】
（Ｓ１２）第２のニューラルネットワークは、平均重みフィルタの各重みが入力されると、抽出透かしビットを出力し、これは、透かしビットと比較される。そして、本実施形態では、平均重みフィルタの各重みを変数とみなして誤差逆伝播法により、平均重みフィルタの各重みについて、第２の勾配ΔＡＥを求める。以下では、平均重みフィルタの重みＰｗｈｃについて求められる第２の勾配を、ΔＡＥｗｈｃと表記する。第１のニューラルネットワークは、入力データが入力されると出力データを出力し、これは教師ラベルと比較される。そして、第１のニューラルネットワークについては、通常通り、誤差逆伝播法により、各重みについて第１の勾配ΔＥが生成される。以下では、重みＦｎｗｈｃについて求められる第１の勾配をΔＥｎｗｈｃと表記する。
【００３６】
（Ｓ１３）そして、第１のニューラルネットワークの重みＦｎｗｈｃは、勾配ΔＥｎｗｈｃとΔＡＥｗｈｃとの和、又は、ΔＡＥｗｈｃに所定の係数を乗じた値と勾配ΔＥｎｗｈｃとの和に基づき更新される。例えば、第１のニューラルネットワークのフィルタ数がＮであるため、ΔＡＥｗｈｃに乗ずる所定の係数は、１／Ｎとすることができる。この様に、第１のニューラルネットワークの重みは、当該重みについて求めた第１の勾配と、当該重みから求めた第２のニューラルネットワークの入力について求めた第２の勾配との和に基づき更新される。
【００３７】
この様に、第１のニューラルネットワークの学習において、第１のニューラルネットワークの誤差を最小化すると同時に、第２のニューラルネットワークの誤差も最小化する。図６の処理を繰り返すことで、第１のニューラルネットワークの重みフィルタに透かし情報を埋め込むことができる。
【００３８】
図７は、本実施形態による第２のニューラルネットワークの一例を示している。
【００３９】
図７は、第２のニューラルネットワークの層構成を表している。図７は、第２のニューラルネットワークを、１層又は多層パーセプトロンで構成した例を示している。なお、この構成においては、上述した様に、第２のニューラルネットワークの各重みは予め決定され、決定された値で固定される。この様に、第２のニューラルネットワークは、入力データ（平均重みフィルタの重み）に対して所定の演算を行うものである。
【００４０】
一般に、損失関数は、畳み込み層及び全結合層のパラメータに対して、正則化を施し、過学習を防ぐために用いられる（例えば非特許文献９及び１０参照）。これに対し、第２のニューラルネットワークでは、透かし情報を平均重みフィルタのパラメータに埋め込むために損失関数を定義しており、本質的な目的が全く異なっている。勿論、損失関数については、情報の埋め込み方法に応じて様々な実施形態を適用することができる。
【００４１】
「パーセプトロン」とは、入力値ｚに重み付けした値から、活性化関数を用いて、２値（０又は１）の一方を出力するモデルをいう。活性化関数は、脳のシナプスが、ある閾値を超えると発火するという動きを模倣したものである。活性化関数としては、例えば、シグモイド関数、線形結合関数、ハードシグモイド関数、ｔａｎｈ関数(hyperbolic tangent function)、ソフトサイン関数、ソフトプラス関数、ＲｅＬＵ(Rectified Linear Unit)を用いたものであってもよい。
【００４２】
第２のニューラルネットワークに基づく１層又は多層パーセプトロンは、例えば以下のような４つの実施形態のいずれであっても良い。
【００４３】
＜第１の実施形態＞
第２のニューラルネットワークに基づく１層又は多層パーセプトロンは、最終出力のための活性化関数としてシグモイド関数(sigmoid function)を用いる。また、誤差は、損失関数としてのバイナリ交差エントロピー(binary cross-entropy)によって計算する。シグモイド関数とは、入力値ｚとして実数全体（−∞〜＋∞）を値域とし、出力値ｙとして０〜１を値域とする。
ｙ＝１／(１＋ｅ-z)
バイナリ交差エントロピーとは、２つのパターンについて、一方の確率がｐのとき、他方の確率は１−ｐとなる。即ち、特定の確率分布に従って生成されたものを直交化したものである。すなわち、第２のニューラルネットワークの損失関数は、
−｛ｔｂlogＯｂ＋(１−ｔｂ)log(１−Ｏｂ)｝
とすることができる。ここで、
Ｏｂ：ｂビット目の抽出透かしビット（ｂは１〜Ｂ）
ｔｂ：ｂビット目の透かしビット（ｂは１〜Ｂ）
【００４４】
即ち、通常のクラス分類タスクについて、２値に分類する場合と同様に損失関数を定義すればよい。更に、一般的には、全結合層に中間層を追加し、多層パーセプトロンを構成することによって、非線形に埋め込むこともできる。
【００４５】
＜第２の実施形態＞
第２のニューラルネットワークに基づく１層又は多層パーセプトロンは、入力となる平均重みの各重みから透かしビットと同じ個数の重みをそれぞれ、活性化関数の入力として用いて、最終出力を計算するものであってもよい。
【００４６】
＜第３の実施形態＞
第２のニューラルネットワークに基づく１層又は多層パーセプトロンは、入力となる平均重みの各重みから、透かし情報のビット数と同じ個数のペアを取り出し、各ペアの差分をそれぞれ、活性化関数の入力として用いて、最終出力を計算するものであってもよい。
【００４７】
＜第４の実施形態＞
第２のニューラルネットワークに基づく１層又は多層パーセプトロンのあらかじめ決定される固定的な重みは、特定の確率分布によって生成されたものであってもよい。特定の確率分布とは、一様分布又は正規分布である。また、多層パーセプトロンのあらかじめ決定される固定的な重みは、特定の確率分布に従って生成されたものを直交化したものであってもよい。
【００４８】
また、第２のニューラルネットワークは、Ｂ個の重みベクトルＸ１〜ＸＢを、あらかじめ決定された固定的な重みとして有するものとすることもできる。ここで、ベクトルＸ１〜ＸＢは、それぞれ、Ｗ×Ｈ×Ｃ個の固定値を要素として有する。そして、第２のニューラルネットワークは、入力データであるＷ×Ｈ×Ｃ個の重みをベクトルＩとし、ベクトルＸｂ（ｂは１〜Ｂの整数）とベクトルＩの内積を、抽出透かしビットＯｂとして求めることができる。重みベクトルＸ１〜ＸＢは、例えば、何かしらの確率分布（例えば平均０分散１の正規分布）に従う乱数から生成することができる。
【００４９】
また、重みベクトルＸ１〜ＸＢは、正規直交基底となるように設定したものであってもよい。これは、例えば、平均０分散１の正規分布から重みベクトルＸを生成し、それをグラムシュミットの直交化法等で直交化することによって実現できる。
【００５０】
更に単純には、図８Ａに示す様に、重みベクトルＸは、平均重みフィルタのＷ×Ｈ×Ｃ個の重みから、ランダムにＢ個を選択し、選択した重みを、それぞれ、透かしビットと１：１に対応付けるものであっても良い。選択した重みは、活性化関数の入力となり、活性化関数の出力が対応する透かしビットと比較される。更に、図８Ｂに示す様に、重みベクトルＸは、平均重みフィルタのＷ×Ｈ×Ｃ個の重みから、Ｂ個のペア（組）をランダムに選択し、選択したペアを、それぞれ、透かしビットと１：１に対応付けるものであっても良い。そして、ペアの２つの重みの差が活性化関数の入力となり、活性化関数の出力が対応する透かしビットと比較される。
【００５１】
図９は、平均重みフィルタからの透かし情報の抽出を表す説明図である。図９によれば、Ｎ個の重みフィルタから、以下のステップによって、透かし情報を抽出する。（Ｓ２１）最初に、Ｎ個の重みフィルタから平均重みフィルタを算出する。（Ｓ２２）そして、第２のニューラルネットワークに平均重みフィルタの各重みを入力する。これにより、第２のニューラルネットワークは、抽出透かしビットを出力する。ここで、第２のニューラルネットワークが、１層又は多層パーセプトロンである場合、その出力が所定閾値（例えば0.5）以上であれば"1"を出力し、それ以外であれば"0"を出力することによって、透かしビットを抽出するものであってもよい。
【００５２】
抽出透かしビットと、透かしビットとの比較は、対応するビット列を比較し、それらのハミング距離が所定閾値以下であれば、抽出透かしビットは、透かしビットと一致する判定することができる。
【００５３】
図１０は、既存のニューラルネットワークの出力結果を教師データとして学習することを表す説明図である。
【００５４】
図５は、新規に、モデルパラメータ（重み）を学習する際に透かし情報を埋め込むことを表しているのに対し、図１０は、既に学習済みのモデルパラメータを初期値として用いて、再学習によって透かし情報を埋め込むことを表している。
【００５５】
既に学習済みのモデルパラメータを用いる場合、教師データとしての正解ラベルを利用できないことも当然に想定される。その場合、本発明によれば、教師データ無しに、既に学習済みの重みフィルタに透かし情報を埋め込むこともできる。
【００５６】
図１０によれば、図５と比較して、教師データとしての出力データを得るために、目的タスク用に、既存のニューラルネットワーク及び第１のニューラルネットワークの２つを有する。第１のニューラルネットワークは、既存のニューラルネットワークで既に学習済みのモデルパラメータを（重みフィルタ）を初期値として設定した後、モデルパラメータの学習を実行する。ここでは、既存のニューラルネットワーク及び第１のニューラルネットワークの両方に、何らかの同一のデータが入力される。これに対し、第１のニューラルネットワークは、既に学習済みのモデルパラメータ（重みフィルタ）を用いて、データを出力する。第１のニューラルネットワークは、既に学習済みの既存のニューラルネットワークから出力されたデータを教師データの「正解ラベル」として、損失関数を最小化するように学習する。
【００５７】
前述では、畳み込み層に対するモデルパラメータに、透かし情報を埋め込むことについて説明した。尚、全結合層であっても、前方層の出力次元数のパラメータを持つ重みフィルタがＮ個あるものと考えることができる（バイアス項を除く）。この重みフィルタを畳み込み層と同様に平均化し、前方層の出力次元数の平均重みフィルタを算出することができる。畳み込み層への埋め込みと同様に、Ｂ個の出力を持つ1つ以上の全結合層を構築することで、全く同じく、透かし情報を埋め込むことができる。
【００５８】
図１１は、本実施形態による情報処理装置の構成図である。保持部１０は、第１のニューラルネットワーク及び第２のニューラルネットワークの構成を示す情報を保持している。平均重みフィルタ計算部３０は、保持部１０が保持する第１のニューラルネットワークの重みフィルタから、第２のニューラルネットワークへの入力データである平均重みフィルタを計算する。抽出透かしビット計算部４０は、平均重みフィルタ計算部３０が計算した平均重みフィルタと、保持部１０が保持する第２のニューラルネットワークの構成を示す情報に基づき、抽出透かしビットを求める。勾配計算部５０は、抽出透かしビット計算部４０が求めた抽出透かしビットと、透かしビットと、第２のニューラルネットワークの損失関関数に基づき、平均重みフィルタの各重みについて第２の勾配を求める。学習部２０は、保持部１０が保持する第１のニューラルネットワークの学習を行う。具体的には、通常のニューラルネットワークの学習と同様に、教師データ群に基づき、各重みフィルタの各重みについて、第１の勾配を求める。そして、ある重みについては、当該重みについて求めた第１の勾配と、当該重みにより算出された平均重みフィルタの重みについて勾配計算部５０が求めた第２の勾配との和に基づき、更新する。
【００５９】
以上、詳細に説明したように、本発明によると、ニューラルネットワークに透かし情報を埋め込むことができる。なお、本発明は、コンピュータの１つ以上のプロセッサで実行されることで、当該コンピュータを上記情報処理装置として機能させる、或いは、当該コンピュータに上記情報処理方法を実行させるプログラムとして実現することもできる。これら、プログラムは、コンピュータ可読記憶媒体に格納されて、或いは、ネットワーク経由で配布される。
【００６０】
本発明によれば、深層学習の畳み込みニューラルネットワークで用いられるモデルパラメータについて、その学習時に、モデルパラメータの改変を検出できる透かし情報を埋め込むことができる。特に、悪意の第三者によって改変（例えば重みフィルタの順序を入れ替える等）がなされたとしても、学習時におけるパラメータに関する損失関数を適切に設定することによって、透かし情報を埋め込むことができる。透かし情報が埋め込まれたモデルパラメータを作成することによって、著作者に無断で行われる流用配布や不正利用を検出することができる。
【００６１】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【００６２】
本願は、２０１７年１月１２日提出の日本国特許出願特願２０１７−００３０４１を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
【図１】
0006727340.tif 000002
【図２】
0006727340.tif 000003
【図３】
0006727340.tif 000004
【図４】
0006727340.tif 000005
【図５】
0006727340.tif 000006
【図６】
0006727340.tif 000007
【図７】
0006727340.tif 000008
【図８Ａ】
0006727340.tif 000009
【図８Ｂ】
0006727340.tif 000010
【図９】
0006727340.tif 000011
【図１０】
0006727340.tif 000012
【図１１】
0006727340.tif 000013