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

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

▶ 日本電気株式会社の特許一覧

特許7529057類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム
<>
  • 特許-類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム 図1
  • 特許-類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム 図2
  • 特許-類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム 図3
  • 特許-類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-29
(45)【発行日】2024-08-06
(54)【発明の名称】類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラム
(51)【国際特許分類】
   H04L 9/30 20060101AFI20240730BHJP
   G06F 21/60 20130101ALI20240730BHJP
【FI】
H04L9/30 Z
G06F21/60 320
【請求項の数】 10
(21)【出願番号】P 2022581066
(86)(22)【出願日】2021-02-10
(86)【国際出願番号】 JP2021004898
(87)【国際公開番号】W WO2022172347
(87)【国際公開日】2022-08-18
【審査請求日】2023-08-09
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100080816
【弁理士】
【氏名又は名称】加藤 朝道
(74)【代理人】
【識別番号】100098648
【弁理士】
【氏名又は名称】内田 潔人
(72)【発明者】
【氏名】中川 紗菜美
(72)【発明者】
【氏名】一色 寿幸
(72)【発明者】
【氏名】田宮 寛人
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2008-521025(JP,A)
【文献】特表2015-506485(JP,A)
【文献】国際公開第2011/052056(WO,A1)
【文献】ZHOU, H. and WORNELL, G.,Efficient Homomorphic Encryption on Integer Vectors and Its Applications,2014 Information Theory and Applications Workshop (ITA),2014年02月,pp.1-9
【文献】GUO, C., TIAN, P. and CHANG, C.-C.,Privacy preserving weighted similarity search scheme for encrypted data,IET Information Security,2018年09月06日,Vol.13 Iss.1,pp.61-69,<DOI:10.1049/iet-ifs.2018.5187>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/30
G06F 21/60
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算システムであって、
前記類似度計算装置は、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末は、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、
前記類似度計算装置は、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算システム。
【請求項2】
前記第1ベクトルの各要素の暗号文は、加法準同型性を満たす暗号方式で暗号化したものであり、
前記要素距離の暗号文は、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに前記重みを乗じた線形和を、前記第1ベクトルの各要素の暗号文に作用させることで格納したものである、
請求項1に記載の類似度計算システム。
【請求項3】
前記第1ベクトルの各要素の暗号文cjおよび前記第1ベクトルと前記要素距離の暗号文diは、前記第1ベクトルを(x1,x2,..,xn)[xi∈{0,1,2,…,S}]とし、前記第2ベクトルを(y1,y2,..,yn)[yi∈{0,1,2,…,S}]とし、前記重み付き距離テーブルの各要素をai[xi][yi]としたときに、それぞれ以下のように定められる、請求項2に記載の類似度計算システム。
【数1】

