(57)【要約】      （修正有）【課題】出所を特定することができる学習モデルを提供するとともに、詐称透かしでないことを示すことができる技術を提供する。【解決手段】情報処理装置において、重み更新部１１０は、訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新する。重みベクトル生成部１１１は、ニューラルネットワークを構成する層の中から選択した層の重みを要素とする重みベクトルを生成する。行列生成部１１２は、ニューラルネットワークに埋め込む透かしベクトルを検出するための透かし検出用行列を生成する。透かしベクトル生成部１１３は、透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成する。ここで、重み更新部１１０は、重みベクトルと透かし検出用行列とから得られるベクトルと透かしベクトルの誤差を小さくすることを拘束条件としてニューラルネットワークの各層の重みを更新する。【選択図】図６
2019185417.tif 000002
【特許請求の範囲】
【請求項１】
目的タスク学習用の入力データを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新する重み更新部と、
前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成する重みベクトル生成部と、
前記ニューラルネットワークに埋め込む透かしベクトルを検出するための透かし検出用行列を生成する行列生成部と、
前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成する透かしベクトル生成部と、を備え、
前記重み更新部は、前記重みベクトルと透かし検出用行列とから得られるベクトルと透かしベクトルとの誤差を小さくすることを拘束条件として前記ニューラルネットワークの各層の重みを更新する情報処理装置。
【請求項２】
前記行列生成部は、前記ニューラルネットワークに関する付加情報を初期行列に埋め込むことにより、前記透かし検出用行列を生成する、
請求項１に記載の情報処理装置。
【請求項３】
前記行列生成部は、前記ニューラルネットワークに関する付加情報自体を前記透かし検出用行列として生成する、
請求項１に記載の情報処理装置。
【請求項４】
前記透かしベクトル生成部は、前記透かし検出用行列の成分を前記所定のハッシュ関数に入力して得られる前記ベクトルと、前記ニューラルネットワークに関する付加情報である付加ベクトルとの排他的論理和で得られるベクトルを、前記透かしベクトルとして設定する、
請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
検出対象のニューラルネットワークから生成した重みベクトルに透かし検出用行列を乗じた結果に２値化を適用したデータと前記付加ベクトルとの排他的論理和を取得することで、透かしベクトルを検出する透かし検出部をさらに備える、
請求項４に記載の情報処理装置。
【請求項６】
前記行列生成部は、前記重みベクトルの長さをＰ、前記ハッシュ関数が出力するハッシュ値であるベクトルの長さをＱとしたとき、列の長さがＰ、行の長さがＱである行列を前記透かし検出用行列として生成する、
請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
プロセッサが実行する情報処理方法であって、
目的タスク学習用のデータを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新するステップと、
前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成するステップと、
前記ニューラルネットワークに埋め込む透かしを検出するための透かし検出用行列を生成するステップと、
前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成するステップと、を含み、
前記重みを更新するステップにおいて、前記重みベクトルと透かし検出用行列とから得られるベクトルと、透かしベクトルとの誤差を小さくすることを拘束条件として前記重みを更新する、
情報処理方法。
【請求項８】
コンピュータに情報処理機能を実現させるプログラムであって、
目的タスク学習用のデータを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新する機能と、
前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成する機能と、
前記ニューラルネットワークに埋め込む透かしを検出するための透かし検出用行列を生成する機能と、
前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成する機能と、を前記コンピュータに実現させ、
前記重みを更新する機能は、前記重みベクトルと透かし検出用行列とから得られるベクトルと、透かしベクトルとの誤差を小さくすることを拘束条件として前記ニューラルネットワークの各層の重みを更新する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）及びＧＰＵ（Graphics Processing Unit）の高速化、メモリの大容量化、及び機械学習技術が急速に進んできている。このため、数十万から百万といったオーダーの学習データを用いる機械学習が可能となり、精度の高い識別技術や分類技術が確立されつつある（非特許文献１参照）。
【０００３】
また、上記の機械学習によって生成された学習モデルのモデルパラメータに出所や提供先等の電子透かしを埋め込むことで出所を特定するための技術も提案されている（非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Yangqing Jia, Evan Shelhamer, Jeff Donahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, and Trevor Darrell. Caffe: Convolutional architecture for fast feature embedding. In Proceedings of the 22nd ACM international conference on Multimedia (pp. 675-678). ACM.
【非特許文献２】Yusuke Uchida, Yuki Nagai, Shigeyuki Sakazawa, and Shin’ichi Satoh. :Embedding Watermarks into Deep Neural Networks. In Proceedings of the 2017 ACM on International Conference on Multimedia Retrieval, ser. ICMR 2017  (pp.269-277), 2017.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非特許文献２に開示されている技術は、固定された非公開の透かし検出行列に、学習モデルのモデルパラメータの一部から構成されるベクトルに乗じて得られるベクトルを２値化処理したベクトルが、透かしベクトルとなるように学習モデルが生成される。透かし検出行列は非公開であるため、事後的に第三者によって本来の透かし検出行列とは異なる詐称の透かし行列が捏造される事態が起こり得る。
【０００６】
本発明はこれらの点に鑑みてなされたものであり、出所を特定することができる学習モデルを提供するとともに、詐称透かしでないことを示すことができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様は、情報処理装置である。この装置は、目的タスク学習用の入力データを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新する重み更新部と、前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成する重みベクトル生成部と、前記ニューラルネットワークに埋め込む透かしベクトルを検出するための透かし検出用行列を生成する行列生成部と、前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成する透かしベクトル生成部と、を備える。前記重み更新部は、前記重みベクトルと透かし検出用行列とから得られるベクトルと、透かしベクトルとの誤差を小さくすることを拘束条件として前記ニューラルネットワークの各層の重みを更新する。
【０００８】
前記行列生成部は、前記ニューラルネットワークに関する付加情報を初期行列に埋め込むことにより、前記透かし検出用行列を生成してもよい。
【０００９】
前記行列生成部は、前記ニューラルネットワークに関する付加情報自体を前記透かし検出用行列として生成してもよい。
【００１０】
前記透かしベクトル生成部は、前記透かし検出用行列の成分を前記所定のハッシュ関数に入力して得られる前記ベクトルと、前記ニューラルネットワークに関する付加情報である付加ベクトルとの排他的論理和で得られるベクトルを、前記透かしベクトルとして設定してもよい。
【００１１】
前記情報処理装置は、検出対象のニューラルネットワークから生成した重みベクトルに透かし検出用行列を乗じた結果に２値化を適用したデータと前記付加ベクトルとの排他的論理和を取得することで、透かしベクトルを検出する透かし検出部をさらに備えてもよい。
【００１２】
前記行列生成部は、前記重みベクトルの長さをＰ、前記ハッシュ関数が出力するハッシュ値であるベクトルの長さをＱとしたとき、列の長さがＰ、行の長さがＱである行列を前記透かし検出用行列として生成してもよい。
【００１３】
本発明の第２の態様は、プロセッサが実行する情報処理方法である。この方法において、前記プロセッサが、目的タスク学習用のデータを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新するステップと、前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成するステップと、前記ニューラルネットワークに埋め込む透かしを検出するための透かし検出用行列を生成するステップと、前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成するステップと、を含む。前記重みを更新するステップにおいて、前記重みベクトルと透かし検出用行列とから得られるベクトルと、透かしベクトルとの誤差を小さくすることを拘束条件として前記重みを更新する。
【００１４】
本発明の第３の態様は、コンピュータに情報処理機能を実現させるプログラムである。このプログラムは、前記コンピュータに、目的タスク学習用のデータを含む訓練データに基づいて、複数の層を備えるニューラルネットワークの各層の重みを更新する機能と、前記ニューラルネットワークを構成する層の中から選択した１又はそれ以上の層の重みを要素とする重みベクトルを生成する機能と、前記ニューラルネットワークに埋め込む透かしを検出するための透かし検出用行列を生成する機能と、前記透かし検出用行列の成分を所定のハッシュ関数に入力して得られるベクトルを透かしベクトルとして生成する機能と、を前記コンピュータに実現させる。前記重みを更新する機能は、前記重みベクトルと透かし検出用行列とから得られるベクトルと、透かしベクトルとの誤差を小さくすることを拘束条件として前記ニューラルネットワークの各層の重みを更新する。
【発明の効果】
【００１５】
本発明によれば、出所を特定することができる学習モデルを提供するとともに、詐称透かしでないことを示すことができる技術を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】畳み込みニューラルネットワークの一般的な機能構成を模式的に示す図である。
【図２】入力データと特徴マップとの畳み込みの関係を説明するための図である。
【図３】重みフィルタを用いた特徴マップの生成を説明するための図である。
【図４】Ｎ個の重みフィルタとＮ段の特徴マップとの関係を説明するための図である。
【図５】実施の形態に係る情報処理装置が実行する学習処理の概要を説明するための模式図である。
【図６】実施の形態に係る情報処理装置の機能構成を模式的に示す図である。
【図７】実施の形態に係る重みベクトル生成部による重み設定処理を説明するための図である。
【図８】透かしベクトルとは異なる付加情報の埋め込みを説明するための図である。
【図９】実施の形態に係る情報処理装置が実行する情報処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１７】
＜畳み込みニューラルネットワーク＞
実施の形態に係る情報処理装置は、ニューラルネットワークのモデルパラメータに透かし情報を埋め込むための装置であり、特に畳み込みニューラルネットワーク（Convolutional Neural Network；ＣＮＮ）が好適な対象となる。そこで、実施の形態に係る情報処理装置の前提技術として、まず畳み込みニューラルネットワークについて簡単に説明する。
【００１８】
図１は、畳み込みニューラルネットワークの一般的な機能構成を模式的に示す図である。
【００１９】
現在、様々な構成のニューラルネットワークが提案されているが、これらの基本構成は共通である。ニューラルネットワークの基本構成は、複数種類の層の重ね合わせ（又はグラフ構造）で表現される。ニューラルネットワークは、入力データに対する出力結果が適切な値になるようにモデルパラメータを学習する。言い換えると、ニューラルネットワークは、入力データに対する出力結果が適切な値になるように定義された損失関数を最小化するようにモデルパラメータを学習する。
【００２０】
図１において、順伝播型ニューラルネットワークとして、入力層（input layer）と、隠れ層（hidden layer）と、出力層（output layer）との３つの層から構成され、入力層から出力層へ向けて一方向に伝播する。隠れ層は、グラフ状に複数の層から構成することができる。各層は、複数のユニット（ニューロン）を持つ。各層において、前方層のユニットから後方層のユニットへつなぐ関数のパラメータを、「重み（weight）」と称す。本明細書における学習とは、この関数のパラメータとして、適切な「重み」を算出することである。
【００２１】
図１は、畳み込みニューラルネットワークを図示している。畳み込みニューラルネットワークは、入力層と、畳み込み層（convolutional layer）と、プーリング層（pooling layer）と、全結合層（full-connected layer）と、出力層とから構成される。図１において、第１層Ｌ１が入力層であり、第２層Ｌ２は畳み込み層である。同様に、第ｍ層Ｌｍが出力層となっている。畳み込みニューラルネットワークは、前方層における特定のユニットのみが、後方層のユニットへ結合されている。すなわち、畳み込みニューラルネットワークにおいては、前方層における全てのユニットが後方層のユニットへ結合されているものではない。
【００２２】
実施の形態に係るニューラルネットワークにおける学習は、訓練データに対する出力層からの出力値と訓練データのラベルとの誤差を用いて、各層の重みを最適に更新することを意味する。その誤差を算出するために、「損失関数」（loss function）が定義される。誤差は、「誤差逆伝播法」によって出力層側から入力層側へ向けて次々に伝播し、各層の重みを少しずつ更新していく。最終的に、誤差が小さくなるように、各層の重みを適切な値に調整する収束計算を実行する。具体的には、ニューラルネットワークにおける学習（すなわち、新規のモデルパラメータの生成段階）で、誤差を逆伝播させた勾配によって、モデルパラメータを更新する。
【００２３】
図２は、入力データと特徴マップとの畳み込みの関係を説明するための図である。図２における処理は、畳み込み層及び全結合層によって実行される。図２に示す例では、入力データに対して１個の重みフィルタをかけることにより、特徴マップを生成している。図２において、入力データ、重みフィルタ、及び特徴マップのサイズはそれぞれ以下のとおりである。
入力データ  ：３２×３２×３個の要素
重みフィルタ：５×５×３個の要素  （モデルパラメータ）
特徴マップ  ：２８×２８個の要素
【００２４】
重みフィルタはＮ個（Ｎは１以上の整数。）分用意され、これがモデルパラメータとなる。すなわち、「重み」とは、Ｎ個の重みフィルタを意味する。ただし、ここでは、バイアス項は考慮しないものとする。
【００２５】
図３は、重みフィルタを用いた特徴マップの生成を説明するための図である。
図３に示す例では、５×５×３個の要素からなる１個の重みフィルタを入力データにかけ、その各要素の積の和を特徴マップの１個の要素の値とする。そして、入力データに対して同じ重みフィルタを移動させることにより、１枚の特徴マップを生成する。ここで、重みフィルタを移動させる要素の数（移動量）を「ストライド（stride）」と称す。入力データの周囲の縁（ふち）には、要素０を埋めたゼロパディング（zero-padding）の領域を設ける。これによって、入力データの縁の要素にも、同数の重みフィルタをあてることができる。
【００２６】
図４は、Ｎ個の重みフィルタとＮ段の特徴マップとの関係を説明するための図である。図４に示す例では、重みフィルタの数はＮ個である。図２及び図３は、１個の重みフィルタによって生成された１枚の特徴マップが生成される場合の例が示されている。これに対し、図４に示す例は、Ｎ個の重みフィルタによってＮ段の特徴マップが生成される場合の例が示されている。ニューラルネットワークの学習では、ある層における特徴マップが、次の層における入力データとなる。ニューラルネットワークの学習を実行することにより、損失関数に基づく誤差が出力層側から入力層側へ向けて次々に伝播し、既知の誤差逆伝播法によって各層の重みが更新される。
【００２７】
＜実施の形態の概要＞
以上を前提として、実施の形態の概要を述べる。
実施の形態に係る情報処理装置は、ニューラルネットワークを用いて目的タスクを達成するための学習モデルを生成すると同時に、その学習モデルに対して電子的な透かしを埋め込むための装置である。さらに、実施の形態に係る情報処理装置は、電子的な透かしを検出する装置が後から作成したものでないことを示せる装置である。
【００２８】
実施の形態に係る情報処理装置は、ＣＰＵやＧＰＵ等のプロセッサ、ＤＲＡＭ（Dynamic Random Access Memory）等の作業メモリ、及びＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の大容量記憶装置によって構成される。情報処理装置１は、ＰＣ（Personal Computer）やワークステーション、サーバ等の単一の装置であってもよいし、クラウドサーバのように複数の装置から構成されてもよい。
【００２９】
図５は、実施の形態に係る情報処理装置が実行する学習処理の概要を説明するための模式図である。実施の形態に係る情報処理装置は、従来のニューラルネットワークと同様に、目的タスク学習用の入力データＤ及び第１ラベルＴ１を含む訓練データに基づいて、複数の層Ｌを備える第１ニューラルネットワークＮ１の各層Ｌの重みを更新する。例えば、「猫検出」、「山検出」、「自動車検出」のように複数の目的タスクが存在する場合、各目的タスク用の入力データＤと、各入力データＤそれぞれに異なる第１ラベルＴ１を割り当てたデータセットが、訓練データとなる。
【００３０】
また、実施の形態に係る情報処理装置は、第１ニューラルネットワークを構成する層Ｌの中から選択した１又はそれ以上の層Ｌを入力データとする第２ニューラルネットワークＮ２も備える。第２ニューラルネットワークＮ２は、第１ニューラルネットワークを構成する層Ｌの中から選択した層Ｌに透かしベクトルを埋め込むためのニューラルネットワークである。なお、図５は、第１ニューラルネットワークＮ１における第２層Ｌ２が、第２ニューラルネットワークＮ２における重みの更新対象として選択された場合の例を示している。
【００３１】
詳細は後述するが、実施の形態に係る情報処理装置は、第１ニューラルネットワークＮ１から選択した層Ｌに基づいて重みベクトルＷを生成する。実施の形態に係る情報処理装置は、生成した重みベクトルＷに対する全結合層の出力を、第２ニューラルネットワークＮ２の出力である第２出力Ｏ２とする。すなわち、第２出力Ｏ２は、重みベクトルＷに「透かし検出用行列Ｘ」を乗じて生成されるベクトルにバイアス値を足して活性化関数を適用したものに相当する。ここでは、第２ニューラルネットワークＮ２が単層パーセプトロンであることを想定して説明するが、多層パーセプトロンやその他ネットワークでも透かし検出用行列を複数用意すれば良く、適用可能である。
【００３２】
実施の形態に係る情報処理装置は、第２出力Ｏ２に活性化関数ｓを適用した値と、第２ラベルＴ２との第２誤差Ｅ２に基づいて、重みベクトルＷを更新する。情報処理装置は、バイアス値を０とすると、重みベクトルＷに透かし検出用行列Ｘを乗じて生成されるベクトルに活性化関数ｓを適用した値Ｓ（ＸＷ）が第２ラベルＴ２となるように学習するため、第２ラベルＴ２が埋め込みたい透かしベクトルとなる。したがって、以下本明細書において、「第２ラベルＴ２」と「埋め込みたい透かしベクトル」とは、同一のベクトルを示すものとする。以下、埋め込みたい透かしベクトルを第２ラベルＴ２と同じ符号を用いて「透かしベクトルＴ２」とも記載する。なお、検出される透かしベクトルはＤ２で表記する。
【００３３】
ここで、実施の形態に係る情報処理装置において、透かし検出用行列Ｘと第２ラベルＴ２とは第１のニューラルネットワークの学習開始前から固定されている。さらに、透かし検出用行列Ｘと第２ラベルＴ２とは互いに独立しておらず、第２ラベルＴ２は、透かし検出用行列Ｘを所定のハッシュ関数Ｈに入力して生成されるハッシュ値Ｈ（Ｘ）となっている。実施の形態に係る情報処理装置は、透かし検出時に、モデルパラメータから取り出した重みベクトルに透かし検出用行列を乗じ閾値処理を行うことで、モデルパラメータに埋め込んだ透かしベクトルＤ２を取り出すことができる。実施の形態に係る情報処理装置は、透かしベクトルＤ２と透かし検出行列のハッシュ値Ｈ（Ｘ）が等しいことを、学習後に捏造した透かしや透かし検出行列でないことの根拠とする。
【００３４】
実施の形態に係る情報処理装置は、従来のニューラルネットワークと同様に、第１ニューラルネットワークＮ１の最終層である第ｍ層Ｌｍの出力である第１出力Ｏ１と、第１ラベルＴ１との誤差である第１誤差Ｅ１に基づいて、各層Ｌの重みを更新することを基本とする。しかしながら、実施の形態に係る情報処理装置は、第２ニューラルネットワークＮ２を構成する重みとして選択した第２層Ｌ２に関しては、第１誤差Ｅ１と第２誤差Ｅ２とに基づいて重みを更新する。つまり、第２ニューラルネットワークＮ２を構成する重みとして選択した第２層Ｌ２に関しては実施の形態に係る情報処理装置は、透かし検出用行列Ｘを乗じて得られるベクトルが透かしベクトルとなることを拘束条件として、重みを更新することになる。
【００３５】
これにより、実施の形態に係る情報処理装置は、目的タスクのための学習と透かし埋め込みのための学習とを同時に実現することができる。また、透かし検出用行列Ｘと透かしベクトルである第２ラベルＴ２とはハッシュ関数で結びついているため、学習が終了して重みベクトルが固定された後は、その重みベクトルに何らかの行列を乗じて所望の透かしベクトルＴ２ａｔｋを生成することは困難となる。これにより、事後的に第三者が自身の所有を主張するために透かし検出用行列Ｘと透かしベクトルとを捏造することを抑制できる。
【００３６】
実施の形態に係る情報処理装置を用いてモデルパラメータを生成した者は、モデルパラメータから取り出した重みベクトルに透かし検出用行列を乗じ閾値処理を行うことで、モデルパラメータに埋め込んだ透かしベクトルを取り出すことができる。実施の形態に係る情報処理装置は、検出時に、モデルパラメータから取り出した重みベクトルに透かし検出用行列を乗じ閾値処理を行うことで、モデルパラメータに埋め込んだ透かしベクトルＤ２を取り出すことができる。実施の形態に係る情報処理装置は、透かしベクトルＤ２と透かし検出行列のハッシュ値Ｈ（Ｘ）が等しければ、学習後に捏造した透かしや透かし検出行列でないことを示すことができる。このように、実施の形態に係る情報処理装置は、出所を特定することができる学習モデルを提供することができるとともに、詐称透かしでないことを示すことができる。
【００３７】
＜実施の形態に係る情報処理装置の機能構成＞
以下、実施の形態に係る情報処理装置についてより詳細に説明する。
図６は、実施の形態に係る情報処理装置１の機能構成を模式的に示す図である。情報処理装置１は、記憶部１０と制御部１１とを備える。制御部１１は、重み更新部１１０、重みベクトル生成部１１１、行列生成部１１２、透かしベクトル生成部１１３、及び透かし検出部１１４を備える。
【００３８】
記憶部１０は、情報処理装置１を実現するコンピュータのＢＩＯＳ（Basic Input Output System）等を格納するＲＯＭ（Read Only Memory）や情報処理装置１の作業領域となるＲＡＭ（Random Access Memory）、ＯＳ（Operating System）やアプリケーションプログラム、当該アプリケーションプログラムの実行時に参照される種々の情報を格納するＨＤＤやＳＳＤ等の大容量記憶装置である。
【００３９】
制御部１１は、情報処理装置１のＣＰＵやＧＰＵ等のプロセッサであり、記憶部１０に記憶されたプログラムを実行することによって重み更新部１１０、重みベクトル生成部１１１、行列生成部１１２、及び透かしベクトル生成部１１３として機能する。
【００４０】
重み更新部１１０は、目的タスク学習用の入力データＤを含む訓練データを記憶部１０から読み出して取得する。重み更新部１１０は、取得した訓練データに基づいて、複数の層Ｌを備える第１ニューラルネットワークＮ１の各層Ｌの重みを更新する。
【００４１】
重みベクトル生成部１１１は、第１ニューラルネットワークＮ１を構成する層Ｌの中から１又はそれ以上の層Ｌを選択する。重みベクトル生成部１１１は、選択した層Ｌの重みを要素とする重みベクトルＷを生成する。
【００４２】
行列生成部１１２は、第１ニューラルネットワークＮ１に埋め込む透かしベクトルＴ２を検出するための透かし検出用行列Ｘを生成する。詳細は後述するが、透かし検出用行列Ｘは、透かし検出用行列Ｘ自体に透かしベクトルＴ２を埋め込むためにも用いられる。この意味で、透かし検出用行列Ｘは「透かし埋め込み兼透かし検出用行列」ともいえるが、以下では、単に「透かし検出用行列Ｘ」と記載する。
【００４３】
第２ニューラルネットワークＮ２が全結合の単層パーセプトロンである場合、行列生成部１１２は、重みベクトルＷの長さをＰ、透かしベクトルＴ２の長さをＱとしたとき、列の長さがＰ、行の長さがＱである行列を透かし検出用行列Ｘとして生成する。なお、行列生成部１１２は、重み更新部１１０が目的タスクを学習する前に一度だけ透かし検出用行列Ｘを生成する。以後、重み更新部１１０が目的タスクを学習している間、透かし検出用行列Ｘは固定されており、変更されることはない。
【００４４】
透かしベクトル生成部１１３は、透かし検出用行列Ｘの成分を所定のハッシュ関数に入力して得られるハッシュ値を透かしベクトルＴ２として生成する。したがって、透かしベクトルＴ２の長さＱは、ハッシュ関数が出力するハッシュ値であるベクトルの長さに等しく、その長さはハッシュ関数に依存する。
【００４５】
重み更新部１１０は、重みベクトルＷに透かし検出用行列Ｘを乗じ、活性化関数ｓを適用して得られるベクトルＯ２と透かしベクトルＴ２との誤差が少なくなることを拘束条件として、第１ニューラルネットワークＮ１の各層Ｌの重みを更新する。これにより、第１ニューラルネットワークＮ１の学習が終了すると、透かし検出部１１４は、透かしを検出する対象とするニューラルネットワークから生成した重みベクトルＷに透かし検出用行列Ｘを乗じ、２値化すると透かしベクトルＤ２が検出できる。もし、透かしが正しく埋め込めていればＤ２＝Ｔ２となる。この結果、情報処理装置１は、詐称されにくい透かしで出所を特定することができる学習モデルを提供することができる。なお、透かし検出部１１４は、透かしを検出する対象とするニューラルネットワークから生成した重みベクトルＷに透かし検出用行列Ｘを乗じて得られたデータに対して、例えば活性化関数ｓを適用することによって２値化する。
【００４６】
なお、透かしベクトル生成部１１３は、透かし検出用行列Ｘのハッシュ値と第１付加情報Ｉ１とから「透かしベクトルＴ２」を作成しても良い。例えば、透かし検出用行列Ｘのハッシュ値と第１付加情報Ｉ１の排他的論理和を透かしベクトルＴ２としても良い。透かしベクトルＴ２の長さＱにあわせて第１付加情報Ｉ１は０をパディングしたり同一情報を繰り返し用いたりしてもよい。この場合、透かし検出部１１４は、透かし検出用行列Ｘのハッシュ値と検出した透かしベクトルＤ２をとの排他的論理和を計算することで権利関連情報を取りだすことができ、透かし検出用行列Ｘが後から詐称した行列でないことと権利関連情報とを同時に示すことができる。
【００４７】
図７（ａ）―（ｃ）は、実施の形態に係る重みベクトル生成部１１１による重み設定処理を説明するための図である。具体的には、図７（ａ）―（ｃ）は、５×５×３個の要素からなる重みフィルタに基づいて、重みベクトル生成部１１１が重みベクトルＷを生成する過程を示す図である。
【００４８】
図７（ａ）は、５×５×３個の要素からなる重みフィルタＦを模式的に示す図である。重みベクトル生成部１１１は、５×５×３個の要素からなる重みフィルタを、まず縦５、横５合わせて２５個の要素からなる３つの２次元重みフィルタ（Ｆ１、Ｆ２、及びＦ３）に分割する。図７（ｂ）は、５×５×３個の要素からなる重みフィルタを分割して得られる第１重みフィルタＦ１、第２重みフィルタＦ２、及び第３重みフィルタＦ３を模式的に示す図である。
【００４９】
続いて、重みベクトル生成部１１１は、第１重みフィルタＦ１、第２重みフィルタＦ２、及び第３重みフィルタＦ３それぞれを、５×５＝２５個の要素からなる３つの列ベクトル（Ｖ１、Ｖ２、及びＶ３）に展開する。図７（ｃ）は、第１重みフィルタＦ１、第２重みフィルタＦ２、及び第３重みフィルタＦ３それぞれを展開して得られる第１列ベクトルＶ１、第２列ベクトルＶ２、及び第３列ベクトルＶ３を模式的に示す図である。
【００５０】
最後に、重みベクトル生成部１１１は、第１列ベクトルＶ１、第２列ベクトルＶ２、及び第３列ベクトルＶ３を順に連結して２５×３＝７５個の要素からなる一つの列ベクトルＶを生成する。ここで、図４を参照して説明したように、重みベクトル生成部１１１が選択した層ＬがＮ個の重みフィルタＮを備える場合、重みベクトル生成部１１１は、各フィルタを同様に列ベクトルに展開したうえで順番につなげ、７５×Ｎ個の要素からなる新たな列ベクトルを生成する。重みベクトル生成部１１１は、生成した列ベクトルを重みベクトルＷとする。この場合、重みベクトルの長さＰは、Ｐ＝７５×Ｎとなる。
【００５１】
透かし検出用行列Ｘも、図７（ｃ）を参照して説明した方法と同様の方法でベクトル化することができる。ここで、ハッシュ関数をＨとし、ベクトル化した透かし検出用行列Ｘをハッシュ関数の引数として得られるベクトルをＨ（Ｘ）とすると、透かしベクトルＴ２は、以下の式（１）で表せる。
Ｔ２＝Ｈ（Ｘ）    （１）
【００５２】
また、重みベクトルＷに透かし検出用行列Ｘを乗じ、活性化関数ｓを適用すると第２出力Ｏ２となり、閾値処理を行うと検出した透かしベクトルＤ２となる。正しく検出できる場合、透かしベクトルＴ２となるから、以下の式（２）及び式（３）が成り立つ。
ｓ（ＸＷ）＝Ｏ２    （２）
ｔｈ（Ｏ２）＝Ｔ２    （３）
ここでｔｈ（）は閾値処理を示す。
【００５３】
式（１）、式（２）、及び式（３）より、式（４）を得る。
ｔｈ（ｓ（ＸＷ））＝Ｈ（Ｘ）    （４）
なお、検出時には活性化関数ｓの適用を省略できる場合も多い。
【００５４】
式（４）より、重みベクトルＷは、透かし検出用行列Ｘによって拘束される。
【００５５】
図５の例では、重み更新部１１０は、第２層Ｌ２の値が式（４）を満たす重みベクトルＷとなるという拘束条件の下、選択した層Ｌ及び他の層の重みを更新することを意味する。一般に、多層のニューラルネットワークは多くの冗長性を持っており、仮にいくつかの層Ｌの重みの自由度が拘束されていたとしても、他の層Ｌの重みで学習データを学習できると考えられる。
【００５６】
透かし検出用行列Ｘは詐称でなければ固定されているので、式（４）を満たすような重みベクトルＷを決定する際の自由度が小さい。
【００５７】
ここで、モデルパラメータを不正に入手した第三者が、モデルパラメータから詐称用透かしベクトルＴ２ａｔｋを検出しようとする状況を考える。
【００５８】
まず、第１のケースを考える。攻撃用透かしベクトルＴ２ａｔｋを検出したい場合、第１ニューラルネットワークＮ１から取得した重みベクトルＷを入力とし、攻撃用透かしベクトルＴ２ａｔｋを出力とした偽の検出器行列Ｘａｔｋを学習により求める。第三者は、重みベクトルＷと攻撃用透かしベクトルＴ２ａｔｋとが固定されたとき、ｔｈ（ｓ（Ｘａｔｋ・Ｗ））＝Ｔ２ａｔｋ又はｔｈ（Ｘａｔｋ・Ｗ）＝Ｔ２ａｔｋを満たすＸａｔｋを見つけることは容易であろう。また、この時、重みベクトルＷに再学習等の改変を行わず偽の検出器行列Ｘａｔｋを変更するため、第１のタスクの正答率は低下しない。しかしながら、偽の検出器行列Ｘａｔｋから取得したＨ（Ｘａｔｋ）を透かしベクトルＴ２として埋め込むことは難しいだろう。なぜならば、偽の検出器行列Ｘａｔｋを学習により更新しようとすると、埋め込みたい透かしベクトルＴ２＝Ｈ（Ｘａｔｋ）は違う値となってしまい、偽の検出器行列Ｘａｔｋを学習により求めることが難しいからである。またハッシュ関数の特性から偶然Ｔ２ａｔｋ＝Ｈ（Ｘａｔｋ）を満たす偽の検出器行列Ｘａｔｋが得られる確率は極めて低い。
【００５９】
次に、第２のケースを考える。第２のケースでは、第三者が、ｔｈ（ｓ（Ｘａｔｋ・Ｗ））＝Ｔ２ａｔｋ＝Ｈ（Ｘａｔｋ）を満たすＸａｔｋ値を固定した後、Ｘａｔｋのハッシュ値を計算し、その値Ｔ２ａｔｋを埋め込むために重みベクトルＷを変更したとする。この場合、重みベクトルＷの要素はニューラルネットワークの層Ｌの重みでもあるため、ニューラルネットワークの正答率が下がってしまうと考えられる。この場合、第三者がモデルパラメータを利用する価値も下がる。
【００６０】
以上より、第三者が事後的に別の透かしベクトルをモデルパラメータから検出することを抑制できる。
【００６１】
＜第１付加情報Ｉ１の透かしベクトルＴ２への埋め込みと検出＞
続いて、透かしベクトルＴ２に第１付加情報Ｉ１を埋め込むことと、埋め込んだ第１付加情報Ｉ１を検出する方法とについて説明する。
【００６２】
図８（ａ）−（ｂ）は、透かしベクトルＴ２に第１付加情報Ｉ１を埋め込む方法を説明するための図である。具体的には、図８（ａ）は、透かしベクトルＴ２に第１付加情報Ｉ１を埋め込む第１の方法を示す図である。
【００６３】
図８（ａ）に示す方法では、透かしベクトル生成部１１３は、透かしベクトルＴ２のＱビットのうち、ａ（ａ＜Ｑ）ビットとＱ−ａビットに分割し、ａビットにハッシュ値を割り当て、著作権等の第１付加情報Ｉ１をＱ−ａビットに割り当てる。これにより、透かしベクトルＴ２に第１付加情報Ｉ１を埋め込むことができる。図８（ａ）では、透かしベクトルＴ２のうち、白丸で示す部分がハッシュ値を割り当てるビットであり、斜線が付された丸が第１付加情報Ｉ１を割り当てるビットである。
【００６４】
図８（ｂ）は、透かしベクトルＴ２に第１付加情報Ｉ１を埋め込む第２の方法を示す図である。第２の方法は、透かしベクトルＴ２のビットを有効活用しながら第１付加情報Ｉ１を埋め込む方法である。具体的には、透かしベクトル生成部１１３は、ハッシュ値をそのまま透かしベクトルＴ２とするのではなく、第１付加情報Ｉ１をハッシュ値の桁数と同じになるように繰り返しやゼロパディングした後、第１の付加情報とハッシュ値と所定の演算を行い、それを透かしベクトルＴ２とする。
【００６５】
例えば、所定の演算を排他的論理和とする。この場合、透かしベクトル生成部１１３は、第１付加情報Ｉ１とハッシュ値Ｈ（Ｘ）との排他的論理和を取得し、それを透かしベクトルＴ２として採用する。検出時には、透かし検出部１１４は、重みベクトルＷに透かし検出用行列Ｘを乗じて閾値処理を行う。透かし検出部１１４は、この検出した結果Ｄ２＝ｔｈ（ｓ（Ｘ・Ｗ））又はｔｈ（Ｘ・Ｗ）に対し、透かし検出用行列Ｘのハッシュ値で排他的論理和を取得する。これにより、透かし検出部１１４は、第１付加情報Ｉ１も得ることができる。この場合、透かし検出部１１４は、検出した透かしから第１付加情報Ｉ１を得ると同時に、透かし検出用行列Ｘのハッシュ値で第１付加情報Ｉ１を復号できることをもって、第１付加情報Ｉ１を捏造していないことも示せる。
【００６６】
さらに、少ない埋め込みビットで透かし検出用行列Ｘのハッシュ値と第１付加情報Ｉ１とを埋め込むため、第１の方法と比較して透かしビットを有効利用できる。一般に、透かしビットは制限があったり、埋め込みビットが多くなるほど第１のタスクの精度劣化が起きたりするため、ビットの有効利用は有用である。なお、第１付加情報Ｉ１は、学習モデルの著作者情報やモデル提供先（不正流出元）などの出所情報、日付やＵＲＬ（Uniform Resource Locator）等を埋め込むことが多いが、それに限らない。
【００６７】
＜第２付加情報Ｉ２を透かし検出用行列に埋め込む＞
次に、透かし検出用行列Ｘに第２付加情報Ｉ２を埋め込むか、又は透かし検出用行列Ｘ自体を第２付加情報Ｉ２とする方法について説明する。
【００６８】
透かし検出用行列Ｘがランダムな値で意味を持たない場合、正当な透かし検出用行列Ｘであっても、一度漏洩や公開してしまえば、誰でも透かし検出用行列Ｘを用いて新たな第１ニューラルネットワークＮ１に透かしを埋め込むことができてしまう。つまり、新たな第１ニューラルネットワークモデルＮａｔｋや重みベクトルＷａｔｋをＸの正当な持ち主になりすまして作成することも可能である。
【００６９】
そこで、行列生成部１１２は、透かし検出用行列Ｘに第２付加情報Ｉ２を含ませてもよい。行列生成部１１２は、第２付加情報Ｉ２を初期行列に埋め込むことにより、透かし検出用行列Ｘを生成してもよいし、第２付加情報Ｉ２自体を透かし検出用行列Ｘとして生成してもよい。
【００７０】
ここで、行列生成部１１２が透かし検出用行列Ｘに埋め込む第２付加情報Ｉ２は、透かし検出用行列Ｘを適応する予定の範囲のパラメータやプログラムに関する情報とする。具体的には、モデルパラメータの著作者名やモデル公開予定のＵＲＬの一部などが第２付加情報Ｉ２として有効である。
【００７１】
行列生成部１１２は、文字列などの第２付加情報Ｉ２をそのまま倍精度浮動小数点数や単精度浮動小数点数等の数値型に型変換してものを透かし検出用行列Ｘとして用いてもよい。第２付加情報Ｉ２をそのまま倍精度浮動小数点数や単精度浮動小数点数等の数値型に変換したデータのランダム性に課題が出る場合には、行列生成部１１２は、透かし検出用行列Ｘの重み値の固定位置のビット（上位数ビットや下位数ビット等）に順番に型変換した値を適応してもよいし、第２付加情報Ｉ２を何等かの手法で鍵を用いたスクランブルやランダム化を行ってもよい。
【００７２】
なお、行列生成部１１２による透かし検出用行列Ｘへの第２付加情報Ｉ２の埋め込みと、重みベクトル生成部１１１による重みベクトルＷへの第１付加情報Ｉ１の埋め込みとは併用することができる。この場合、透かし検出部１１４は、第１ニューラルネットワークＮ１の学習済みモデルが検出対象である正当なモデルであることを示した上で、検出した第１付加情報Ｉ１が後から詐称した情報でないことも示すことができる。結果として、透かしへの信頼性を向上させることができる。
【００７３】
＜実施の形態に係る情報処理装置１が実行する情報処理の処理フロー＞
図９は、実施の形態に係る情報処理装置１が実行する情報処理の流れを説明するためのフローチャートである。本フローチャートにおける処理は、例えば情報処理装置１が起動したときに開始する。
【００７４】
行列生成部１１２は、第１ニューラルネットワークＮ１に埋め込む透かしベクトルＴ２を検出するための透かし検出用行列Ｘを生成する（Ｓ２）。透かしベクトル生成部１１３は、透かし検出用行列Ｘの成分をハッシュ関数に入力して得られるベクトルを透かしベクトルＴ２として生成する（Ｓ４）。
【００７５】
重み更新部１１０は、目的タスク学習用データ及びラベルを記憶部１０から読み出して取得する（Ｓ６）。重みベクトル生成部１１１は、第２ニューラルネットワークＮ２の入力層とするための層Ｌを、第１ニューラルネットワークＮ１を構成する層Ｌの中から選択する（Ｓ８）。重みベクトル生成部１１１は、選択した層Ｌの重みを要素とする重みベクトルＷを生成する（Ｓ１０）。
【００７６】
重み更新部１１０は、重みベクトルＷに透かし検出用行列Ｘを乗じて得られるベクトルが透かしベクトルＴ２となることを拘束条件として、第１ニューラルネットワークＮ１の各層Ｌの重みを更新する（Ｓ１２）。重み更新部１１０が、第１ニューラルネットワークＮ１の各層Ｌの重みの更新を終えると、本フローチャートにおける処理は終了する。
【００７７】
＜実施の形態に係る情報処理装置１が奏する効果＞
以上説明したように、実施の形態に係る情報処理装置１によれば、出所を特定し、詐称でないことを示すことができる学習モデルを提供することができる。
【００７８】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、装置の分散・統合の具体的な実施の形態は、以上の実施の形態に限られず、その全部又は一部について、任意の単位で機能的又は物理的に分散・統合して構成することができる。また、複数の実施の形態の任意の組み合わせによって生じる新たな実施の形態も、本発明の実施の形態に含まれる。組み合わせによって生じる新たな実施の形態の効果は、もとの実施の形態の効果を合わせ持つ。
【００７９】
＜変形例＞
上記の説明では、情報処理装置１が畳み込みニューラルネットワークに透かしを埋め込む場合について主に説明した。しかしながら、畳み込みニューラルネットワーク以外の他のニューラルネットワークにも本発明は適用できることは、当業者であれば容易に理解できることである。
【符号の説明】
【００８０】
１・・・情報処理装置
１０・・・記憶部
１１・・・制御部
１１０・・・重み更新部
１１１・・・重みベクトル生成部
１１２・・・行列生成部
１１３・・・透かしベクトル生成部
１１４・・・透かし検出部
【図１】
2019185417.tif 000003
【図２】
2019185417.tif 000004
【図３】
2019185417.tif 000005
【図４】
2019185417.tif 000006
【図５】
2019185417.tif 000007
【図６】
2019185417.tif 000008
【図７】
2019185417.tif 000009
【図８】
2019185417.tif 000010
【図９】
2019185417.tif 000011