(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-25
(45)【発行日】2022-06-02
(54)【発明の名称】情報処理方法、システム及びプログラム
(51)【国際特許分類】
G06N 3/08 20060101AFI20220526BHJP
G06N 20/00 20190101ALI20220526BHJP
G06F 21/60 20130101ALI20220526BHJP
【FI】
G06N3/08
G06N20/00 130
G06F21/60 320
(21)【出願番号】P 2018115455
(22)【出願日】2018-06-18
【審査請求日】2021-02-08
(73)【特許権者】
【識別番号】301021533
【氏名又は名称】国立研究開発法人産業技術総合研究所
(72)【発明者】
【氏名】古原 和邦
【審査官】吉倉 大智
(56)【参考文献】
【文献】特開2006-018053(JP,A)
【文献】国際公開第2018/063451(WO,A1)
【文献】特表2009-543254(JP,A)
【文献】再公表特許第2015/155896(JP,A1)
【文献】特表2018-514852(JP,A)
【文献】特開2017-004142(JP,A)
【文献】特開2018-073103(JP,A)
【文献】Keng-Pei Lin ほか,Privacy-preserving outsourcing support vector machines with random transformation,Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD '10),米国,Association for Computing Machinery,2010年07月25日,pp.363-372,[検索日 2022.02.22], インターネット:<URL:https://dl.acm.org/doi/abs/10.1145/1835804.1835852>,<DOI:https://doi.org/10.1145/1835804.1835852>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
前記第1の格納部に格納される、前記機械学習のための教師データに含まれる属性値に対して変換を行うための第2の変換ルールを生成又は取得するステップと、
前記教師データに対して、前記第2の変換ルールに従った変換を含む秘匿化変換を行って秘匿化教師データを生成し、前記第2の格納部に格納するステップと、
を、コンピュータに実行させるためのプログラム。
【請求項2】
判定データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って、秘匿化判定データを生成するステップと、
前記秘匿化学習データ及び前記秘匿化教師データを用いて機械学習が行われた学習済みモデルを実装したシステムに対して、前記秘匿化判定データを送信して、当該秘匿化判定データに対する秘匿化判定結果を受信するステップと、
受信した前記秘匿化判定結果に対して、前記第2の変換ルールに基づく逆変換を実行して、判定結果を生成するステップと、
をさらに、前記コンピュータに実行させるための請求項
1記載のプログラム。
【請求項3】
前記第1の変換ルールに係るデータを、他のコンピュータに送信するステップ
をさらに前記コンピュータに実行させるための請求項1記載のプログラム。
【請求項4】
前記第1の変換ルールが、
前記学習データにおける指定の属性毎に当該属性の値の分布に基づき調整され、且つ前記指定の属性の値を混合する変換を行うための第1の行列
を含む請求項1記載のプログラム。
【請求項5】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
前記秘匿化学習データを用いて機械学習が行われた学習済みニューラルネットワークを実装したシステムから、前記学習済みニューラルネットワークの重みのデータを取得するステップと、
前記重みのうち所定部分の重みに対して、前記第1の変換ルールに基づく変換を行うステップと、
前記秘匿化学習データを用いて機械学習が行われた学習済みニューラルネットワークを実装したシステムから、前記学習済みニューラルネットワークにおける現在の重みと所定時点における重みとの差分に係る差分データを取得するステップと、
前記差分データのうち所定部分の重みの差分に対して、前記第1の変換ルールに基づく変換を行うステップと、
前記差分データのうち前記所定部分の重みの変換後の差分と、前記差分データのうち前記所定部分以外の重みの差分とを、前記所定時点における重みに基づき構築された学習済みニューラルネットワークに対して反映するステップと、
を、コンピュータに実行させるためのプログラム。
【請求項6】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
を、コンピュータに実行させ、
前記第1の変換ルールが、
前記機械学習の対象となるニューラルネットワークの構成に応じて、前記複数種類の属性値を混合する変換を行うための変換ルールである
プログラム。
【請求項7】
前記第1の変換ルールが、
前記学習データにおける指定の属性の値を混合する変換を行うための第1の行列を、当該第1の行列の特性と前記秘匿化学習データを用いて機械学習が行われるニューラルネットワークにおける非線形関数の特性とに応じて調整した第2の行列
を含む請求項
6記載のプログラム。
【請求項8】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
を、コンピュータに実行させ、
前記秘匿化変換が、
前記秘匿化学習データを用いて機械学習が行われるニューラルネットワークが畳み込みニューラルネットワークである場合に、前記第1の変換ルールによって変換された学習データに含まれる属性の所定の組み合わせを、同一の教師データに対して、前記畳み込みニューラルネットワークの構造に応じて複数生成し、当該組み合わせの順番を入れ替える処理
を含む、プログラム。
【請求項9】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
前記第1の格納部に格納される、前記機械学習のための教師データに含まれる属性値に対して変換を行うための第2の変換ルールを生成又は取得するステップと、
前記教師データに対して、前記第2の変換ルールに従った変換を含む秘匿化変換を行って秘匿化教師データを生成し、前記第2の格納部に格納するステップと、
を含み、コンピュータが実行する情報処理方法。
【請求項10】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得する手段と、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納する手段と、
前記第1の格納部に格納される、前記機械学習のための教師データに含まれる属性値に対して変換を行うための第2の変換ルールを生成又は取得する手段と、
前記教師データに対して、前記第2の変換ルールに従った変換を含む秘匿化変換を行って秘匿化教師データを生成し、前記第2の格納部に格納する手段と、
を有する情報処理システム。
【請求項11】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップと、
を含み、
前記第1の変換ルールが、
前記機械学習の対象となるニューラルネットワークの構成に応じて、前記複数種類の属性値を混合する変換を行うための変換ルールであり、
コンピュータが実行する情報処理方法。
【請求項12】
第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得する手段と、
前記学習データに対して、前記第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納する手段と、
を有
し、
前記第1の変換ルールが、
前記機械学習の対象となるニューラルネットワークの構成に応じて、前記複数種類の属性値を混合する変換を行うための変換ルールである、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの秘匿化技術に関する。
【背景技術】
【0002】
互いの入力を秘匿したまま計算結果を得る方法としてMulti Party Computation(以下、MPCと呼ぶ)が知られている。このMPCを用いて、ニューラルネットワークを実現しようとすると、以下のような問題がある。
【0003】
すなわち、機械学習やニューラルネットワークでは、MPCで効率よく実現することが容易ではない非線形関数や秘匿値同士の掛け算などを実現する必要があるため、それらの計算を行うたびに遅延が生ずる。また、既にチューニングされた既存のニューラルネットワーク、機械学習、深層学習などの計算環境、ライブラリ、API(Application Program Interface)などを活用できず、MPC用に一から作成しなければならない。さらに、MPC専用で開発してしまうと、既存のニューラルネットワーク、機械学習、深層学習などの計算環境に対して行われる高速化のための技術進化を有効に活用できなくなる可能性がある。また、計算処理を進める毎に、データ保有者の端末とクラウドなどの計算基盤との間で大量の通信が発生し、通信の遅延も生じる。さらに、データ保有者の端末やその代わりに計算を行うクラウドなどの計算負荷が高い。
【0004】
このような問題点を解決するための研究も行われているが、現状では有効な解決手段は提案されていない。
【0005】
一方、ある文献には、機械学習を行なって予測モデルを生成するシステムに学習用データを提供するために、(a)外部から入力された学習用データを取得して、(b)暗号化されていない学習用データから生成された予測モデルと、暗号化された学習用データから生成された予測モデルとが、パラメータ、数値、及び演算子において、対応関係を有するように、学習用データを暗号化し、(c)暗号化された学習用データをシステムへと出力する、という技術が開示されている。しかしながら、学習用データの暗号化は、具体的には学習用データに含まれる複数の属性の各々における標準化及び二値化のみである。このような処理のみでは、属性によっては暗号化後の値の分布に基づき元の値を容易に推定できてしまう場合が生じ得る。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
従って、本発明の目的は、一側面としては、センシティブな情報を含むデータを秘匿したまま機械学習できるようにするための新たな技術を提供することである。
【課題を解決するための手段】
【0008】
本発明の一側面に係る情報処理方法は、(A)第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、(B)上記学習データに対して、第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップとを含む。
【発明の効果】
【0009】
一側面によれば、センシティブな情報を含むデータを秘匿したまま機械学習できるようになる。
【図面の簡単な説明】
【0010】
【
図2】
図2は、学習時におけるユーザ装置の機能ブロック構成例を示す図である。
【
図3】
図3は、学習時における処理フローを示す図である。
【
図4】
図4は、双曲線正接関数の一例を示す図である。
【
図5】
図5は、評価時におけるユーザ装置の機能ブロック構成例を示す図である。
【
図6】
図6は、評価時における処理フローを示す図である。
【
図7】
図7は、ユーザ装置側にニューラルネットワークを構築する場合におけるユーザ装置の機能ブロック構成例を示す図である。
【
図8】
図8は、重みデータ全体をダウンロードする場合における処理フローを示す図である。
【
図9】
図9は、重みの差分ダウンロードを行う場合における処理フローを示す図である。
【
図10】
図10は、変換ルール等をインポートする場合におけるユーザ装置の機能ブロック構成例を示す図である。
【
図11】
図11は、変換ルール等をインポートしたユーザ装置の処理フローを示す図である。
【
図12】
図12は、畳み込みニューラルネットワークを用いる場合の問題点を説明するための図である。
【
図13】
図13は、畳み込みニューラルネットワーク(プーリング層を省略)の一例を示す図である。
【
図14】
図14は、畳み込みニューラルネットワークと等価なニューラルネットワークの一例を示す図である。
【
図15A】
図15Aは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた評価時の処理を説明するための図である。
【
図15B】
図15Bは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた評価時の処理を説明するための図である。
【
図15C】
図15Cは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた評価時の処理を説明するための図である。
【
図16A】
図16Aは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた学習時の処理を説明するための図である。
【
図16B】
図16Bは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた学習時の処理を説明するための図である。
【
図16C】
図16Cは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた学習時の処理を説明するための図である。
【
図16D】
図16Dは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた学習時の処理を説明するための図である。
【
図16E】
図16Eは、畳み込みニューラルネットワークと等価なニューラルネットワークを用いた学習時の処理を説明するための図である。
【
図17】
図17は、畳み込みニューラルネットワークと等価なニューラルネットワークを用いる場合における追加の処理を説明するための図である。
【
図18】
図18は、コンピュータ装置のブロック構成図である。
【発明を実施するための形態】
【0011】
[実施の形態1]
本実施の形態では、クラウドなどの計算基盤において所望の構造を有するニューラルネットワークを構築し、計算基盤でニューラルネットワークに対する学習を行う場合を一例として説明する。計算基盤は、指定された構造を有するニューラルネットワークを構築して、学習データと教師データとに基づき学習処理を行うといった一般的な機能を有しており、本実施の形態では、このような一般的な機能を原則としてそのまま活用する。
このような場合に、データ保有者は、センシティブな情報を含むデータをそのまま計算基盤に送ってニューラルネットワーク(Neural Network: NN)の学習を行わせるのではなく、このデータをデータ保有者側で秘匿化した上で計算基盤に送ってニューラルネットワークの学習を行わせる。
【0012】
例えば、
図1に示すようなシステムが用いられる。
すなわち、計算基盤300では、例えばデータ保有者からの指示に応じてニューラルネットワーク310が構築され、計算基盤300から提供される学習器320により学習データと教師データとによりニューラルネットワーク310に対する学習処理が行われ、学習済みのニューラルネットワーク310が生成される。なお、計算基盤300には、学習済みのニューラルネットワーク310に対して入力を行い、学習済みのニューラルネットワーク310からの出力を返す機能、学習済みのニューラルネットワーク310から、重みデータ等を出力する機能なども含まれている。
【0013】
計算基盤300は、例えばインターネットなどのコンピュータネットワークを介して、例えばデータ保有者のユーザ装置100や、例えばデータ保有者と協力関係にある他のデータ保有者のユーザ装置200と接続している。
【0014】
本実施の形態では、ユーザ装置100が、少なくとも学習データに対して秘匿化変換を行って秘匿化された学習データを計算基盤300に送信して、計算基盤300の学習器320にニューラルネットワーク310に対する学習処理を行わせる。学習器320の機能は従来と同じで、ここでは詳しくは述べない。
【0015】
学習時におけるユーザ装置100の機能ブロック構成例を
図2に示す。
ユーザ装置100は、入力部101と、第1データ格納部103と、設定データ格納部105と、変換ルール生成部107と、変換ルール格納部109と、変換部111と、第2データ格納部113と、第1出力部115と、エクスポート部117とを有する。
【0016】
入力部101は、例えばデータ保有者から、学習データ及び対応する教師データの指定を受け付け、当該学習データ及び教師データを取得して第1データ格納部103に格納する。例えば、ファイルの指定を受け付けたり、データ保有者の図示しない他のコンピュータから取得してもよい。また、入力部101は、計算基盤300に構築したニューラルネットワーク310の構成情報(入力層のノードの数、活性化関数(非線形関数)の内容など)、学習データ及び教師データのうち秘匿化すべき属性(変数とも呼ぶ)などの設定データの入力を受け付け、設定データ格納部105に格納する。
【0017】
変換ルール生成部107は、設定データ格納部105に格納された設定データに基づき、第1データ格納部103に格納された学習データ等(少なくとも学習データ、場合によっては教師データも含む)に対する変換ルールを生成し、変換ルール格納部109に格納する。
変換部111は、変換ルール格納部109に格納された変換ルールに従って、第1データ格納部103に格納されている学習データ等に対して秘匿化変換を行い、秘匿化されたデータを第2データ格納部113に格納する。
【0018】
第1出力部115は、第2データ格納部113に格納されたデータを、計算基盤300に送信して、学習器320にニューラルネットワーク310に対する学習処理を行わせる。
エクスポート部117は、例えばユーザからの指示により、変換ルール格納部109から変換ルールのデータ及び設定データを読み出して、指定のファイルや他のコンピュータ(例えばユーザ装置200)に出力する。
【0019】
より具体的な処理について、
図3及び
図4を用いて説明する。
【0020】
まず、入力部101は、データ保有者から、学習データ及び対応する教師データの指定を受け付け、当該学習データ及び教師データを取得して第1データ格納部103に格納するとともに、設定データの入力を受け付け、設定データを設定データ格納部105に格納する(
図3:ステップS1)。
【0021】
上でも述べたように、ニューラルネットワーク310の構成情報、学習データ及び教師データのうち秘匿化すべき属性の指定を含む。例えば、学習データのベクトルX=(x1,x2,..,xn)と、教師データのベクトルY=(y1,y2,..,ym)の各要素xi及びyjは、学習データ及び教師データにおける各属性の値を表すが、全てがセンシティブな情報ではない。従って、データ保有者は、秘匿レベルを下げて処理負荷を下げたい場合には、秘匿化すべき属性を全属性の中から指定する。例えば、n=5で5つの属性のうちx1乃至x3のみを秘匿化するように指定する。一方、秘匿化レベルを最高レベルにする場合には、全属性を秘匿化すべき属性に指定する。教師データについても同様である。教師データによっては、全く秘匿化しないでよい場合もある。
【0022】
なお、属性には、身長や体重のように数値に意味がある量的な属性(量的変数)と、IDや種類名など単にラベルを表すだけでそれ自体に意味がない質的な属性(質的変数)とがあり、秘匿化すべき属性を決める際の参考になる。
【0023】
ラベルの表し方には様々な方法があるが、例えば猫、犬、鳥を表す場合には、猫であればx1=100、犬であればx1=200、鳥であればx1=300といったように、1つの属性に、対応する値を入れる方法がある。また、同じ例であれば、x1を猫、x2を犬、x3を鳥にそれぞれ割り当て、猫の場合にはx1のみを真、すなわちx1=1として、(x1,x2,x3)=(1,0,0)と表すような方法もある。なお、犬ならば(x1,x2,x3)=(0,1,0)と表される。また、猫犬鳥を、種類数より小さく1より大きな次元のベクトル(x1,x2)で表すことも可能である。すなわち、猫ならば(x1,x2)=(1,0)と表し、犬ならば(x1,x2)=(0,1)と表し、鳥ならば(x1,x2)=(1,1)と表すことも可能である。
【0024】
次に、変換ルール生成部107は、第1データ格納部103に格納される学習データと設定データ格納部105に格納される設定データとに基づき、学習データ用の第1の変換ルールの生成処理を実行し、生成された第1の変換ルールのデータを変換ルール格納部109に格納する(ステップS3)。
【0025】
ここでは説明をわかりやすくするため、5つの属性のうち3つが秘匿化すべき属性として指定された場合を例に説明する。すなわち、学習データX=(x1,x2,x3,x4,x5)であって、x2及びx5を秘匿化しない場合、秘匿化すべき属性のベクトルX'=(x'1,x'2,x'3)=(x1,x3,x4)を秘匿化することとする。
【0026】
そして、秘匿化しない属性を除く秘匿化変換後の学習データX"の次元をn"とし、ベクトルX'の次元をn'とすると、n'×n"の任意の行列Axとn"次元の任意のベクトルBxとを生成する。このAxとBxとが、第1の変換ルールである。
【0027】
このような場合、
X"=X'Ax-Bx
によって秘匿化変換を行う。なお、n'=n"であっても、なくてもよい。
【0028】
一方、データの秘匿効果を高めるためには、上で述べたような任意のAx及びBxではなく、X'の各成分(すなわち各属性値)x'jの平均E(x'j、標準偏差S(x'j)のベクトルをそれぞれEx'、Sx'として算出して、Ax及びBxを以下のように生成してもよい。
Ax=diag(1/Sx')Rx
Bx=(Ex'/Sx')Rx
【0029】
Rxは、任意のn'×n"行列、若しくは任意の正則なn'×n'行列である。diag(A)は、ベクトルAの各列の値をその列の対角成分として有する対角行列を表す。また、(1/Sx')は、Sx'の各次元の値S(x'j)毎の割り算1/S(x'j)のベクトルを表すものとする。さらに、(Ex'/Sx')は、Ex'及びSx'の各次元の値E(x'j)、S(x'j)毎の割り算E(x'j)/S(x'j)のベクトルを表すものとする。
【0030】
このように、各属性値の正規化を織り交ぜながら、第1の変換ルールに相当するAx及びBxを算出するようにしてもよい。
【0031】
例えば、x'1が身長、x'2が体重、x'3が喫煙習慣(有りが1で、無しが0を表す)を表すものとして、(170,60,1)(160,50,0)(175,70,1)(150,55,1)(140,50,0)というデータがある場合、平均は(159,57,3/5)となり、標準偏差は((205)0.5,(70)0.5,(3/10)0.5)となる。
【0032】
例えば、Rxが以下のような行列である場合、以下に示すようなAxが得られる。
【数1】
【数2】
【0033】
また、Bx=(1.15,6.17,-4.04)が得られる。
【0034】
上で述べたデータは、Ax及びBxにより、同じ順でX”=(-0.07,0.80,0.32)(-0.28,-0.93,-0.30)(0.47,1.29,-0.51)(-0.10,0.20,0.76)(-0.01,-1.35,-0.27)と変換される。
【0035】
このようにAx及びBxは、複数の属性の属性値を混合するような線形変換である。
【0036】
さらに、構築したニューラルネットワーク310における活性化関数とX"の各成分x"
jの変動幅とが適合しないと、機械学習が進みにくくなる。例えば、
図4に双曲線正接関数f(x)=tanh(x)を一例に示すが、この例ではx=-2からx=+2までであれば、f(x)がxに応じて変化するが、それ以外の範囲ではxが変動してもf(x)があまり変化しなくなる。すなわち、好ましい変動幅に活性化関数の入力が入っていないと、活性化関数の出力があまり変化しないために、なかなかうまく学習が進まないことになる。
【0037】
他の活性化関数(ランプ関数、シグモイド関数など)でも、入力に応じて出力が変化する範囲と変化しない部分とがあり、できるだけ入力に応じて出力が変化する範囲に、入力の変動幅が収まることが好ましい。ステップ関数のような活性化関数でも、入力の偏りのため必ず1又は0が出力されてしまえば学習が進みにくいので、可能であれば1と0が満遍なく出力される方が好ましい。
【0038】
従って、さらに以下のような処理を行うようにしてもよい。X"の各列jの標準偏差S(x"j)を用いて、Ax及びBxを以下のように補正する。
Ax=Axdiag(sNN/Sx")
Bx=Bxdiag(sNN/Sx")
【0039】
sNNは、例えば上で述べたような好ましい変動幅に相当する、機械学習が進みやすい標準偏差(スカラー値)である。(sNN/Sx")は、Sx"の各次元の値S(x"j)毎に、その逆数1/S(x"j)にsNNを乗じたsNN/S(x"j)のベクトルを表す。
【0040】
上で述べたようなX"が得られれば、Sx"=(0.28,1.12,0.52)が得られ、s
NN=1とすると、Ax及びBxは、以下のように補正される。
【数3】
Bx=(4.11,5.49,-7.70)
【0041】
このような場合、X"は、(-0.25,0.72,0.61)(-1.00,-0.83,-0.57)(1.67,1.15,-0.97)(-0.37,0.18,1.45)(-0.04,-1.20,-0.52)となる。
【0042】
なお、平均、標準偏差やsNN/Sx"については、厳密な値を計算せずに、過去の経験値などおおよその値で代用するようにしてもよい。すなわち、平均については、例えば属性値の最大値と最小値の平均、あるいは外れ値と思われる値を取り除いた属性値の最大値と最小値の平均で代用してもよい。また、標準偏差やsNN/Sx"については属性値のレンジ(最大値-最小値)の定数倍、あるいは外れ値と思われる値を取り除いた属性値のレンジの定数倍で代用してもよい。
【0043】
以上のような第1の変換ルールAx及びBxを生成し、変換ルール格納部109に格納する。
【0044】
図3の処理の説明に戻って、変換部111は、変換ルール格納部109に格納された第1の変換ルールに従って、第1データ格納部103に格納されている学習データに対して秘匿化変換を実施し、処理結果を第2データ格納部113に格納する(ステップS5)。
【0045】
上でも述べたようにX"=X'Ax-Bxを算出することになる。X'=Xではない場合には、X"に対して、秘匿化を行わなかった属性を追加することになる。上で述べた例では、x2及びx5を秘匿化しなかったので、X"=(x"1,x"3,x"4)と書くならば、秘匿化学習データXc=(x"1,x2,
x"3,x"4,x5)を生成する。
【0046】
また、例えば変換ルール生成部107は、設定データ格納部105に格納されている設定データに基づき、教師データを秘匿化するか否かを判断する(ステップS7)。教師データについては秘匿化すべき属性を含まない場合もあるので、教師データを秘匿化しない場合には(ステップS7:Noルート)、教師データ用の第2の変換ルールを生成しない。変換部111は、例えば変換ルール格納部109において第2の変換ルールがないことが示されると、第1データ格納部103から教師データを読み出して、第2データ格納部113に格納する。
【0047】
一方、教師データも秘匿化する場合には(ステップS7:Yesルート)、変換ルール生成部107は、設定データ格納部105に格納されている設定データ及び第1データ格納部103に格納されている教師データに基づき、教師データ用の第2の変換ルールの生成処理を実行し、生成された第2の変換ルールのデータを変換ルール格納部109に格納する(ステップS9)。
【0048】
教師データYから、秘匿化すべき属性を抽出した後の教師データY'、教師データY'に対して秘匿化変換を行った後の教師データY"と記すものとする。そして、Y、Y'及びY"に対して、ニューラルネットワーク310の出力層における非線形関数f()の入力を、それぞれf-1(Y)、f-1(Y')、f-1(Y")と記すものとする。
【0049】
この場合、非線形関数f()の入力側に着目して、f-1(Y')を、Ax及びBx類似のAy及びByで秘匿化変換するものとする。すなわち、f-1(Y")=f-1(Y')Ay-Byという変換である。
【0050】
基本的なAy及びByの算出方法は、Ax及びAyと同様であるが、X"=X'Ax-Bxで変換を行っていたので、X'の代わりにf-1(Y')に基づきAy及びByを算出することになる。このAy及びByとf()が第2の変換ルールとなる。
【0051】
なお、Ay又はAyを生成する際に用いるRy(Rxの代わり)は正則な行列である。これは、Ayの逆行列をのちに用いることになるためである。
【0052】
また、f()は、例えば単射の任意の関数である。但し、単射でなくてもよく、複数存在するf-1(Y')のうちいずれを選択するかをあらかじめ決めておけばよい。
【0053】
f-1(Y")=f-1(Y')Ay-Byに対してf()を適用すれば、Y"=f(f-1(Y')Ay-By)が得られる。
【0054】
その後、変換部111は、変換ルール格納部109に格納された第2の変換ルールに従って、第1データ格納部103に格納されている教師データに対して秘匿化変換を実施し、処理結果を第2データ格納部113に格納する(ステップS11)。
【0055】
上でも述べたようにY"=f(f-1(Y')Ay-By)を算出することになる。Y'=Yではない場合には、Y"に対して、秘匿化を行わなかった属性を追加することになる。y2を秘匿化しなかった場合、Y"=(y"1,y"3)と書くならば、秘匿化教師データYc=(y"1,y2,y"3)を生成する。
【0056】
そして、第1出力部115は、第2データ格納部113に格納されている秘匿化変換後のデータ(秘匿化学習データと教師データ又は秘匿化教師データ)を読み出して、計算基盤300に送信する(ステップS13)。
【0057】
そして、学習器320に、ニューラルネットワーク310の学習処理を行わせる。この学習処理は周知であるからこれ以上述べない。学習処理によって学習済みのニューラルネットワーク310が生成されることになる。
【0058】
以上述べたような処理を行うことで、センシティブな情報を秘匿化した上で、既存の学習器320によるニューラルネットワーク310の学習がなされるようになる。教師データにセンシティブな情報が含まれる場合には、教師データをも秘匿化されて学習がなされる。
【0059】
さらに、学習データ等において複数属性の属性値を混合するような形で変換を行うので、例えば属性内での正規化又は正規化に準ずる変換を行う場合に比して秘匿性が高まっている。
【0060】
さらに、属性内の正規化を考慮した変換を合わせて行うことで、分布を反映した変換を行うこともできる。さらに、ニューラルネットワーク310の活性化関数の特性を考慮した変換を行って、ニューラルネットワーク310の学習をより適切に進ませることもできるようになる。
【0061】
次に、判定データを用いた評価処理について説明する。
【0062】
上で述べたようにニューラルネットワーク310は、秘匿化変換された学習データで学習されているので、判定データについても秘匿化変換してから、学習済みのニューラルネットワーク310で評価することになる。また、教師データも秘匿化変換しているのであれば、同様に秘匿化変換の逆変換をして判定結果を得ることになる。
【0063】
評価時におけるユーザ装置100の機能ブロック構成を
図5に示す。
ユーザ装置100は、入力部101と、設定データ格納部105と、変換ルール格納部109と、第3データ格納部121と、第2変換部123と、第4データ格納部125と、第2出力部127と、受信部129と、第5データ格納部131と、第3出力部133とを有する。
図2と同じ符号が付されている構成要素については、同一又はほぼ同じ機能を有するものである。
【0064】
入力部101は、例えばデータ保有者から、判定データの指定又は入力を受け付け、判定データを取得して、第3データ格納部121に格納する。
【0065】
第2変換部123は、第3データ格納部121に格納された判定データに対して、変換ルール格納部109に格納されている第1の変換ルールと設定データ格納部105に格納されている設定データとに従って秘匿化変換を実行することで、秘匿化変換された判定データを生成し、第4データ格納部125に格納する。
【0066】
第2出力部127は、第4データ格納部125に格納された、秘匿化変換された判定データを、計算基盤300に送信して、学習済みのニューラルネットワーク310に評価を行わせる。計算基盤300は、判定結果をユーザ装置100に返信する。
【0067】
ユーザ装置100の受信部129は、計算基盤300から判定結果を受信して、第5データ格納部131に格納する。
【0068】
教師データも秘匿化変換されている場合には、第2変換部123は、さらに、第5データ格納部131に格納された判定結果に対して、変換ルール格納部109に格納されている第2の変換ルールと設定データ格納部105に格納されている設定データとに従った逆変換を実行し、逆変換後の判定結果を、第5データ格納部131に格納する。
【0069】
第3出力部133は、第5データ格納部131に格納された逆変換後の判定結果又は計算基盤300からの判定結果を、表示装置、印刷装置、他のコンピュータなどの出力装置に出力する。
【0070】
次に、より詳細な処理内容について、
図6を用いて説明する。
入力部101は、例えばデータ保有者から、判定データの入力又は指定を受け付け、判定データを取得して、第3データ格納部121に入力する(
図6:ステップS21)。
【0071】
次に、第2変換部123は、変換ルール格納部109に格納されている第1の変換ルールと設定データ格納部105に格納されている設定データとに従って、判定データに対して秘匿化変換を行い、秘匿化変換された判定データを第4データ格納部125に格納する(ステップS23)。本ステップの処理は、学習時の処理(
図3)におけるステップS5と同じである。すなわち、学習データXを判定データXとして、秘匿化変換を行えばよい。従って、説明は省略する。
【0072】
そうすると、第2出力部127は、第4データ格納部125から秘匿化変換された判定データを読み出して、計算基盤300に送信する(ステップS25)。
【0073】
これにより、計算基盤300は、秘匿化変換された判定データを受信し、学習済みのニューラルネットワーク310に入力することで、判定結果を得る。そして、計算基盤300は、秘匿化変換された判定データの送信元であるユーザ装置100に対して、判定結果を送信する。
【0074】
そうすると、受信部129は、計算基盤300から判定結果を受信して、第5データ格納部131に格納する(ステップS27)。
【0075】
そして、第2変換部123は、設定データ格納部105に格納されている設定データに基づき、判定結果に対して逆変換を行うことを要するのか否かを判断する(ステップS29)。学習時に教師データについても秘匿化変換を行っていた場合には、逆変換を行うことになる。一方、学習時に教師データについて秘匿化変換を行っていない場合には、判定結果をそのまま出力してよい。
【0076】
よって、判定結果に対して逆変換を行わなくてもよい場合には(ステップS29:Noルート)、処理はステップS33に移行する。
【0077】
一方、判定結果に対して逆変換を行う場合には(ステップS29:Noルート)、第2変換部123は、変換ルール格納部109に格納されている第2の変換ルールと設定データ格納部105に格納されている設定データに従って、判定結果に対して逆変換を行い、処理結果を第5データ格納部131に格納する(ステップS31)。
【0078】
上では、教師データYから、秘匿化すべき属性を抽出した後の教師データY'、教師データY'に対して秘匿化変換を行った後の教師データY"と記した。
【0079】
これにならって、秘匿化された判定結果から、秘匿化すべき属性のみを抽出したベクトルY"として、秘匿化前の判定結果から、秘匿化すべき属性のみを抽出したベクトルY'を計算することになる。
【0080】
f-1(Y")=f-1(Y')Ay-By
という関係があるので、
f-1(Y')Ay=f-1(Y")+By
f-1(Y')=(f-1(Y")+By)Ay-1
Y'=f((f-1(Y")+By)Ay-1)
以上のような計算を行う。
【0081】
このベクトルY'と、秘匿化された判定結果における秘匿化しない属性とで、秘匿化前の判定結果が得られる。
【0082】
なお、出力層の非線形関数f()の入力(f-1(Y")及び秘匿化しない属性についてのf-1())を、学習済みのニューラルネットワーク310から直接得られる場合には、それを用いてもよい。
【0083】
従って、第3出力部133は、第5データ格納部131に格納された、ステップS31の処理後の判定結果又は計算基盤300から受信した判定結果である秘匿化前の判定結果を、出力装置に対して出力する(ステップS33)。
【0084】
このようにすれば、学習データ等を秘匿化変換した上で学習した学習済みのニューラルネットワーク310から、秘匿化の状態を維持しつつ判定データに対する判定結果を得ることができる。
【0085】
これまでは、計算基盤300に学習済みのニューラルネットワーク310を構築しておき、それを利用する場合を説明したが、学習時の処理負荷に比べて評価時の処理負荷はそれほど高くないので、学習済みのニューラルネットワーク310を、ユーザ装置100に構築して利用したいという場合も生ずる。一方、データ保有者からすれば、ユーザ装置100であればデータは秘匿化変換を行わなくても秘匿性は維持されるので、判定データや判定結果に対して処理を行わずに済ませることが望まれる。
【0086】
すなわち、学習済みのニューラルネットワーク310の重みデータを計算基盤300からダウンロードして、ユーザ装置100上に学習済みのニューラルネットワークを構築する際に、重みデータの変換を行って、判定データや判定結果に対する処理を不要にすることが好ましい。
【0087】
ユーザ装置100に学習済みのニューラルネットワーク190を構築する場合におけるユーザ装置100の機能ブロック構成例を、
図7に示す。
【0088】
ユーザ装置100は、設定データ格納部105と、変換ルール格納部109と、第2受信部141と、第6データ格納部143と、第7データ格納部145と、第3変換部147と、第8データ格納部149と、第9データ格納部151と、設定部153とを有する。
【0089】
なお、別途、計算基盤300において構築したニューラルネットワーク310と同様の構成を有する学習前のニューラルネットワーク190を構築するものとする。
図2と同じ符号が付されている構成要素については、同一又はほぼ同じ機能を有するものである。
【0090】
第2受信部141は、例えばデータ保有者からの指示に応じて、計算基盤300に対して学習済みのニューラルネットワーク310の重みデータのダウンロードを要求し、計算基盤300から重みデータを受信して、第6データ格納部143に格納する。
【0091】
第2受信部141は、例えばデータ保有者からの指示に応じて、計算基盤300に対して学習済みのニューラルネットワーク310の重みデータの差分ダウンロードを要求し、計算基盤300から重みデータの差分データを受信して、第7データ格納部143に格納することもある。
【0092】
ある時点で全部の重みデータをダウンロードしてから、さらに計算基盤300上でニューラルネットワーク310の学習を進める場合もある。その場合には、再度全部の重みデータをダウンロードしてもよいが、前回ダウンロードした重みデータと、現在の重みデータとの差分のみをダウンロードして反映させる方が効率的である場合があるため、差分ダウンロードを行う。
【0093】
第3変換部147は、設定データ格納部105に格納されている設定データと変換ルール格納部109に格納されている第1の変換ルールなど(第2の変換ルールを用いる場合もある)に従って、重みデータ又は重みデータの差分データに対して変換処理を行って、重みデータの場合には変換後の重みデータ等を第8データ格納部149に格納し、重みデータの差分データの場合には、重みデータの変換後の差分データ等を第9データ格納部151に格納する。
【0094】
設定部153は、第8データ格納部149又は第9データ格納部151に格納されているデータを用いて、ニューラルネットワーク190に対する重みの設定処理を行う。
【0095】
次に、重みデータをダウンロードする際における詳細な処理内容について、
図8を用いて説明する。
【0096】
第2受信部141は、例えばデータ保有者からの指示に応じて、計算基盤300に対して学習済みニューラルネットワーク310の重みデータを要求して、当該重みデータをダウンロードし、第6データ格納部143に格納する(
図8:ステップS41)。
【0097】
次に、第3変換部147は、設定データ格納部105に格納されている設定データと変換ルール格納部109に格納されている第1の変換ルールとに従って、重みデータに含まれる所定部分の重みに対して変換処理を実行し、変換後の重みを第8データ格納部149に格納する(ステップS43)。
【0098】
学習済みのニューラルネットワーク310における全ての重みについて変換を行うのではなく、入力層の直後のリンクに対する重みについて変換を行う。教師データについても秘匿化変換を行っている場合には、出力層における非線形関数の入力にかけられた重みについて変換を行う。
【0099】
秘匿化すべき属性についての入力層の直後のリンクに対する重み行列Wと閾値行列Bw(併せて重み又は重み行列と呼ぶ)が学習済みのニューラルネットワーク310から得られたとすると、秘匿変換後のデータX"について以下の式が得られる。
X"W+Bw=(X'Ax-Bx)W+Bw=X'(AxW)+(-BxW+Bw)
【0100】
従って、秘匿変換前のデータX'に適用できる重みW'及びBw'は、以下のように表される。
W'=AxW
Bw'=(-BxW+Bw)
【0101】
このような変換を行えばよい。なお、秘匿化しない属性についての入力層の直後のリンクに対する重みについては変換しない。
【0102】
そして、第3変換部147は、設定データ格納部105に格納されている設定データに基づき、教師データを秘匿化したか否かを判断する(ステップS45)。教師データを秘匿していない場合には(ステップS45:Noルート)、第3変換部147は、残余の重みデータをそのまま第8データ格納部149に格納して、処理はステップS49に移行する。
【0103】
一方、教師データを秘匿していた場合には(ステップS45:Yesルート)、第3変換部147は、設定データ格納部105に格納されている設定データと変換ルール格納部109に格納されている第2の変換ルールに従って、重みデータに含まれる他の所定部分の重みに対して変換処理を実行し、変換後の重みデータを第8データ格納部149に格納する(ステップS47)。なお、残余の重みデータについても、第8データ格納部149に格納する。
【0104】
学習済みのニューラルネットワーク310の出力層における非線形関数f()の入力に対してかけられた重み行列をAlw及びBlw(但し、秘匿化すべき属性についての重み)とし、出力層の入力をZとすると、f-1(Y")は以下のように表される。
f-1(Y")=ZAlw+Blw
【0105】
一方、上でも述べたように、以下も成り立つ。
f-1(Y")=f-1(Y')Ay-By
【0106】
従って、左辺を打ち消すと以下のようになる。
f-1(Y')Ay-By=ZAlw+Blw
f-1(Y')=ZAlwAy-1+(Blw+By)Ay-1
【0107】
従って、f-1(Y')=ZAlw'+Blw'と表すのであれば、
Alw'=AlwAy-1
Blw'=(Blw+By)Ay-1
【0108】
このような変換を行うことで、秘匿化なしの判定結果を得られるようになる。なお、秘匿化しない属性についての重みについては変換しない。
【0109】
設定部153は、第8データ格納部149に格納された重みデータを、ユーザ装置100において、計算基盤300において構築したのと同一構造のニューラルネットワーク190に対して設定する(ステップS49)。これによって、秘匿化をしないで判定データをそのまま入力できる学習済みのニューラルネットワーク190が生成されたことになる。
【0110】
次に、差分ダウンロードを行う場合における詳細な処理内容について、
図9を用いて説明する。
【0111】
まず、第2受信部141は、例えばデータ保有者からの指示に応じて、計算基盤300に対して学習済みニューラルネットワーク310の重みの差分ダウンロードを要求して、当該重みの差分データをダウンロードし、第7データ格納部145に格納する(
図9:ステップS51)。この際には、前回のダウンロード又は差分ダウンロードの時点との差分ダウンロードであることを指定する。計算基盤300では、ダウンロード又は差分ダウンロードが発生した時点における重みデータを保存しておき、現在の重みデータとの差分を算出して、ユーザ装置100に送信する。
【0112】
次に、第3変換部147は、設定データ格納部105に格納されている設定データと変換ルール格納部109に格納されている第1の変換ルールとに従って、重みデータに含まれる所定部分の重みの差分データに対して変換処理を実行し、変換後の差分データを第9データ格納部151に格納する(ステップS53)。
【0113】
ステップS43と同様に、学習済みのニューラルネットワーク310における入力層の直後のリンクに対する重みの差分データについて変換を行う。
【0114】
秘匿化すべき属性についての入力層の直後のリンクに対する重みの差分行列ΔW及びΔBwが学習済みのニューラルネットワーク310から得られたとする。
ステップS43と同様に、以下のような変換を行う。
ΔW'=AxΔW
ΔBw'=(-BxΔW+Bw)
【0115】
そうすると、W'=ΔW'+W'、Bw'=ΔBw'+Bw'という反映を行えばよい。
【0116】
そして、第3変換部147は、設定データ格納部105に格納されている設定データに基づき、教師データを秘匿化したか否かを判断する(ステップS55)。教師データを秘匿していない場合には(ステップS55:Noルート)、第3変換部147は、残余の重みの差分データをそのまま第9データ格納部151に格納して、処理はステップS59に移行する。
【0117】
一方、教師データを秘匿していた場合には(ステップS55:Yesルート)、第3変換部147は、設定データ格納部105に格納されている設定データと変換ルール格納部109に格納されている第2の変換ルールに従って、重みの差分データの他の所定部分における差分データに対して変換処理を実行し、変換後の差分データを第9データ格納部151に格納する(ステップS57)。なお、残余の重みデータについても、第9データ格納部151に格納する。
【0118】
ステップS47と同様に、学習済みのニューラルネットワーク310の出力層における非線形関数f()の入力に対してかけられた重みの差分データΔAlw及びΔBlwを変換する。
ΔAlw'=ΔAlwAy-1
ΔBlw'=(ΔBlw+By)Ay-1
【0119】
そうすると、Alw'=ΔAlw'+Alw'、Blw'=ΔBlw'+Blw'という反映を行えばよい。
【0120】
そして、設定部153は、第9データ格納部151に格納されている差分データを、秘匿化なしの学習済みニューラルネットワーク190に反映させる(ステップS59)。
【0121】
上でも述べたように、W'=ΔW'+W'、Bw'=ΔBw'+Bw'、Alw'=ΔAlw'+Alw'、Blw'=ΔBlw'+Blw'という反映を行えばよい。
【0122】
残余の差分データについても、現在の重みに加算することで反映させることができる。
【0123】
以上のように差分ダウンロードにも対応可能である。
【0124】
次に、他のデータ保有者と共同で計算基盤300における学習済みのニューラルネットワーク190の学習を行わせたり、他のデータ保有者に学習済みのニューラルネットワーク190を利用させる場合を想定する。
【0125】
このような場合には、ユーザ装置100のエクスポート部117によって、変換ルール格納部109に格納されている変換ルールと設定データ格納部105に格納されている設定データとを例えば暗号化した後、ユーザ装置200に送信することになる。
【0126】
変換ルール等をインポートするユーザ装置200の機能ブロック構成例(学習時)を
図10に示す。
【0127】
ユーザ装置200は、入力部201と、第1データ格納部203と、設定データ格納部205と、変換ルール格納部209と、受信部207と、第2データ格納部213と、第1出力部215とを有する。
図2に示したユーザ装置100の構成と比較すると、変換ルール生成部107の代わりに受信部207が設けられていることになる。すなわち、変換ルールをインポートするので、変換ルールを生成することはない。入力部201は、入力部101に対応し、第1データ格納部203は、第1データ格納部103に対応し、設定データ格納部205は、設定データ格納部105に対応し、変換ルール格納部209は、変換ルール格納部109に対応し、第2データ格納部213は、第2データ格納部113に対応し、第1出力部215は、第1出力部115に対応する。なお、評価時には、
図5に示したユーザ装置100の構成と同様である。
【0128】
このようなユーザ装置200の処理内容を
図11を用いて説明する。
【0129】
受信部207は、変換ルール及び設定データを、ユーザ装置100からインポートして、変換ルールを変換ルール格納部209に格納し、設定データを設定データ格納部205に格納する(
図11:ステップS61)。
【0130】
そして、評価を実行する場合には(ステップS63:Yesルート)、
図6に示した評価時の処理を実行する(ステップS65)。処理内容はユーザ装置100と同じである。
【0131】
一方、評価ではなくアンサンブル学習を行う場合には、
図3に示した学習時の処理を実行する(ステップS67)。但し、第1の変換ルールを生成するステップS3と第2の変換ルールを生成するステップS9については、実行しない。なお、ユーザ装置200によっては全く学習を行わない場合もある。
【0132】
以上のような形で、ユーザ装置200に変換ルールをライセンスすることができ、計算基盤300の学習済みニューラルネットワーク310を有効活用することができるようになる。
【0133】
[実施の形態2]
第1の実施の形態では、データ保有者が、計算基盤300に、多層パーセプトロンであるニューラルネットワークを構築する場合を述べた。
【0134】
データ保有者によっては、多層パーセプトロンではなく、畳み込みニューラルネットワークの利用を欲する場合がある。以下、畳み込みニューラルネットワーク(Convolutional Nueral Network: CNN)の利用を欲する場合について説明する。
【0135】
図12に、6つの属性x
1乃至x
6を含む学習データXと、教師データYとで畳み込みニューラルネットワークの学習を行う場面を示す。畳み込みニューラルネットワークの畳み込み層では、ニューラルネットワークのように全結合ではなく、その後の層のノードp、q及びrのそれぞれに入力される属性は限定されている。
図12の例では、ノードpには、属性x
1乃至x
4が入力され、ノードqには、属性x
2乃至x
5が入力され、ノードrには、属性x
3乃至x
6が入力される。さらに、重みについての制約も存在する。すなわち、
図12において同じ線種のラインには同じ重みが設定される。具体的には、属性x
1に対するノードpへの重みと、属性x
2に対するノードqへの重みと、属性x
3に対するノードrへの重みは同一となる。また、属性値x
2に対するノードpへの重みと、属性x
3に対するノードqへの重みと、属性x
4に対するノードrへの重みは同一となる。さらに、属性x
3に対するノードpへの重みと、属性x
4に対するノードqへの重みと、属性x
5に対するノードrへの重みは同一となる。また、属性x
4に対するノードpへの重みと、属性x
5に対するノードqへの重みと、属性x
6に対するノードrへの重みは同一となる。なお、
図12では説明を簡単にするために、6つの属性x
1乃至x
6は図中において上から下に1次元で配置されており、制約も図中の上下の1次元方向に存在していることを説明したが、属性を2次元に配置して2次元の各次元(例えば、上下の次元に加えて左右の次元など)に対して制約を設けることも可能であり、3次元あるいはそれ以上の次元に配置し各次元に対して制約を設けることも可能である。
【0136】
このような構造を有する畳み込みニューラルネットワークには、全結合のニューラルネットワークを前提とした第1の実施の形態における秘匿化変換をそのままでは適用できない。そこで、畳み込みニューラルネットワークを等価な多層パーセプトロンの組み合わせに変換する。
【0137】
説明を簡単にするために、プーリング層を省略した1次元の畳み込みニューラルネットワークの一例を
図13に示す。この例では、
図12に示した畳み込み層と、2層の全結合層とを含む。このような畳み込みニューラルネットワークは、畳み込み層の重みの拘束条件から、
図14に示すような2つの全結合のニューラルネットワークで代替される。
【0138】
図14の例では、
図13における全結合層に対応する第1のニューラルネットワークNN1と、
図13における畳み込み層に対応し且つ入力ノードA乃至Dに対して出力ノードFを有する第2のニューラルネットワークNN2とを含む。
【0139】
例えば、
図15Aに示すように、第2のニューラルネットワークNN2の入力ノードA乃至Dに、属性値x
1乃至x
4を入力すれば、出力ノードFにおいて値F
1を出力するので、それを、第1のニューラルネットワーク1の入力ノードpに入力する。また、
図15Bに示すように、第2のニューラルネットワークNN2の入力ノードA乃至Dに、属性値x
2乃至x
5を入力すれば、出力ノードFにおいて値F
2を出力するので、それを、第1のニューラルネットワーク1の入力ノードpに入力する。さらに、
図15Cに示すように、第2のニューラルネットワークNN2の入力ノードA乃至Dに、属性値x
3乃至x
6を入力すれば、出力ノードFにおいて値F
3を出力するので、それを、第1のニューラルネットワーク1の入力ノードrに入力する。
【0140】
第1のニューラルネットワークNN1でそのまま演算を行えば、
図13に示した畳み込みニューラルネットワークと同様の演算がなされて、第1のニューラルネットワークNN1の出力ノードuからは、
図13に示した畳み込みニューラルネットワークと同じ結果が得られることになる。
【0141】
すなわち、畳み込みニューラルネットワーク(
図13)の畳み込み層の各出力ノードの入力に応じて、判定データ(又は学習データ)の属性の組み合わせをその出力ノード数分生成し、第2のニューラルネットワークNN2の入力ノードに、属性の組み合わせ毎に入力すればよい。より具体的には、畳み込みニューラルネットワーク(
図13)の畳み込み層の各出力ノードへ入力を与えている、畳み込みニューラルネットワーク(
図13)の入力ノードへの入力を、
図14の入力ノードA乃至Dに入力するので、そのような入力の組の数は、畳み込みニューラルネットワーク(
図13)の畳み込み層の出力ノード数と同じv個(
図13では3個)分存在する。よって、
図14の入力ノードA乃至Dに入力される入力の組みの数は、畳み込みニューラルネットワーク(
図13)への入力1組に対してv倍となる。
【0142】
学習時においても同様の考え方で処理を行う。
図16Aに示すように、まず、第2のニューラルネットワークNN2に対して、学習データの属性値x
1乃至x
4を、入力ノードA乃至Dに入力して、出力ノードFから値F
1を得る。同様に、
図16Bに示すように、第2のニューラルネットワークNN2に対して、学習データの属性値x
2乃至x
5を、入力ノードA乃至Dに入力して、出力ノードFから値F
2を得る。さらに、
図16Cに示すように、第2のニューラルネットワークNN2に対して、学習データの属性値x
3乃至x
6を、入力ノードA乃至Dに入力して、出力ノードFから値F
3を得る。
【0143】
そして、
図16Dに示すように、これらの値F
1乃至F
3を、それぞれ第1のニューラルネットワークNN1における入力ノードp乃至rの入力とすると共に、出力ノードuには教師データY
1を与えて、第1のニューラルネットワークNN1の学習1を行わせる。この際、第1のニューラルネットワークNN1の伝搬誤差差分を第1のニューラルネットワークNN1の入力ノードp乃至rまで求め、値F
1に対する誤差差分e
1、値F
2に対する誤差差分e
2、値F
3に対する誤差差分e
3をそれぞれ算出する。
【0144】
そして、
図16Eに示すように、(1)学習データとして属性値x
1乃至x
4がそれぞれ第2のニューラルネットワークNN2の入力ノードA乃至Dに与えられた場合の誤差差分(第2のニューラルネットワークNN2における教師データと現在の評価値との差分)を前記の誤差差分e
1、(2)学習データとして属性値x
2乃至x
5がそれぞれ第2のニューラルネットワークNN2の入力ノードA乃至Dに与えられた場合の誤差差分を前記の誤差差分e
2、(3)学習データとして属性値x
3乃至x
6がそれぞれ第2のニューラルネットワークNN2の入力ノードA乃至Dに与えられた場合の誤差差分を前記の誤差差分e
3として、第2のニューラルネットワークNN2の重みを修正する学習2を行う。
【0145】
このような処理を学習が収束するまで繰り返すことによって、畳み込みニューラルネットワークと等価なニューラルネットワークの学習が行われる。なお、2回目以降の学習1については、学習2がある程度収束するまで省略してもよいし、値F1及至F3のいずれかが変更される度に行ってもよい。
【0146】
このような前提の下、第1の実施の形態で述べた秘匿化変換をどのように行うのかを説明する。
【0147】
学習データについては、第1段階としては第1の実施の形態と同様の秘匿化変換を第2のニューラルネットワークNN2に対する入力に対して実行する。但し、上でも述べたように、第1の実施の形態のように学習データに含まれる全ての属性を一度に出力することはできないので、上の例では属性の組み合わせを3つ生成することになる。但し、
図15A乃至
図15Cで示したような属性の範囲を少しずつずらして並べるだけでは、同じ値が規則的に繰り返し現れるので、その情報を用いて入力値の推定が行われる可能性がある。従って、組み合わせの順番を入れ替える処理も行う。すなわち、第1のニューラルネットワークNN1の入力ノードとしてp、q、rという3つのノードがある場合には、その順序を(p,q,r)、(p,r,q)、(q,p,r)、(q,r,p)、(r,p,q)、(r,q,p)からランダムに選択されるように入れ替え、その入れ替え後の順序に応じて第2のニューラルネットワークNN2に入力する学習データの組みの入力順序も入れ替える。例えば、
図14において第1のニューラルネットワークNN1の入力ノードの順番を図中の上から下へ(r,q,p)という順序に入れ替えた場合、
図16Cにおいて第2のニューラルネットワークNN2に与えられた学習データを評価して得られた値F
3が、第1のニューラルネットワークNN1の入れ替え後の一番上のノードrへの入力となる。但し、この例のように並べ替えの候補が6通りしか存在しないと、攻撃者はそれらの候補を全て試すことが可能となるため並べ替えの効果は十分得られないが、候補数が増えることでその効果は大きくなる。
【0148】
なお、畳み込み層の出力がプーリング層となっている場合には、組み合わせの並び替えを、プーリング層で値の選択が行われる小領域内と小領域間で行う。例えば、
図13の全結合層の前にa、b、c、d、e及びfの6つのノードがあり、ノードa及びbから選択されたノードの値がノードpの値、ノードc及びdから選択されたノードの値がノードqの値、ノードe及びfから選択されたノードの値がノードrの値を取るプーリング層となっていたとすると、小領域内の並び替えは、ノードa及びbの間、ノードc及びd間、ノードe及びf間でそれぞれ行われ、小領域間の並び替えは上で説明した通り、p、q及びr間の並び替えにより行われる。
【0149】
第1のニューラルネットワークNN1についての教師データについては、第1の実施の形態と同様の秘匿化変換を実行する。
【0150】
よって、畳み込みニューラルネットワークを利用する場合には、学習時には
図3の処理フローにおおよそ従うが、第2のニューラルネットワークNN2のためにステップS5において、
図17に示すような処理を追加で実行する。
【0151】
すなわち、変換部111は、教師データの各案件について、対応する学習データに含まれる属性の所定の組み合わせを、畳み込み層の出力ノード数分生成する(
図17:ステップS71)。所定の組み合わせは、上で述べたように、畳み込み層の各出力ノードに接続される前記の畳み込み層の各入力ノードに対応する属性の組み合わせとなる。そして、変換部111は、教師データの各案件について、属性の所定の組み合わせの順番を入れ替える(ステップS73)。順番の入れ替えは、ランダムに行ってもよい。
【0152】
以上のような処理を行うことで、畳み込みニューラルネットワークにも対応することができるようになる。
【0153】
評価時においても、
図6のステップS23で
図17に示した処理を追加で実行すればよい。
【0154】
以上本発明の実施の形態を説明したが、本発明はこれらの実施の形態に限定されるものではない。例えば、機能ブロック構成例は例に過ぎず、プログラムモジュール構成とは一致しない場合もある。また、処理フローについても、処理結果が変わらない限り、処理順番を入れ替えたり、複数のステップを並列に実行してもよい。
【0155】
また、ニューラルネットワークに代わり、再帰型ニューラルネットワーク(Recurrent Neural Network)にも適用可能である。また、上で述べたような変換ルールによる変換は、アフィン変換とも呼ばれ、これによって学習データ及び教師データが秘匿化される。本発明の適用範囲は、ニューラルネットワークに限られず、アフィン変換が適用可能なものであればよい。より一般的には、以下が成り立つ場合、学習データ(あるいは判定データ(すなわち評価対象データ)など)であるinputの秘匿化に関して、本発明を適用可能である。具体的には、以下が成り立つfunction()とfunction'()と秘匿化関数()とinputとoutputとについて、本発明を適用可能である。
・inputとoutputとがfunction()という関数を用いてoutput=function(input)と表せ、且つ、function()と秘匿化関数()とを合成した結果を関数function'()=function(秘匿化関数())と表せる場合、
inputに秘匿化関数() を適用した結果であるinput'=秘匿化関数(input)に対してfunction'(input)= function(input')が成立する
また、f
-1(教師データ)などに対応するoutputを秘匿化し、秘匿化されたf
-1(判定結果)(f
-1(評価結果)とも記す)などに対応するoutput'から秘匿されていないf
-1(判定結果)(f
-1(評価結果)とも記す)などに対応するoutputを得る場合には、以下が成立すれば、本発明を適用可能である。具体的には、以下が成り立つfunction()とfunction'()と秘匿化関数()とinputとoutputとについて、本発明を適用可能である。
・output'=秘匿化関数(output)=秘匿化関数(function(input))=function'(input)となる秘匿化関数()に逆行列が存在し、且つ
output=秘匿化関数
-1(output')=秘匿化関数
-1(秘匿化関数(function(input)))=function(input)
あるいは、関数()の代わりに二項演算子*を用いて、inputとoutputとがoutput=input*functionと表せる場合、学習データ(あるいは判定データ(すなわち評価対象データ)など)であるinputの秘匿化に関しては、
(input*秘匿化関数)*function=input*(秘匿化関数*function)
という結合法則が成立するfunctionと秘匿化関数とinputとに対して、本発明を適用できる。
また、f
-1(教師データ)などに対応するoutputを秘匿化し、秘匿化されたf
-1(判定結果)(f
-1(評価結果)とも記す)などに対応するoutput'から秘匿されていないf
-1(判定結果)(f
-1(評価結果)とも記す)などに対応するoutputを得る場合には、
output'=output*秘匿化関数=(input*function)*秘匿化関数=input*(function*秘匿化関数)
という関係(最右辺と右から二番目の右辺との間に結合法則の関係を含む)が成立すると共に、秘匿化関数に逆元である(秘匿化関数)
-1が存在し、且つ
output=output*秘匿化関数*秘匿化関数
-1=input*function
が成立するfunctionと秘匿化関数とinputとoutputとoutput'とに対して、本発明を適用できる。
なお、X"=X'Ax-Bxなどの式は、横ベクトルX"及びX'の次元を以下のように1増やした上で、以下のように行列を変形すれば、二項演算子*を用いて(5)式のように表すことができ、上記の一般化の一例となっている。
【数4】
【数5】
【0156】
本発明の適用対象は、このfunction()を一部に有していればよく、上で述べたニューラルネットワークであれば、入力から非線形関数f()の入力までが1つのfunction()であり、ニューラルネットワークの出力層から1つ手前の層の出力から、出力層の非線形関数の入力までも1つのfunction()である。
【0157】
このような観点からすれば、本発明の適用対象は、線形回帰分析、重回帰分析、ロジスティック回帰分析などの分析も含まれる。
【0158】
本願では、これらの分析を含めて機械学習、又は回帰分析を含む機械学習と呼ぶものとする。また、学習済みニューラルネットワークと、回帰分析の分析結果を表すモデルとを合わせて学習済みモデルと呼ぶものとする。
【0159】
なお、上で述べたユーザ装置100及び200は、コンピュータ装置であって、
図18に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とスピーカ2518とがバス2519で接続されている。なお、HDDはソリッドステート・ドライブ(SSD:Solid State Drive)などの記憶装置でもよい。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【0160】
以上述べた実施の形態をまとめると以下のようになる。
本実施の形態に係る情報処理方法は、(A)第1の格納部に格納される、機械学習のための学習データに含まれる複数種類の属性値を混合する変換を行うための第1の変換ルールを生成又は取得するステップと、(B)上記学習データに対して、第1の変換ルールに従った変換を含む秘匿化変換を行って秘匿化学習データを生成し、第2の格納部に格納するステップとを含む。
【0161】
これによって、センシティブな情報を含むデータを秘匿したまま機械学習できるようになる。すなわち、秘匿化学習データを、クラウドなどの計算基盤に送信して機械学習を行わせれば、センシティブな情報を含むデータの秘匿性を維持しつつ、外部で機械学習を行わせることができるようになる。
【0162】
また、本情報処理方法は、(C)第1の格納部に格納される、機械学習のための教師データに含まれる属性値に対して変換を行うための第2の変換ルールを生成又は取得するステップと、(D)教師データに対して、第2の変換ルールに従った変換を含む秘匿化変換を行って秘匿化教師データを生成し、第2の格納部に格納するステップとをさらに含むようにしてもよい。教師データについてもセンシティブな情報を含む場合には、このような処理を行えばよい。
【0163】
さらに、本情報処理方法は、(E)判定データに対して、上記第1の変換ルールに従った変換を含む秘匿化変換を行って、秘匿化判定データを生成するステップと、(F)秘匿化学習データと教師データとを用いて機械学習が行われた学習済みモデル(例えば、学習済みニューラルネットワーク、回帰分析の結果を表すモデル)を実装したシステム(例えばクラウドなどの計算基盤)に対して、秘匿化判定データを送信して、当該秘匿化判定データに対する判定結果を受信するステップとさらに含むようにしてもよい。評価時には、判定データも、学習データと同様の変換を行ったうえで上記システムで評価させればよい。
【0164】
なお、本情報処理方法は、(G)判定データに対して、第1の変換ルールに従った変換を含む秘匿化変換を行って、秘匿化判定データを生成するステップと、(H)秘匿化学習データ及び秘匿化教師データを用いて機械学習が行われた学習済みモデルを実装したシステムに対して、秘匿化判定データを送信して、当該秘匿化判定データに対する秘匿化判定結果を受信するステップと、(I)受信した秘匿化判定結果に対して、第2の変換ルールに基づく逆変換を実行して、判定結果を生成するステップとをさらに含むようにしてもよい。教師データについても秘匿化変換を行った場合には、評価時には秘匿化を戻す処理(逆変換)を行えばよい。
【0165】
なお、本情報処理方法は、(J)第1の変換ルールに係るデータを、他のコンピュータに送信するステップをさらに含むようにしてもよい。これによって、第1の変換ルールをエクスポートして、他の主体に利用させることができるようになる。この際には第1の変換ルールに係るデータを暗号化などでマスクするようにしてもよい。
【0166】
さらに、本情報処理方法は、(K)秘匿化学習データを用いて機械学習が行われた学習済みニューラルネットワークを実装したシステムから、学習済みニューラルネットワークの重みのデータを取得するステップと、(L)上記重みのうち所定部分の重みに対して、第1の変換ルールに基づく変換を行うステップとをさらに含むようにしてもよい。このようにして得た重みを、自装置において構築したニューラルネットワークに設定すれば、秘匿化なしで判定データの評価を行うことができるようになる。なお、教師データについても秘匿化されている場合には、同様に重みのデータを変換する。
【0167】
また、本情報処理方法は、(M)秘匿化学習データを用いて機械学習が行われた学習済みニューラルネットワークを実装したシステムから、学習済みニューラルネットワークにおける現在の重みと所定時点における重みとの差分に係る差分データを取得するステップと、(N)差分データのうち所定部分の重みの差分に対して、第1の変換ルールに基づく変換を行うステップと、(O)差分データのうち所定部分の重みの変換後の差分と、差分データのうち所定部分以外の重みの差分とを、所定時点における重みに基づき構築された学習済みニューラルネットワークに対して反映するステップとをさらに含むようにしてもよい。このように差分データをダウンロードするような場合にも差分データを反映させることができるようになる。
【0168】
また、上で述べた第1の変換ルールが、機械学習の対象となるニューラルネットワークの構成(例えば、ニューラルネットワークに用いられている非線形関数の特性、ニューラルネットワークの種別など)に応じて、上記複数種類の属性値を混合する変換を行うための変換ルールである場合もある。これによって、構築すべきニューラルネットワークに応じた適切な秘匿化変換が行われるようになる。
【0169】
さらに、上で述べた第1の変換ルールが、学習データにおける指定の属性毎に当該属性の値の分布(例えば、平均、標準偏差、分散など)に基づき調整され、且つ上記指定の属性の値を混合する変換を行うための第1の行列を含むようにしてもよい。これによって属性ごとの分布に基づき適切に秘匿化変換が行われるようになる。なお、直接算出された分布だけではなく、知られた分布であってもよい。
【0170】
また、上で述べた第1の変換ルールが、学習データにおける指定の属性値を混合する変換を行うための第1の行列を、当該第1の行列の特性と秘匿化学習データを用いて機械学習が行われるニューラルネットワークにおける非線形関数の特性とに応じて調整した行列を含むようにしてもよい。これによって、ニューラルネットワークの特性に応じて学習が進みやすい秘匿化変換が行われるようになる。なお、第1の行列は、学習データにおける指定の属性毎に当該属性の値の分布(例えば、平均、標準偏差、分散など)に基づき調整されたものである場合もある。
【0171】
また、上で述べた秘匿化変換が、秘匿化学習データを用いて機械学習が行われるニューラルネットワークが畳み込みニューラルネットワークである場合に、第1の変換ルールによって変換された学習データに含まれる属性の所定の組み合わせを、同一の教師データに対して、畳み込みニューラルネットワークの構造に応じて複数生成し、当該組み合わせの順番を入れ替える処理を含むようにしてもよい。これによって、畳み込みニューラルネットワークを採用する場合においても対処できるようになる。
【0172】
以上述べた情報処理方法をコンピュータに実行させるためのプログラムを作成することができて、そのプログラムは、様々な記憶媒体に記憶される。
【0173】
また、上で述べたような情報処理方法を実行する情報処理装置は、1台のコンピュータで実現される場合もあれば、複数台のコンピュータで実現される場合もあり、それらを合わせて情報処理システム又は単にシステムと呼ぶものとする。
【符号の説明】
【0174】
101 入力部
103 第1データ格納部
105 設定データ格納部
107 変換ルール生成部
109 変換ルール格納部
111 変換部
113 第2データ格納部
115 第1出力部
117 エクスポート部