【請求項4】
前記第1ベクトルは、前記類似度計算装置に複数記憶されており、前記第1ベクトルの全てに対して、前記第1ベクトルと前記第2ベクトルとの距離を計算する、請求項1から請求項3のいずれか1項に記載の類似度計算システム。
【請求項5】
前記類似度計算装置に複数記憶されている前記第1ベクトルの中から、前記第1ベクトルと前記第2ベクトルとの距離が最小となるものを選択し、前記選択された第1ベクトルに結び付けられた値を前記入力端末へ送信する、請求項4に記載の類似度計算システム。
【請求項6】
前記入力端末から入力した前記第2ベクトルは、前記選択された第1ベクトルに結び付けられた値を前記入力端末へ送信した後に、前記類似度計算装置に複数記憶されている前記第1ベクトルの一つに含まれる、請求項5に記載の類似度計算システム。
【請求項7】
前記入力端末は、前記類似度計算装置が公開する公開鍵を用いて前記第2ベクトルを暗号化して前記類似度計算装置に送信する、請求項6に記載の類似度計算システム。
【請求項8】
入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離を計算する類似度計算装置であって、
前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、
前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算装置。
【請求項9】
類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算方法であって、
前記類似度計算装置が、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、
前記類似度計算装置が、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算方法。
【請求項10】
入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離をコンピュータに計算させる類似度計算プログラムであって、
前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、
前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラムに関するものである。
【背景技術】
【0002】
暗号技術の一つに準同型暗号というものがある。準同型暗号とは、平文m1,m2の暗号文Enc(m1),Enc(m2)が与えられたときに、平文m1,m2の二項演算m1○m2の暗号文Enc(m1○m2)を平文m1,m2に復号することなく計算できるものをいう。ここで「○」は二項演算であり、例えば加法「+」や乗法「×」である。また、加法「+」に関する準同型暗号は、加法準同型暗号と呼ばれている。準同型暗号は、様々な暗号プロトコルの要素技術として利用されている。
【0003】
このような準同型暗号を利用した暗号プロトコルの一つとして類似度計算がある。ここでは類似度計算の応用例として映画のレコメンデーションサービスを用いて、類似度計算を説明する。映画のレコメンデーションサービスでは、あるユーザYがある映画M*について好みに合うかを判断する際に、映画M*の他の映画に対する評価が近い他のユーザを見つける演算を行う。具体的には、ユーザYと他のユーザUiの映画M1,映画M2,…,映画Mnに対する評価値の類似度を計算し、この類似度が近い場合に映画M*についても好みが合うだろうと判断する。この類似度の例としては、ユークリッド距離やコサイン類似度を用いることができるが、重要な要請として、各ユーザの評価値を秘匿化したままで類似度の計算をすることである。このように対象を秘匿化したままで演算を行う場合に、準同型暗号は利用されている(例えば特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2017-111793号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
【0006】
ところで、類似度の設計に重み付けを行うことがある。例えば、映画M1の評価値の類似度の方が映画M2の評価値の類似度よりも重要であれば、各映画の評価値の類似度に重みを付与した類似度を用いて評価をする。いわゆる「重み付きユークリッド距離」は、重みを付与した類似度の例である。このような場合、加法準同型暗号を用いて、各ユーザの評価値を秘匿化したままで類似度の計算をすることができる。加法準同型暗号では、平文のスカラー倍についても、暗号文を復号することなく計算をすることが可能だからである。
【0007】
一方、より精緻に重み付けを行った場合、加法準同型暗号を用いた計算では困難が生じる。例えば、同じ映画の評価値であっても、好みである側で近い場合と好みではない場合で近い場合で異なる重み付けをしたい場合もある。具体的には、例えば評価値を好みの強い順に0から5までとする場合、評価値が0と1の差も評価値が4と5の差も同じ1であるが、好みである側で評価値が近い4と5の差の方をより強く類似度に反映させることが例として挙げられる。
【0008】
このような場合、加法準同型暗号では、重み付けを付与した類似度の計算をすることに障害が生じる。加法準同型暗号では、平文のスカラー倍の重み付けの場合は暗号文を復号することなく計算をすることが可能であるが、非線形(スカラー倍ではない)の重み付けの場合は加法準同型暗号に定められた演算の範疇で計算することができないからである。
【0009】
本発明の目的は、上述した課題を鑑み、非線形の重み付き類似度を暗号文のまま計算することに寄与する類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラムを提供することにある。
【課題を解決するための手段】
【0010】
本発明の第1の視点では、類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算システムであって、前記類似度計算装置は、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、前記入力端末は、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、前記類似度計算装置は、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算システムが提供される。
【0011】
本発明の第2の視点では、入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離を計算する類似度計算装置であって、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算装置が提供される。
【0012】
本発明の第3の視点では、類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算方法であって、前記類似度計算装置が、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、前記類似度計算装置が、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算方法が提供される。
【0013】
本発明の第4の視点では、入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離をコンピュータに計算させる類似度計算プログラムであって、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算プログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【0014】
本発明の各視点によれば、非線形の重み付き類似度を暗号文のまま計算することに寄与する類似度計算システム、類似度計算装置、類似度計算方法および類似度計算プログラムを提供することができる。
【図面の簡単な説明】
【0015】
図1図1は、第1の実施形態における類似度計算システムの概略構成例を示すブロック図である。
図2図2は、第1の実施形態における類似度計算システムのシステムフローチャートである。
図3図3は、第2の実施形態における類似度計算システムの概略構成例を示すブロック図である。
図4図4は、類似度計算装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、本発明の実施形態について説明する。ただし、以下に説明する実施形態により本発明が限定されるものではない。また、各図面において、同一または対応する要素には適宜同一の符号を付している。さらに、図面は模式的なものであり、各要素の寸法の関係、各要素の比率などは、現実のものとは異なる場合があることに留意する必要がある。図面の相互間においても、互いの寸法の関係や比率が異なる部分が含まれている場合がある。
【0017】
[第1の実施形態]
以下、図1図2を参照して、第1の実施形態に係る類似度計算システムについて説明する。第1の実施形態は、本発明の基本的なコンセプトのみを説明する実施形態である。
【0018】
図1は、第1の実施形態における類似度計算システムの概略構成例を示すブロック図である。図1に示すように、第1の実施形態に係る類似度計算システム100は、類似度計算装置110と入力端末120とを備えている。類似度計算装置110は、後にハードウェア構成を例示する情報処理装置(コンピュータ)である。一方、入力端末120は、独立した情報処理装置(コンピュータ)とすることも、類似度計算装置110に付属した機器とすることも可能である。類似度計算装置110と入力端末120の関係は、有線通信によって接続されていてもよく、また、無線通信によって接続されていてもよい。例えば、入力端末120は、汎用的パーソナルコンピュータとすることもでき、スマートフォンなどのモバイル端末とすることもできる。
【0019】
図1に示す第1の実施形態に係る類似度計算システム100は、類似度計算装置110に暗号化して記憶されている第1ベクトルと入力端末120から入力した第2ベクトルとの距離を計算するためのものである。第1ベクトル(x1,x2,..,xn)は、それぞれの要素xi(i=1,…,n)が0からSまでの値をとり(つまりxi∈{0,1,2,…,S})、第2ベクトル(y1,y2,..,yn)もそれぞれの要素yi(i=1,…,n)が0からSまでの値をとる(つまりyi∈{0,1,2,…,S})。ここで、第1ベクトル(x1,x2,..,xn)と第2ベクトル(y1,y2,..,yn)の距離とは、非線形の重み付けを許容する。また、ここで非線形の重み付けとは、第1ベクトル(x1,x2,..,xn)と第2ベクトル(y1,y2,..,yn)の各要素に異なる定数の重みを付与するのではなく、要素xi,yi(i=1,…,n)の値に従って重みの値が変動するものをいう。
【0020】
次に、図2を参照しながら、類似度計算装置110と入力端末120との間における処理について説明する。図2は、第1の実施形態における類似度計算システムのシステムフローチャートである。図2に示すシステムフローチャートは、類似度計算装置110および入力端末120が満たすべき構成を示し、同時に類似度計算装置110に暗号化して記憶されている第1ベクトルと入力端末120から入力した第2ベクトルとの距離を計算する類似度計算方法の手順を示している。
【0021】
ステップS1では、類似度計算装置110が、第1ベクトルの各要素xi(i=1,…,n)の暗号文と、第1ベクトルの要素が取り得る値(xi∈{0,1,2,…,S})と第2ベクトルの要素が取り得る値(yi∈{0,1,2,…,S})の組み合わせに関する重み付き距離テーブルを入力端末に送信する。ここで、第1ベクトルの要素が取り得る値(xi∈{0,1,2,…,S})と第2ベクトルの要素が取り得る値(yi∈{0,1,2,…,S})の組み合わせに関する重み付き距離テーブルとは、S=5の場合では、例えば以下に掲げるようなテーブルである。
【0022】
【表1】
【0023】
ステップS2では、入力端末120が、重み付き距離テーブルを参照して、第2ベクトルの一つの要素の値と第1ベクトルにおける一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算する。そして、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算する。計算した総和の暗号文は類似度計算装置110に送信する。
【0024】
ここで注意すべきは、上述したように、入力端末120は、第1ベクトルの各要素xi(i=1,…,n)の暗号文を受信するので、第1ベクトルの要素の値を知ることはできない。そこで、入力端末120は、第1ベクトルの要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算する。具体的には、重み付き距離テーブルの各要素をai[xi][yi]としたときに、ai[0][yi], ai[1][yi], ai[2][yi],...,ai[S][yi]を全て計算し、これらを暗号化する。
【0025】
そして、入力端末120は、要素距離の暗号文の総和を加法準同型暗号を用いて計算する。上記方法で計算した要素距離の暗号文は、第2ベクトルの一つの要素に関するものであり、第2ベクトルの各要素に対して得られる各要素距離の暗号文を総和する。このとき、入力端末120は、加法準同型暗号を用いて暗号文を復号することなく総和を計算する。つまり、各要素距離の暗号文を第2ベクトル(y1,y2,..,yn)のインデックスに関して総和する。その後、入力端末120は、計算した総和を類似度計算装置110に送信する。
【0026】
ステップS3では、類似度計算装置110は、入力端末120から受信した総和の暗号文から第1ベクトルと第2ベクトルとの距離を抽出する。上記ステップS2における計算からも解るように、第1ベクトルの要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算するので不要な情報も含んでいる。類似度計算装置110は、入力端末120から受信した総和の暗号文から必要な情報を抽出する。
【0027】
以上のように、第1の実施形態における類似度計算システムは、非線形の重み付き類似度を暗号文のまま計算することに寄与することができる。また、第1の実施形態における類似度計算システムは、類似度計算方法として実施することができ、第1の実施形態における類似度計算方法は、後述のハードウェア構成の情報処理装置(コンピュータ)で実行するプログラムとしても実施可能である。
【0028】
[第2の実施形態]
以下、図3を参照して、第2の実施形態に係る類似度計算システムについて説明する。第2の実施形態は、実用的な実施形態であり、ここでは映画のレコメンデーションサービスの例を用いて本実施形態を説明する。図3は、第2の実施形態における類似度計算システムの概略構成例を示すブロック図である。
【0029】
図3に示すように、第2の実施形態に係る類似度計算システム200は、類似度計算装置210と入力端末220とを備えている。類似度計算装置210は、後にハードウェア構成を例示する情報処理装置(コンピュータ)である。一方、入力端末220は、独立した情報処理装置(コンピュータ)とすることも、類似度計算装置210に付属した機器とすることも可能である。類似度計算装置210と入力端末220の関係は、有線通信によって接続されていてもよく、また、無線通信によって接続されていてもよい。例えば、入力端末220は、汎用的パーソナルコンピュータとすることもでき、スマートフォンなどのモバイル端末とすることもできる。
【0030】
図3に示す第2の実施形態に係る類似度計算システム200を映画のレコメンデーションサービスに用いられる例を用いて説明すると、類似度計算装置210に暗号化して記憶されている第1ベクトル(x1,x2,..,xn)は、本数nの各映画M1,M2,…,Mnに対する好みの評価値を各要素とする。ここでは、0から5までの6段階評価とすると各要素の値xi∈{0,1,2,…,5}である。なお、第1ベクトル(x1,x2,..,xn)は、評価者の数に応じて類似度計算装置210に複数記憶されている。
【0031】
一方、入力端末220から入力した第2ベクトル(y1,y2,..,yn)は、映画のレコメンデーションサービスを受けるユーザが提示する本数nの各映画M1,M2,…,Mnに対する好みの評価値である。すなわち、第1ベクトル(x1,x2,..,xn)と第2ベクトル(y1,y2,..,yn)との距離とは、第1ベクトル(x1,x2,..,xn)を提示した評価者と、第2ベクトル(y1,y2,..,yn)を提示したユーザとの映画に対する好みの近さを表している。従って、類似度計算装置210に複数記憶されている第1ベクトル(x1,x2,..,xn)の中から、第1ベクトル(x1,x2,..,xn)と第2ベクトル(y1,y2,..,yn)との距離が最小となるものを選択し、選択された第1ベクトル(x1,x2,..,xn)に結び付けられた値を入力端末へ送信することで、映画のレコメンデーションサービスを実現することができる。なお、選択された第1ベクトル(x1,x2,..,xn)に結び付けられた値とは、評価値を入力した本数nの映画M1,M2,…,Mn以外の別の映画の評価値とすることもでき、また評価値を入力した本数nの映画M1,M2,…,Mn以外の別の映画名とすることもできる。
【0032】
ここで、非線形の重み付けが付与された距離を用いた映画のレコメンデーションサービスについて説明する。既に説明したように、非線形の重み付けとは、第1ベクトル(x1,x2,..,xn)と第2ベクトル(y1,y2,..,yn)の各要素に異なる定数の重みを付与するのではなく、要素xi,yi(i=1,…,n)の値に従って重みの値が変動するものである。このことは、映画のレコメンデーションサービスにおいて、映画の評価値xi,yi∈{0,1,2,…,5}に従って重みの値が変動することになる。映画の評価値の組み合わせ(xi,yi)=(0,1)と(xi,yi)=(4,5)では、評価値の単純な差では同じ1になるのであるが、好みである側の評価で近いのと、好みでない側の評価で近いとのが異なる。非線形の重み付けが付与された距離を用いた映画のレコメンデーションサービスでは、このような情報を柔軟に映画のレコメンデーションサービスに反映することが可能になる。
【0033】
具体例を用いて、非線形の重み付けが付与された距離を用いた映画のレコメンデーションサービスについて説明する。下記表は、映画のレコメンデーションサービスを利用するユーザU0が入力端末220に入力した第2ベクトル(y1,y2,y3,y4)=(2,3,4,5)と、類似度計算装置210に複数記憶されている評価者V1が提示した第1ベクトル(x1,x2,x3,x4)=(5,3,5,4)と、評価者V2が提示した第1ベクトル(x1,x2,x3,x4)=(5,4,3,0)と、評価者V3が提示した第1ベクトル(x1,x2,x3,x4)=(3,3,1,2)とを示したものである。
【0034】
【表2】
【0035】
この例に、第1ベクトルの要素が取り得る値(xi∈{0,1,2,…,5})と第2ベクトルの要素が取り得る値(yi∈{0,1,2,…,5})の組み合わせに関する重み付き距離テーブル(下記表)を用いて距離を計算する。
【0036】
【表3】
【0037】
すると、以下の表のようになる。なお、下記表において(5,2)などのように記載したものは、重み付き距離テーブルの(5,2)要素という意味である。
【0038】
【表4】
【0039】
このような非線形の重み付けが付与された距離を暗号プロトコルの一部に組み込むために以下のように計算を行う。なお、ここで暗号化する情報は第1ベクトル(x1,x2,..,xn)である。映画のレコメンデーションサービスでは、第1ベクトル(x1,x2,..,xn)は、評価者の映画の好みを表すので外部に漏洩してはいけない。
【0040】
〔登録時処理〕
まず、第1ベクトル(x1,x2,..,xn)を類似度計算装置210に登録する処理を説明する。映画の本数n、比較対象の評価者の人数Vmaxを入力とし、パブリックパラメータpを作成し、準同型暗号の鍵生成アルゴリズムを用いて公開鍵pkと秘密鍵skを作成する。登録時の処理では、パブリックパラメータpと準同型暗号の公開鍵pkを使用する。
【0041】
ここで、各映画M1,M2,…,Mnに対する、評価者Vj(1≦j≦Vmax)の評価値を(x1,x2,..,xn)とする。各評価者Vjはxj∈{0,1,2,…,5}(1≦j≦n)を入力する。そして、各映画Miに対しての評価値の暗号文ci,j=Enc(pk,2xiN)を計算する。暗号文ci,j=Enc(pk,2xiN)は、類似度計算装置210に送信されて、評価者ごとに暗号文ci,jを保存する。
【0042】
なお、各評価者Vjはxi∈{0,1,2,…,5}(1≦i≦n)を入力する手段として、入力端末220を用いることもできる。また、各評価者Vは、過去の映画のレコメンデーションサービスのユーザとしても良く、映画のレコメンデーションサービスの終了後の評価値を類似度計算装置210に登録することとしてもよい。
【0043】
〔評価推定時処理〕
映画のレコメンデーションサービスのユーザUは、ある映画M*における自分との相性を推定したい場合、映画M*の情報を類似度計算装置210に送信する。
【0044】
これに対応し、類似度計算装置210は、各評価者Vjの第1ベクトルの各要素の暗号文と、第1ベクトルの要素が取り得る値と第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを入力端末220に送信する。
【0045】
一方、映画のレコメンデーションサービスのユーザUは、ある映画M*における自分との相性を推定するのに必要な映画M1,M2,…,Mnの評価値を入力する。具体的には、ユーザUは、第2ベクトル(y1,y2,..,yn)を入力する。なお、第2ベクトル(y1,y2,..,yn)は、映画のレコメンデーションサービスの利用時にユーザUが入力してもよいが、事前に入力端末220に入力されているものを用いてもよい。
【0046】
入力端末220は、類似度計算装置210から受信した、各評価者Vjの第1ベクトルの各要素の暗号文と、第1ベクトルの要素が取り得る値と第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルと、ユーザUが入力した第2ベクトル(y1,y2,..,yn)を用いて、要素距離の暗号文を計算する。
【0047】
各評価者Vjの第1ベクトル(x1,x2,..,xn)の各要素xi∈{0,1,2,…,5}(1≦i≦n)の暗号文は、加法準同型性を満たす暗号方式で暗号化したものであり、例えば、下記式で表現することができる。なお、下記式でインデックスiは、各映画Mi(1≦i≦n)に割り振られたインデックスであり、インデックスjは、評価者Vj(1≦j≦Vmax)に割り振られたインデックスである。
【0048】
【数1】
【0049】
また、第1ベクトルの要素が取り得る値と第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルは、例えば、下記表のように表現することができ、数式で表せば、各要素がai[xi][yi]と表現することができる。
【0050】
【表5】
【0051】
したがって、ユーザUが入力した第2ベクトル(y1,y2,..,yn)を用いて、第2ベクトルの一つの要素の値yiと第1ベクトルにおける一つの要素に対応する要素が取り得る値xi∈{0,1,2,…,5}(1≦i≦n)のすべての組み合わせに重みを乗じた線形和を、第1ベクトルの各要素の暗号文に作用させることで格納することができる。具体的には、例えば、この暗号文は下記式で表現することができる。
【0052】
【数2】
【0053】
第1ベクトルと第2ベクトルの距離を計算後、結果のスコアがある部分以外にランダムなベクトルを作成してマスクをかける。これを実施することで、結果以外の部分から情報が漏れることを防止する。
【0054】
その後、入力端末220は、第2ベクトルの各要素yi∈{0,1,2,…,5}(1≦i≦n)に関する要素距離の上記暗号文di,jの総和を加法準同型暗号を用いて計算する。すなわち、入力端末220は、インデックスiに関する総和を加法準同型暗号の法則を用いて、下記数式のように計算する。
【0055】
【数3】
【0056】
その後、入力端末220は、上記暗号文djを類似度計算装置210に送信する。
【0057】
一方、類似度計算装置210は、入力端末220から受信した上記暗号文djから第1ベクトルと第2ベクトルとの距離を抽出する。先述したように、第1ベクトルの要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算するので不要な情報も含んでいる。類似度計算装置210は、入力端末220から受信した総和の暗号文から必要な情報を抽出する。ここでは、この抽出方法の原理を説明する。
【0058】
上記説明から解るように、暗号文ci,jと暗号文di,jは、2を底とする指数に情報を格納している。したがって、指数法則を考えると指数の計算を考えればよいことになる。なお、この2を底とする指数に情報を格納していることは、コンピュータ処理の実装の観点では、ビット分解した際の情報を格納する桁の問題に対応する。そして、受信した総和の暗号文から必要な情報を抽出する方法は、下記式のように、ビットのシフトの問題に帰着される。
【0059】
【数4】
【0060】
具体的には、類似度計算装置210は、受信した総和の暗号文から5Nから6Nビット部分を抽出すればよいことが解る。つまり、類似度計算装置210は、受信した総和の暗号文を復号し、平文の5Nから6Nビット部分を抽出し、これを第1ベクトルと第2ベクトルとの距離とする。
【0061】
類似度計算装置210は、上記説明した処理を全ての評価者Vj(1≦j≦Vmax)に対して行い、第1ベクトルと第2ベクトルとの距離が最小になる評価者Vjを探索する。そして、類似度計算装置210は、第1ベクトルと第2ベクトルとの距離が最小になる評価者Vjが映画M*に対して行った評価値を、入力端末220に送信する。
【0062】
このようにして、映画のレコメンデーションサービスのユーザUは、ある映画M*における自分との相性を知ることができる。
【0063】
以上のように、第2の実施形態における類似度計算システムは、非線形の重み付き類似度を暗号文のまま計算することができるので、映画のレコメンデーションサービスに好適に応用することができる。ただし、第2の実施形態における類似度計算システムは、映画のレコメンデーションサービスに限定されず、種々のレコメンデーションサービスにも応用できることは言うまでもない。また、第2の実施形態における類似度計算システムは、レコメンデーションサービスへの応用に限定されず、ベクトルの類似度を計算する様々な応用例にも適用可能である。
【0064】
[ハードウェア構成例]
図4は、類似度計算装置のハードウェア構成例を示す図である。すなわち、図4に示すハードウェア構成例は、類似度計算装置110,210のハードウェア構成例である。また、先述したように、入力端末120,220は、独立した情報処理装置(コンピュータ)とすることも可能であるので、図4に示すハードウェア構成例は、入力端末120,220のハードウェア構成例としても用いることが可能である。
【0065】
図4に示すハードウェア構成を採用した情報処理装置(コンピュータ)は、上記説明した類似度計算装置方法をプログラムとして実行することで、類似度計算装置110,210の各機能を実現することを可能にする。ただし、図4に示すハードウェア構成例は、類似度計算装置110,210の各機能を実現するハードウェア構成の一例であり、類似度計算装置110,210のハードウェア構成を限定する趣旨ではない。類似度計算装置110,210は、図4に示さないハードウェアを含むことができる。
【0066】
図4に示すように、類似度計算装置110,210が採用し得るハードウェア構成10は、例えば内部バスにより相互に接続される、CPU(Central Processing Unit)11、主記憶装置12、補助記憶装置13、およびIF(Interface)部14を備える。
【0067】
CPU11は、類似度計算装置110,210が実行する類似度計算プログラムに含まれる各指令を実行する。主記憶装置12は、例えばRAM(Random Access Memory)であり、類似度計算装置110,210が実行する類似度計算プログラムなどの各種プログラムなどをCPU11が処理するために一時記憶する。
【0068】
補助記憶装置13は、例えば、HDD(Hard Disk Drive)であり、類似度計算装置110,210が実行する類似度計算プログラムなどの各種プログラムなどを中長期的に記憶しておくことが可能である。類似度計算プログラムなどの各種プログラムは、非一時的なコンピュータ可読記録媒体(non-transitory computer-readable storage medium)に記録されたプログラム製品として提供することができる。補助記憶装置13は、非一時的なコンピュータ可読記録媒体に記録された類似度計算プログラムなどの各種プログラムを中長期的に記憶することに利用することが可能である。IF部14は、類似度計算装置110,210と入力端末120,220との間の入出力に関するインターフェイスを提供する。
【0069】
上記のようなハードウェア構成10を採用した情報処理装置は、先述した類似度計算方法をプログラムとして実行することで、類似度計算装置110,210の各機能を実現する。
【0070】
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算システムであって、
前記類似度計算装置は、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末は、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、
前記類似度計算装置は、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算システム。
[付記2]
前記第1ベクトルの各要素の暗号文は、加法準同型性を満たす暗号方式で暗号化したものであり、
前記要素距離の暗号文は、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに前記重みを乗じた線形和を、前記第1ベクトルの各要素の暗号文に作用させることで格納したものである、
付記1に記載の類似度計算システム。
[付記3]
前記第1ベクトルの各要素の暗号文cjおよび前記第1ベクトルと前記要素距離の暗号文diは、前記第1ベクトルを(x1,x2,..,xn)[xi∈{0,1,2,…,S}]とし、前記第2ベクトルを(y1,y2,..,yn)[yi∈{0,1,2,…,S}]とし、前記重み付き距離テーブルの各要素をai[xi][yi]としたときに、それぞれ以下のように定められる、付記2に記載の類似度計算システム。
【数5】


[付記4]
前記第1ベクトルは、前記類似度計算装置に複数記憶されており、前記第1ベクトルの全てに対して、前記第1ベクトルと前記第2ベクトルとの距離を計算する、付記1から付記3のいずれか1つに記載の類似度計算システム。
[付記5]
前記類似度計算装置に複数記憶されている前記第1ベクトルの中から、前記第1ベクトルと前記第2ベクトルとの距離が最小となるものを選択し、前記選択された第1ベクトルに結び付けられた値を前記入力端末へ送信する、付記4に記載の類似度計算システム。
[付記6]
前記入力端末から入力した前記第2ベクトルは、前記選択された第1ベクトルに結び付けられた値を前記入力端末へ送信した後に、前記類似度計算装置に複数記憶されている前記第1ベクトルの一つに含まれる、付記5に記載の類似度計算システム。
[付記7]
前記入力端末は、前記類似度計算装置が公開する公開鍵を用いて前記第2ベクトルを暗号化して前記類似度計算装置に送信する、付記6に記載の類似度計算システム。
[付記8]
入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離を計算する類似度計算装置であって、
前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、
前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算装置。
[付記9]
類似度計算装置に暗号化して記憶されている第1ベクトルと入力端末から入力した第2ベクトルとの距離を計算する類似度計算方法であって、
前記類似度計算装置が、前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算し、前記総和の暗号文を前記類似度計算装置に送信し、
前記類似度計算装置が、前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算方法。
[付記10]
入力端末から入力された第2ベクトルと暗号化して記憶されている第1ベクトルとの距離をコンピュータに計算させる類似度計算プログラムであって、
前記第1ベクトルの各要素の暗号文と、前記第1ベクトルの要素が取り得る値と前記第2ベクトルの要素が取り得る値の組み合わせに関する重み付き距離テーブルを前記入力端末に送信し、
前記入力端末が、前記重み付き距離テーブルを参照して、前記第2ベクトルの一つの要素の値と前記第1ベクトルにおける前記一つの要素に対応する要素が取り得る値のすべての組み合わせに関する要素距離の暗号文を計算し、前記第2ベクトルの各要素に関する前記要素距離の暗号文の総和を加法準同型暗号を用いて計算した前記総和の暗号文を前記入力端末から受信し、
前記総和の暗号文から前記第1ベクトルと前記第2ベクトルとの距離を抽出する、類似度計算プログラム。
【0071】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。さらに、上記引用した文献の各開示事項は、必要に応じ、本発明の趣旨に則り、本発明の開示の一部として、その一部又は全部を、本書の記載事項と組み合わせて用いることも、本願の開示事項に含まれるものと、みなされる。
【符号の説明】
【0072】
100,200 類似度計算システム
110,210 類似度計算装置
120,220 入力端末
10 ハードウェア構成
11 CPU(Central Processing Unit)
12 主記憶装置
13 補助記憶装置
14 IF(Interface)部
図1
図2
図3
図4