JP7226562B2 - 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム - Google Patents
秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム Download PDFInfo
- Publication number
- JP7226562B2 JP7226562B2 JP2021539755A JP2021539755A JP7226562B2 JP 7226562 B2 JP7226562 B2 JP 7226562B2 JP 2021539755 A JP2021539755 A JP 2021539755A JP 2021539755 A JP2021539755 A JP 2021539755A JP 7226562 B2 JP7226562 B2 JP 7226562B2
- Authority
- JP
- Japan
- Prior art keywords
- exp
- secret
- share
- softmax
- shares
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Bioethics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本発明は、秘密計算技術に関し、特にソフトマックス関数を秘密計算する技術に関する。
ソフトマックス関数を秘密計算するための従来の方法として、非特許文献1に記載のSecureML、非特許文献2に記載のSecureNNがある。ここで、ソフトマックス関数は、次式で表される非線形関数である。
秘密計算とは、暗号化された数値を復元することなく指定された演算の演算結果を得る方法のことである(例えば参考非特許文献1参照)。参考非特許文献1の方法では、数値を復元することのできる複数の情報を3つの秘密計算装置に分散するという暗号化を行い、数値を復元することなく、加減算、定数和、乗算、定数倍、論理演算(否定、論理積、論理和、排他的論理和)、データ形式変換(整数、二進数)の結果を3つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。一般に、分散数は3に限らずW(Wは3以上の所定の定数)とすることができ、W個の秘密計算装置による協調計算によって秘密計算を実現するプロトコルはマルチパーティプロトコルと呼ばれる。
(参考非特許文献1:千田浩司,濱田浩気,五十嵐大,高橋克巳,“軽量検証可能3パーティ秘匿関数計算の再考”,In CSS,2010.)
(参考非特許文献1:千田浩司,濱田浩気,五十嵐大,高橋克巳,“軽量検証可能3パーティ秘匿関数計算の再考”,In CSS,2010.)
Payman Mohassel and Yupeng Zhang, "SecureML: A System for Scalable Privacy-Preserving Machine Learning", 2017 IEEE Symposium on Security and Privacy, pp.19-38, 2017.
Sameer Wagh, Divya Gupta, and Nishanth Chandran, "SecureNN: 3-Party Secure Computation for Neural Network Training", Proceedings on Privacy Enhancing Technologies; 2019 (3):26-49, 2019.
しかし、式(1)からわかるように、ソフトマックス関数は、秘密計算が苦手とする指数関数や除算の計算を含むため、処理速度と精度の2つを両立させて秘密計算するのは容易ではない。従来手法では、指数関数exp(x)の近似に関数ReLU(x)=max(0, x)を用いるため、その近似精度は低く、特に、xが大きな値になるほど誤差は非常に大きなものとなり、ソフトマックス関数の計算の精度は低いものであった。
そこで本発明は、高速かつ高精度にソフトマックス関数を秘密計算する技術を提供することを目的とする。
本発明の一態様は、map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、3個以上の秘密ソフトマックス関数計算装置で構成され、入力ベクトル(u1, …, uJ)(ただし、Jは1以上の整数)のシェア([[u1]], …, [[uJ]])から、入力ベクトル(u1, …, uJ)に対するソフトマックス関数の値(softmax(u1), …, softmax(uJ))のシェア([[softmax(u1)]], …, [[softmax(uJ)]])を計算する秘密ソフトマックス関数計算システムであって、前記シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算手段と、前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算手段と、前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])を計算する加算手段と、前記シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])から、map2(([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1
Jexp(uj-ui)<bp+1となるp)を計算し、([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算手段と、を含む。
本発明によれば、高速かつ高精度にソフトマックス関数を秘密計算することが可能となる。
以下、本発明の実施の形態について、詳細に説明する。なお、同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
各実施形態の説明に先立って、この明細書における表記方法について説明する。
_(アンダースコア)は下付き添字を表す。例えば、xy_zはyzがxに対する上付き添字であり、xy_zはyzがxに対する下付き添字であることを表す。
また、ある文字xに対する^xや~xのような上付き添え字の”^”や”~”は、本来”x”の真上に記載されるべきであるが、明細書の記載表記の制約上、^xや~xと記載しているものである。
<技術的背景>
《準備》
本願実施形態の発明における秘密計算は、既存の秘密計算上の演算の組み合わせで構築される。この秘密計算に必要な演算は、秘匿化、加算、乗算、秘密一括写像、右シフトである。以下、各演算について説明していく。
《準備》
本願実施形態の発明における秘密計算は、既存の秘密計算上の演算の組み合わせで構築される。この秘密計算に必要な演算は、秘匿化、加算、乗算、秘密一括写像、右シフトである。以下、各演算について説明していく。
[秘匿化]
[[x]]をxを秘密分散で秘匿した値(以下、xのシェアという)とする。秘密分散方法には、任意の方法を用いることができる。例えば、GF(261-1)上のShamir秘密分散、Z2上の複製秘密分散を用いることができる。
[[x]]をxを秘密分散で秘匿した値(以下、xのシェアという)とする。秘密分散方法には、任意の方法を用いることができる。例えば、GF(261-1)上のShamir秘密分散、Z2上の複製秘密分散を用いることができる。
ある1つのアルゴリズムの中で複数の秘密分散方法を組み合わせて用いてもよい。この場合、適宜相互に変換するものとする。
また、N次元ベクトル→x=(x1, …, xN)に対して、[[→x]]:=([[x1]], …, [[xN]])とする。つまり、[[→x]]は、→xの第n要素xnのシェア[[xn]]を第n要素とするベクトルである。同様に、M×N行列A=(am,n)(1≦m≦M, 1≦n≦N)に対しても、[[A]]をAの(m,n)要素am,nのシェア[[am,n]]を(m,n)要素とする行列とする。ここで、a:=bはaをbで定義することを表す。
なお、xを[[x]]の平文という。
xから[[x]]を求める方法(秘匿化)、[[x]]からxを求める方法(復元)として、具体的には、参考非特許文献1、参考非特許文献2に記載の方法がある。
(参考非特許文献2:Shamir, A., “How to share a secret”, Communications of the ACM, Vol.22, No.11, pp.612-613, 1979.)
(参考非特許文献2:Shamir, A., “How to share a secret”, Communications of the ACM, Vol.22, No.11, pp.612-613, 1979.)
[加算、乗算]
秘密計算による加算[[x]]+[[y]]は、[[x]], [[y]]を入力とし、[[x+y]]を出力する。秘密計算による乗算[[x]]×[[y]](mul([[x]], [[y]])と表すこともある)は、[[x]], [[y]]を入力とし、[[x×y]]を出力する。
秘密計算による加算[[x]]+[[y]]は、[[x]], [[y]]を入力とし、[[x+y]]を出力する。秘密計算による乗算[[x]]×[[y]](mul([[x]], [[y]])と表すこともある)は、[[x]], [[y]]を入力とし、[[x×y]]を出力する。
なお、[[x]]、[[y]]のいずれかが秘匿されていない値(以下、公開値という)であってもよい。例えば、β、γを公開値として、[[x]], βを入力として、[[x+β]]を出力するようにしたり、γ, [[y]]を入力とし、[[γ×y]]を出力することもできる。
加算、乗算の具体的方法として、参考非特許文献3、参考非特許文献4に記載の方法がある。
(参考非特許文献3:Ben-Or, M., Goldwasser, S. and Wigderson, A., “Completeness theorems for non-cryptographic fault-tolerant distributed computation”, Proceedings of the twentieth annual ACM symposium on Theory of computing, ACM, pp. 1-10, 1988.)
(参考非特許文献4:Gennaro, R., Rabin, M. O. and Rabin, T., “Simplied VSS and fast-track multiparty computations with applications to threshold cryptography”, Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, ACM, pp.101-111, 1998.)
(参考非特許文献3:Ben-Or, M., Goldwasser, S. and Wigderson, A., “Completeness theorems for non-cryptographic fault-tolerant distributed computation”, Proceedings of the twentieth annual ACM symposium on Theory of computing, ACM, pp. 1-10, 1988.)
(参考非特許文献4:Gennaro, R., Rabin, M. O. and Rabin, T., “Simplied VSS and fast-track multiparty computations with applications to threshold cryptography”, Proceedings of the seventeenth annual ACM symposium on Principles of distributed computing, ACM, pp.101-111, 1998.)
[秘密一括写像]
秘密一括写像は、ルックアップテーブルを計算する機能であり、計算対象となる関数の定義域と値域を任意に定めることができる技術である。秘密一括写像はベクトル単位で処理を行うため、複数の入力に対して同じ処理をする際の効率がよいという性質がある。秘密一括写像mapは、以下のように定義される関数である。
秘密一括写像は、ルックアップテーブルを計算する機能であり、計算対象となる関数の定義域と値域を任意に定めることができる技術である。秘密一括写像はベクトル単位で処理を行うため、複数の入力に対して同じ処理をする際の効率がよいという性質がある。秘密一括写像mapは、以下のように定義される関数である。
秘密一括写像mapは、ベクトル→x=(x1, …, xN)のシェア[[→x]]=([[x1]], …, [[xN]])を入力とし、関数f(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(b1, …, bK)(ただし、a1, …, aK, b1, …, bKは実数であり、a1<…<aKを満たす。)を用いて、ベクトルの各要素のシェアを写像したシェア、すなわち、1≦n≦Nに対して、ap≦xn<ap+1かつyn=bpであるような[[→y]]:= ([[y1]], …, [[yN]])を出力するものである。
例えば、参考非特許文献5に記載の秘密一括写像のアルゴリズムを用いることができる。
(参考非特許文献5:濱田浩気, 五十嵐大, 千田浩司, “秘匿計算上の一括写像アルゴリズム”, 電子情報通信学会論文誌A, Vol.J96-A, No.4, pp.157-165, 2013.)
(参考非特許文献5:濱田浩気, 五十嵐大, 千田浩司, “秘匿計算上の一括写像アルゴリズム”, 電子情報通信学会論文誌A, Vol.J96-A, No.4, pp.157-165, 2013.)
[右シフト]
右シフトrshiftは、ベクトル→x=(x1, …, xN)のシェア[[→x]]=([[x1]], …, [[xN]])と公開値tを入力とし、シェア[[x→]]の各要素[[xn]]をtビット算術右シフトした[[→y]]:= ([[y1]], …, [[yN]])を出力するものである。ここで、算術右シフトは左側を0ではなく符号ビットでパディングするシフトである。論理右シフトrlshiftを用いることにより、rshift([[A×2n]], n-m)= [[A×2m]]を次式のように計算できる(参考非特許文献6参照)。
右シフトrshiftは、ベクトル→x=(x1, …, xN)のシェア[[→x]]=([[x1]], …, [[xN]])と公開値tを入力とし、シェア[[x→]]の各要素[[xn]]をtビット算術右シフトした[[→y]]:= ([[y1]], …, [[yN]])を出力するものである。ここで、算術右シフトは左側を0ではなく符号ビットでパディングするシフトである。論理右シフトrlshiftを用いることにより、rshift([[A×2n]], n-m)= [[A×2m]]を次式のように計算できる(参考非特許文献6参照)。
(参考非特許文献6:三品気吹, 五十嵐大, 濱田浩気, 菊池亮. “高精度かつ高効率な秘密ロジスティック回帰の設計と実装”, In CSS, 2018.)
《秘密一括写像によるソフトマックス関数の秘密計算》
本願実施形態の発明では、ベクトル(u1, …, uJ)を秘匿したままソフトマックス関数を計算するために、秘密一括写像を用いる。ソフトマックス関数は式(1)からわかるように入力が複数あるため、ベクトル単位で処理するという秘密一括写像の性質と相性がよい。ただし、秘密一括写像の処理時間はルックアップテーブル(定義域や値域)のサイズに比例するため、計算精度の高さと処理速度はトレードオフの関係になる。
本願実施形態の発明では、ベクトル(u1, …, uJ)を秘匿したままソフトマックス関数を計算するために、秘密一括写像を用いる。ソフトマックス関数は式(1)からわかるように入力が複数あるため、ベクトル単位で処理するという秘密一括写像の性質と相性がよい。ただし、秘密一括写像の処理時間はルックアップテーブル(定義域や値域)のサイズに比例するため、計算精度の高さと処理速度はトレードオフの関係になる。
具体的には、本願実施形態の発明では、関数exp(x)を計算する秘密一括写像map1と関数1/xを計算する秘密一括写像map2とを用いて、ソフトマックス関数の秘密計算を実現する。そのために、式(1)の代わりに、式(1)の分母及び分子をともにexp(ui)で割った次式を考える。
そして、以下の手順により、ソフトマックス関数の値softmax(ui)のシェア[[softmax(ui)]]を計算する。
(1)まず、j=1, 2, …, Jに対して[[uj-ui]]を計算する。
(2)次に、([[u1-ui]], [[u2-ui]], …, [[uJ-ui]])を秘密一括写像map1へ入力し、([[exp(u1-ui)]],[[exp(u2-ui)]], …, [[exp(uJ-ui)]])を出力結果として得る。
(3)(2)の出力結果([[exp(u1-ui)]],[[exp(u2-ui)]], …, [[exp(uJ-ui)]])をすべて加算することにより、[[Σj=1 Jexp(uj-ui)]]を得る。
(4)最後に、加算結果[[Σj=1 Jexp(uj-ui)]]を秘密一括写像map2へ入力し、[[softmax(ui)]]を得る。
(2)次に、([[u1-ui]], [[u2-ui]], …, [[uJ-ui]])を秘密一括写像map1へ入力し、([[exp(u1-ui)]],[[exp(u2-ui)]], …, [[exp(uJ-ui)]])を出力結果として得る。
(3)(2)の出力結果([[exp(u1-ui)]],[[exp(u2-ui)]], …, [[exp(uJ-ui)]])をすべて加算することにより、[[Σj=1 Jexp(uj-ui)]]を得る。
(4)最後に、加算結果[[Σj=1 Jexp(uj-ui)]]を秘密一括写像map2へ入力し、[[softmax(ui)]]を得る。
ここで、上記(1)~(4)の処理をすべてのi=1, 2, …, Jに対して行うことにすると、秘密一括写像map1と秘密一括写像map2により、それぞれ([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])と([[1/Σj=1
Jexp(uj-u1)]], [[1/Σj=1
Jexp(uj-u2)]],…, [[1/Σj=1
Jexp(uj-uJ)]])がまとめて計算でき、([[softmax(u1)]], …, [[softmax(uJ)]])の計算を非常に効率よく実現することができる。つまり、2回の秘密一括写像の計算により、([[u1]], …, [[uJ]])から([[softmax(u1)]], …, [[softmax(uJ)]])を計算するソフトマックス関数の秘密計算を実現することができる。
《ルックアップテーブルの設計に関する工夫》
上述した通り、ソフトマックス関数の計算精度の高さと処理速度はトレードオフの関係にある。したがって、ある程度の計算精度の高さを保ちつつ処理速度を上げるためには、適切な大きさのルックアップテーブルを設計、すなわち、定義域を表すパラメータと値域を表すパラメータを設定する必要がある。そこで、ルックアップテーブルの適切な設計のために、「ソフトマックス関数は0≦softmax(ui)≦1を満たす」という性質を利用する。
上述した通り、ソフトマックス関数の計算精度の高さと処理速度はトレードオフの関係にある。したがって、ある程度の計算精度の高さを保ちつつ処理速度を上げるためには、適切な大きさのルックアップテーブルを設計、すなわち、定義域を表すパラメータと値域を表すパラメータを設定する必要がある。そこで、ルックアップテーブルの適切な設計のために、「ソフトマックス関数は0≦softmax(ui)≦1を満たす」という性質を利用する。
上記性質から、関数1/xを計算する秘密一括写像map2の値域は[0, 1]となるので、秘密一括写像map2の値域を[0, 1]とするルックアップテーブルを作成すればよいことがわかる。したがって、固定小数点演算を用いて秘密計算をする場合において、byをソフトマックス関数の出力の精度を表す固定小数点の小数部分のビット数とすると、ルックアップテーブルの大きさは2b_yになる。
このとき、精度byビットで表現できる出力の最小値は1/2b_yであり、そのときの入力は2b_yである。したがって、関数exp(x)を計算する秘密一括写像map1の出力の最大値は2b_yでよいことがわかる。これは、それより大きい値を計算できたとしても、関数1/xを計算する秘密一括写像map2に入力して得られる値は2b_yを入力した場合と同じになるためである。したがって、関数exp(x)を計算する秘密一括写像map1の値域は[0, 2b_y]とすればよい。
以上、ソフトマックス関数の値が[0, 1]に制限されるという性質を利用することにより、適切な大きさのルックアップテーブルが設計でき、秘密一括写像を用いたソフトマックス関数の秘密計算を効率よく実行できる。
<第1実施形態>
以下、図1~図3を参照して秘密ソフトマックス関数計算システム10について説明する。図1は、秘密ソフトマックス関数計算システム10の構成を示すブロック図である。秘密ソフトマックス関数計算システム10は、W個(Wは3以上の所定の整数)の秘密ソフトマックス関数計算装置1001、…、100Wを含む。秘密ソフトマックス関数計算装置1001、…、100Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図2は、秘密ソフトマックス関数計算装置100i(1≦i≦W)の構成を示すブロック図である。図3は、秘密ソフトマックス関数計算システム10の動作を示すフローチャートである。
以下、図1~図3を参照して秘密ソフトマックス関数計算システム10について説明する。図1は、秘密ソフトマックス関数計算システム10の構成を示すブロック図である。秘密ソフトマックス関数計算システム10は、W個(Wは3以上の所定の整数)の秘密ソフトマックス関数計算装置1001、…、100Wを含む。秘密ソフトマックス関数計算装置1001、…、100Wは、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図2は、秘密ソフトマックス関数計算装置100i(1≦i≦W)の構成を示すブロック図である。図3は、秘密ソフトマックス関数計算システム10の動作を示すフローチャートである。
図2に示すように秘密ソフトマックス関数計算装置100iは、減算部110iと、第1秘密一括写像計算部120iと、加算部130iと、第2秘密一括写像計算部140iと、記録部190iを含む。記録部190iを除く秘密ソフトマックス関数計算装置100iの各構成部は、秘密計算で必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、秘密一括写像、右シフトのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~6のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部190iは、秘密ソフトマックス関数計算装置100iの処理に必要な情報を記録する構成部である。例えば、記録部190iは、秘密一括写像map1の定義に必要となる関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)、秘密一括写像map2の定義に必要となる関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)を記録しておく。
W個の秘密ソフトマックス関数計算装置100iによる協調計算によって、秘密ソフトマックス関数計算システム10はマルチパーティプロトコルであるソフトマックス関数の秘密計算を実現する。よって、秘密ソフトマックス関数計算システム10の減算手段110(図示していない)は減算部1101、…、110Wで構成され、第1秘密一括写像計算手段120(図示していない)は第1秘密一括写像計算部1201、…、120Wで構成され、加算手段130(図示していない)は加算部1301、…、130Wで構成され、第2秘密一括写像計算手段140(図示していない)は第2秘密一括写像計算部1401、…、140Wで構成される。
秘密ソフトマックス関数計算システム10は、入力ベクトル(u1, …, uJ)(ただし、Jは1以上の整数)のシェア([[u1]], …, [[uJ]])から、入力ベクトル(u1, …, uJ)に対するソフトマックス関数の値(softmax(u1), …, softmax(uJ))のシェア([[softmax(u1)]], …, [[softmax(uJ)]])を計算する。以下、図3に従い秘密ソフトマックス関数計算システム10の動作について説明する。
S110において、減算手段110は、シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する。
S120において、第1秘密一括写像計算手段120は、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする。
S130において、加算手段130は、シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])を計算する。
S140において、第2秘密一括写像計算手段140は、シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])から、map2(([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1
Jexp(uj-ui)<bp+1となるp)を計算し、([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする。
(秘密一括写像の定義域と値域の設定例)
<技術的背景>で説明したように、固定小数点演算を用いて秘密計算をする場合において、秘密一括写像map1の値域を表すパラメータα1, αKをそれぞれα1=0, αK=2b_y(ただし、byはソフトマックス関数の出力の精度を表す固定小数点の小数部分のビット数を表す)とすることができる。
<技術的背景>で説明したように、固定小数点演算を用いて秘密計算をする場合において、秘密一括写像map1の値域を表すパラメータα1, αKをそれぞれα1=0, αK=2b_y(ただし、byはソフトマックス関数の出力の精度を表す固定小数点の小数部分のビット数を表す)とすることができる。
このように設定することにより、秘密計算に用いることがない無駄な範囲の値を記録することを防ぐことができ、秘密一括写像の計算でのルックアップテーブルの検索も速くなる。
本実施形態の発明によれば、高速かつ高精度にソフトマックス関数を秘密計算することが可能となる。ここで、秘密一括写像map1とmap2の定義域と値域は任意に設定できるため、必要な精度や処理速度に応じて決めることができる。本実施形態の発明では、指数関数に対して近似を行う従来の方法と異なり、任意の精度を設定できるため、平文と遜色ない精度でのソフトマックス関数の秘密計算が可能となる。
<第2実施形態>
以下、図4~図6を参照して秘密ニューラルネットワーク計算システム20について説明する。図4は、秘密ニューラルネットワーク計算システム20の構成を示すブロック図である。秘密ニューラルネットワーク計算システム20は、W'個(W'は3以上の所定の整数)の秘密ニューラルネットワーク計算装置2001、…、200W'を含む。秘密ニューラルネットワーク計算装置2001、…、200W'は、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図5は、秘密ニューラルネットワーク計算装置200i(1≦i≦W')の構成を示すブロック図である。図6は、秘密ニューラルネットワーク計算システム20の動作を示すフローチャートである。
以下、図4~図6を参照して秘密ニューラルネットワーク計算システム20について説明する。図4は、秘密ニューラルネットワーク計算システム20の構成を示すブロック図である。秘密ニューラルネットワーク計算システム20は、W'個(W'は3以上の所定の整数)の秘密ニューラルネットワーク計算装置2001、…、200W'を含む。秘密ニューラルネットワーク計算装置2001、…、200W'は、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図5は、秘密ニューラルネットワーク計算装置200i(1≦i≦W')の構成を示すブロック図である。図6は、秘密ニューラルネットワーク計算システム20の動作を示すフローチャートである。
図5に示すように秘密ニューラルネットワーク計算装置200iは、入力層計算部210iと、第n層計算部220-ni(n=1, …, N-1、Nは2以上の整数であり、N-1は隠れ層(中間層)の数を表す)と、出力層計算部230iと、記録部190iを含む。記録部190iを除く秘密ニューラルネットワーク計算装置200iの各構成部は、秘密計算で必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、秘密一括写像、右シフトのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~6のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部190iは、秘密ニューラルネットワーク計算装置200iの処理に必要な情報を記録する構成部である。
W'個の秘密ニューラルネットワーク計算装置200iによる協調計算によって、秘密ニューラルネットワーク計算システム20はマルチパーティプロトコルであるニューラルネットワークによる秘密計算を実現する。よって、秘密ニューラルネットワーク計算システム20の入力層計算手段210(図示していない)は入力層計算部2101、…、210W'で構成され、第n層計算手段220-n(n=1, …, N-1)(図示していない)は第n層計算部220-n1、…、220-nW'で構成され、出力層計算手段230(図示していない)は出力層計算部2301、…、230W'で構成される。
秘密ニューラルネットワーク計算システム20は、入力データXのシェア[[X]]から、入力データXに対する出力値YN+1(Nは2以上の整数)のシェア[[YN+1]]を計算する。以下、図6に従い秘密ニューラルネットワーク計算システム20の動作について説明する。ここで、入力データX、入力層の出力値Y1、第n層の出力値Yn+1(n=1, …, N-1)、出力層の出力値YN+1は、いずれもベクトルにより表され、入力層のパラメータW0、第n層のパラメータWn(n=1, …, N-1)、出力層のパラメータWNは、いずれも行列で表される。なお、入力層のパラメータW0のシェア[[W0]]、第n層のパラメータWnのシェア[[Wn]] (n=1, …, N-1)、出力層のパラメータWNのシェア[[WN]]は、例えば、記録部190i(1≦i≦W')に事前に記録されておくのでよい。
S210において、入力層計算手段210は、入力層のパラメータW0のシェア[[W0]]を用いて、シェア[[X]]から、入力層の出力値Y1のシェア[[Y1]]を計算する。入力層計算手段210は、例えば、次式によりシェア[[Y1]]を計算する。
ここで、Activationは活性化関数を表す。活性化関数Activationとその微分Activation’はいずれも秘密計算可能な関数であるとする。活性化関数として、例えば、関数ReLU(x)を用いることができる。この場合、微分ReLU’(x)は例えば、次式で与えられる。
なお、U1を入力層の中間出力値という。
n=1, …, N-1とし、S220-nにおいて、第n層計算手段220-nは、第n層のパラメータWnのシェア[[Wn]]を用いて、シェア[[Yn]]から、第n層の出力値Yn+1のシェア[[Yn+1]]を計算する。第n層計算手段220-n は、例えば、次式によりシェア[[Yn+1]]を計算する。
なお、Un+1を第n層の中間出力値という。
S230において、出力層計算手段230は、出力層のパラメータWNのシェア[[WN]]を用いて、シェア[[YN]]から、出力層の出力値YN+1のシェア[[YN+1]]を計算する。出力層計算手段230は、例えば、次式によりシェア[[YN+1]]を計算する。
なお、UN+1を出力層の中間出力値という。
以下、図7~図8を参照して出力層計算手段230について説明する。図7は、出力層計算部230iの構成を示すブロック図である。図8は、出力層計算手段230の動作を示すフローチャートである。出力層計算手段230の減算手段110(図示していない)は減算部1101、…、110W’で構成され、第1秘密一括写像計算手段120(図示していない)は第1秘密一括写像計算部1201、…、120W’で構成され、加算手段130(図示していない)は加算部1301、…、130W’で構成され、第2秘密一括写像計算手段140(図示していない)は第2秘密一括写像計算部1401、…、140W’で構成され、中間出力計算手段231(図示していない)は中間出力計算部2311、…、231W’で構成される。図7に示すように出力層計算部230iは、減算部110iと、第1秘密一括写像計算部120iと、加算部130iと、第2秘密一括写像計算部140iと、中間出力計算部231iを含む。
図8に従い出力層計算手段230の動作について説明する。
S231において、中間出力計算手段231は、出力層のパラメータWNのシェア[[WN]]を用いて、シェア[[YN]]から、出力層の中間出力値UN+1のシェア[[UN+1]]を計算する。中間出力計算手段231は、例えば、式(c-1)によりシェア[[UN+1]]を計算する。
以下、中間出力値UN+1=(u1, …, uJ)(ただし、Jは1以上の整数)とすると、中間出力値UN+1のシェア[[UN+1]]=([[u1]], …, [[uJ]])となる。
S110において、減算手段110は、シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する。
S120において、第1秘密一括写像計算手段120は、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする。
S130において、加算手段130は、シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])を計算する。
S140において、第2秘密一括写像計算手段140は、シェア([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]])から、map2(([[Σj=1
Jexp(uj-u1)]], [[Σj=1
Jexp(uj-u2)]],…, [[Σj=1
Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1
Jexp(uj-ui)<bp+1となるp)を計算し、[[YN+1]]= ([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする。
本実施形態の発明によれば、高速かつ高精度にニューラルネットワークによる秘密計算を実行することが可能となる。第1実施形態の発明を用いることにより、ソフトマックス関数を精度よく計算できるようになるため、非特許文献1や非特許文献2の従来手法と比較して、ニューラルネットワークによる秘密計算も精度よく実行することができるようになる。
(変形例)
秘密計算では浮動小数点数の処理コストが大きい。そのため、ここでは固定小数点数を用いて各構成部での計算を行うことを考える。
秘密計算では浮動小数点数の処理コストが大きい。そのため、ここでは固定小数点数を用いて各構成部での計算を行うことを考える。
まず、変数や定数ごとに必要な精度を設定する。例えば、精度がαビット(αは小数点部分のビット数)の場合、シェア[[x]]は基数2の固定小数点数[[x×2α]]として秘密分散される。なお、すべての変数及び定数の精度を同じにしない理由は、それぞれの変数や定数ごとに値域が異なり、必要な精度が異なるためである。例えば、パラメータは小さくなりやすいため、パラメータを表す変数は他の変数よりも精度を高めに設定しておくのが好ましい。入力データXを表す変数x、出力層の出力値YN+1を表す変数y、入力層のパラメータW0、第n層のパラメータWn(n=1, …, N-1)、出力層のパラメータWNを表す変数wに必要な精度をそれぞれbx, by, bwとすると、bx=8, by=14, bw=20といった具合である。このように、変数や定数ごとに必要な精度を設定することにより、できるだけ全体としてのビット数を抑えつつ、処理コストが大きい秘密計算を効率よく計算することができるようになる。
また、固定小数点数で処理を行う場合、乗算を行った際に精度が変わることが問題となる。例えば、[[x1×2α]]×[[x2×2α]]という乗算を行うと、結果は[[x1x2×22α]]となり、元の値よりもαビット大きくなってしまう。ニューラルネットワークにおける計算では各層ごとに乗算を行うため、そのまま普通に処理すると途中でオーバーフローすることになる。そこで、ここでは、右シフトrshiftを用いることで、意図的に桁を落としてオーバーフローを防ぎつつ、固定小数点数で効率よくニューラルネットワークにおける計算を実現する。
以下、具体的に説明する。変数x、変数y、変数wに必要な精度をそれぞれbx, by, bwとし、乗算によるオーバーフローを防ぐ工夫をした秘密ニューラルネットワーク計算システム20の動作について説明する(図6参照)。
S210において、入力層計算手段210は、式(a-1)、式(a-2)によりシェア[[Y1]]を計算する。
n=1, …, N-1とし、S220-nにおいて、第n層計算手段220-nは、次式によりシェア[[Yn+1]]を計算する。
S230において、出力層計算手段230は、式(c-1)、式(c-2)によりシェア[[YN+1]]を計算する。
ここで、上記S210~S230の処理の特徴について説明する。一般に、秘密計算において右シフトはコストの大きい処理であるため、右シフトを行う回数はなるべく減らした方がよい。そこで、S210~S230の処理では、必要最低限の右シフトの計算(式(b-3)の計算)を実行するようにしている。また、秘密一括写像は定義域と値域を任意に設定できる性質を持っているため、秘密一括写像を用いることにより、右シフトのように桁数を調節することができる。そこで、式(c-2)の計算における秘密一括写像の計算の中に右シフトの効果を含めておくことにより、式(c-2)の計算において、2bw+bxからbyへの精度調節を処理できるようにしている。
以下、上記S210~S230の処理について、精度の観点から説明する。S210における入力層計算手段210の式(a-1)の計算、式(a-2)の計算では、精度がそれぞれbw+bx, bw+bxとなる。S220-1における第1層計算手段220-1の式(b-1)の計算、式(b-2)の計算では、精度がそれぞれ2bw+bx, 2bw+bxとなる。したがって、S220-2における第2層計算手段220-2の式(b-1)の計算、式(b-2)の計算をそのまま実行してしまうと、精度がそれぞれ3bw+bx, 3bw+bxとなる。これを繰り返すと、中間層における計算が進む度に、bwだけ桁が増えていくことになる。そこで、第n層計算手段220-nは、式(b-3)によりシェア[[Yn+1]]を計算し直す。これにより、層における計算が進む度に、bwだけ桁が増えてしまうという問題を解決することができる。したがって、第(N-1)層計算手段220-(N-1)の式(b-3)の計算が終わった時点での精度は、bw+bxとなる。そして、S230における出力層計算手段230の式(c-1)の計算、式(c-2)の計算では、精度がそれぞれ2bw+bx, byとなる。
<第3実施形態>
以下、図9~図11を参照して秘密ニューラルネットワーク学習システム30について説明する。図9は、秘密ニューラルネットワーク学習システム30の構成を示すブロック図である。秘密ニューラルネットワーク学習システム30は、W”個(W”は3以上の所定の整数)の秘密ニューラルネットワーク学習装置3001、…、300W”を含む。秘密ニューラルネットワーク学習装置3001、…、300W”は、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図10は、秘密ニューラルネットワーク学習装置300i(1≦i≦W”)の構成を示すブロック図である。図11は、秘密ニューラルネットワーク学習システム30の動作を示すフローチャートである。
以下、図9~図11を参照して秘密ニューラルネットワーク学習システム30について説明する。図9は、秘密ニューラルネットワーク学習システム30の構成を示すブロック図である。秘密ニューラルネットワーク学習システム30は、W”個(W”は3以上の所定の整数)の秘密ニューラルネットワーク学習装置3001、…、300W”を含む。秘密ニューラルネットワーク学習装置3001、…、300W”は、ネットワーク800に接続しており、相互に通信可能である。ネットワーク800は、例えば、インターネットなどの通信網あるいは同報通信路などでよい。図10は、秘密ニューラルネットワーク学習装置300i(1≦i≦W”)の構成を示すブロック図である。図11は、秘密ニューラルネットワーク学習システム30の動作を示すフローチャートである。
図11に示すように秘密ニューラルネットワーク学習装置300iは、初期化部305iと、順伝播計算部310iと、逆伝播計算部320iと、勾配計算部330iと、パラメータ更新部340iと、終了条件判定部350iと、記録部190iを含む。記録部190iを除く秘密ニューラルネットワーク学習装置300の各構成部は、秘密計算で必要とされる演算、つまり、少なくとも秘匿化、加算、乗算、秘密一括写像、右シフトのうち、各構成部の機能を実現するうえで必要になる演算を実行できるように構成されている。本発明において個々の演算を実現するための具体的な機能構成は、例えば参考非特許文献1~6のそれぞれで開示されるアルゴリズムを実行できるような構成で十分であり、これらは従来的構成であるから詳細な説明については省略する。また、記録部190iは、秘密ニューラルネットワーク学習装置300iの処理に必要な情報を記録する構成部である。
W”個の秘密ニューラルネットワーク学習装置300iによる協調計算によって、秘密ニューラルネットワーク学習システム30はマルチパーティプロトコルであるニューラルネットワークの学習のための秘密計算を実現する。よって、秘密ニューラルネットワーク学習システム30の初期化手段305(図示していない)は初期化部3051、…、305W”で構成され、順伝播計算手段310(図示していない)は順伝播計算部3101、…、310W”で構成され、逆伝播計算手段320(図示していない)は逆伝播計算部3201、…、320W”で構成され、勾配計算手段330(図示していない)は勾配計算部3301、…、330W”で構成され、パラメータ更新手段340(図示していない)はパラメータ更新部3401、…、340W”で構成され、終了条件判定手段350(図示していない)は終了条件判定部3501、…、350W”で構成される。
秘密ニューラルネットワーク学習システム30は、学習データXのシェア[[X]]と学習ラベルTのシェア[[T]]とを用いて、入力層のパラメータW0のシェア[[W0]]と第n層のパラメータWnのシェア[[Wn]](n=1, …, N-1、Nは2以上の整数)と出力層のパラメータWNのシェア[[WN]]とを更新する。以下、図11に従い秘密ニューラルネットワーク学習システム30の動作について説明する。ここで、学習データX、学習ラベルT、入力層の出力値Y1、第n層の出力値Yn+1(n=1, …, N-1)、出力層の出力値YN+1は、いずれもベクトルにより表され、入力層のパラメータW0、第n層のパラメータWn(n=1, …, N-1)、出力層のパラメータWNは、いずれも行列で表される。なお、学習中の入力層のパラメータW0のシェア[[W0]]、第n層のパラメータWnのシェア[[Wn]] (n=1, …, N-1)、出力層のパラメータWNのシェア[[WN]]は、例えば、記録部190に記録されるのでよい。なお、ここで説明する秘密ニューラルネットワーク学習システム30の動作は勾配降下法とバックプロパゲーションを用いるニューラルネットワークの学習方法に相当する。
S305において、初期化手段305は、入力層のパラメータW0のシェア[[W0]]、第n層のパラメータWnのシェア[[Wn]] (n=1, …, N-1)、出力層のパラメータWNのシェア[[WN]]の初期値を設定する。また、初期化手段305は、学習終了の判定に必要な値も適宜設定する。例えば、学習終了の判定に学習回数を用いる場合は、初期化手段305は、学習回数を表すカウンタtの初期値(具体的には、t=0)と、繰り返し学習回数を表す閾値Tとを設定する。また、学習終了の判定に学習回数を用いる代わりに、パラメータの変化量が十分に小さくなったか否かという基準を用いる場合は、初期化手段305は、収束の程度を表す閾値εを設定する。
S310において、順伝播計算手段310は、シェア[[Wn]](n=0, …, N)を用いて、シェア[[X]]から、入力層の出力値Y1のシェア[[Y1]]と第n層の出力値Yn+1のシェア[[Yn+1]](n=1, …, N-1)と出力層の出力値YN+1のシェア[[YN+1]]とを計算する。以下、図12と図13を参照して順伝播計算手段310について説明する。図12は、順伝播計算部310iの構成を示すブロック図である。図13は、順伝播計算手段310の動作を示すフローチャートである。順伝播計算手段310の入力層計算手段210(図示していない)は入力層計算部2101、…、210W”で構成され、第n層計算手段220-n(n=1, …, N-1)(図示していない)は第n層計算部220-n1、…、220-nW”で構成され、出力層計算手段230(図示していない)は出力層計算部2301、…、230W”で構成される。図12に示すように順伝播計算部310iは、入力層計算部210iと、第n層計算部220-ni(n=1, …, N-1、Nは2以上の整数であり、N-1は隠れ層(中間層)の数を表す)と、出力層計算部230iを含む。
図13に従い順伝播計算手段310の動作について説明する。
S210において、入力層計算手段210は、入力層のパラメータW0のシェア[[W0]]を用いて、シェア[[X]]から、入力層の出力値Y1のシェア[[Y1]]を計算する。
n=1, …, N-1とし、S220-nにおいて、第n層計算手段220-nは、第n層のパラメータWnのシェア[[Wn]]を用いて、シェア[[Yn]]から、第n層の出力値Yn+1のシェア[[Yn+1]]を計算する。
S230において、出力層計算手段230は、出力層のパラメータWNのシェア[[WN]]を用いて、シェア[[YN]]から、出力層の出力値YN+1のシェア[[YN+1]]を計算する。なお、出力層計算手段230での処理は、<第2実施形態>において図7と図8を用いて説明したものと同じである。
S320において、逆伝播計算手段320は、シェア[[Wn]](n=N, …, 1)を用いて、シェア[[YN+1]]とシェア[[T]]から、出力層における誤差ZN+1のシェア[[ZN+1]]、第n層における誤差Zn+1のシェア[[Zn+1]](n=N-1, …, 1)、入力層における誤差Z1のシェア[[Z1]]を計算する。逆伝播計算手段320は、例えば、次式によりシェア[[ZN+1]]を計算する。
逆伝播計算手段320は、例えば、次式によりシェア[[ZN]]を計算する。
逆伝播計算手段320は、例えば、次式によりシェア[[Zn]](n=N-1, …, 1)を計算する。
S330において、勾配計算手段330は、シェア[[X]]とシェア[[Yn]](n=1, …, N)を用いて、シェア[[Zn]](n= 1, …, N+1)から、入力層における勾配G0のシェア[[G0]]と第n層における勾配Gnのシェア[[Gn]](n=1, …, N-1)と出力層における勾配GNのシェア[[GN]]とを計算する。勾配計算手段330は、例えば、次式によりシェア[[G0]]を計算する。
勾配計算手段330は、例えば、次式によりシェア[[Gn]](n=1, …, N)を計算する。
S340において、パラメータ更新手段340は、シェア[[Gn]](n=0, …, N)を用いて、シェア[[Wn]](n=0, …, N)を更新する。パラメータ更新手段340は、例えば、次式によりシェア[[W0]]を更新する。
パラメータ更新手段340は、例えば、次式によりシェア[[Wn]](n=1, …, N-1)を更新する。
パラメータ更新手段340は、例えば、次式によりシェア[[WN]]を更新する。
ここで、Hは次式で定義される値である。
ただし、ηは学習率、mはバッチサイズを表す。
学習率ηとバッチサイズmの比η/mとの乗算を効率的に計算するために、式(2)により、比η/mを2のべきの数2-Hで近似する。そのため、学習率ηとバッチサイズmはともに2のべきの値にしておくのがよい。
このHを用いて、シェア[[Wn]](n=0, …, N)を更新する計算、つまり、式(r-1)、式(r-3)、式(r-5)において、Hビット分だけrshiftしている。
S350において、終了条件判定手段350は、終了条件が満たされた場合には、そのときのシェア[[Wn]](n=0, …, N)を出力して、処理を終了する。それ以外の場合、S310の処理に戻る。つまり、秘密ニューラルネットワーク学習システム30は、S310~S350の処理を繰り返す。なお、終了条件が満たされた場合とは、学習終了の判定に学習回数を用いる場合は、カウンタtが閾値Tに達した場合であり、パラメータの変化量が十分に小さくなったか否かという基準を用いる場合は、パラメータの変化量がεより小さくなった場合である。また、学習終了の判定に学習回数を用いる場合は、終了条件判定手段350は、カウンタtの値を1だけインクリメントする。
順伝播計算手段310における計算は、入力層、隠れ層、出力層の順で、逆伝播計算手段320における計算は、出力層、隠れ層、入力層の順で計算する必要があるが、勾配計算手段330における計算とパラメータ更新手段340における計算については、各層ごとに並列に処理することも可能であり、まとめて処理することによって処理の効率を上げることができる。
本実施形態の発明によれば、高速かつ高精度にニューラルネットワークの学習のための秘密計算を実行することが可能となる。第1実施形態の発明を用いることにより、ソフトマックス関数を精度よく計算できるようになるため、非特許文献1や非特許文献2の従来手法と比較して、ニューラルネットワークの学習のための秘密計算も精度よく実行することができるようになる。
(変形例)
第2実施形態の変形例と同様、変数や定数ごとに必要な精度を設定し、適宜右シフトrshiftの演算を行うことで、意図的に桁を落としてオーバーフローを防ぎつつ、固定小数点数で効率よくニューラルネットワークの学習のための秘密計算を実現することができる。学習データXを表す変数x、出力層の出力値YN+1及び学習ラベルTを表す変数y、入力層のパラメータW0、第n層のパラメータWn(n=1, …, N-1)、出力層のパラメータWNを表す変数wに必要な精度をそれぞれbx, by, bwとし、乗算によるオーバーフローを防ぐ工夫をした秘密ニューラルネットワーク学習システム30の動作について説明する。具体的には、図11のS310~S340の動作について説明する。
第2実施形態の変形例と同様、変数や定数ごとに必要な精度を設定し、適宜右シフトrshiftの演算を行うことで、意図的に桁を落としてオーバーフローを防ぎつつ、固定小数点数で効率よくニューラルネットワークの学習のための秘密計算を実現することができる。学習データXを表す変数x、出力層の出力値YN+1及び学習ラベルTを表す変数y、入力層のパラメータW0、第n層のパラメータWn(n=1, …, N-1)、出力層のパラメータWNを表す変数wに必要な精度をそれぞれbx, by, bwとし、乗算によるオーバーフローを防ぐ工夫をした秘密ニューラルネットワーク学習システム30の動作について説明する。具体的には、図11のS310~S340の動作について説明する。
S310において、順伝播計算手段310は、<第2実施形態>の(変形例)で説明したS210~S230の処理を実行する。
S320において、逆伝播計算手段320は、式(p-1)によりシェア[[ZN+1]]を計算する。逆伝播計算手段320は、例えば、次式によりシェア[[ZN]]を計算する。
逆伝播計算手段320は、例えば、次式によりシェア[[Zn]](n=N-1, …, 1)を計算する。
S330において、勾配計算手段330は、式(q-1)によりシェア[[G0]]を計算する。勾配計算手段330は、式(q-2)によりりシェア[[Gn]](n=1, …, N)を計算する。
S340において、パラメータ更新手段340は、例えば、次式によりシェア[[W0]]を計算する。
パラメータ更新手段340は、例えば、次式によりシェア[[Wn]](n=1, …, N-1)を計算する。
パラメータ更新手段340は、例えば、次式によりシェア[[WN]]を計算する。
ここで、パラメータ更新手段340における右シフトの計算(つまり、式(r-1)’、式(r-3)’、式(r-5)’の計算)では、学習率・バッチサイズでの除算をHビットでの右シフトで近似したうえで、さらに同時に精度調節の右シフト行うことで、右シフトの処理コストを軽減している。
<補記>
図14は、上述の各装置を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
図14は、上述の各装置を実現するコンピュータの機能構成の一例を示す図である。上述の各装置における処理は、記録部2020に、コンピュータを上述の各装置として機能させるためのプログラムを読み込ませ、制御部2010、入力部2030、出力部2040などに動作させることで実施できる。
本発明の装置は、例えば単一のハードウェアエンティティとして、キーボードなどが接続可能な入力部、液晶ディスプレイなどが接続可能な出力部、ハードウェアエンティティの外部に通信可能な通信装置(例えば通信ケーブル)が接続可能な通信部、CPU(Central Processing Unit、キャッシュメモリやレジスタなどを備えていてもよい)、メモリであるRAMやROM、ハードディスクである外部記憶装置並びにこれらの入力部、出力部、通信部、CPU、RAM、ROM、外部記憶装置の間のデータのやり取りが可能なように接続するバスを有している。また必要に応じて、ハードウェアエンティティに、CD-ROMなどの記録媒体を読み書きできる装置(ドライブ)などを設けることとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
ハードウェアエンティティの外部記憶装置には、上述の機能を実現するために必要となるプログラムおよびこのプログラムの処理において必要となるデータなどが記憶されている(外部記憶装置に限らず、例えばプログラムを読み出し専用記憶装置であるROMに記憶させておくこととしてもよい)。また、これらのプログラムの処理によって得られるデータなどは、RAMや外部記憶装置などに適宜に記憶される。
ハードウェアエンティティでは、外部記憶装置(あるいはROMなど)に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてメモリに読み込まれて、適宜にCPUで解釈実行・処理される。その結果、CPUが所定の機能(上記、…部、…手段などと表した各構成要件)を実現する。
本発明は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記実施形態において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
既述のように、上記実施形態において説明したハードウェアエンティティ(本発明の装置)における処理機能をコンピュータによって実現する場合、ハードウェアエンティティが有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記ハードウェアエンティティにおける処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD-RAM(Random Access Memory)、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP-ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、ハードウェアエンティティを構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
Claims (7)
- map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、
3個以上の秘密ソフトマックス関数計算装置で構成され、入力ベクトル(u1, …, uJ)(ただし、Jは1以上の整数)のシェア([[u1]], …, [[uJ]])から、入力ベクトル(u1, …, uJ)に対するソフトマックス関数の値(softmax(u1), …, softmax(uJ))のシェア([[softmax(u1)]], …, [[softmax(uJ)]])を計算する秘密ソフトマックス関数計算システムであって、
前記シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算手段と、
前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算手段と、
前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])を計算する加算手段と、
前記シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])から、map2(([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1 Jexp(uj-ui)<bp+1となるp)を計算し、([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算手段と、
を含む秘密ソフトマックス関数計算システム。 - 請求項1に記載の秘密ソフトマックス関数計算システムであって、
前記秘密一括写像map1の値域を表すパラメータα1, αKをそれぞれα1=0, αK=2b_y(ただし、byはソフトマックス関数の出力の精度を表す固定小数点の小数部分のビット数を表す)とする
ことを特徴とする秘密ソフトマックス関数計算システム。 - map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、
入力ベクトル(u1, …, uJ)(ただし、Jは1以上の整数)のシェア([[u1]], …, [[uJ]])から、入力ベクトル(u1, …, uJ)に対するソフトマックス関数の値 (softmax(u1), …, softmax(uJ))のシェア([[softmax(u1)]], …, [[softmax(uJ)]])を計算する、3個以上の秘密ソフトマックス関数計算装置で構成される秘密ソフトマックス関数計算システムの中の秘密ソフトマックス関数計算装置であって、
前記シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算部と、
前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算部と、
前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])を計算する加算部と、
前記シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])から、map2(([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1 Jexp(uj-ui)<bp+1となるp)を計算し、([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算部と、
を含む秘密ソフトマックス関数計算装置。 - map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、
3個以上の秘密ソフトマックス関数計算装置で構成される秘密ソフトマックス関数計算システムが、入力ベクトル(u1, …, uJ)(ただし、Jは1以上の整数)のシェア([[u1]], …, [[uJ]])から、入力ベクトル(u1, …, uJ)に対するソフトマックス関数の値(softmax(u1), …, softmax(uJ))のシェア([[softmax(u1)]], …, [[softmax(uJ)]])を計算する秘密ソフトマックス関数計算方法であって、
前記秘密ソフトマックス関数計算システムが、前記シェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算ステップと、
前記秘密ソフトマックス関数計算システムが、前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算ステップと、
前記秘密ソフトマックス関数計算システムが、前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])を計算する加算ステップと、
前記秘密ソフトマックス関数計算システムが、前記シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])から、map2(([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1 Jexp(uj-ui)<bp+1となるp)を計算し、([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算ステップと、
を含む秘密ソフトマックス関数計算方法。 - map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、
3個以上の秘密ニューラルネットワーク計算装置で構成され、入力データXのシェア[[X]]から、入力データXに対する出力値YN+1(Nは2以上の整数)のシェア[[YN+1]]を計算する秘密ニューラルネットワーク計算システムであって、
入力層のパラメータW0のシェア[[W0]]を用いて、前記シェア[[X]]から、入力層の出力値Y1のシェア[[Y1]]を計算する入力層計算手段と、
n=1, …, N-1とし、
第n層のパラメータWnのシェア[[Wn]]を用いて、前記シェア[[Yn]]から、第n層の出力値Yn+1のシェア[[Yn+1]]を計算する第n層計算手段と、
出力層のパラメータWNのシェア[[WN]]を用いて、前記シェア[[YN]]から、出力層の出力値YN+1のシェア[[YN+1]]を計算する出力層計算手段と、
を含み、
(u1, …, uJ)(ただし、Jは1以上の整数)を出力層における中間出力値UN+1とし、
前記出力層計算手段は、
前記中間出力値UN+1のシェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算手段と、
前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算手段と、
前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])を計算する加算手段と、
前記シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])から、map2(([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1 Jexp(uj-ui)<bp+1となるp)を計算し、[[YN+1]]=([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算手段と、
を含む秘密ニューラルネットワーク計算システム。 - map1を関数exp(x)の定義域を表すパラメータ(a1, …, aK)と値域を表すパラメータ(α1, …, αK)(ただし、Kは2以上の整数、a1, …, aKはa1<…<aKを満たす実数)により定義される秘密一括写像、map2を関数1/xの定義域を表すパラメータ(b1, …, bL)と値域を表すパラメータ(β1, …, βL)(ただし、Lは2以上の整数、b1, …, bLはb1<…<bLを満たす実数)により定義される秘密一括写像とし、
3個以上の秘密ニューラルネットワーク学習装置で構成され、学習データXのシェア[[X]]と学習ラベルTのシェア[[T]]とを用いて、入力層のパラメータW0のシェア[[W0]]と第n層のパラメータWnのシェア[[Wn]](n=1, …, N-1、Nは2以上の整数)と出力層のパラメータWNのシェア[[WN]]とを更新する秘密ニューラルネットワーク学習システムであって、
前記シェア[[Wn]](n=0, …, N)を用いて、前記シェア[[X]]から、入力層の出力値Y1のシェア[[Y1]]と第n層の出力値Yn+1のシェア[[Yn+1]](n=1, …, N-1)と出力層の出力値YN+1のシェア[[YN+1]]とを計算する順伝播計算手段と、
前記シェア[[Wn]](n=N, …, 1)を用いて、前記シェア[[YN+1]]と前記シェア[[T]]から、出力層における誤差ZN+1のシェア[[ZN+1]]、第n層における誤差Zn+1のシェア[[Zn+1]](n=N-1, …, 1)、入力層における誤差Z1のシェア[[Z1]]を計算する逆伝播計算手段と、
前記シェア[[X]]と前記シェア[[Yn]](n=1, …, N)を用いて、前記シェア[[Zn]](n= 1, …, N+1)から、入力層における勾配G0のシェア[[G0]]と第n層における勾配Gnのシェア[[Gn]](n=1, …, N-1)と出力層における勾配GNのシェア[[GN]]とを計算する勾配計算手段と、
前記シェア[[Gn]](n=0, …, N)を用いて、前記シェア[[Wn]](n=0, …, N)を更新するパラメータ更新手段と、
を含み、
(u1, …, uJ)(ただし、Jは1以上の整数)を出力層における中間出力値UN+1とし、
前記順伝播計算手段は、
前記中間出力値UN+1のシェア([[u1]], …, [[uJ]])から、シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])を計算する減算手段と、
前記シェア([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]])から、map1(([[u1-u1]], [[u2-u1]], …, [[uJ-u1]], [[u1-u2]], …, [[uJ-u2]], …, [[u1-uJ]],…, [[uJ-uJ]]))=([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])(ただし、f(i,j)(1≦i, j≦K)は、ap≦ui-uj<ap+1となるp)を計算し、([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]]) =([[αf(1,1)]], [[αf(2,1)]], …, [[αf(J,1)]], [[αf(1,2)]], …, [[αf(J,2)]], …, [[αf(1,J)]],…, [[αf(J,J)]])とする第1秘密一括写像計算手段と、
前記シェア([[exp(u1-u1)]],[[exp(u2-u1)]], …, [[exp(uJ-u1)]], [[exp(u1-u2)]], …, [[exp(uJ-u2)]], …, [[exp(u1-uJ)]],…, [[exp(uJ-uJ)]])から、シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])を計算する加算手段と、
前記シェア([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]])から、map2(([[Σj=1 Jexp(uj-u1)]], [[Σj=1 Jexp(uj-u2)]],…, [[Σj=1 Jexp(uj-uJ)]]))=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])(ただし、g(i)(1≦i≦L)は、bp≦Σj=1 Jexp(uj-ui)<bp+1となるp)を計算し、[[YN+1]]=([[softmax(u1)]], [[softmax(u2)]],…, [[softmax(uJ)]])=([[βg(1)]], [[βg(2)]], …, [[βg(J)]])とする第2秘密一括写像計算手段と、
を含む秘密ニューラルネットワーク学習システム。 - 請求項3に記載の秘密ソフトマックス関数計算装置としてコンピュータを機能させるためのプログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/031916 WO2021029024A1 (ja) | 2019-08-14 | 2019-08-14 | 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2021029024A1 JPWO2021029024A1 (ja) | 2021-02-18 |
JP7226562B2 true JP7226562B2 (ja) | 2023-02-21 |
Family
ID=74570968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021539755A Active JP7226562B2 (ja) | 2019-08-14 | 2019-08-14 | 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220292362A1 (ja) |
EP (1) | EP4016506B1 (ja) |
JP (1) | JP7226562B2 (ja) |
CN (1) | CN114245917B (ja) |
AU (1) | AU2019461059B2 (ja) |
WO (1) | WO2021029024A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022150498A (ja) * | 2021-03-26 | 2022-10-07 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 学習プログラム、学習方法及び学習装置 |
CN113407793A (zh) * | 2021-07-13 | 2021-09-17 | 南京宁麒智能计算芯片研究院有限公司 | 一种softmax函数的硬件实现方法、模块、芯片和系统 |
CN117592527A (zh) * | 2024-01-18 | 2024-02-23 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于函数秘密共享的隐私保护神经网络训练方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4092735B2 (ja) * | 1997-12-10 | 2008-05-28 | セイコーエプソン株式会社 | 情報処理システム及び暗号/復号システム |
US20040086117A1 (en) * | 2002-06-06 | 2004-05-06 | Petersen Mette Vesterager | Methods for improving unpredictability of output of pseudo-random number generators |
JP2005084568A (ja) * | 2003-09-11 | 2005-03-31 | Nippon Telegr & Teleph Corp <Ntt> | セキュリティ方法、セキュリティ装置及びセキュリティプログラム |
JP2007034927A (ja) * | 2005-07-29 | 2007-02-08 | Canon Inc | べき乗演算装置 |
JP4685621B2 (ja) * | 2005-12-20 | 2011-05-18 | 日本電信電話株式会社 | 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム |
CN101436932A (zh) * | 2008-12-18 | 2009-05-20 | 天津大学 | 一种抵抗简单电耗攻击的模幂计算方法 |
EP2689554B1 (en) * | 2011-06-28 | 2018-08-08 | NEC Corporation | Method and system for obtaining a result of a joint public function for a plurality of parties |
US10372886B2 (en) * | 2015-05-05 | 2019-08-06 | Nxp B.V. | Protecting the input/output of modular encoded white-box RSA/ECC |
TW201810989A (zh) * | 2016-05-18 | 2018-03-16 | 納格維遜股份有限公司 | 用以保護密碼指數的方法及系統 |
EP3958158B1 (en) * | 2017-03-22 | 2023-04-26 | Visa International Service Association | Privacy-preserving machine learning |
CN109190395B (zh) * | 2018-08-21 | 2020-09-04 | 浙江大数据交易中心有限公司 | 一种基于数据变换的全同态加密方法及系统 |
-
2019
- 2019-08-14 JP JP2021539755A patent/JP7226562B2/ja active Active
- 2019-08-14 US US17/632,509 patent/US20220292362A1/en active Pending
- 2019-08-14 AU AU2019461059A patent/AU2019461059B2/en active Active
- 2019-08-14 WO PCT/JP2019/031916 patent/WO2021029024A1/ja unknown
- 2019-08-14 CN CN201980099136.3A patent/CN114245917B/zh active Active
- 2019-08-14 EP EP19941023.4A patent/EP4016506B1/en active Active
Non-Patent Citations (4)
Title |
---|
三品 気吹 ほか,秘密計算によるロジスティック回帰は本当に使えるか?,2019年暗号と情報セキュリティシンポジウム予稿集,日本,一般社団法人電子情報通信学会,2019年01月15日,4C2-3,p. 1-8 |
三品 気吹 ほか3名,高精度かつ高効率な秘密ロジスティック回帰の設計と実装,コンピュータセキュリティシンポジウム2018論文集,日本,一般社団法人情報処理学会,2018年10月15日,Vol.2018, No.2,pp.1229-1236 |
大畑 幸矢,ラウンド効率のよい2者間秘匿計算とその秘匿畳み込みニューラルネットワークへの応用,コンピュータセキュリティシンポジウム2018論文集,日本,一般社団法人情報処理学会,2018年10月15日,Vol.2018, No.2,pp.615-622 |
田中 哲士 ほか,秘密分散ベース秘密計算を用いたニューラルネットワークのコスト評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2016年05月19日,Vol.116 No.65,p. 119-126 |
Also Published As
Publication number | Publication date |
---|---|
EP4016506A1 (en) | 2022-06-22 |
AU2019461059A1 (en) | 2022-03-03 |
US20220292362A1 (en) | 2022-09-15 |
AU2019461059B2 (en) | 2023-02-02 |
EP4016506A4 (en) | 2023-04-12 |
JPWO2021029024A1 (ja) | 2021-02-18 |
CN114245917A (zh) | 2022-03-25 |
WO2021029024A1 (ja) | 2021-02-18 |
CN114245917B (zh) | 2023-12-05 |
EP4016506B1 (en) | 2023-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7226562B2 (ja) | 秘密ソフトマックス関数計算システム、秘密ソフトマックス関数計算装置、秘密ソフトマックス関数計算方法、秘密ニューラルネットワーク計算システム、秘密ニューラルネットワーク学習システム、プログラム | |
JP6766182B2 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、プログラム | |
JP7067632B2 (ja) | 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム | |
JP7092206B2 (ja) | 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム | |
JPWO2018135563A1 (ja) | 秘密計算システム、秘密計算装置、秘密計算方法、プログラム | |
JP7327511B2 (ja) | 秘密乱数生成システム、秘密計算装置、秘密乱数生成方法、およびプログラム | |
JPWO2019225531A1 (ja) | 秘密一括近似システム、秘密計算装置、秘密一括近似方法、およびプログラム | |
JP7452692B2 (ja) | 秘密指数部統一システム、秘密指数部統一装置、秘密指数部統一方法、秘密和計算システム、秘密積和計算システム、プログラム | |
JP7243846B2 (ja) | 秘密生存時間データ処理システム、秘密生存時間データ処理装置、秘密生存時間データ処理方法、プログラム | |
JP7485067B2 (ja) | 秘密シフトシステム、秘密シフト装置、秘密シフト方法、プログラム | |
WO2023233622A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
WO2023135636A1 (ja) | 秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム | |
JP7525066B2 (ja) | 秘密計算装置、秘密計算システム、秘密計算方法、およびプログラム | |
WO2023135635A1 (ja) | 秘密乱数計算システム、秘密乱数計算装置、秘密乱数計算方法、秘密クラスタ計算システム、秘密クラスタ計算装置、秘密クラスタ計算方法、プログラム | |
WO2023157118A1 (ja) | 秘密計算装置、秘密計算方法、プログラム | |
WO2023188257A1 (ja) | 秘密グローバルモデル計算装置、ローカルモデル登録方法、プログラム | |
WO2021149101A1 (ja) | 秘密選択積計算システム、秘密選択積計算方法、秘密計算装置、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220125 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230123 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7226562 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |