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

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

▶ ザマ・エス・ア・エスの特許一覧

特表2024-522361完全準同型評価のための計算ネットワークエンコーディング
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-18
(54)【発明の名称】完全準同型評価のための計算ネットワークエンコーディング
(51)【国際特許分類】
   H04L 9/30 20060101AFI20240611BHJP
   G06N 3/04 20230101ALI20240611BHJP
【FI】
H04L9/30 Z
G06N3/04
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023574404
(86)(22)【出願日】2022-06-03
(85)【翻訳文提出日】2024-01-30
(86)【国際出願番号】 EP2022065197
(87)【国際公開番号】W WO2022254011
(87)【国際公開日】2022-12-08
(31)【優先権主張番号】21290038.5
(32)【優先日】2021-06-04
(33)【優先権主張国・地域又は機関】EP
(31)【優先権主張番号】21197777.2
(32)【優先日】2021-09-20
(33)【優先権主張国・地域又は機関】EP
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】523168881
【氏名又は名称】ザマ・エス・ア・エス
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】シュバリエ-マメス,ブノワ
(72)【発明者】
【氏名】パイリエ,パスカル・ジルベール・イブ
(57)【要約】
いくつかの実施形態は、演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するための、コンピュータ実装される方法を対象とする。第2の計算ネットワークの演算は、完全準同型暗号化(FHE)演算である。変換することは、演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得することと、対応するFHE演算の入力値について規定の範囲を決定することとを含んでもよい。
【特許請求の範囲】
【請求項1】
演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するための、コンピュータ実装される方法であって、第2の計算ネットワークの演算は完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算は整数行列乗算を含む行列演算(y=Wx+B)とさらなる演算(z=A(y))とを含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、
- 第1のネットワーク内の演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得することであって、観察される範囲を取得するために、入力値を監視しながら、入力値のサンプルセットに対して第1のネットワークが評価され、サポートされる範囲が観察される範囲から導出される、こと、
- 対応するFHE演算の入力値に対する規定の範囲を決定することであって、規定の範囲が、FHE演算による入力値の正確な処理を保証する、こと、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む、方法。
【請求項2】
行列演算が、行列乗算と行列加算(Wx+B)を含み、行列演算を調整することは、スケーリング係数でスケーリングされた入力値(x’=x/d)を受け取るように、行列乗算ではなく行列加算を調整する(B’=B/d)ことを含む、請求項1に記載の変換方法。
【請求項3】
さらなる演算(A(x))が、スケーリング係数でスケーリングされ、シフト値でシフトされた入力値を受け取るように調整される(A(dx-s))、請求項1または2に記載の変換方法。
【請求項4】
第1の計算ネットワーク内のさらなる演算(A(x))が、各入力値に適用される関数(f(x))を含み、関数が同じスケーリング係数と複数の異なるシフト値について調整された複数のFHE演算に変換される(f(dx-s))、請求項1から3のいずれか一項に記載の変換方法。
【請求項5】
さらなる演算(A(x))が、次の演算のためのさらなるスケーリング関数でスケーリングされた出力値を生成するようにさらに調整される(A()/d;(A()/d+s)、請求項1から4のいずれか一項に記載の変換方法。
【請求項6】
第1および第2の計算ネットワークがニューラルネットワークである、請求項1から5のいずれか一項に記載の変換方法。
【請求項7】
さらなる演算に対する規定の範囲が、0を含み0から1以下の値(ε)までである、請求項1から6のいずれか一項に記載の変換方法。
【請求項8】
max-pool演算に対する規定の範囲が、活性化関数の規定の範囲の半分のサイズである、請求項1から7のいずれか一項に記載の変換方法。
【請求項9】
サポートされる範囲が、マージン関数を観察される範囲に適用することによって、より大きな観察される範囲から計算される、請求項1から8のいずれか一項に記載の変換方法。
【請求項10】
第1の計算ネットワーク内の演算が、複数の前の演算から入力値を受け取り、第2の計算ネットワーク内の対応する演算が、すべての入力値に対して等しいスケーリング係数でスケーリングされた、対応する複数の前の演算からの入力値を受け取る、請求項1から9のいずれか一項に記載の変換方法。
【請求項11】
複数の前の演算から入力値を受け取る第1の計算ネットワーク内の演算が、加算、減算、または連結である、請求項10に記載の変換方法。
【請求項12】
第2の計算ネットワーク内の値が、スケーリング関数が適用される第1の計算ネットワーク内の値と等しく、スケーリング関数(x’=x/d+s)が、スケーリング係数(1/d)とシフティング加算(s)によって定義され、同じ層内の値が同じスケーリング係数を持つ、請求項1から11のいずれか一項に記載の変換方法。
【請求項13】
- 演算間の層にシンボル的スケーリング係数を割り当てること、
- 第1のネットワークアーキテクチャからシンボル的スケーリング係数の条件を導出すること、
- 導出された条件を使用して、シンボル的スケーリング係数の数を低減させること
を含む、請求項1から12のいずれか一項に記載の変換方法。
【請求項14】
- スケーリング後のサポートされる範囲と規定の範囲の差から入力値のシフト値を決定することを含む、
請求項12または13に記載の変換方法。
【請求項15】
- 第2ネットワーク内の1つ以上の層に対応する残りのシンボル的スケーリング係数については、スケーリング係数がシンボル的スケーリング係数に関連付けられており、対応する1つ以上の層内のサポートされる範囲に適用されるスケーリング係数が、対応する1つ以上の層の規定の範囲に適合する、
請求項13または14に記載の変換方法。
【請求項16】
あるスケーリング係数から別のスケーリング係数に移行するために、第1の計算ネットワーク内の演算に対応する2つの演算の間に、第2の計算ネットワーク内のさらなる演算を挿入することを含む、請求項1から15のいずれか一項に記載の変換方法。
【請求項17】
さらなる演算が整数乗算である、請求項16に記載の変換方法。
【請求項18】
さらなる演算(A(x))が、それぞれが個々のシフト値に対して調整されたテストベクトルを有する複数のプログラマブルブートストラッピング演算として第2の計算ネットワーク内で実装され、方法が、
- 個々のシフトに従ってさらなる演算を実装するテストベクトルをグループ化すること、
- グループ内のテストベクトルを単一のプログラマブルブートストラッピング演算で置き換え、テストベクトルの数を低減させること、
- 対応するプログラマブルブートストラッピングの入力のシフトをグループの1つのシフトに調整すること
をさらに含む、請求項1から17のいずれか一項に記載の変換方法。
【請求項19】
演算の第1の計算ネットワークおよび第2の計算ネットワークが、画像を入力としてとるように構成されている、請求項1から18のいずれか一項に記載の変換方法。
【請求項20】
さらなる演算が、活性化関数、ReLu関数、シグモイド関数、ソフトマックス関数、ソフトプラス関数、ソフトサイン関数、tanh関数、selu関数、elu関数、指数関数、LeakyReLU層、PReLU層、ThresholdedReLU層のうちの1つ以上を含む、請求項1から19のいずれか一項に記載の変換方法。
【請求項21】
- プロセッサシステムによって実行されると、プロセッサシステムに請求項1から20のいずれか一項に記載の方法を行わせる命令、および
- 請求項1から20のいずれか一項に従って取得された第2のネットワークを表すデータ、
のうちのいずれか1つを表すデータ(1020)を含む、一時的または非一時的なコンピュータ可読媒体(1000)。
【請求項22】
演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するためのシステムであって、第2の計算ネットワークの演算が完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算が、整数行列乗算を含む行列演算(y=Wx+B)およびさらなる演算(z=A(y))を含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、システムが、
- 第1の計算ネットワークを受け取るための通信インターフェース、
- 第1のネットワーク内の演算を変換するために構成されたプロセッサシステム
を含み、演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得することであって、観察される範囲を取得するために、入力値を監視しながら、入力値のサンプルセットに対して第1のネットワークが評価され、サポートされる範囲は観察される範囲から導出される、こと、
- 対応するFHE演算の入力値に対する規定の範囲を決定することであって、規定の範囲が、FHE演算による入力値の正確な処理を保証する、決定すること、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示される主題は、演算の第1の計算ネットワークをFHE演算の第2の計算ネットワークに変換するための方法、コンピュータ可読媒体、および演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するためのシステムに関する。
【背景技術】
【0002】
Craig Gentryの画期的な論文「Fully Homomorphic Encryption Using Ideal Lattices」(完全版はCommun.ACM53(3):97-105,2010;参照により本明細書に含まれる)以来ずっと、完全準同型暗号化(FHE)を現実世界の用途にとって十分にセキュアで効率的にするための継続的な努力が行われてきた。FHEを使用すると、暗号化されたデータに対して、復号できなくても、計算、例えば回路の評価、を行える。例えば、入力データと計算結果を暗号化された形式で受け取り、返すことができる。中間データ、例えば計算の内部状態も暗号化された形式であり得る。
【0003】
計算結果は暗号化された形式で返されるが、復号すると、出力は暗号化されていないデータに対して演算が行われた場合と同じになる。準同型暗号化は、プライバシーを保護するアウトソーシングされたストレージと計算に使用できる。これにより、データを暗号化し、処理やストレージが暗号化されている間中、クラウド環境にアウトソーシングすることができる。
【0004】
例えば、準同型暗号は、プライバシー規制によりプレーンデータの共有が困難であるが暗号化された医療データに関する計算は許容され得る医療分野などに適用され得る。例えば、医療データを分類するために開発された医療モデルは、第三者、例えば病院から暗号化された形式で医療データを受け取るように構成され得る。医療モデルは、例えば、医療データを、例えば、正常か異常か、または何らかの特定の医学的症候群、疾患、または他の障害を有するかとして分類することができる。準同型暗号化を使用すると、暗号化された形式で受け取った医療データに医療モデルを適用できる。これは、医療モデルを評価する当事者は、暗号化された医療データに対応するプレーンな医療データにアクセスできないことを意味する。サービスのユーザは、医療モデルのアプリケーションの結果を復号できる。
【0005】
暗号文の任意の計算をサポートする暗号システムは、完全準同型暗号化(FHE)スキームとして知られている。このようなスキームにより、幅広い関数の評価が可能になり、暗号化された入力に対して実行して結果の暗号化を生成できる。例えば、andゲートとorゲートの組み合わせが利用可能になると、任意のブール回路を実装できるため、いわゆる機能の完全性が得られる。このような回路は、その入力、内部状態、出力を明らかにすることなく、信頼できない関係者によって行われ得る。完全準同型暗号化はレベル化され(leveled)得、その場合、特定の演算の数が所定の閾値を超えることはできない。レベル完全準同型スキーム(leveled fully homomorphic scheme)は、ブートストラッピング演算を行うことによって非レベルFHEスキームに変換できる。ブートストラッピング演算は、暗号化されたデータアイテムに対して行える演算数よりも演算数を増加させる。
【0006】
完全準同型暗号化スキームは、ブール演算回路や算術回路など、何らかの特別な形式で表現される計算をサポートし得る。例えば、レベル完全準同型暗号化スキームは、任意の回路の評価をサポートできるが、その深さは制限されており、事前に決定されている。非レベル完全準同型暗号化(FHE)により、無制限の深さの任意の回路を評価できる。レベルFHEスキームは、データに対するブートストラッピング演算を定期的に行うことによって非レベルFHEスキームに変換できる。計算、例えば関数を回路の形でコンパイルする方法は知られている。
【0007】
Gentryの論文以来、多くのFHEスキームが開発され、計算時間が数オーダー短縮された。現在、多くのFHEスキームが知られている。FHEスキームのより最近の例は、Ilaria Chillottiらの論文「TFHE:Fast Fully Homomorphic Encryptionover the Torus」で説明され(J.Cryptology33(1):34-91,2020)、参照により本明細書に含まれる。
【0008】
好ましいFHEスキームは、Ilaria Chillotti、Marc Joye、およびPascal Paillierによる論文「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」に説明されており、Cryptology ePrint Archive:Report2021/091を参照されたく、これは参照により本明細書に含まれる。この論文は、トーラスの要素に対して演算する。例えば、それはトーラス型FHEスキーム(TFHE)である。
【0009】
効率的なFHEスキームがますます利用可能になるにつれて、当初は従来の非暗号化評価用に開発された計算をFHEを使用した計算に変換することへの関心が高まっている。このような変換は、特にいわゆるプログラマブルブートストラッピング(PBS)、つまりFHE計算の設計者が選定できる所定の関数も実行するブートストラッピング演算の進歩により、常に可能である。
【0010】
もともとFHE演算を使用した従来の算術用に設計された第1の計算ネットワークを実行するときの複雑さは、FHEスキームに従って暗号化された値が制限を被ることである。特に、多くのFHEスキーム、特にTFHEスキームは、値が所定の範囲内でのみ生じることができるという制限を課す。
【0011】
暗号スキームTFHEは、トーラスと呼ばれる数学的構造を使用する。トーラスの例は、例えば1を法とする実数、
【数1】
である(他の法も可能であるが、1が便利である)。トーラス上の値は、実際の実装では、適切な有限環、例えばモジュラスを法とする整数、例えば、mがモジュラスである
【数2】
として表されることがよくあり、整数モジュラスは通常、2の累乗、例えば2であり、ここで、qは、例えば32または64であり得、通常は128以下である。トーラス値の暗号化は、特定のスキームと同様に行われ得る;例えば、上で引用した論文「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」のように行われ得る。
【0012】
係数を法とする数値は、トーラス上の値、例えば0(含んでいる)から1(含んでいない)までの範囲を表す。一部のFHE演算では、入力にさらに小さい範囲、例えば、0から
【数3】
、またはさらには0から
【数4】
、を課し得る。従来の第1の計算ネットワークで生じる値は、FHEによってサポートされる範囲外、例えば0から1の範囲外であることが多いため、第1の計算ネットワーク内の値を範囲内に適合させる、より小さい値としてエンコードする必要がある。第1の計算ネットワークの値の一部のみをエンコードする必要がある:明らかに、機密データが暗号化される必要があり、最初にエンコードされるが、例えば、中間の暗号化された値に加算または減算され得る定数も含まれる。後者の場合、加算または減算されるデータ、例えばモデルのパラメータが機密でない場合、暗号化は自明な暗号化であってもよい。エンコードする必要のない値の注目すべき例は、中間の暗号化された値に乗算される非機密の整数定数の場合である。
【0013】
これを達成するための伝統的アプローチは、すべての値がFHEスキームでサポートされる最小範囲に適合するまで、第1の計算ネットワーク内のすべての値をスケールダウンすることである。このアプローチの際立った欠点の1つは、たとえ特定の第1の計算ネットワークに対してそのようなスケールダウンが可能であったとしても、精度のロスを招くことである。これは、次にFHE演算を使用して実行するときの、ネットワークの忠実度の低下、またはこの精度のロスを防ぐために第2の計算ネットワーク内で膨大な暗号パラメータをとる必要があることにつながる。後者のオプションは、今度はメモリの使用量の増加、およびより遅い計算速度につながる。
【0014】
したがって、FHE演算を使用して実行できるように、第1の計算ネットワークをより適切に変換する必要がある。
【先行技術文献】
【非特許文献】
【0015】
【非特許文献1】Craig Gentry、「Fully Homomorphic Encryption Using Ideal Lattices」、Commun.ACM53(3):97-105,2010
【非特許文献2】Ilaria Chillottiら、「TFHE:Fast Fully Homomorphic Encryptionover the Torus」、J.Cryptology33(1):34-91,2020
【非特許文献3】Ilaria Chillotti、Marc Joye、およびPascal Paillier、「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」、Cryptology ePrint Archive:Report2021/091
【発明の概要】
【課題を解決するための手段】
【0016】
従来の算術演算に基づく計算ネットワーク、例えば、必ずしもニューラルネットワークに制限されない第1の計算ネットワークを、第2の計算ネットワークでFHE演算を使用して暗号化されたデータ上で実行したいという要求がある。このような変換された計算ネットワーク、例えば第2の計算ネットワークの効率を改善するために、例えばプログラマブルブートストラッピングの使用を必要とせずに、暗号化された値に対して演算が直接実行されることが望ましい。特に、完全なロスレス実行が必要な場合、FHEは非常に大きなパラメータを必要とし得るため、FHEでの従来の値のエンコーディングがロスレスである必要はないことを受け入れれば、即時の効率向上につながる。しかし、そうする場合は、適切なエンコーディングを選定することが好ましく、これは既存の能力を最大限に活用する。
【0017】
一実施形態では、第1の計算ネットワークは、実数、例えば、浮動小数点数または固定小数点数として表される入力に対して演算する。このような実数は、トーラス上で実数に変換でき、さらにTFHEエンコードされた値に変換できる。これらのタイプの入力は、例えばニューラルネットワークなどの多くの実際の用途に特に関連する。第1の計算ネットワークは整数値の入力を持つこともでき、それらは同様にトーラス上の点に変換される;例えば、それらは実数に変換され得る。
【0018】
一実施形態では、第1および第2の計算ネットワークは、ニューラルネットワーク、例えば、ディープニューラルネットワークである。一実施形態では、第1および第2の計算ネットワークは、入力画像を受け取るように構成される。一実施形態では、第1および第2の計算ネットワークは、入力画像を受け取るように構成されたニューラルネットワークである。入力画像は医療入力画像であってもよいが、これは必須ではない。第2の計算ネットワークは、第1の計算ネットワークと同じ関数を計算することが好ましいが、ほとんどの用途では、第2の計算ネットワークが近似された関数を計算し得る。性能のためには、完全に忠実であるよりも近い近似値が好ましいと言える。例えば、第2の計算ネットワークが画像に関する関数、例えば画像分類、または機械の制御信号などを計算しようと、多くの場合、第2の計算ネットワークの出力が第1の計算ネットワークの出力に近いか、基準出力に近ければ十分である。
【0019】
一実施形態では、演算の第1の計算ネットワークが変換のために取得される。第1の計算ネットワークは、暗号化された値と実数の乗算をすでに回避していると想定される。このような乗算は、プログラマブルブートストラッピング(PBS)として実装できるため、それ自体は禁止されていないが、PBSは、加算や整数による乗算など、ネイティブに行える演算よりもはるかに高価である。第1の計算ネットワーク内の演算は、そして、行列演算、例えば、行列乗算部分、例えばWxが、整数行列、すなわち成分として整数のみを有する行列を使用する形式、y=Wx+Bの計算を含むと想定される。これは合理的な想定であるが、何故なら、非整数行列は、精度がおそらくはいくらかロスするが丸めることによって、または最初に拡大係数と乗算してから丸めることによって、整数行列に変換できるからである。後者の場合、他の演算に調整が必要になり得、例えば、実数値でも加算がネイティブに行えるため、丸めは必要ないが、行列の加算部分が拡大係数と乗算されることもできる。行列演算に続く演算は、大きすぎる係数である入力値を予期するように調整され得る。このような調整は、次の演算を拡大係数による除算で構成することによってなされることができる。あるいは、例えば、第1の計算ネットワークがニューラルネットワークである場合、行列乗算の値を整数値に保つトレーニングを使用することもできる。
【0020】
整数行列による行列演算に加えて、第1の計算行列はまた、他の演算、例えば、さらなる演算、例えば、z=A(y)などの活性化関数を含んでもよい。
【0021】
ひとたび第1の計算ネットワークが取得されると、例えば受け取られると、FHE演算を使用して、暗号化された値に対して計算され得る第2の計算ネットワークに変換することができる。原理的には、第1の計算ネットワーク内の演算は1対1に変換できるが、本明細書で説明するように、第2の計算ネットワーク内に追加の演算を挿入することが有利な場合もある。特に有利なFHEスキームは、トーラス上のFHEスキームであり、何故なら、ネイティブな加算と整数乗算に加えて、効率的なプログラマブルブートストラッピングを可能にするからである。
【0022】
FHEスキームにおける要素には制限された範囲があり得、これは特にトーラスに当てはまり、トーラスは、整数を法とする、通常は1を法とする、実数のセットと考えることができる。第1の計算ネットワーク内の値、例えば入力値、中間値、または出力値がその範囲外にあり得るため、第1の計算ネットワーク内の値から第2の計算ネットワークへのエンコーディングが必要である。エンコーディングは第2の計算ネットワーク内で暗黙的に行われ得ることに留意されたい;エンコーディングは、第2の計算ネットワーク内の演算パラメータを設定するために使用できるが、例えば、第2の計算ネットワークを実行するために、エンコーディングは明示的には必要ない。唯一の例外は入力値のエンコーディングと出力値のデコーディングで、この場合、エンコーディングは暗号化または復号のステップに加えて明示的に使用できる(例えば、入力は最初にエンコードされてから暗号化され、一方、出力は最初に復号されてからデコードされる)。
【0023】
第1のネットワーク内の演算を第2のネットワーク内のFHE演算に変換するために、第1のネットワークで生じる特定の値、例えば、変数、ニューロン出力、またはネットワーク内の点、に対してサポートされる範囲を取得できる。例えば、第1の計算ネットワーク内の特定の点で実際に生じる値を観察し、それから、サポートされる範囲を導出することができる。観察される範囲は、例えば、最低の観察値から最高の観察値までの範囲であり得る。サポートされる範囲は同じであってもよいし、または、有利には、サポートされる範囲は観察される範囲をマージン、例えば乗算マージン(multiplicative margin)で、例えば5%または20%、より大きく拡張することができる。サポートされる範囲は、範囲の両側において観察される範囲を拡張し得る。
【0024】
第2の計算ネットワーク内の異なる層は、異なる規定の範囲を持ち得、例えばその範囲は、使用されるFHEスキームの技術性、または特定の演算、または演算内のオペランドの数などに起因して、正しい処理を保証するために、値が維持される必要がある範囲である。例えば、TFHEでは、ほとんどの行列演算の規定の範囲はサイズ1を持つことができ、例えば、規定の範囲は0から1であるが、パディングビットが必要なPBSでは0から1/2の範囲が必要になり得、一方、パディングビットを必要としないPBS、例えばネガサイクリック(negacylic)演算、は0から1の範囲を使用でき、一方、複数のオペランドを使用するPBSでは、より多くのパディングが必要になり得、例えば、MaxPoolなどに0から1/4の範囲を使用する。演算の規定の範囲の決定は、ルックアップテーブルとして実装することができる。例えば、ルックアップテーブルは、第1の計算ネットワーク内の演算をFHE演算にマッピングし、規定の範囲などを提供することもできる。
【0025】
スケーリング係数は、値に対してサポートされている範囲にスケーリング係数を適用することが、その値を規定の範囲のサイズを有する範囲にマッピングするように決定され得る。例えば、値にスケーリング係数と乗算することで、サポートされている範囲内の値にスケーリング係数を適用できる。エンコーディングには、スケーリングされた値に追加されるシフトも含まれ得る。
【0026】
時々、エンコーディング除数dについて話すことに注意されたく、これはスケーリング係数aの逆数であり、つまりa=1/dまたは逆にd=1/aである。
【0027】
しばしば、多くの値には同じスケーリング係数が好ましく割り当てられることに留意されたい。各値の個々のスケーリング係数を追跡することは不可能ではないが、実際には、層内のすべての値、実際にはしばしば、複数の層内のすべての値に同じスケーリング係数が割り当てられ得る。行列演算は、スケーリング係数が等しいと簡単に行える。これは頻繁に生じるため、個々の値ごとのスケーリング係数を追跡することによる利益はわずかしかない。一実施形態では、複数の値、例えば1つまたは複数の層内の値、例えば1つまたは複数の演算の入力値の1つまたは複数のセットに同じスケーリング係数が割り当てられる。使用するスケーリング係数は通常、同じスケーリング係数が割り当てられる複数の値と演算の中からの、ただ1つの特定の値と演算によって決定される。最小のスケーリング係数を必要とする1つの特定の値と演算により、同じスケーリング係数が割り当てられている残りの複数の値のスケーリング係数が設定される。
【0028】
スケーリング係数があれば、スケーリングされた値を受け取る演算を調整して、スケーリング係数でスケーリングされた入力値を受け取ることができる。演算は、ある係数によって、大きすぎる入力値を予期するように調整され得る。エンコーディング、例えばax+bなどの線形マッピングを完全に指定するには、スケーリング係数aに加えてシフトbが必要である。
【0029】
行列演算の場合、エンコーディングのシフト部分を無視して行列演算を調整できるというのが発明者の洞察であった。行列演算によりシフトが変更されるが、それ以外の場合、演算は正しいままになる。これは、シフトを考慮する必要があるPBS演算には当てはまらない。したがって、PBSはスケーリング係数とシフト係数の両方について調整できる。シフトの前に加算を挿入することで、PBSの前にシフトを適用して値を規定の範囲にシフトできる。
【0030】
しかし、このようなシフト演算は、例えば、行列演算などで先立つ演算が加算も含む場合など、先立つ演算と組み合わせることができることがよくあるが、この場合、加算を挿入する必要はもはやなく;シフトを考慮するために先立つ演算を変更するだけである。例えば、y=Wx+bおよびz=PBS(y)の場合、これを:y=Wx+b、y’=y+シフト、およびz=PBS(y’)ように変更できるが、これら3つのステップをy=Wx+b’およびz=PBS(y’)を行うことにより2つのステップに組み合わせることができ、変更されたバイアスb’はb+シフトと等しくとられる。
【0031】
シフト係数は、演算前に、サポートされる範囲にスケーリング係数を適用し、スケーリングされたサポートされる範囲が規定の範囲内にはいるようにシフトすることによって決定できる。例えば、サポートされる範囲が[-30,20]、スケーリング係数が0.01、規定の範囲が[0,1/2]の場合、スケーリングされたサポートされる範囲は[-0.3,0.2]になる。0.3のシフトを適用して、[0,1/2]の範囲を得ることができる。規定の範囲がスケーリングされたサポートされる範囲よりも大きい場合、シフト係数には複数の選択肢がある。例えば、サポートされる範囲が[-25,20]、スケーリング係数が0.01、規定の範囲が[0,1/2]の場合、スケーリングされたサポートされる範囲は[-0.25,0.2]になる。次に、0.25から0.3の間の任意のシフトを適用して、[0,1/2]に含まれる範囲を得ることができる。
【0032】
例えば、Wx+Bなどの行列演算は、バイアスとも呼ばれる行列の加算、B’=B/dを調整することで調整できるが、重み行列Wとも呼ばれる行列の乗算は調整しない。第2の計算ネットワーク内の演算Wx+B’は、それで、エンコーディング除数dを用いてエンコードされた入力を受け取り、出力は同じエンコーディング除数d用いたものとなる。例えば、さらなる演算A(x)は、スケーリング係数でスケーリングされ、シフト値でシフトされた入力値を受け取るように調整され得るA(dx-s)。この場合、さらなる演算は層内の値に対して個々に演算し得るため、シフトsは異なる値ごとに対して異なり得る。必須ではないが、演算Aが作用する層内のすべての値に対してスケーリング係数dが同じになるように構成されることがよくある。
【0033】
必須ではないが、PBSの出力にエンコーディングを組み込むことができ、例えば、さらなる演算A(x)をさらに調整する。A(x)はさらに調整されて、次の演算のためにさらなるスケーリング関数でスケーリングされた出力値を生成する。例えば、これはA()/dまたはA()/d+sで、第1のエンコーディングと合わせてA(d1x-s)/d+sになり得る。これらの追加のエンコーディングにより、独立したエンコーディングの数が増加し、そのため、同じスケーリング係数が割り当てられる値または層の数が減少する。これは、結局、エンコーディング値の選定が、異なる層からの、サポートされる範囲によって引き起こされるあまり最適ではないスケーリング係数を使用する代わりに、層内で生じる特定のサポートされる範囲によりよく適合できることを意味する。
【0034】
例えば、スケーリング係数は、最初に演算間の層にシンボル的スケーリング係数を割り当て、第1のネットワークアーキテクチャまたはトポロジによって課される条件に基づいてシンボル的スケーリング係数の数を低減させることによって見つけられ得る。例えば、シンボル的スケーリング係数のいくつかを互いに等しく設定することによって、それらの数を低減させることができる。特に、本明細書で説明するいわゆるジョイン層またはジョイン演算は、そのような条件を課し得る。ジョイン層は、先立って計算された2つ以上の層の結果を使用する層として定義される。次に、スケーリング係数が適用される層で生じる値に対するサポートされている各範囲に依然適合する最小のスケーリング係数を決定することによって、各シンボル的スケーリング係数に実際の値を割り当てることができる。例えば、これらの層内の各値のスケーリング係数を計算し、最小のもの、または同等に最大のエンコーディング除数をとることができる。
【0035】
一実施形態では、層内の値は、スケーリング係数を適用した後、規定の範囲のサイズよりも小さいサポートされる範囲を有することができる。これは、例えば、別の値のサポートされる範囲に対処するためにスケーリング係数がより小さい場合に、自然に起こり得る。また、スケーリング係数を意図的に小さすぎる、つまり必要な値よりも小さくとることによって強制することもできる;例えば、規定の範囲のサイズを減少することによってである。これは、スケーリングされたサポートされる範囲が、いわば規定の範囲内に大まかに適合することを意味する。つまり、前述のように、複数の異なるシフトを使用して、スケーリングされた範囲を規定の範囲にシフトできる。本明細書で述べたように、PBSなどの一部の演算では、演算対象の値が演算により予期される範囲内にあることを保証するためにシフトが必要な場合がある。他の演算、例えば、マルチサム、は、これを必要としない。シフトを使用する必要がある場合、シフトによって加算を挿入したり、先立つ演算を変更したりするなど、第2の計算ネットワークで調整が必要になる。エンコーディング、したがってそれにおけるシフトは、第1のネットワーク内の値が第2のネットワーク内の値にどのように変換されるかを表す。エンコーディングにおけるシフトの変更は、先立つ演算、例えば先立つ行列演算、例えばGemm演算のバイアスを変更することによって、または選定されたシフトを追加する新しいAdd演算を挿入することによって行うことができる。例えば、一実施形態では、Add演算を挿入することができる;第2のネットワークを機能的に完成させた後、オプティマイザを適用することができ、これは、その後、演算、例えば、行列演算と挿入されたAdd演算などの2つの後続の線形演算をマージすることができる。先立つ演算がPBSの場合、その出力エンコーディングにおいてシフトを組み込むことができる。新しいシフトsの適用は、現在のシフトsと所望のシフトsの差、例えばs=s-sであってもよい。
【0036】
PBSとしてさらなる演算を実装するとき、通常は、シフトと同数のテストベクトル(PBSの入出力動作をエンコードするPBS中に使用されるアレイ)を計算するが、これは入力層内の値の数と同じになるだろう。考えられるシフトが重なる2つの値の場合、例えば、両方の値に対して機能するシフトが少なくとも1つ存在し、単一のテストベクトルを使用することができ、いくつか例を挙げると、これには、テストベクトルの計算をより高速化する、第2のネットワークの実行中に使用されるメモリを低減させる、または第2のネットワークのストレージを低減させるなどの利点がある。これは、入力値の個々のシフトに従ってプログラマブルブートストラッピング演算をグループ化し、各グループに1つのテストベクトルを割り当てることによって、より体系的に行うことができる。これにより、必要なテストベクトルの数が大幅に低減されるため、第2の計算ネットワークのサイズが縮小され得る。行われるPBSの数は等しく維持され、第2のネットワークの実行時間もそうである。
【0037】
変換の特に便利な用途は、プライベートデータに対する計算の実行を可能にすることである。例えば、画像やその他の医療データの医学的評価などの計算である。
【0038】
医療データは医療画像を含み得る。医療画像は、例えば、さまざまな獲得モダリティ、例えば、限定しないが、標準的なX線画像、コンピュータ断層撮影(CT)、磁気共鳴画像法(MRI)、超音波(US)、陽電子放出断層撮影(PET)、単一光子放射断層撮影(SPECT)、および核医学(NM)などによって獲得された、例えば2次元(2D)、3次元(3D)、または4次元(4D)画像などの多次元画像データを含み得る。
【0039】
この方法の実施形態は、コンピュータ実装される方法としてコンピュータ上で実装されてもよく、専用ハードウェアで実装されてもよく、あるいは両方の組み合わせで実装されてもよい。方法の一実施形態の実行可能コードは、コンピュータプログラム製品に記憶され得る。コンピュータプログラム製品の例には、メモリデバイス、光ストレージデバイス、集積回路、サーバ、オンラインソフトウェアなどが含まれる。好ましくは、コンピュータプログラム製品は、コンピュータ上で実行されるときに方法の一実施形態を行うためのコンピュータ可読媒体に記憶された非一時的なプログラムコードを含む。
【0040】
一実施形態では、コンピュータプログラムは、コンピュータプログラムがコンピュータ上で実行されるときに、方法の一実施形態のステップのすべてまたは一部を行うように適合されたコンピュータプログラムコードを含む。好ましくは、コンピュータプログラムはコンピュータ可読媒体上に具現化される。
【0041】
さらなる態様は、一実施形態による変換のために構成された電子システムまたはデバイス、例えばコンピュータ、例えば、演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するためのシステムである。
【0042】
さらなる詳細、態様、および実施形態は、単なる例として、図面を参照して説明される。図内の要素は、簡略化および明確化のために図示されており、必ずしも一定の縮尺で描かれているわけではない。図において、すでに説明した要素に対応する要素は同じ参照番号を有し得る。
【図面の簡単な説明】
【0043】
図1a】完全準同型暗号化(FHE)を使用して計算を行うためのシステムの実施形態の一例を概略的に示す図である。
図1b】FHEを使用して計算を行うためのシステムの実施形態の一例を概略的に示す図である。
図1c】FHEを使用して計算を行うためのシステムの実施形態の一例を概略的に示す図である。
図1d】FHE演算子のために第1の計算ネットワークを第2の計算ネットワークに変換するためのシステムの実施形態の一例を概略的に示す図である。
図2】変換システムの実施形態の一例を概略的に示す図である。
図3】第1の計算ネットワークの実施形態の一例を概略的に示す図である。
図4a】第1の計算ネットワークの実施形態の一例を概略的に示す図である。
図4b】第1の計算ネットワークの実施形態の一例を概略的に示す図である。
図5a】第1の計算ネットワークの実施形態の一例を概略的に示す図である。
図5b】第1の計算ネットワークの実施形態の一例を概略的に示す図である。
図6】変換方法の実施形態の一例を概略的に示す図である。
図7a】一実施形態による、コンピュータプログラムを含む書き込み可能部分を有するコンピュータ可読媒体の例を概略的に示す図である。
図7b】一実施形態によるプロセッサシステムの表現を概略的に示す図である。
【発明を実施するための形態】
【0044】
参照符号リスト
以下の参照および略語のリストは、図面の解釈を容易にするために提供されるものであり、特許請求の範囲を限定するものとして解釈されるべきではない。このリストは図1a-5bおよび7a-7bを参照している。
1-99 層
110 FHE計算システム
111-113 FHE計算システム
114 変換システム
130、134 プロセッサシステム
140、144 ストレージ
150、154 通信インターフェース
160 データプロバイダシステム
200 変換システム
210 第1の計算ネットワーク
220 第2の計算ネットワーク
211-214 演算
221-224 演算
230 スケーリング係数ユニット
231 範囲ユニット
232 サンプルストレージ
240 変換ユニット
250 精度ユニット
251 サンプルストレージ
260 グループ化ユニット
300 第1の計算ネットワーク
410 第1の計算ネットワーク
411 入力
412-414 演算
415 出力
420 第1の計算ネットワーク
421 フォーク演算
422 ジョイン演算
510 第1の計算ネットワーク
511 フォーク演算
512 ジョイン演算
520 第1の計算ネットワーク
525 変換演算
1000 コンピュータ可読媒体
1010 書き込み可能な部分
1020 コンピュータプログラム
1110 集積回路
1120 処理ユニット
1122 メモリ
1124 専用集積回路
1126 通信要素
1130 相互接続
1140 プロセッサシステム
【0045】
ここで開示される主題は多くの異なる形態で具現化可能であるが、これらは図面に示されて、本明細書では1つ以上の特定の実施形態について詳細に説明され、本開示は、本明細書で開示される主題の原理の例示としてみなされるべきであり、図示および説明される特定の実施形態に限定することを意図するものではないことを理解されたい。
【0046】
以下では、理解を容易にするために、実施形態の要素を、動作において説明する。しかし、それぞれの要素が、それらによって行われるものとして説明されている機能を行うように構成されることは明らかであろう。
【0047】
さらに、ここで開示される主題は、実施形態のみに限定されるものではなく、本明細書に説明される、または相互に異なる従属請求項に記載される特徴の他のあらゆる組み合わせも含む。
【0048】
図1aは、FHE計算システム110、例えば完全準同型暗号化(FHE)を使用して計算を行うためのシステムの実施形態の一例を概略的に示す。例えば、図1aのシステム110は、データが例えばデータプロバイダから暗号化された形式で受け取られたとしても、前記データの計算を行うために使用され得る。
【0049】
システム110は、プロセッサシステム130、ストレージ140、および通信インターフェース150を備えることができる。ストレージ140は、ローカルストレージ、例えば、ローカルハードドライブまたは電子メモリを備え得る。ストレージ140は、非ローカルストレージ、例えばクラウドストレージを含んでもよい。後者の場合、ストレージ140は、非ローカルストレージへのストレージインターフェースを備えることができる。例えば、ストレージ140は、例えば1つ以上のデータプロバイダから受け取った、または計算の中間結果または最終結果、例えば出力として発生された、暗号化されたデータアイテムを記憶することができる。通常、システム110の計算が行われるほとんどまたはすべてのデータアイテムは、システム110に知られていない一つのキー(または複数のキー)で暗号化される、つまり、システム110は、暗号化されたデータアイテム、例えばストレージ140に記憶されるようなデータアイテムに対応するプレーンデータアイテムを取得するように構成されていない可能性がある。プレーン形式の復号キーはシステム110にとって秘密であるが、暗号化/復号キーは暗号化された形式で利用可能であり得る。例えば、プロセッサシステムは、加算および乗算などの暗号化された値に対する算術演算を含むことができるが、暗号化された多項式に対する算術演算も含み得る一連のFHE演算を行うように構成されることができる。
【0050】
FHE演算を使用した計算を行うことは、FHE演算のシリーズをひと続きにすることによって行われ得る。その一部は入力値に対して演算され、他の演算は中間値に対して演算され得る。通常、ほとんどまたはすべての演算は暗号化された値に対して行われるため、FHEシステムは処理中の機密値を知らない。
【0051】
FHE計算のソースの1つは、通常の計算(例えば、一連の非FHE演算)から開始し、従来の計算をFHE計算に変換することである。変換可能な、特に適切な計算ソースは、計算ネットワーク(computational network)とも呼ばれる、いわゆる計算ネットワーク(computation network)である。計算ネットワークでは、ノードは演算を表し、ネットワーク内のエッジは、どの演算が他の演算からの値を入力としてとるかを示す。
【0052】
一実施形態では、計算ネットワークは有向サイクルフリーグラフとして表すことができ、ノードは演算を表し、有向エッジはどの演算がどの先立つ演算から入力を取得するかを示す。例えば、計算ネットワークは、テキストファイルの形式、例えば一連の演算子として表すことができる。計算ネットワークは、演算子のタイプを示す情報とともに接続テーブルとして表すこともできる。
【0053】
計算ネットワーク内の入力ノードは外部出力を表し得、一方、出力ノードは出力値を表し得る。この計算ネットワークの概念は、一実施形態による変換を依然うけいれながら拡大することができる。例えば、一実施形態では、計算ネットワークは条件付きジャンプを含まないが、これはFHE演算として表すことができるため、条件付き割り当て(conditional assignment)が許可されてもよい。より正確には、条件付き割り当てはy=c?a:bとして表すことができ、これは、cが真の場合はy=a、またはcが偽の場合はy=bを設定し、FHEでは、この演算を同等の演算y=c*(a-b)+bに置き換えることで行える。ここで、cは暗号化されたビット0または1に制限される。計算ネットワークはループを含まない場合もあり例えばサイクルフリーの場合もあるが、これは必須ではなく、何故なら固定回数の反復を持つループも、例えばループを展開することによってFHEネットワークに収容できるからである。動的に決定される反復数を持つループであっても、ループ内のサイクル数に上限がある場合は変換され得る;後者の場合、動的ループは最初に固定回数の反復を持つループに変換され得る。
【0054】
図1dは、FHEのための計算を変換するためのシステム114の実施形態の一例を概略的に示す。システム114は、関数を計算するように構成された演算の第1の計算ネットワークを、同じ関数を計算するように構成されたFHE演算の第2の計算ネットワークに変換するように構成され得る。システム110と同様に、システム114は、プロセッサシステム134、ストレージ144、および通信インターフェース154を備える。実際、システム110と114は同じシステムであってもよいが、これは必須ではない。例えば、システム114は、第1の計算ネットワークの表現を受け取り、それをFHE実行のために第2の計算ネットワークに変換することができる。例えば、システム114は、第三者、例えばデータプロバイダシステム160などから第1の計算ネットワークを受け取ることができる。あるいは、第1の計算ネットワークは別の場所を起源とする可能性があり、例えば、従来のコンパイラは、所望の計算の高レベルの記述を受け取り、第1の計算ネットワークを生成し、例えば、全体の計算を一緒に行う計算のいくつかの側面ごとに複数の第1の計算ネットワークを乗算することができる。変換されると、第2の計算ネットワークは、計算のためにシステム110に転送され得る。システム110および114が同じである場合、第2の計算ネットワークは同じシステム上で行われ得る。例えば、システム114は、計算システム110を提供するのと同じ当事者によって提供されてもよい。あるいは、システム110のユーザは、例えば、適切なソフトウェアをダウンロードし、それを使用して計算ネットワークを変換し、実行のためにシステム110にアップロードできることによって、システム114をそれ自体の施設内に設置することもできる。
【0055】
システム110およびシステム114は、コンピュータネットワーク上で相互に、他のシステム、外部ストレージ、入力デバイス、出力デバイス、および/または1つ以上のセンサと内部的に通信することができる。コンピュータネットワークは、インターネット、イントラネット、LAN、WLANなどであり得る。コンピュータネットワークはインターネットであってもよい。このシステムは、必要に応じてシステム内またはシステム外で通信するように構成された接続インターフェースを備える。例えば、接続インターフェースは、コネクタ、例えばイーサネットコネクタ、光コネクタなどの例えば有線コネクタ、または例えばWi-Fi、4Gまたは5Gアンテナなどのアンテナなどの無線コネクタを備え得る。通信、例えば内部通信は、他の通信プロトコルまたは媒体、例えば内部データバスを使用してもよい。
【0056】
システム110およびシステム114では、通信インターフェース150および154は、デジタルデータを送るおよび/または受け取るために使用され得る。例えば、システム110は、外部コンピュータ、例えばデータ提供コンピュータから暗号化されたデータアイテムを受け取るように構成され得る。例えば、システム110は、計算結果を、通常、暗号化されたフォーマットで外部コンピュータに送信するように構成することができる。例えば、通信インターフェース150は、システム110内の内部通信、例えば複数の計算エンティティ、例えば計算デバイスの計算を分散するために使用され得る。例えば、システム114は、第1の計算ネットワークを受け取るように、および/または変換された第2の計算ネットワークを送信するように構成され得る。
【0057】
システム110および/または114の実行は、プロセッサシステム、例えば1つ以上のプロセッサ回路、例えばマイクロプロセッサで実装することができ、その例が本明細書に示されている。システム110および/または114は、異なる場所に分散され得る複数のプロセッサを備えることができる。例えば、システム110および/または114はクラウド計算を使用することができる。
【0058】
本明細書の図のいくつかは、プロセッサシステムの機能ユニットとなり得る機能ユニットを示す。例えば、図は、プロセッサシステムの可能な機能機構の青写真として使用できる。ほとんどの図では、プロセッサ回路はユニットから分離して示されていない。例えば、図2に示す機能ユニット(下記を参照)は、システム110および/または114などのシステム、例えばシステムの電子メモリ内、に記憶され、システムのマイクロプロセッサによって実行可能なコンピュータ命令に全体または部分的に実装され得る。ハイブリッド実施形態では、機能ユニットは、部分的には、例えばコプロセッサ、例えば算術および/または暗号コプロセッサとしてハードウェアに実装され、部分的にはシステム110および/または114上に記憶され行われるソフトウェアに実装される。
【0059】
図1bは、FHEを使用して計算を行うためのシステムの実施形態の一例を概略的に示す。図1bは、データプロバイダシステム160のコンテキストにおける図1aのFHEシステムを示す。FHEシステム110は、完全準同型暗号化(FHE)暗号を使用して計算を行うように構成される。
【0060】
例えば、システム110は、データプロバイダ160から暗号化されたデータアイテムを受け取るように構成され得る。少なくとも一部のデータアイテムは暗号化された形式で受け取られ得る。一部のデータアイテムはプレーンフォーマットで受け取られ得る。計算は受け取ったデータアイテムに対して実行され、場合によっては記憶されたデータアイテムに対しても行われる。興味深いことに、計算は、データを復号することなく、例えば暗号化されたデータアイテムをプレーンフォーマットのデータに変換することなく、暗号化されたデータに対して行われることができる。
【0061】
システム110は、FHEスキームのために、例えばいくつかのFHE演算のために構成され得る。FHE演算にはゲートが含まれ得る。例えば、FHEシステムは、いわゆるNANDゲート用に構成されてもよい。例えば、FHEシステムは、例えば有限体または有限環などにおいて加算および乗算演算を有することができる。FHEスキームの演算は原理的には広範囲の計算を行うのに十分であるが、例えば、FHEスキームがブートストラッピング演算のないレベル化されたスキームである場合、またはブートストラッピング演算が採用されていない場合などでは、連続演算の数は制限され得るという例外がある。
【0062】
通常、FHEスキームおよびFHEシステムに実装された暗号化されたデータには、ある程度のノイズが含まれる。例えば、データアイテムの暗号化は、データアイテムをキー依存格子内の点にマッピングすることを含み、それにいくらかのノイズが追加される。
【0063】
データアイテムが暗号化されたばかりのとき、ノイズは低く、暗号化はフレッシュである。例えば、ノイズの量は非常に少ないため、データアイテムが復号される場合、ノイズは復号プロセスのある時点で、例えば丸めによって除去できる。一方、ノイズは、システムへの攻撃を十分に困難にするのに十分な大きさである必要がある。例えば、ノイズが存在しないと仮定すると、多くのFHEスキームは線形代数や他の効率的なアルゴリズム、例えば格子ベースのアルゴリズムで攻撃され得る。データアイテムが暗号化されると、FHE演算をまだ行える一方で、攻撃が困難になるように選定されたノイズが追加される。ほとんどのFHE演算は、暗号化されたFHEデータアイテムに固有のノイズを増加させる。このような演算が多数行われると、ノイズは正しい復号が不可能なレベルに達する。その時点で、計画は破綻する。一般に、この現象に対処するために、当技術では2つのアプローチが開発されてきた。1つ目は、レベルFHEアプローチである。レベルFHEスキームは、限られた数の演算を次々に行える。レベルFHEスキームは、このような多数の演算の終了時の最悪の場合のノイズが復号に必要な限界を下回るように設計されている。別のアプローチは、いわゆるブートストラッピング演算である。ブートストラッピング演算は、ノイズの少ない同じデータのフレッシュな暗号化を返すことにより、暗号化されたデータアイテムのノイズを低減する。ブートストラッピング演算は、FHEスキームが暗号化ドメインにおいて復号アルゴリズムを準同型的に評価するのに十分な能力を備えている場合に特に可能であり、ブートストラッピング可能なFHEスキームと呼ばれることもある。例えば、ブートストラッピング演算は、暗号化されたデータアイテムを復号せずにノイズを低減できる暗号化キーに関連するヘルパーデータを受け取る。通常、ヘルパーデータは、データアイテムの復号に使用されるキーの暗号化されたバージョンである。対称キーFHEスキームの場合、復号キーは暗号化キーと同じである場合もあれば、非対称キーFHEスキームの場合など、暗号化キーとは異なる場合もあることに留意されたい。FHEスキームは、暗号化キーと復号キーに加えて、準同型評価のためのキーなどの他のキーを使用し得る。後者は通常、データプロバイダに記憶され得るプライベートキーに対応する公開キーである。
【0064】
ブートストラッピング演算は暗号化されたデータアイテムの復号を行うが、直観に反して復号は暗号化されたドメインで行われるため、準同型復号では実際にはプレーンデータアイテムについて何も明らかにされない。次に、ブートストラッピング演算により、通常は準同型の丸めによってノイズ低減が行われる。その結果は、ノイズレベルがより低く固定された、暗号化されたデータアイテムである。通常、ブートストラッピングの結果として暗号文に存在するノイズは、ブートストラッピング演算の結果として生じる。
【0065】
ブートストラッピング後、ノイズレベルが非常に高くなり新しいブートストラッピング演算が必要になるまで、新しい一連のFHE演算を行える。
【0066】
ブートストラッピングがいつ必要になるかを決定することは、例えば最悪のシナリオを想定して、ノイズレベルがどのくらいの大きさになるかを追跡することで行うことができる。最悪の場合のシナリオの代わりに平均的な場合を想定することもできるが、これにより、計算結果が復号できないリスクが増加し得る。例えば、ニューラルネットワーク評価など、時折のエラーに対して本質的にロバストな計算は、ノイズ伝播に対する平均的な場合の分析を使用して行える。
【0067】
ノイズ分析、例えば最悪の場合または平均的な場合の分析は、事前に行うこともできるが、動的に行うこともできる。ノイズの増加は、特定の計算に依存し得る。例えば、FHEスカラー乗算では、被乗数に応じた量だけノイズが増加する。1つのアプローチは、ブートストラッピング演算を頻繁に、例えば、毎回の演算の後、または設定された数の演算ごと、例えば、2回ごとの演算の後に行うことである。特に便利なのは、関数の計算に加えてノイズを低減できるプログラマブルブートストラッピング演算である。例えば、関数はルックアップテーブルとしてエンコードでき、このテーブルはプログラマブルブートストラッピングのテストベクトルと呼ばれる。
【0068】
FHEスキームは多くのセッティングに適用できる。例えば、FHEシステム110は、クラウドプロバイダによって運営されてもよい。クラウドプロバイダは、そのクライアントに計算サービスとストレージサービスを提供し得る。FHE暗号化を採用することにより、データプロバイダ160、例えばクラウドプロバイダのクライアントは、暗号化された形式でデータを送ることができる。クラウドプロバイダは、必要な計算および/または必要なストレージを依然行えるが、プレーンデータに対応するものや計算の結果を知ることはできない。例えば、データプロバイダ160は、FHEシステムで使用される特定のFHEスキームに対応するタイプの暗号化キーを使用して、データアイテムを暗号化することができる。計算結果がFHEシステム110からデータプロバイダ160によって受け取られると、対応する復号キーを使用して、暗号化されたデータアイテムを復号することができる。暗号化キーと復号キーは同じである場合があり、通常は同じである。
【0069】
例えば、トレーニングシステム、おそらくシステム160は、通常、プレーンデータアイテムにアクセスできる間に、機械学習モデル、例えば画像分類器、例えば医療モデルをトレーニングするように構成され得る。例えば、入力データに対してバックプロパゲーションを行うことができる。結果として得られるモデルパラメータは、暗号化されたデータ上で実行するために実施形態によって処理され得る。
【0070】
モデルがトレーニングされた後、FHEシステム110を使用してモデルを提供することができ、FHEシステム110を使用して、例えば医療データとともに使用するためのモデルを提供することができる。これは通常、プレーンモデルパラメータを使用して行われ得るが、暗号化されたデータ、例えば、暗号化された入力データ、中間データ、および出力データを使用する。このシステムの効果は、コンピュータがプレーンデータアイテムを知ることなく、計算、例えば画像分類、例えば医療画像分類が行われることである。例えば、マンモグラムは、画像がシステム110でプレーンであることが決してなく、またシステム110が癌の評価の結果が何であるかを知ることなく、癌について評価することができる。
【0071】
他の用途には、データベースサービスが含まれ、例えば、暗号化されたデータベース内の暗号化されたデータを調べる;例えば、計算は入力アイテムとデータベースアイテムの間の比較であり得る。例えば、複数の計算を組み合わせて、インデックスと一致するデータベースインデックスを生成できる。例えば、データベースはゲノムデータベースであり、入力は遺伝子配列であり得る。例えば、システム110は、デバイスの保護された制御のために使用され得る。例えば、デバイスは、発電所のような大型装置であっても、センサ値をシステム110に送り、その返信として暗号化された制御信号を受け取ることができる;制御信号はセンサ信号から計算される。システムの攻撃者は、システム110に送受け取られるデータのコンテンツを決定したり、システム110の中間データにアクセスしたりすることさえできる場合があるが、データは暗号化されているため、攻撃者には役に立たない。復号キーはシステム110に知られていないため、システム110が完全に壊れてもデータは明らかにならない。制御信号の計算には、線形代数、平均、行列乗算、多項式評価などの数学的演算が含まれ得、これらはすべてFHE演算で実行できる。
【0072】
例えば、暗号化されたデータアイテムのストア、例えばストレージ内のコレクションをFHEシステム内に維持することができる;これらの一部は受け取られ得、一部はFHE計算の結果、中間結果など、であり得る。例えば、FHEシステムは、ストア、例えば入力値および/または中間値および/または出力値のコレクション、内の、1つ、2つ、またはそれより多くの暗号化されたデータアイテムにFHE演算を適用するように構成され得る。その結果は、ストアに記憶できる新しい暗号化されたデータアイテムである。暗号化されたデータストアは、FHEシステムのストレージに記憶され得る。これは、ローカルストレージまたは分散ストレージの場合がある。後者の場合、1つ以上の暗号化されたデータアイテムが暗号化されたデータストア内で複数回表されることが発生し得る。暗号化されたデータアイテムは、例えば値が別の場所で必要な場合などに、ある計算デバイスから別の計算デバイスに送られ得る。暗号化されたデータストアは、レジスタファイル、配列、さまざまなデータ構造などとして、さまざまな方法で実装できる。
【0073】
例えば、背景で説明したトーラスFHE(TFHE)など、エラーあり学習(Learning With Errors)(LWE)問題に基づくFHEスキームでは、暗号化キーはn桁の文字列sであり得、暗号文はタプル(a,…,a,b)であり得、ここで
【数5】
である。後者では、+と・はそれぞれトーラス要素間の加算と整数とトーラス要素の積を表し、aはn個のトーラス要素であり、μはトーラス要素としてのプレーンデータアイテムであり、eは、例えばガウス分布などの確率分布から引き出された、例えばトーラス要素などのノイズである。従来、秘密キーsの秘密桁s,…,sはビットである;しかし、これは必須ではない。秘密桁sは、2つを超える値、例えば3つの値(3進数の桁)、4つの値、またはそれより多くの値を取ることができる。
【0074】
このスキームは、多項式に基づくものなど、他の数学的構造にも自然に拡張される。したがって、数値s、a、b、u、eは、異なる数学的構造から取得され得る。すべての暗号化されたデータアイテムを同じキーで暗号化する必要はなく、実際には、異なるキーを使用した再暗号化は、可能なFHE演算である。あるキーから別のキーに変換するために、いわゆるキー切り替え手順が使用され、これはいわゆるキー切り替えキーを使用し得る。キー切り替えキーは、第1のキーで暗号化された要素を、どちらのキーも明らかにせずに第2のキーで再暗号化できる方法に関する情報を提供する。
【0075】
暗号化されたデータアイテムは、あらゆる種類のデータを表すことができる。例えば、暗号化されたデータアイテムは、平均する必要がある数値や、線形回帰などに使用される数値を表し得る。例えば、暗号化されたデータアイテムは画像を表し得る。例えば、画像の各ピクセルは1つ以上の暗号化されたデータアイテムに対応し得る。例えば、グレースケールピクセルはグレーレベルで表すことができ、グレーレベルは単一の暗号化されたデータアイテムで表すことができる。例えば、256個のグレーレベルを単一の暗号化されたデータアイテムにエンコードすることができる。例えば、カラーピクセルは、複数のカラーレベル、例えば、RGBレベルとして表すことができ、これらのカラーレベルは、次いで、暗号化されたデータアイテムのタプルによって表すことができる。例えば、3つの256レベルの色を3つの暗号化されたデータアイテムにエンコードできる。あるタイプのデータを表すために使用される暗号化されたデータアイテムの数は、FHEスキームの能力によって異なる。例えば、より制限的なFHEスキームでは、暗号化されたデータアイテムごとに1ビットしかエンコードできない場合がある。その場合、1つのカラーピクセルに24個の暗号化されたデータアイテムが必要になり得る。
【0076】
復号キーにアクセスしないと、ノイズがどれくらい大きいかを正確に言うことはできない場合があるが、例えば、フレッシュな暗号化の初期ノイズレベルがわかっており、さまざまな演算のノイズ増加がわかっているため、通常はノイズを制限することができる。ノイズの増加は、演算のタイプ、例えば加算と乗算など、および存在する場合はその他のパラメータに依存し得る。例えば、FHE演算は、知られている、例えばプレーン値との乗算、例えば、2による乗算、知られている多項式との乗算などであり得る。例えば、より大きな値を乗算すると、より小さな値を乗算するよりもノイズが増加し得る。行われた演算が与えられたとして、ノイズが正確にどの程度増加するかは、数学的に算出する、または経験的に推定することができる。一部の演算ではかなりの量のノイズが追加され得るが、その他の演算ではノイズが追加されない場合もあり、例えば、プレーン定数による加算などである。
【0077】
FHE演算のセットを計算のために定義できる。例えば、目標のFHE計算から、一緒に計算を実装する演算のネットワークまたは回路を構築できる。例えば、演算はブール演算であってもよい。例えば、演算はすべてNAND演算であってもよい。FHE演算を組み合わせる方法、例えば、暗号化されたデータストア内のどのオペランドにどの演算を適用するか、が、行われる計算を決定する。例えば、計算は、どのFHE暗号化されたデータアイテムに対して行われるかのインディケーションとともに、行われるFHE演算のリストとして表すことができる。
【0078】
演算が行われるにつれて、新しく計算された(フレッシュではない)暗号化されたデータアイテムに関連するノイズが増大し得る。ノイズが復号に必要な制限内に収まっている限り、これは問題にならない、さらに多くの演算を行う必要がある場合は、ブートストラッピング演算を行える。
【0079】
FHEスキームで暗号化されたデータアイテムのサイズは非常に大きくなり得る。さらに、ブートストラッピング演算なしでFHEスキームが行う演算が多いほど、通常、暗号化されたデータアイテムのサイズが大きくなる。同様に、FHEパラメータが大きいほど、つまり暗号化されたデータアイテムが大きいほど、攻撃に対する高い耐性が得られる。例えば、データアイテムは、より大きなFHEパラメータを特徴とするFHEシステムにマッピングされ得るため、演算を成功裏に行うことが可能であるまま、依然、より多くのノイズを追加できる。秘密キーの桁が取り得る値の範囲を増加させると、エントロピーが増加し、したがってFHEのセキュリティに貢献する。
【0080】
図1cは、FHEを使用して計算を行うためのシステムの実施形態の一例を概略的に示す。図1cに示されているのは、データプロバイダシステム160、および3つのFHEデバイス:デバイス111、112、および113である。デバイス111、112、および113のそれぞれは、暗号化されたデータアイテムに対してFHE演算を行うことができる。3つのデバイスが一緒になってFHEシステムを形成する。2つまたは3つ以上のFHEデバイスが協働してFHEシステムを形成し得る。
【0081】
図1cの場合、計算は複数のFHEデバイス、示されている例では3つのFHEデバイス、に分散される。例えば、複数のFHEデバイスのうちの1つは、他の複数のFHEデバイスのうちの1つ以上に、例えば、受け取った暗号化されたデータアイテムまたは中間の暗号化されたデータアイテム、例えば部分的な計算結果などの暗号化されたデータアイテムを送信することができる。同様に、複数のFHEデバイスのそれぞれは、他のデバイスから暗号化されたデータアイテムを受け取るように構成され得る。
【0082】
従来の計算からFHE計算に変換することが望まれる計算ネットワークの第1の例は、ニューラルネットワークである。一実施形態では、変換のためのシステムは、第1の計算ネットワークの一例である第1のニューラルネットワークを入力としてとり、第2の計算ネットワークの一例である第2のニューラルネットワークを出力として生成する。第2の計算ネットワークは、FHE演算子、それらのパラメータなどの表現を含むことができる。第2の計算ネットワークは、第1の計算ネットワークによって表される関数、または通常は関数の近似を計算する。特にニューラルネットワークの場合、近似値の計算は許容される。
【0083】
計算ネットワークの変換はニューラルネットワークに限定されないが、ニューラルネットワークはこの方法でうまく変換できる関数の重要なクラス。ニューラルネットワークは、多くの場合、計算を通して導入される小さな不正確さに鈍感である。したがって、ニューラルネットワークは、一実施形態を使用すると、特に効率的な第2の計算ネットワークに変換される傾向がある。
【0084】
FHEスキームで暗号化された値は通常、固定されたビット数に制限される。実数という用語は、本明細書では、整数である必要がない数を示すために使用される。実数という言葉が使用されているが、FHEでは、そのような数は通常、複数の桁を含む数値フォーマットで表される。通常、実数を表すには浮動小数点数ではなく固定小数点精度が使用される。例えば、TFHEでは、暗号化された値は、通常は0(含んでいる)と1(含んでいない)の間の区間に制限された数値になり得る。例えば、実数は、32ビットまたは64ビットなどの固定精度を有する0と1の間の値であり得る。トーラス上の値が区間内にある場合、例えば、1を法とする場合、でも、トーラス上の値は区間外の値で表すことができるが、2つの値xとyが1を法として等しい場合、同じトーラス値を表すことが理解される。
【0085】
実施形態では、実数は有限デジタル実数表現で表現され、典型的には実数の有理近似を表す。浮動小数点または固定小数点表現は、このような実数表現の典型的な例である。実数値行列乗算は、実数値行列によって表される実数値行列乗算と、オプションで実数値ベクトルによって表される実数値ベクトル加算とを含むことができる。一実施形態では、実数値行列の1つ以上の要素、またはすべての要素が、有限のデジタル実数表現で表される。一実施形態では、実数値ベクトルの1つ以上の要素、またはすべての要素が、有限デジタル実数表現で表される。一実施形態では、実数値行列と実数値ベクトルの両方のすべての要素は、有限デジタル実数表現で表される;しかし、これは必須ではなく、混合表現の行列および/またはベクトルも可能である。浮動小数点数フォーマットは、例えばIEEE754に記述されている。
【0086】
FHE演算の第2の計算ネットワークとしてニューラルネットワークを評価することは、ユーザのプライバシーを改善するのに役立つ。計算ネットワークの他の例は、(i)個人情報や検査結果を明らかにすることなく、個人情報、例えば、DNAデータ、に対して医療検査を実行すること、(ii)スパム検出:メールを復号するためのキーを持たずに、例えばメールを見ることなく、メールがスパムであるかどうかを検出できることを含む。
【0087】
前者のシステムの一例は、医療データが取得される、例えば、より多くのセンサから受け取られる第1のデバイスを備え得る。センサには、例えば温度センサが含まれてもよい。センサには画像センサが含まれてもよい。データは入力エンコーディングに従ってエンコードされ、秘密キーを使用して暗号化される。次に、暗号化されたデータは医療機器に送られ得、そこで第2の計算ネットワークが暗号化されたデータに適用される。暗号化された出力は、入力の分類、例えば画像分類であってもよい。暗号化された結果は、復号およびデコーディングのために医療デバイスに送り返すことができる。
【0088】
後者のシステムの一例は、電子メールが受け取られる第1のメールデバイスを備え得、電子メールは、次いで、例えば、第1のメールデバイスで知られている秘密キーを使用して、FHEスキームに従って暗号化され得る。第1のメールデバイスは、まず、例えば入力エンコーディングを使用してメールをトーラスポイントのシリーズにエンコードし、次に、例えばLWE表現を使用してシリーズを暗号化値のシリーズに暗号化することができる。次に、暗号化されたシリーズはスパム検出デバイスに送られ、そこで第2の計算ネットワークがインストールされる。暗号化された値には、送信元アドレスおよび/または送信先アドレスなどのメタデータなどの他の情報も含まれ得る。第2の計算ネットワークは暗号化された値のシリーズに適用され、暗号化された結果、例えばバイナリスパムまたはスパムなしの結果、または例えば、メールがスパムである確率を表す実数値を生成する。第2の計算ネットワークは、例えばスパム検出のためにトレーニングされた第1の計算ネットワークからの変換として取得される。
【0089】
次に、暗号化された出力値はスパム検出デバイスから第1のメールデバイスに送られ、そこで出力は例えば秘密キーを使用して復号され、例えば出力デコーディングを使用してデコーディングされる。その結果に基づいて、第1のメールデバイスはメールを破棄するか否かを決めることができる。例えば、第1のメールデバイスは、復号された出力に基づいてメールを表示するか否かを決めたり、メールを第2のメールデバイスに転送するかどうかを決めたりすることができる。
【0090】
興味深いユースケースは、ユーザのプライバシーを維持しながら、信頼されていないプラットフォーム上で実行される機械学習(ML)アルゴリズムである;この場合、FHEを使用することで、ユーザのデータまたはその結果をプライベートに保つことができる。
【0091】
完全準同型暗号化(FHE)は、公開材料のみを使用して暗号化されたデータの計算を行える暗号化パラダイムである。FHEスキームでは、ユーザのプライベートキーなどを知る必要がなく、暗号文を復号する必要もない。FHEスキームにはいくつかの種類が存在するが、現時点ではTFHE(Torus-FHE)スキームが効率的な選択肢である。TFHEスキームは効率的なブートストラッピング(BS)をサポートしており、これによりスキームにおけるノイズを低減できるため、望むだけ深くニューラルネットワーク(NN)の準同型評価をサポートできる。さらに、ブートストラッピング演算は、データに対して行う必要がある任意の関数と組み合わせることができるため、関数評価とノイズ低減を組み合わせることができる。この機能は、プログラマブルブートストラッピング(PBS)と呼ばれる。例えば、プログラマブルブートストラッピングにより、ノイズを低減し、例えば、同時に活性化関数を行える。
【0092】
FHEスキームの好ましいクラスは、TFHEスキームと呼ばれるトーラスベースのスキームである。トーラスベースのスキームでは、値は1を法として表すことができる。例えば、TFHEスキームは、上述のエラーを伴う学習(LWE)問題に基づくことができる。TFHEスキームおよびプログラマブルブートストラッピングの好ましい実装は、論文「Programmable Bootstrapping Enables Efficient Homomorphic Inference of Deep Neural Networks」に提供されており、参照により本明細書に含まれる。
【0093】
さらに、TFHEは、ブートストラッピングを行わずに、暗号化されたデータに対して直接的に一部の演算をサポートする。これらの演算には:通常はモジュラスとして1を使用するモジュラー加算、および(クリアな)整数とトーラス要素として表される暗号化された値との間の乗算が含まれる。トーラススキームの暗号化された値は、1を法とする実数値、例えば0(含んでいる)と1(含んでいない)の間でマッピングされる。実数について言及しているが、これらの値は通常、例えばIEEE754表現ではなく、例えば32ビットまたは64ビット数値などの固定精度で表れる。
【0094】
TFHEの制限の1つは、実数とトーラス要素の積が定義されていないため、暗号文と実数の乗算が定義されていないことである。有利なことに、暗号文と整数との乗算は、プログラマブルブートストラッピングなしで行うことができる。一実施形態では、第2の計算ネットワークはTFHEベースであり、実行されると、暗号化された入力データに対してニューラルネットワークを計算する。第2の計算ネットワークを定義するパラメータはプレーン値であることが可能であり、暗号化された入力値、中間値、出力値などの暗号化された値を演算する場合でも、モデルを機密にする必要はない。暗号化された値は、トーラス上の値を表し得る。例えば、1を法とする実数を表し得る。例えば、トーラス上の値(μ)は、値をマスク(b)でマスクすることによって、LWE暗号文として暗号化でき、マスク(b)は、キー数字(s)のシリーズとマスキング値(a)のシリーズのドット積(b=s・a)として、ノイズ(e)を伴って取得される:
【数6】
便利なことに、トーラス点は離散的な環にマッピングされる。
【0095】
第1の計算ネットワーク内で行われる演算は、第2の計算ネットワークの演算に変換される必要がある。
【0096】
ニューラルネットワークなどの第1の計算ネットワークをFHE計算ネットワークに変換する際の第1の困難は、第1の計算ネットワークに暗号化された値と非整数値との間の乗算が含まれ得ることである。このような演算は、例えばプログラマブルブートストラッピングを使用して行える。例えば、ニューラルネットワークでは、畳み込み、行列乗算、バッチ正規化などの演算に遭遇することがある。実数値と暗号化された値の間でこのような乗算を回避するときにとることができるいくつかのアプローチがある。例えば、次のようなことであり得る:
― 実数値の乗算を1つ以上のPBS演算として実装する。このアプローチは、PBSが高価な演算であるため、そのような乗算が頻繁に生じない第1の計算ネットワークに対して好ましいものである。
- 第1の計算ネットワークがニューラルネットワークの場合は、整数値の乗算のみが取得されるようにトレーニングを変更する、例えば、整数のみのトレーニングアルゴリズムを使用する、
- 実数値の被乗数を最も近い整数に丸める
- 実数値の被乗数を最も近い整数に丸めるが、精度のロスを低減させるために、最初に実数を拡大係数と乗算する。後続の演算は、拡大係数と乗算された入力を予期するように調整できる。例えば、2以上、2.5以上、3以上などの拡大係数をとることができる
- 後者のアプローチは、より重要な演算に対してより大きな拡大係数を選定することでさらに洗練することができる。
【0097】
プレーン実数と暗号化された値の間の乗算が処理されていると想定される:通常は取り除かれるか、場合によってはPBSとして実装されるようにマークされる。
【0098】
さらなる問題は、第1の計算ネットワーク内の演算は多くの場合、特定の小さな区間に留まるように制約されないことであるが、FHE演算での暗号化された値はトーラス上に制限されるため、モジュラスを法とする、通常は1を法とすることである。これに対する1つの解決策は、第1の計算ネットワーク内のすべての値を、十分に小さく、0と1の間に収まり、0と1の間に留まるような値にスケーリングすることである。値が増加しすぎる場合は、より小さい値に時折スケーリングされ得る。非線形演算は、元の値ではなく、予期されるスケール値に適応させることができる。興味深いことに、行列の乗算は線形であるため、スケーリングされていない値だけでなくスケーリングされた値にも作用する。行列の加算は、スケーリングされた変数に比例してスケーリングできる。
【0099】
発明者らは、第1の計算ネットワーク内の値の、第2の計算ネットワークに対する暗号化された値、例えば0と1の間の値、へのエンコーディングを改善することにより、第2の計算ネットワークの精度を改善して、例えば、第1の計算ネットワークにより近い出力、または、第1の計算ネットワークがモデル化する関数により近い出力を、提供できることを発見した。
【0100】
一実施形態では、第1のスケーリング係数が値の第1のセット、例えば1つ以上の層に対して決定され、第2のスケーリング係数が値の第2のセット、例えば1つ以上の層に対して決定される。第2のセットは第1のセットと重ならない。特に、例えば、各セットが1つ以上の層を含む、値の複数のセットについて、スケーリング係数を決定することによって、すべての値がスケーリング係数を有し、値の複数のセットが重ならなくなるまで、スケーリング係数をすべての値について決定することができる。
【0101】
図2は、変換システム200の実施形態の一例を概略的に示す。システム200は、関数を計算するように構成された演算の第1の計算ネットワークを、同じ関数を計算するように構成されたFHE演算の第2の計算ネットワークに変換するように構成される。ネットワークの重要なクラスはニューラルネットワークであるが、計算ネットワークは他の機能を表すこともある。図2は、第1の計算ネットワーク210を概略的に示しており、その演算211、212、および214が示されている。通常、第1の計算ネットワーク210は、3つを超える演算、例えば、10を超える、100を超えるなどの演算を含むことになる。
【0102】
第1の計算ネットワーク内の多くの演算は、例えばプログラマブルブートストラッピングを使用することなく、例えば元の非暗号化計算に匹敵する計算コストを伴う暗号化された演算として、暗号化された値に対してネイティブに行う演算に直接変換することができる。例えば、トーラスベースのスキームでは、2つの暗号化された値の加算がネイティブに可能である。特にTFHEスキームでは、プレーン整数と暗号化された値の間の乗算もネイティブに可能である。LWEを使用して暗号化されたトーラス点での動作の組み合わせは、特にプログラマブルブートストラッピングと組み合わせると有利である。
【0103】
これは、暗号化された値に対して整数行列の乗算をネイティブに実行できることを意味する。整数行列は1×n、ここでn=1、2、3、…、にすることができ、また、100以上、1000以上など、さらに大きなnの値も可能である。整数行列はm×nであり、ここで、n、m=2、3…、また、nとmのさらに大きな値も可能であり、一方または両方は、例えば100以上、1000以上などであり得る。より大きな行列の次元、例えば2次元以上も可能である。また、整数カーネルによる畳み込みや整数被乗数によるバッチ正規化もネイティブに行える。実際、これらの演算は行列乗算の一タイプとみなすことができる。
【0104】
TFHEの制約の1つは、トーラス上の要素に対して機能する必要があること、つまり、計算がトーラス上で、例えば暗黙的に1を法として行われることである(ここでは便宜上、他の値も同様にとれるため、モジュラスを1とする)。1を法とするxは、x=x+kとなるように整数kが存在するような、[0,1[内の数値xrであることを注意されたい。x=x mod1と書く。トーラス要素は[0,1[内の実数である。したがって、ニューラルネットワーク(NN)をとり、それをTFHEベースの準同型バージョンに変えることは、NNが実数による乗算をまったく使用しない(またはほとんど使用しない)場合でも、この制約を考慮せずには行えない。
【0105】
本発明では、第1の計算ネットワーク内で生じる値のエンコーディングを決定する方法が提案される。第1の計算ネットワーク内の値xからのエンコーディングは、好ましくはマッピングx’=ax+bであり、x’は第2の計算ネットワーク内で生じる値である。入力値は、入力値が必要な範囲に適合するようにすでにエンコードされて受け取られると想定される。第2の計算ネットワーク内の演算は、中間値と出力値が必要に応じて、例えば規定の範囲に収まるようにエンコードされるように調整される。値aはスケーリング係数と呼ばれる。値bはシフトと呼ばれる。スケーリング係数の逆数は、エンコーディング除数または除数:d=1/aと呼ばれることもある。例えば、エンコーディングは、第1の計算ネットワーク内で生じる各値と、第2の計算ネットワーク内の対応する値に割り当てられることができる。第2の計算ネットワークを使用するとき、所望のエンコーディングで値を生成するように演算が調整されるため、このような対応を明示的に知る必要はない。
【0106】
これらのエンコーディングは線形演算、特に行列演算と互換性があることに留意されたい。線形演算では、エンコーディングのスケーリング係数が維持される。線形演算ではシフトを無視できるが、PBSのような非線形演算では無視できない。ひとたび値がPBSに入ると、シフトが決定されてPBSの入力に対して適用されるか、先立つ演算に直接組み込まれることができる。PBS自体はシフトとスケーリング係数に対して調整され得る。つまり、特定の入出力動作用にPBSを構成するテストベクトルを使用してPBSを構成でき、したがって、PBSの入力としてエンコードされた入力値が与えられると、出力は入力値に適用される所望の関数のエンコーディングになる。言うまでもなく、入力値と出力値はエンコードされるだけでなく、暗号化される。
【0107】
エンコードされた値を受け取るように調整されたPBSは、固定エンコーディング、例えばシフト0とスケーリング係数1を使用したエンコーディングで値を生成し得る。より高度な実施形態では、アーキテクチャに応じてさらなる演算を最適化するように、その演算に対して選定されたエンコーディングで値を生成するようにPBSを変更することができる。エンコーディングは、処理されることが予期されるデータと計算ネットワークのアーキテクチャに合わせて最適化できる。
【0108】
TFHEベースの第2の計算ネットワークでは通常、値は1を法とするため、ほとんどの値はサイズ1の範囲内にある。値がPBSの入力として使用されるとき、その範囲はさらに狭くなる必要があることが多く:特定のεに対して[0,ε[内にある必要がある。あるタイプのTFHEにおける通常のPBS、例えば活性化関数は通常、ε=1/2を予期するが、εの他の値が使用される場合もある。同じスキームでは、MaxPool演算は半分、例えばε=1/4の範囲を有するが、εの他の値を使用することもできる。一方、ネガサイクリックなPBS、例えばx∈[0,1[に対してf(x+1/2)=-f(x)である関数fを使用するとき、トーラス全体を使用でき、例えば、ε=1である。異なるタイプのトーラスFHEは、異なるサポートされる範囲を有し得る。
【0109】
重要な用途は、ニューラルネットワークをTFHEベースの同等物に変換することであり、ニューラルネットワークは暗号化されたデータに対して実行される。例えば、これはユーザのプライバシーを保証するのに役立つ。例えば、個人情報も検査結果も明らかにせずに、自分の個人情報(例えば、DNA情報を含む)に対して医療検査を実行することである。
【0110】
一実施形態では、演算の第1の計算ネットワークおよび第2の計算ネットワークは、画像を入力としてとるように構成される。例えば、第1の計算ネットワークおよび第2の計算ネットワークは、少なくとも画像を入力としてとるニューラルネットワークであってもよい。画像は医療画像であってもよい。
【0111】
第1の計算ネットワーク内の演算は、整数行列乗算Wを含む行列演算(y=Wx+B)とさらなる演算(z=A(y))とを含む。行列演算は、暗号化された値に対して行われることを除き、第2の計算ネットワーク内で行列演算に変換され、さらなる演算は1つ以上のPBS演算に変換できる。
【0112】
変換システム200は、第1の計算ネットワーク210を備え得る。第1の計算ネットワーク210は、ニューラルネットワークなどであってもよい。第1の計算ネットワーク210は、従来の算術を使用して演算するように構成され得る。演算211-214を示す。第1の計算ネットワーク210は、例えばネットワーク210のパラメータを記憶することによって、システム200のストレージに記憶され得る。変換システム200は、第2の計算ネットワーク220を生成し得る。第2の計算ネットワーク220は、第1の計算ネットワーク内の演算に対応するFHE演算を含む。演算221-224が示されている。任意選択で、第2の計算ネットワーク220は追加の演算を含んでもよい;この例では、演算223が挿入され、一方、他の演算は第1の計算ネットワーク210内で対応する演算を有する。ネットワーク220内の演算は、おそらく精度は低いが、FHE値、一実施形態ではTFHE値に対して演算する同じ関数を計算するように構成される。一実施形態では、LWE暗号化を使用してトーラスFHEが使用される。一実施形態では、FHEは、その入力に対して規定の範囲を暗示するプログラマブルブートストラッピングとともに使用される。
【0113】
変換システム200は、エンコーディングのスケーリング係数を決定するように構成されたスケーリング係数ユニット230を備える。スケーリング係数ユニット230はまた、エンコーディングのシフトを計算することもできるが、これは常に必須というわけではない。
【0114】
任意選択で、システム200は、変換される演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を決定するように構成された範囲ユニット231を備える。例えば、範囲ユニット231は、サンプルストレージ232内の入力に関して第1の計算ネットワークを評価し、値の範囲、例えば、第1の計算ネットワークの入力値、中間値、および出力値を観察し得る。観察される範囲は第三者、特に第1の計算ネットワークと同じ供給者から取得することもできるため、範囲ユニット231はオプションである。サポートされる範囲は、観察される範囲から導出することができる;それらは等しくてもよいし、サポートされる範囲が、例えば5%以上、または20%以上などの乗算マージンを持って、観察される範囲よりも少し大きく取られてもよい。本明細書で説明するように、サポートされる範囲を拡大するか、またはスケーリング係数を減少させることを使用して、第2の計算ネットワーク内のPBSテストベクトルの数を低減させることができる。
【0115】
スケーリング係数ユニット230は、第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数を計算するように構成され、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである。スケーリング係数ユニット230はまた、エンコーディングを改善するために、第1の計算ネットワーク内に演算を挿入することもでき、その演算は、後に第2の計算ネットワーク内の演算によって表される。
【0116】
システム200は、第1の計算ネットワーク内の演算を第2の計算ネットワーク内の1つ以上の演算に変換するように構成された変換ユニット240を備える。第2の計算ネットワーク内の演算は、スケーリング係数でスケーリングされた入力値を受け取るように調整される。変換の例を本明細書に与える。
【0117】
第2の計算ネットワークの効率は、第2の計算ネットワーク内で元の正確な精度を持つことを要求しないことによって高めることができる。特にニューラルネットワークでは、それらの性質上、値にある程度の変動が許容されるため、これは多くの場合可能である。第2の計算ネットワークの精度のインディケーションを取得するために、システム200は、オプションの精度ユニット250を備え得る。例えば、精度ユニット250は、サンプルストレージ251からとられた入力値に基づいて第2の計算ネットワーク220を評価することができる。入力値のセットに対する望ましい出力は、それらを第1の計算ネットワークで評価することによって取得できる。あるいは、ストレージ251は、入力値のセットに対応する出力値も含むことができる。
【0118】
任意選択で、システム200は、第2の計算ネットワーク内のPBS演算の数を低減させるためのグループ化ユニット260を備え得る。ユニット260の演算を本明細書で説明する。
【0119】
図3は、ILSVRC2014のウイナーであるGoogLeNetまたはInceptionv1と呼ばれるネットワークのフラグメント(fragment)である。Inceptionは、オブジェクト検出と画像分類のためのディープ畳み込みニューラルネットワークアーキテクチャである。ネットワークのより詳細については、論文「Going deeper with convolutions」(参照により本明細書に含まれる)および現在GitHubでホストされているOpen Neural Network Exchange(ONNX)のinception_v1の対応ページ(参照により本明細書に含まれる)で利用可能である。図3のネットワークは、実数値との乗算を削除することにより、元のネットワークと比較して変更されている。この場合、実数値行列は、拡大係数と乗算し、行列のエントリを個々に整数に丸めることによって変換されている。拡大された行列に続く演算は、対応してより大きな入力を予期するように調整される。上で指摘したように、実数値の乗算を回避する第1の計算ネットワークを取得するにはさまざまな方法がある。この方法は、実数値の乗算を持つ計算ネットワークを、実数値の乗算を持たない計算ネットワークに変換するために使用されるが、これをするために他にもさまざまなオプションがある。変換が行われ、すべての行列演算が行列の乗算に整数値の行列を使用するように調整されていると想定される。
【0120】
図3に、複数の演算とそれらの間の層を示す。層は1-99の参照符号で示される。例えば、図3の上部は連結演算を示している。連結演算は「Concat_xx」として示され、xxは特定の連結演算を示す。連結演算の出力は、他のいくつかの演算に入力される。1つの演算の出力であり、次の演算に入力される値をまとめて層と呼ぶ。この場合、連結演算Concat_52は層53の値を提供する。連結演算は、値の順序を変更するだけであるため、FHE演算に直接変換でき、これは、暗号化された値だけでなくプレーンに対しても行うことができる。連結演算は、異なる演算の値を組み合わせるいわゆるジョイン演算の一例である。以下で説明するように、ジョイン演算には追加の注意が必要な場合がある。
【0121】
図3には、畳み込み演算も示されている;「Conv_xx」で示される。畳み込みは行列演算の一例である。行列演算における実数値の行列の乗算は、整数値の行列の乗算に置き換えられる。畳み込み結果を入力として使用する関数は、整数値の畳み込みのために調整されていると想定される。
【0122】
図3には、ReLU演算も示されている。ReLUは非線形演算の一例であり、多くの場合はさらなる演算であり、ReLUは連結演算などから入力をとることもできる。変換では、非線形演算であるReLUがプログラマブルブートストラッピングに置き換えられる。
【0123】
図3には、プール演算、この場合はMaxPool、も示されている。プール演算は、離散化プロセスの一タイプであり、値の入力セット、例えば、画像、隠れ層の出力行列など、がダウンサンプリングされ、その次元が低減される。MaxPoolの場合、値のサブセットがそれらの最大値に置き換えられる。MaxPool演算は、2つの値の最大をとるブートストラッピング演算を使用し、それを繰り返し適用してサブセットの最大値を取得することによって実装できる。MaxPoolはReLUを使用して実装でき、例えば、2つの値aとbのMaxPoolは、A(x)=ReLU(x-1/4)とすることにより、[0,1/4[内のaおよび[0,1/4[内のbに対して、a+A(b-a+1/4)として実装できることに留意されたい。実際、aとbにこのような制約があると、
【数7】
が[0,1/2[内にあることがわかり、PBSの入力になり得ることがわかる。複数の値に対するMaxPoolは、2つの値に対する複数のMaxPoolの繰り返しとして実装できる。
【0124】
Pool演算の例としては、特に、値のサブセットがそれらの平均値に置き換えられるAveragePoolがある。AveragePoolは、暗号化された値に対して直接行われ得る合計として、および、プログラマブルブートストラッピングとして実装できる除算として実装できる。
【0125】
ニューラルネットワークなどの計算ネットワークで生じる可能性のあるその他の演算には、Flatten、Transpose、およびReshape演算が含まれる。これらは値を移動させる演算であり、暗号化された値を処理するように容易に変換される。
【0126】
Dropoutはニューラルネットワークのトレーニングで使用される演算であるが、通常は推論中に恒等式(identity)に置き換えられる。
【0127】
Add演算は層の追加を表す。これは線形演算であるが、通常はジョイン演算であるため、本明細書で説明するように、ある程度の注意が必要である。
【0128】
他にも生じる可能性のある演算があるが、図3には示されていない;例えば:実数値の重みの行列を使用した行列乗算、および実数値のスカラーを使用したバッチ正規化である。行列演算はGemm_xxで示される。
【0129】
活性化関数のさらなる例には:シグモイド関数、ソフトマックス関数、ソフトプラス関数、ソフトサイン関数、tanh関数、selu関数、elu関数、指数関数、LeakyReLU層、PReLU層、ThresholdedReLU層が含まれる。
【0130】
一般に、線形演算、および平坦化(flatten)または連結などの置換タイプの演算は、第2の計算ネットワーク内で線形演算または置換演算に変換できる。これらの演算では、シフトが変化し得るが、入力値のスケーリング係数が維持される。他の演算、特に非線形演算、例えばシグモイド関数やReLu関数などの活性化関数をPBSに実装してもよい。PBSは、エンコーディングを受け入れるように調整できる。PBSの出力は、デフォルトのエンコーディングを使用する場合もあれば、カスタマイズされたエンコーディングを使用する場合もある。
【0131】
再び図2を参照すると、図3に示されるような第1の計算ネットワーク210は、実数値行列乗算を除去するように調整され得る。このようなネットワークは、システム200の実施形態に提供され、第2の計算ネットワーク220への変換に成功した。図3の場合、結果として、暗号化された入力画像に対してオブジェクト検出を実行でき、検出されたオブジェクトを暗号化された形式で生成できる。
【0132】
例えば、演算のタイプ、それらのパラメータ、例えば重み、およびネットワーク内の接続を含むファイルは、デジタルフォーマットで提供され得る。例えば、システム200は、システム200の外部の外部ソースから第1の計算フォーマットを受け取ってもよい。例えば、システム200は、ローカルコンパイラまたはニューラルネットワークトレーニングユニットの出力として計算ネットワークを取得することができ、そのいずれもシステム200にインストールされることができる。
【0133】
第1の計算ネットワークを変換するために、行列演算は、FHE暗号化された値、例えば、TFHEに対して行われ得る対応する演算に変換される。特に、演算は、FHEにおける演算に変換され、FHEはネイティブ加算およびプログラマブルブートストラッピングを有し、値およびPBS入力は制限された範囲を有する。
【0134】
図4aは、第1の計算ネットワーク410の実施形態の一例を概略的に示す。この例では、平坦化演算Flatten_0の後に行列演算Gemm_1が続く。これらの演算は、Gemm_1がシフトを変更し得るが、スケーリング係数を保持する。
【0135】
範囲ユニット231は、層input_1、1、および2のすべての値について、値が生じる範囲を決定することができる。例えば、範囲ユニット231は、複数の入力について第1の計算ネットワークを評価し、値が有し得る範囲を観察することができる。次に、各層について、規定の範囲を決定することができる。例えば、Gemm_1およびFlatten_0演算の入力(つまり、input_1と1層)が、規定のサイズ1の範囲を含み、一方、ReLu_2(つまり、2層)の入力がサイズ1/2の規定の範囲を有すると想定する。これらの演算の異なる実装では異なる範囲サイズを有し得るため、値は例示的なものであることに留意されたい。
【0136】
ここで、スケーリングユニット230は、層input_1、1、および2のいずれかにおける値を乗算することが、その範囲のサイズが規定の範囲に適合するようなスケーリング係数を決定することができる。例えば、これらの層の各値について、(その層における規定の範囲サイズ)/(値の範囲のサイズ)を計算し、これらの値に対する最小値をスケーリング係数としてとることができる。最小スケーリング係数が1より大きい場合、スケーリングは必要なく、スケーリング係数を1とすることができるが、一実施形態では依然としてスケーリングが使用され得る。
【0137】
第2のネットワークの入力(ここではinput_1)に適用されるスケーリング係数を第2の計算ネットワークのユーザに通信することができ、これにより、彼/彼女は、入力値を暗号化しそれらを第2の計算ネットワークが評価されるシステムに送る前に、入力値をスケーリング係数でスケーリングできるようになる。Flatten_0およびGemm_1演算にはシフトを必要としない。平坦化演算は調整を必要としない。行列演算の行列乗算部分も調整を必要としないが、Gemm_1の行列加算部分にはスケーリング係数を乗算して、Gemm_1の出力値をスケーリング係数まで正確に保つことができる。ReLu_2の入力、つまり層2では、暗号化された値は規定のサイズ、例えば1/2の範囲でのみ生じる。しかし、層2までのおよびそれを含む層の一部の値は、スケーリング係数と乗算された後でも、第1の計算ネットワーク内ではまったく異なる範囲を持ち得ることに留意されたく、例えば、一部の値は199.7から200.2の範囲で生じ得、一方、例えば、別の値は-17.4から-16.9の間で生じ得る。第2の計算ネットワーク内の暗号化された値はすべて1を法とするため、これらの値にシフトが適用され、その結果、非線形演算PBSが値を正しく補正する。
【0138】
線形演算への入力における第2の計算ネットワーク内の値は、何らかのエンコーディングに従ってエンコードされるため、関連付けられたシフトを持つが、線形演算の場合、シフトは暗黙的なままにすることができる、つまり、どの値も線形演算と互換性があるため、実際には知る必要も変更する必要もない。
【0139】
しかし、さらなる演算ReLu_2演算では、シフトを考慮する必要がある。さらなる演算は、エンコーディングに関して、スケーリング係数とシフトの両方について調整される。シフトオフセットは、スケーリングされたサポートされる範囲を規定の範囲にシフトするために計算される一実施形態では、このシフトは、層2内の各値に対して個々に決定される:我々のこの例では、[199.7,200.2[内の値は-199.7だけシフトされ、一方、[-17.4,-16.9[内の値は17.4だけシフトされ得る。シフトは、Gemm_1とReLu_2の間に加算演算を挿入することによって適用できるが、この場合、シフトは先立つ演算、つまりGemm_1のバイアス内で有利に組み合わせることができる。
【0140】
原則として、層2内の異なるエンコーディングと同じ数のテストベクトルによって、層2内の各値に対してさらなる演算を行える。通常、テストベクトルは(入力と出力の)スケーリング係数と(入力と出力の)シフトに依存する。我々の場合、(入力および出力)スケーリング係数に関して層2内のすべての値に等しい値を取ったため、シフトと同じ数のテストベクトルが存在する。
【0141】
これにより、通常、層2内の値と同じ数のテストベクトルを有するすることになる。より高度な実施形態では、本明細書で説明するように、シフトにグループ化を適用することによって、すなわち、層2のいくつかの値が同じシフトを共有するようにさせることによって、層2内の値よりも少ないテストベクトルが必要となり得る。
【0142】
ReLu_2の出力のエンコーディングは、データ(例えば、層3で観察される範囲)に依存する。
【0143】
層i内の大きい範囲のサイズはδと呼ばれ、サポートされている範囲に対応する。第2の計算ネットワーク内のさまざまなエンコーディングはEと呼ばれる。層input_1、1、および2は、すべてエンコーディング除数dを持つエンコーディングEを持ち、一方、層3はすべてエンコーディング除数dを持つエンコーディングEを持つ。規定の範囲が保証されるように、エンコーディング除数を;
【数8】
およびd=δとして有利に取ることができる。
【0144】
シフトは層2内で考慮されるため、PBSは正の値に対して実行できる。活性化ReLu_2を置き換えるPBSは:Activation(x)=ReLU((x-s)*d)/d+sとして調整できる。ここで、sは、活性化関数が適用される値のエンコーディングのシフトであり(つまり、sは2のシフト)、その層内のすべての値で異なり得る。シフトsは出力関数のシフトである。この特定の活性化関数では、ReLu関数の出力がすでに正であるため、s=0を取ることができる。
【0145】
サポートされる範囲、例えばサポートされる第1の計算ネットワーク内の値の範囲は、観察される範囲から決定され得る。例えば、観察される範囲は、第1の計算ネットワークを評価し、各値についてその最大値と最小値が何であるかを追跡することによって、各値について決定することができる。観察される範囲をサポートされる範囲と同じに設定することもできる。しかし、サポートされる範囲を観察される範囲よりも少し大きくすることもできる。例えば、マージン関数を観察される範囲のマージンに適用することができる。例えば、マージンは相対的であってもよく、例えば、最大値にパーセンテージが加算されてもよく、例えば、1%以上が加算されてもよく、または10%が加算されてもよい;最小値の場合は、対応する量が減算され得る。例えば、マージン関数は絶対的であってもよく、例えば、最大値または最小値にそれぞれ1以上、または10以上などの固定量が加算または減算されてもよい。あるいは、より単純には、マージン関数は、規定の範囲のサイズに直接適用されてもよく、例えば、1%以上加算されてもよいし、10%加算されてもよい、などである。例えば、加算量または減算量は、絶対値および相対値の最大値であってもよい。
【0146】
観察される範囲よりも大きいサポートされる範囲を有することは、ある程度の安全性の尺度を提供する;サポートされる範囲が大きくなると、第2の計算ネットワーク内で範囲外の値が生じる可能性が低くなる。それはまた、FHEシステムのセキュリティに必要なノイズに対してより多くの余裕を許す。一実施形態では、加算または減算される量は、値の標準偏差の倍数、例えば、値の標準偏差の2倍である。標準偏差は、例えば範囲ユニット231によって決定され得る。
【0147】
規定の範囲は、特定の(T)FHEスキームによって規定されてもよい。背景で述べたTFHEスキームでは、行列演算には規定のサイズ1の範囲を使用し、ほとんどの活性化関数には規定の範囲サイズ1/2を使用し、入力が2つの値の差の加算である活性化関数には規定の範囲サイズ1/4を使用できる。例えば、Act(x)=ReLu(x-1/4)を用い、aとbの暗号化された値を用いて、a+Act(b-a+1/4)として実装された、MaxPoolは、は、サイズ1/4の範囲内であるaとbを必要とし、したがって、PBSとして実装されるActの入力範囲は1/2である。PBSが正の入力を持つように、aとbのシフトに応じてシフトも調整する必要があり得ることに留意されたい。一般に、規定の範囲は演算のタイプとTFHEのタイプにのみ依存し、処理されるデータには依存しない。例えば、規定の範囲および/または範囲サイズを取得することは、範囲および/または範囲サイズへのルックアップテーブルマッピング演算として実装され得る。
【0148】
背景で引用したようなTFHEスキームの場合、さらなる演算に対する規定の範囲は0を含み0から値εまでであり、通常は1以下である。max-pool演算に対する規定の範囲は、通常、活性化関数の規定の範囲の半分のサイズになる。例えば、εはほとんどの活性化関数では1/2であるが、MaxPool演算では1/4であり得る。複数の値に対する関数を1つの入力を伴う関数に変換するためのさまざまな方法が当技術で知られている。
【0149】
スケーリング関数は、元の第1の計算ネットワーク内の値が第2の計算ネットワークのトーラス上の対応する値にマッピングされるように、第1の計算ネットワーク内の各値に対して第2の計算ネットワーク内の対応する値に対して定義され得る。トーラス値は、ここではモジュラス、例えば2を法とする値、で表すことができることに留意されたい。トーラス上の値は、実際の実装では適切な有限環として表されることがよくある。例えば、要素を、0<=x<1および0<=a<mであって、x=a/mとして表すことができ、多かれ少なかれxをaのみに置き換えることができ、ここでaは整数である。ここで、mは適切に大きな整数、例えば2を表す。トーラスの要素である実数mod1は、すべてを分数a/mとして書くことはできないが、それらはすべて、なんらかのa/mでよく近似することができる。
【0150】
スケーリング関数が適用されると、スケーリング関数x’=x/d+sは、スケーリング係数(1/d)およびスケーリング加算またはシフト(s)によって定義される。シフトsは値ごとに、例えばニューロンごとに異なってもよいことに留意されたい。ニューラルネットワークはテンソルで作られており、これらのテンソルの個々の要素はニューロンと呼ばれることを注意されたい。シフトはニューロンごとに異なる値を持ち得るが、異なるシフトの数を低減させるためのステップをとることはできる。
【0151】
一実施形態では、同じ層内の値は同じスケーリング係数を有するが、それらは異なるシフトを有し得る。層内のすべての値に同じスケーリング係数を割り当てることは、厳密には必須ではない。値ごとに最適化された除数を追跡することができる。確かに、PBS用途の場合、いずれにしても1つの層に複数のPBSテストベクトルが必要になることが多いため、これにはそれほど加算の作業は必要ない。異なるシフトに対してPBSを変更することに加えて、追加のコストなしでエンコーディング関数のスケーリング係数を考慮することができる。しかし、例えばニューラルネットワークのように線形演算が頻繁に生じる場合は、層内のほとんどの除数がいずれにせよ等しい必要があることがわかる。値ごとの個々の除数を追跡することは、ネットワークが分割演算、例えば、連結の逆、を含むときなど、時折、より良好なエンコーディングを与え得る。
【0152】
演算は、入力に割り当てられたスケーリング係数でスケーリングされた入力値を受け取るように調整される。入力エンコーディングのシフトは知られており、入力値または入力値から導出される中間値に対して計算される演算に関連するシフトを計算するために使用できる。行列乗算と行列加算、例えばWx+Bを使用した行列演算の場合、行列演算を調整することは行列加算を調整すること(B’=B/d)のみが必要である。すでに整数行列であると想定すると、行列はそのままであり得る。行列演算に使用される値には関連するシフトがあり、これは、行列演算によって変化することに留意されたい。しかし、この時点ではシフトを明示的に調整する必要がないため、シフトは暗黙的であり得る。さらなる演算A(x)は、スケーリング係数でスケーリングされ、シフト値でシフトされた入力値を受け取るように調整される(A(dx-s))。これは、所与の層にシフトがあるのと同じ数の調整されたさらなる演算を意味し得る。したがって、さらなる演算f( )は複数のTFHE演算に変換され、それぞれが同じスケーリング係数と複数の異なるシフト値について調整される(f(dx-s))。出力エンコーディングが使用される場合、層内の値に適用されるPBSのシリーズはそれぞれ同じスケーリング係数を持ち得る。
【0153】
活性化後の行列演算の例
例として、次の第1の計算ネットワークを考えてみる:y=W.x+Bおよびz=Activation(y)を計算すると仮定し、ここで、xは暗号化された入力テンソル、zは暗号化された出力テンソルであり、Wは重みと呼ばれる定数の整数テンソルであり、Bはバイアスと呼ばれる定数の実数値テンソルである。ここで、x、y、zは実数値である。テンソルは行列とみなすことができる。目標は、この小さなNNを、トーラス内の要素で実行される同じ精度の準同型NNに変換することであり、例えば、元の演算を、精度をできるだけ変えずに1を法として実行できる演算に置き換えることである。
【0154】
2つのいわゆるエンコーディング除数dおよびdを、例えば実数値として定義し、2つのシフトsおよびsを、例えば、サイズがyに対応し、実数を含む2つのベクトルとして定義し、計算をx’=x/d、y’=W.x’+B’、およびz’=Activation’(y’)に置き換え、ここで、B’=B+s、およびActivation’は関数Activation’(x)=Activation((x-s)*d)/d+sである。
【0155】
・除数dは、次のように適切に選定される:
- x’はサイズが1より小さい範囲に生じる
- y’は、サイズがεより小さい範囲で生じる(y’はPBSの入力であるため)。一例として、ε=1/2をとることができる。
・sは、y’が厳密に[0,ε[内であるように選定される(y’はPBSの入力であるため)。
・Activation’はPBSに置き換えられるが、このPBSの入力は正で2分の1より小さいため、これは可能であり、正しい。
・dは、z’が1より小さいサイズの範囲に位置するように選定される。
・sは、z’が厳密に[0,1[内にあるように選定される。
ひとたびd、d、s、sを選定すると、完全なFHEパスを有することができる:
・入力のエンコーディング、例えばx’=x/dの計算は準同型暗号化の前に行われる。
・次に、x’が暗号化され、準同型NNの入力になる。
・y’とz’は準同型NNの2つの層である;本質的に、計算は1を法として行われる。
・最後に、z’が復号され、z=(z’-s)*dによってzをクリアテキストで復元できる。
【0156】
xのエンコーディング、x’の暗号化、z’の復号、およびzを取得するためのデコードは、通常、第2の計算ネットワークの評価とは異なるシステムまたは場所で行われることに留意されたい。
【0157】
この例は事例的なものであるが、ニューラルネットワークがより深い、および/またはより複雑なトポロジを持つとき、エンコーディングを見いだすことはより複雑になる。
【0158】
図4bは、第1の計算ネットワークの実施形態の一例を概略的に示す。図4bはフォーク層13を示す。フォーク層は、少なくとも2つの異なる演算で使用される層として定義される。層13は、2つの異なる演算:Conv_13とConv_16の入力として使用されるため、フォーク層である。
【0159】
層13を生成する対応する演算はフォーク演算421、ここではReLu_12である。図4bは、ジョイン層18を示す。ジョイン層は、先立って計算された2つ以上の層の結果を使用する層である。層18は、2つの異なる層:それぞれConv_15とConv_16の演算によって生成された層16と17を入力として使用するため、ジョイン層である。層18を生成する対応する演算はジョイン演算422、ここではAdd_17である。ジョイン層は通常、ネイティブ演算として、この場合は加算として、第2の計算ネットワーク内に実装される。
【0160】
したがって、フォーク層はいくつかの層のソースとして使用されるが、ジョイン層は先立つ2つ以上の層を使用する層である。通常、ジョインは加算、減算、連結である。より一般的には、2つ以上のソースを使用し、ネイティブ演算で実装されたいかなる演算も、ジョイン層とみなすことができる。複数のソースがジョイン層に到達するとき、それらのスケーリング係数は等しいか、等しくする必要がある。Addジョイン層を考えてみると、2つのスケーリング係数が等しくない場合、結果として得られる加算は元の加算出力との関係をもはや持たなくなる。第1の計算ネットワークがジョインを含む場合、エンコーディングを解くこと、つまり適切なエンコーディング除数を見いだすことはより複雑になる。一実施形態では、第1の計算ネットワーク内の演算は、複数の前の演算から入力値を受け取り、第2の計算ネットワーク内の対応する演算は、対応する複数の前の演算から、前記対応する演算のすべての入力値に対して等しいスケーリング係数でスケーリングされた入力値を受け取る。
【0161】
フォーク層とジョイン層は、ほんの数例を挙げると、Resnet、VGG、mobilenetなどの多くの古典的なニューラルネットワークにとって重要である。
【0162】
ジョイン層が存在する場合のエンコーディングは次のように解決できる。スケーリングユニットは、次のように構成され得る。
- 第1の計算ネットワーク内のすべての層Lのリストを保持する。
- エンコーディング除数:dのリストを保持する。
- 各層には、シンボル的エンコーディング除数dが割り当てられる。各層は1つの除数に対応するが、1つの除数が複数の層に対応できるという意味で、層とエンコーディング除数の間には対応があることに留意されたい。
・線形演算(行列演算または定数との加算、または値を並べ替えるだけのFlatten、Reshape、Transposeなどの演算など)の前後の層は、同じエンコーディング除数が割り当てられるが、PBSの後の層には新しいエンコーディング除数を有し得る。
・ジョイン層は、入力エンコーディングが等しいという条件を課すため、除数の数を低減させる。例えば、一部のdを等しくすることで、独立したdの数を低減させる。
- 各エンコーディング除数dについて、そのエンコーディング除数を持つ層Lを調べる。
・(サポートされている範囲のサイズ)/(その層に対する規定の範囲)の最大値を、前記層のすべての値に対してとり、エンコーディング除数dをその最大値に設定する。
- エンコーディング除数dはスケーリング係数a=1/dに対応することを注意されたい。
【0163】
PBSが新しいエンコーディング除数を導入する必要はない。代わりに、一部のエンコーディングが等しいように強制する、および/またはエンコーディング変換関数を導入することができる。しかし、PBSを通して新しいエンコーディング除数を導入すると、コストをほとんど課さず、ジョイン演算による制約をより柔軟に解決できるため、有利である。例えば、PBSはA()/dまたはA()/d+sのように変更できるが、ここでは示していないものの、PBSは入力値のエンコーディングのために調整されることもあることに注意されたい。PBSの出力にエンコーディング除数を導入すると、除数dの数が増加する。より多くの除数を持つということは、同じdを共有する層Lの数が低減っし、したがってdを互いにより独立して最適化できるため、エンコーディングがより独立していることを意味する。その結果、より良いエンコーディングが見つかる可能性があり、例えば、スケーリングされた範囲が規定の範囲に近くなるため、スケーリングによる精度の損失が少なくなり得る。
【0164】
一実施形態では、第1の計算ネットワークを変換することは、第1の計算ネットワーク内の演算に対応する2つの演算の間に、第1の計算ネットワーク内の1つ以上のさらなる演算を挿入して、あるスケーリング係数から別のスケーリング係数に移行すること、例えば、追加のスケーリング係数を導入することを含む。このような挿入された演算は、再スケーリング演算と呼ばれる。例えば、PBSに新しいエンコーディング除数を挿入しない場合には、第1の計算ネットワークを変換するとき、さらなる演算を挿入する必要がないことに留意されたい。
【0165】
図5aは、第1の計算ネットワーク510の実施形態の一例を概略的に示す。図5bは、追加の演算525が挿入された第1の計算ネットワーク510と同じ第1の計算ネットワーク520の実施形態の一例を概略的に示す。再スケーリング関数は、PBS、この場合はReLu_2とジョイン演算、この場合はAdd_6の間に挿入される。
【0166】
図5aでは、挿入された再スケーリングがなく、層3と6のスケーリング係数は、ジョイン演算に入力されるため、同じになる。Conv_5はスケーリング係数を変更しないため、層5は層6と同じスケーリング係数を持つことになる。Conv_3はスケーリング係数を変更しないため、層4は層3と同じスケーリング係数を持つことになる。また、Add_6はスケーリング係数を変更しない。つまり、すべての層、3、4、5、6、7は同じスケーリング係数を持つことになる。例えば、層3および/または4の値の範囲が比較的大きい場合、例えば、他の層では範囲がより小さく、その結果より大きなスケーリング係数を使用できる場合でも、これは小さなスケーリング係数を意味する。これらすべての層で同じより小さいスケーリング係数を使用すると、計算の正確さのロスにより精度が低減したり、より大きな暗号パラメータが必要になったりする結果になる。
【0167】
図5bでは、再スケーリング525が導入されている。ここで、層3’、6、5、および7は同じスケーリング係数、例えばa、を持ち、層3と4は同じスケーリング係数、例えばa、を持つ。これら2つのスケーリング係数は異なり得、その場合、PBS ReLu_4がスケーリング係数を変更するであろうが、これは可能性がある。この場合、スケーリング係数aは、層3および4の広い範囲に対応するために小さくなり得るが、スケーリング係数aは、ネットワークの残りの部分のより小さい範囲で許容されるようにより大きくなり得る。
【0168】
再スケーリングは、例えばスケーリング係数が非常に小さくなった場合、例えば閾値より小さくなった場合に、ジョイン演算の分岐に導入されることができる。例えば、再スケーリングは、PBSがないところでのフォークとジョインの間の分岐におけるジョイン演算の直前に有利である。
【0169】
再スケーリングを有利に適用できる状況は他にもある。例えば、次の例を考えてみる:
- U1=PBS_1();U2=PBS_2(…);
- X1=Gemm_1(U1);X2=Gemm_2(U2);
- X3=Join(X1,X2);X4=PBS3(X3);
ここで、層U1とU2はPBSの結果である。層X1とX2は、ここではGemmである行列演算の結果である。例えば、それらは畳み込みである可能性もある。ジョイン層X3は、X1とX2のジョイン、例えば連結、加算、減算などである。この例では、X1とX2のスケーリング係数はジョイン演算で使用されるため、等しくなければならず、これは、層U1とU2が同じスケーリング係数を持つことを意味する。Gemm演算ではスケーリング係数が保持されるため、X1とU1は同じスケーリング係数を持ち、X2とU2は同じスケーリング係数を持つことに留意されたい。したがって、ジョイン演算で終わる2つの分岐は同じスケーリング係数を持つが、これはこれらの値のエンコーディングには理想的ではないことがよくある。実際、例えば、Gemm_1の出力、例えば層X1、が、広い、サポートされている範囲を有する値をたまたま有している場合、これが、小さいスケーリング係数を発生させる可能性があり、これにより、今度は、エンコーディング除数が2つの分岐で共有されるため、X2でも小さいスケーリング係数を発生させるということになる。U2とX2の分岐に小さなスケーリング係数が課されるという事実は、精度にとって良くない。
【0170】
より良いセッティングでは、PBS_1とPBS_2の出力において2つの異なるスケーリング係数が導入される。このようなシステムは、例えば次のようにGemm_2とJoinの間に再スケーリング演算を挿入することで解決できる:
- U1=PBS_1();U2=PBS_2(…);
- X1=Gemm_1(U1);X2=Gemm_2(U2);
- X2’=PBS4(X2)←挿入された再スケーリング演算
- X3=Join(X1,X2’);X4=PBS3(X3);
【0171】
再スケーリングにより、Gemm_2を異なるスケーリング係数、例えばより大きなスケーリング係数、で計算できるようになる。Gemm_2の計算が完了すると、結果はPBS4によってX1のより小さいスケーリング係数にスケールダウンされ、ジョイン演算が予期どおりに等しいスケーリング係数を受け取るようになる。その結果、Gemm_2の演算精度が改善される。それで、PBS_1とPBS_2の出力にそれぞれ導入されるスケーリング係数は異なり、次の演算に最良に適合するように選択できるようになった。
【0172】
エンコーディング除数dからエンコーディング除数dによる別のエンコーディングへの再スケーリング演算は、次のように行われ得る。基本的に、関数f(x)=x*d1/dを適用したいとする。l=d/dをコールする。関数fは、一般的な場合、特にlが実数の場合、あるエンコーディングから別のエンコーディングに移行する、新しく挿入されたPBSによって行われ得る。さらに良いことに、lが整数であるか、整数に近似できる場合は、整数の乗算がネイティブでサポートされている演算であるため、関数fは、暗号化された値に対するlによる単一の乗算によって、ネイティブに直接行える。
【0173】
関数fをネイティブな乗算として行う方がより一層効率的である。これが、エンコーディング除数が依然として有効であるように(つまり、以下の規定の範囲により第2のネットワークにおける正しいデータ範囲を与えるように)、および、lが整数であるようにエンコーディング除数を少し変更できる理由である。エンコーディング除数dを少し増加させることもでき、d/dが整数になるようにする;より正確には、d’=d+(-dmodd)の場合、d’/dが整数になるように、dをd’に置き換える。また、再スケーリング係数lをRound(d/d)で近似し、精度が無視できるファクタだけ、例えば閾値内で低減していることを確認することもできる。整数を使用すると、乗算がPBSよりもはるかに高速であるため、性能の点では優れているが、lが小さくないとノイズの伝播の点で悪くなり得る。
【0174】
が小さく、dが大きい場合、dを少し増やすことは特に有利であり、何故なら、これは、増分(-dmodd)がdに比べて小さいことを意味するからである。再スケーリングをPBSのかわりに整数乗算に置き換えるかどうかを決めることは、最適化フラグ、または第2のネットワークの発生時に動的に行われる最適化に依存し得る。例えば、実行時間と精度のどちらを最適化するかに依存し得る。精度は、精度ユニット250によって決定され得る。
【0175】
例えば、d1=35.1およびd2=2の場合、d1’/d2=18が整数となるように、d’=36を取ることができる。d’1はd1よりわずかに(約2.5%)大きいため、正確さとしては良好であることに注意されたい。別の例では、d1=25.2およびd2=17であり得、d1’/d2=2が整数となるようにd1’=34を取る;ここで、d’1は実際にはd1よりも大きくなる(約34%)ので、正確さが悪くなる:この第2の場合では、PBSが好ましくあり得る。
【0176】
再スケーリングを挿入すると、エンコーディングが等しい必要があることを回避し、よってエンコーディングのオプションを狭め、不正確すぎる解につながり得る、多くの層でエンコーディングが共有されるのを回避することができるため、有利である。整数の乗算を使用して再スケーリングを行うとより効率的であるが、精度と正確さが低減し得る。PBS演算子を使用して再スケーリングを行うと、第2の計算ネットワークの実行は遅くなるが、精度と正確さはより良好になる。
【0177】
一実施形態では、エンコーディングおよび調整はコンピュータによって自動的に行われる。一実施形態では、エンコーディングを含む方程式が決定されるため、それを解いて適切なパラメータを見いだすことができる。これにより、大きすぎるエンコーディング除数の使用が回避されるため、ニューラルネットワークの精度が改善される。異なるエンコーディングおよび層に対して独立したエンコーディング除数を使用すると、局所的に最良なエンコーディング除数を選定できる。従来、当技術では、すべてのエンコーディング除数は等しくされ、ときどきは暗黙的に等しくされていた。これにより、ResnetやVGGなどの大規模で複雑なネットワークに対処することが不可能になるが、これらは一実施形態で対処することができる。
【0178】
変換方法の一実施形態は
- 演算間の層にシンボル的スケーリング係数を割り当てること、
- 第1のネットワークアーキテクチャからシンボル的スケーリング係数の条件を導出すること、
- 導出された条件を使用して、シンボル的スケーリング係数の数を低減させること
を含む。
【0179】
例えば、ジョイン層の場合、ジョイン演算子の入力における2つ以上の層のエンコーディング除数は、等しいエンコーディング除数を有することが好ましい。ひとたびエンコーディング除数が確立されると、サポートされている範囲を規定の範囲と比較することによって、実際の値をそれらに割り当てることができる。
【0180】
一実施形態では、提供されたデータセットを使用して値δ:すなわち層内の値の最大範囲のサイズを計算する。データセットは通常、ユーザによって提供される。データセットは、ニューラルネットワークに対する典型的な入力セットである。サイズは、第1の計算ネットワーク、例えばニューラルネットワークで評価できることに留意されたい。
【0181】
・データセットを使用すると、NNの実行時に現れる値の典型的な範囲δを計算できる。値の範囲のサイズは、その値の最大値と最小値の差である。あるいは、この情報はデータセットから復元されず、例えばデータセットが共有したくないトレード・シークレットである場合などは、ユーザによって直接提供される場合もある。
【0182】
・層の最小値から、エンコーディングのシフトを推定して、必要なとき、例えばPBSの前、に値を正にすることができる。
【0183】
・有利には、セキュリティ上の理由からTFHEスキームに追加する必要があるノイズに対する余裕を与えるために、エンコーディング除数を少し増加させることができる。
【0184】
データセットを使用しないときは、最悪の場合のシナリオに対処する必要があるため、エンコーディング除数の値を過大評価する必要があり、これは最後には精度にとって悪く、より大きなFHEパラメータが必要になる可能性があり、その結果、第2の計算ネットワークをより一層遅くする。例えば、一実施形態は、以下を含み得る
・ネットワークを分析する:エンコーディング除数やシフトに値をまだ割り当てずに、異なる層のどんなエンコーディングが必要かを決定する。
・エンコーディングを解決する:連立方程式を解く、例えば、どのエンコーディングが等しいかを見つけ、独立したエンコーディングの数を低減させる。例えば、ジョイン演算がホモジニアスである、つまりそれらのすべての入力に対して同じエンコーディング除数(または同等のスケーリング係数)を持つという条件で、各値にエンコーディングを割り当てることができる。層の場合、同じ層内のすべての値が同じスケーリング係数を得る。ジョイン演算の場合、すべての入力層内のすべての値が同じスケーリング係数を得る。線形演算(行列演算など)ではスケーリング係数が維持されるため、行列演算の前後の層も同じスケーリング係数を得る。別の言い方をすると、PBSを用いて行われない演算のほとんどは、エンコーディング除数を維持する。したがって、ネットワークトポロジに応じて、この解決フェーズによりエンコーディング除数の数が大幅に低減する。
・層の範囲とδを測定する(第1のニューラルネットワーク内):元のNNで観察される範囲を決定し、これにより、これらの層の範囲をどのように縮小するかを決定できる。
【0185】
例えば、元のネットワークの層iの範囲の最大サイズであるδを計算できる。これは通常、ユーザによって与えられたデータセット上で元のネットワークを実行することによって行われ、これは、NNで処理できる典型的なサンプルに対応する。次に、すべての層Lについて、ニューロンNi,jごとの最大値maxi,jと最小値mini,jを保持し、δ=Maximumoverj({maxi,j-mini,j})、例えば層Lのニューロンの範囲の最大値を計算する、なおここで、jは層Lのニューロンインデックスである。層は、ニューロンと呼ばれることもある計算値のテンソルとみなすことができる;層に対する演算は、それでこれらの個々のニューロンに対する演算とみなすことができる。
【0186】
原理は同じであるが、一部の演算では異なる計算式が使用され得る。例えば、PBSを使用して行われる演算でMaxPoolを置き換えるとする。PBSを使用して行われるMaxPoolの入力は、ε’=1/4であり得る特定のε’に対する[0,ε’[の部分的な範囲である範囲内になければならない。さらに、MaxPoolは値間の比較を意味するため、ニューロンをシフトすることができるが、比較を維持するには同じシフトだけシフトする必要がある。したがって、データがMaxPoolの入力として使用される場合、シフトは層内のすべての値に対して等化され得る。シフトはMaxPoolに来るすべてのニューロンで同じであるため、δも異なる方法で計算され得る。例えば、そのようなδは:
δ=Maximumoverj({maxi,j})-Minimumoverj({mini,j})
のように計算できる。
【0187】
これにより、同じスカラーでシフトできると同時に、予期どおり[0,ε’[内に含まれる範囲を持つことができる。シフトの適用は、追加層を挿入するか、この追加係数を自動的に適用するように先立つ演算を変更することによって行える。例えば、先立つ演算が行列演算の場合、行列の加算部分(バイアスとも呼ばれる)を変更して、層のすべてのニューロンにシフトを適用することができる。例えば、先立つ演算がPBS演算のシリーズである場合、値が同じシフトを持つようにPBSの出力エンコーディングを調整することができる。
【0188】
・規定の層範囲を見いだす。すべての層について、エンコードされた値をどの範囲にする必要があるかを見いだす。一部の層(例えば、畳み込みの入力)では、これは範囲のサイズを制限するだけである(サイズが1より小さい範囲など);より特定の層、例えば活性化の入力の場合、特定のεまたはε’に対して[0,ε[または[0,ε’[のような特定の範囲にすることができる。
【0189】
例えば、一実施形態では、
・エンコードされた値はサイズ1以下の範囲内である必要がある。
・PBS入力層は[0,ε[の部分的な範囲内にある必要がある;通常、ε=1/2である
・PBSを用いて行われるMaxPoolの入力である層は、通常はεの半分である特定のε’に対して[0,ε’[の部分的な範囲内にある必要がある。
・いかなる他の層も、1より小さいサイズの範囲内である必要がある。
・エンコードされた出力は[0,1[の部分的な範囲内である必要がある。
【0190】
したがって、すべての層を通して実行することにより、すべての層Lに対して規定の範囲サイズrを得ることができる。これは、後続の演算でサポートされる範囲の最大サイズである。
【0191】
・制約を推定する:すべての層について、そのシンボル的エンコーディングとその予期される層範囲を知り、シンボル的エンコーディングのエンコーディング除数に関するいくつかの制約を推定する。最後には、任意のエンコーディングのエンコーディング除数は、その制約の最大値になる。
【0192】
例えば、一実施形態では、
・すべてのエンコーディングEに対して制約c=0で開始する。
・すべての層Lについて、層Lがrより小さい範囲内になければならないこと、元のネットワークの層がデルタδを持つこと、層がEをエンコードしていることを知り:c=max(c,δ/r)を設定する。
【0193】
あるいは、cの別の定義は次のとおりである:cは、層LがエンコーディングEを持つように、すべてのiに対して取得されるδ/rの最大値である。
【0194】
最後に、すべてのjに対して、EncodingEのエンコーディング除数としてcを設定するか、スケーリング係数として等価的にa=1/cを設定する。
【0195】
・シフトを推定する:(範囲のサイズだけではなく)特定の範囲を持つ必要がある層の場合、エンコーディングシフトを推定する。一部の層(例えば、活性化の入力)は、方程式が成り立つように、予期されるsによるシフトを追加して正にする必要がある。ほとんどのとき、シフトはニューロンごと、例えば値ごとであり、例えば、層の異なるニューロンのシフトは同じではない。一部の特殊な演算では、層内のすべての値(ニューロン)に対してシフトは同じにされ得る。さらに、PBSテストベクトルの数や準同型プログラムのフットプリントを低減させるために、シフトをグループ化したい場合がある。
【0196】
・PBSを推定する:今やすべてが指定されたため、PBSを完全に記述することができる。
【0197】
図4aの例
もう一度図4aの例を考えてみる。この例では、解決は、エンコーディング間に同等性はなく、それらはすべて独立しているということを与える(主に、この非常に単純な例にはジョイン演算がないため)。最後に、エンコーディング除数:
【数9】
およびd=δを得る。シフトは層2にのみ適用されるため、PBSは正の値に対して実行できる。したがって、最後に、エンコーディングE(3を除くすべての層に使用)はエンコーディング除数dを伴う、E(層3でのみ使用)はエンコーディング除数dを伴う。活性化ReLu_2を置き換えるPBSは:Activation(x)=ReLu((x-s)*d)/d+s となる。
【0198】
図4bの例
この例には、Join演算(Add演算422)がある。ホモジニアスなJoin演算を有するために、層16と17のエンコーディングが同じである必要がある。Join演算(層18)の出力も同じエンコーディングを有する。Convはエンコーディングを維持するため、層15、13、および14に層16、17、および18と同じエンコーディング除数を持たせることになる。例えば、整数乗算または追加のPBSなどの再スケーリング関数が挿入されていないと想定すると(本明細書の他の部分を参照)、すべての層が同じエンコーディング除数を有することが判明する。図4bでは2つの異なる規定の範囲が生じる。層14および18はPBSReLu_14およびReLu_18のそれぞれの入力であるため、サイズ1/2の範囲であり、他のすべての層についてはサイズ1の範囲である。したがって、図4bのネットワークは、固有のエンコーディングのエンコーディング除数として使用されるd=max(δ13,2δ14,δ15,δ16,δ17,2δ18)を課す。ReLu_14は、PBS:
【数10】
で実装でき、同じことがReLu_18にも当てはまる。この例では、ネットワークアーキテクチャにより、ReLu_14の出力と同じエンコーディング除数dが入力として使用される;役立つときには、PBS時にエンコーディング除数を変更できることを以前に見たように、これは必須ではない。シフトsとsは値ごとであることができる。これは、層14内にある値と同じ数のReLu_14のテストベクトルが存在することを意味する。入力シフトsは、層14の第1の計算ネットワークの値が第2の計算ネットワーク内でどのように表現されるかに依存する。入力シフトは、例えばネットワークを解析し、シフトを追跡しながらネットワークを通して入力からの値を追跡することによって決定することができる。ReLu_14における出力シフトsはオプションであり、0として選択できる。エンコーディングのシフトの変更は、先立つ演算、つまりConv_13のバイアスにおいて行うことができる。ReLu_18では、入力が正、例えば0から1/2の範囲であることが好まれた。シフトは、Add_17とReLu_18の間に余分な加算(シフト付き)を挿入するだけで適用できる。もう1つのより複雑な(しかしより高速な)解決策は、余分な加算を行わず、バイアスConv_15またはConv_16を直接変更することである。
【0199】
この図には、ReLu_12がどのように計算されるかについての情報が含まれていないことに注意されたい。層12のエンコーディングがわからないと、ReLu_12のPBSを定義できない。同様に、ReLu_18がどのように使用されるかはわからない。
【0200】
本明細書で指摘したように、サポートされる範囲を観察される範囲よりも少し大きくすることは、いくつかの利点がある。これにより、値の範囲外の問題が生じる可能性が低くなる。より多くのノイズを値に追加できるため、セキュリティにとっても有益である。サポートされる範囲がわずかに広いことの予期せぬ利点は、シフトの選定の自由が増えることである。これを使用して、次いで、さらなる演算を実装するために必要なPBSテストベクトルの数を低減させることができる。一連のPBS値を使用してさらなる演算を実装できることを考慮されたい。ここでは、層内に異なるエンコーディングが存在するのと同じ数のPBSテストベクトル(PBS演算中に使用されるアレイまたはルックアップテーブル)が必要になる。所与の層のスケーリング係数が等しくなるようにエンコーディングが選定されるため、必要なテストベクトルの数が異なるシフトの数によって決定されることを意味する。特別な考慮をせずに、これは一般に、層内の値(ニューラルネットワークの場合はニューロン)と同数のPBSテストベクトルが存在することを意味する。
【0201】
VGGのResnetなどの大規模ネットワークのように、何百万もの値があるとき、さまざまなテストベクトルの数が大幅に大きくなりすぎ得る。
【0202】
しかし、すべての個々のシフトを有する代わりに、シフトを、ほぼ等しいシフトを再グループ化するビンにパックすることができる。次に、同じビン内の値については、シフトが同じになるように強制する。例えば、値は、平均のシフトの平均、またはビンのシフトの中央値であり得る。その後、同じビン内のすべての値で同じテストベクトルを使用できる。したがって、各値について、最終的には次のようになる:
・インデックスi、これは、値が入っているビンのインデックスに対応する:インデックスは0とsの間で、sは所望のテストベクトルの数である。
・したがって、PBSは、層のi番目のテストベクトルを使用して行われる;iは値(またはニューラルネットワーク内のニューロン)ごとに異なることに注意されたい。
【0203】
最後に、非常に大規模なネットワークに対して所与の層に数千または数百万のテストベクトルを有する代わりに、s個のテストベクトルのみを使用する。sは128以下など、非常に小さい場合がある。sが大きいほどネットワークの精度は高くなるが、特にストレージの点でテストベクトルが最も高価になる。したがって、最適なsを見いだすことはトレードオフの問題である。
【0204】
一実施形態では、システム200はグループユニット260を備える。グループ化ユニットは、PBS層の入力となる層内のシフトを決定するように構成されている。PBS層の各テストベクトルは、値の特定のシフトにについて調整される。グループ化ユニット260は、
- 個々のシフトに従ってさらなる演算を実装するプログラマブルブートストラッピング演算をグループ化し、
- グループ内のプログラマブルブートストラッピング演算を単一のプログラマブルブートストラッピング演算に置き換えて、テストベクトルの数を低減させ、
- プログラマブルブートストラッピングの入力のシフトをグループの固有のシフトに調整する
ために構成される。
【0205】
例えば、PBSが続く層があると仮定する。層内でサポートされている最大の範囲サイズが10で、層の規定の範囲サイズが例えば0.5であると仮定すると、その層のスケーリング係数は0.5/10=0.05になり得る。このスケール係数は、層内のすべての値に使用される。層内の第1の値がたまたま最大のサポートされる範囲サイズを持ち、例えば10から20で実行され、層内の第2の値のサポートされる範囲が11から21であると仮定する。スケーリング後、第1の値の範囲は0.5から1になるため、第1の値のエンコーディング関数は0.05x-0.5になる。スケーリング後、第2の値の範囲は0.55から1.05になるため、第1の値のエンコーディング関数は0.05x-0.55になる。これは、この層に続くPBSに対して2つの異なるテストベクトルを有することが必要であることを意味する。(単純に2ではなく)層内のすべての値に一般化すると、層内のすべての値にシフトがあり、その結果、異なるエンコーディング関数が発生し、PBSに対して異なるテストベクトルが必要になる可能性は低くない。
【0206】
一実施形態では、必要なPBSの数が低減する。この例では、第1と第2の値に対して同じテストベクトルを使用することでPBSの数を低減できることが示されている。
【0207】
規定の範囲を減少させたり、サポートされる範囲を増加させたりすることで、シフトの選定が可能となる。例えば、規定の範囲を0.4に設定すると、スケーリング係数は0.4/10=0.04となる。上記の値の10から20の第1の値の範囲は、0.4から0.8の範囲にスケーリングする。上記の値の11から21の第2の値の範囲は、0.44から0.84の範囲にスケーリングする。
【0208】
したがって、同じエンコーディング0.04x-0.40を2つの値に適用できる。第1の値には0-0.4の範囲が与えられ、第2の値には0.04-0.44の範囲が与えられ、PBSが予期する規定の範囲[0,0.5[内に含まれるため、どちらも許容される。したがって、両方の値に単一のシフトが使用されているため、同じテストベクトルを両方の値に使用できる;値が同じ層にあるため、エンコーディング除数はすでに等しかったことに留意されたい。
【0209】
[f0,f1]内に含まれるサイズ10以下のサポートされる範囲を持つ任意の値に対して、まったく同じテストベクトルを使用できることに注意されたく、ここで、f0とf1は実数で、f0=10およびf1=20+(0.5-0.4)/0.04=22.5となり、つまり、[10,22.5[内に含まれるサポートされている範囲を持ち、サイズが10以下の任意の値の場合である。
【0210】
PBSの前に層内の値に適用されるシフトは、専用の演算、例えば余分な加算演算で適用できるが、しばしばシフトを適用することを、先立つ演算と組み合わせることができる(例えば、先立つConvまたはGemmのバイアスにおいて)。
【0211】
変換システム、例えば114および200は、通信インターフェースを備えることができる。通信インターフェースは、さまざまな代替物から選択できる。例えば、インターフェースは、ローカルまたはワイドエリアネットワーク、例えば、インターネットへのネットワークインターフェース、内部または外部データストレージへのストレージインターフェース、キーボード、アプリケーションインターフェース(API)などであってもよい。特に、通信インターフェースは、コンピュータネットワークに接続するように構成され得る。通信インターフェースは、デジタルデータセットを受け取るために使用され得る。データセットは、第1の計算ネットワークを示し、システムによって変換が行われるパラメータ、値などのデータアイテムを含むことができる。データには、範囲または精度パラメータの評価用のサンプルセットも含まれ得る。データには、所望のレベルの精度も含まれ得る。範囲を決定するためのデータセットは、変換されたネットワークの精度を決定するためのデータセットと同じであってもよい。
【0212】
システム114および/または200などの変換システムは、1つ以上のボタン、キーボード、ディスプレイ、タッチスクリーンなどのよく知られている要素を含むことができるユーザインターフェースを有することができる。ユーザインターフェースは、システムの構成、システムの新しいデータへの適用などのためのユーザ対話に対応するように構成されることができる。ストレージは、電子メモリ、例えばフラッシュメモリ、または磁気メモリ、例えばハードディスクなどとして実装され得る。ストレージは、一緒になってストレージを構成する複数のディスクリートなメモリを含むことができる。ストレージは、一時メモリ、例えばRAMを含んでもよい。ストレージはクラウドストレージであってもよい。
【0213】
システム、例えばシステム114および200は、単一のデバイスに実装され得る。通常、システムは、システムに記憶されている適切なソフトウェアを行う1つ以上のマイクロプロセッサを備えている;例えば、そのソフトウェアは、対応するメモリ、例えば、RAMなどの揮発性メモリまたはフラッシュなどの不揮発性メモリにダウンロードおよび/または記憶され得る。あるいは、システムは、全体的または部分的に、プログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)に実装されてもよい。システムは、全体的または部分的に、いわゆる特定用途向け集積回路(ASIC)、例えば、特定の用途に合わせてカスタマイズされた集積回路(IC)として実装され得る。例えば、回路は、例えばVerilog、VHDLなどのハードウェア記述言語を使用してCMOSで実装されてもよい。特に、システムは、暗号プリミティブを評価するための回路を備えることができる。
【0214】
プロセッサ回路は、分散された方法で、例えば複数のサブプロセッサ回路として実装されてもよい。ストレージは複数の分散されたサブストレージに分散され得る。メモリの一部または全部は、電子メモリ、磁気メモリなどであってもよい。例えば、ストレージには揮発性部分と不揮発性部分が含まれ得る。ストレージの一部が読み取り専用であり得る。
【0215】
図6は、演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するための変換方法600の実施形態の一例を概略的に示す。この方法はコンピュータで実装することができる。例えば、プロセッサシステムをそのために構成できる。第2の計算ネットワークの演算は、トーラス完全準同型暗号化(TFHE)された演算であり、第1の計算ネットワーク内の演算は、整数行列乗算を含む行列演算(例えば、y=Wx+B)およびさらなる演算(例えば、z=A(y))を含み、第1の計算ネットワークを第2の計算ネットワークに変換することは、第1のネットワーク内の演算を第2のネットワーク内の対応するTFHE演算に変換することを含み、
- 第1のネットワーク内の演算を変換することは、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得すること(610)、
- 対応するTFHE演算の入力値に対する規定の範囲を決定すること(620)、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d1)を決定すること(630)であって、スケーリング係数を各入力値のサポートされる範囲に適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること(640)
を含む。
【0216】
この方法は複数の演算にも適用できる。例えば、一実施形態では、方法は、
- 第1のネットワーク内の演算を変換することが、
- 同じスケーリング係数を受け取るために複数の演算を選択すること、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得すること、
- 対応するTFHE演算の複数の選択された演算に対して複数の規定の範囲を決定すること、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数を決定することであって、複数の選択された演算のそれぞれの、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズにである、こと
を含む。
【0217】
例えば、複数の選択された演算のそれぞれの、入力値ごとに個々のスケーリング係数を計算し、スケーリング係数が個々のスケーリング係数の最小値として選択されることができ、
- スケーリング係数でスケーリングされた入力値を受け取るように1つ以上の演算を調整する。例えば、この実施形態用にプロセッサシステムを構成することができる。
【0218】
当業者には明らかなように、この方法を実行する多くの異なる方法が可能である。例えば、ステップの順序は示された順序で行えるが、ステップの順序は変更することも、いくつかのステップを並行して実行することもできる。さらに、ステップ間に他の方法ステップが挿入されてもよい。挿入されたステップは、本明細書に説明されているような方法の改良を表す場合もあれば、方法と無関係の場合もある。例えば、いくつかのステップは、少なくとも部分的に並行して行われ得る。さらに、次のステップが開始される前に、所与のステップが完全に終了していない可能性がある。
【0219】
方法の実施形態は、プロセッサシステムに方法600を行わせるための命令を含むソフトウェアを使用して行うことができる。ソフトウェアには、システムの特定のサブエンティティによってとられるステップのみが含まれ得る。ソフトウェアは、ハードディスク、フロッピー、メモリ、光ディスクなどの適切なストレージ媒体に記憶され得る。ソフトウェアは、信号として有線、無線に沿って、またはデータネットワーク、例えばインターネットを使用して送ることができる。ソフトウェアは、ダウンロードおよび/またはサーバ上でのリモート使用のために利用可能にすることができる。この方法の実施形態は、この方法を行うためにプログラマブルロジック、例えばフィールドプログラマブルゲートアレイ(FPGA)を構成するように構成されたビットストリームを使用して実行され得る。
【0220】
本開示の主題は、コンピュータプログラム、特に本開示の主題を実施するように適合されたキャリア上またはキャリア内のコンピュータプログラムにも及ぶことが理解されるであろう。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、および部分的にコンパイルされた形式などのオブジェクトコードの形式、または方法の実施形態の実装での使用に適した任意の他の形式であってもよい。コンピュータプログラム製品に関する実施形態は、記載された方法のうちの少なくとも1つの処理ステップのそれぞれに対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに再分割される、および/または、静的または動的にリンクされる1つ以上のファイルに記憶されたりし得る。コンピュータプログラム製品に関する別の実施形態は、記載されたシステムおよび/または製品の少なくとも1つのデバイス、ユニット、および/または部分のそれぞれに対応するコンピュータ実行可能命令を含む。
【0221】
図7aは、書き込み可能部分1010を有するコンピュータ可読媒体1000、および同じく書き込み可能部分を有するコンピュータ可読媒体1001を示す。コンピュータ読み取り可能媒体1000は、光学的に読み取り可能な媒体の形態で示されている。コンピュータ可読媒体1001は、電子メモリ、この場合はメモリカードの形態で示されている。コンピュータ可読媒体1000および1001はデータ1020を記憶することができ、データは、プロセッサシステムによって実行されると、一実施形態にしたがって変換方法の一実施形態をプロセッサシステムに行わせる命令を示し得る。コンピュータプログラム1020は、物理的マークとして、またはコンピュータ可読媒体1000の磁化によってコンピュータ可読媒体1000上に具現化され得る。しかし、他の適切な実施形態も同様に考えられる。さらに、コンピュータ可読媒体1000は、ここでは光ディスクとして示されているが、コンピュータ可読媒体1000は、ハードディスク、ソリッドステートメモリ、フラッシュメモリなどの任意の適切なコンピュータ可読媒体であってもよく、記録不可または記録可能の場合があることが理解されよう。コンピュータプログラム1020は、プロセッサシステムに前記変換方法を実行させるための命令を含む。コンピュータ可読媒体は、さらに、または代わりに、一実施形態による方法、例えば第2の計算ネットワークの実行結果を含んでもよい。
【0222】
図7bは、FHEデバイスまたはシステムの一実施形態によるプロセッサシステム1140の概略図を示す。プロセッサシステムは、1つ以上の集積回路1110を備える。1つ以上の集積回路1110のアーキテクチャを図7bに概略的に示す。回路1110は、一実施形態による方法を実行し、および/またはそのモジュールもしくはユニットを実装するためにコンピュータプログラム構成要素を行うための処理ユニット1120、例えばCPUを備える。回路1110は、プログラミングコード、データなどを記憶するためのメモリ1122を備える。メモリ1122の一部は読み取り専用であってもよい。回路1110は、通信要素1126、例えば、アンテナ、コネクタ、またはその両方などを備えることができる。回路1110は、方法で定義された処理の一部またはすべてを行うための専用集積回路1124を備え得る。プロセッサ1120、メモリ1122、専用IC1124、および通信要素1126は、相互接続1130、例えばバスを介して相互に接続され得る。プロセッサシステム1110は、それぞれアンテナおよび/またはコネクタを使用して、接触通信および/または非接触通信のために構成され得る。
【0223】
例えば、一実施形態では、プロセッサシステム1140、例えばFHEシステムまたはデバイスは、プロセッサ回路およびメモリ回路を備えることができ、プロセッサは、メモリ回路に記憶されたソフトウェアを行うように構成される。例えば、プロセッサ回路は、Intel Corei7プロセッサ、ARM Cortex-R8などであり得る。一実施形態では、プロセッサ回路はARM CortexM0であってもよい。メモリ回路は、ROM回路であってもよいし、不揮発性メモリ、例えばフラッシュメモリであってもよい。メモリ回路は、揮発性メモリ、例えばSRAMメモリであってもよい。後者の場合、デバイスは、ソフトウェアを提供するために構成された不揮発性ソフトウェアインターフェース、例えばハードドライブ、ネットワークインターフェースなどを備え得る。
【0224】
デバイス1110は、説明した各構成要素のうちの1つを含むものとして示されているが、さまざまな実施形態では、さまざまな構成要素を複製することができる。例えば、プロセッサ1120は、複数のマイクロプロセッサを含んでもよく、複数のマイクロプロセッサは、本明細書に説明される方法を独立して実行するように構成される、または、複数のプロセッサが協働して本明細書に説明される機能を達成するように、本明細書に説明される方法のステップまたはサブルーチンを行うように構成される。さらに、デバイス1110がクラウド計算システムに実装される場合、さまざまなハードウェア構成要素は別個の物理システムに属していてもよい。例えば、プロセッサ1120は、第1のサーバ内の第1のプロセッサを含み、第2のサーバ内の第2のプロセッサを含むことができる。
【0225】
以下の番号付き条項には、企図される非限定的な実施形態が含まれる。
【0226】
条項1.演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するための、コンピュータ実装される方法であって、第2の計算ネットワークの演算が完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算が、整数行列乗算を含む行列演算(y=Wx+B)とさらなる演算(z=A(y))とを含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、
- 第1のネットワーク内の演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得すること、
- 対応するFHE演算の入力値に対する規定の範囲を決定すること、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む、方法。
【0227】
条項2.観察される範囲を取得するために、入力値を監視しながら、入力値のサンプルセットに対して第1のネットワークが評価され、サポートされる範囲が観察される範囲から導出される、条項1に記載の変換方法。
【0228】
条項3.演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するためのシステムであって、第2の計算ネットワークの演算は完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算が、整数行列乗算を含む行列演算(y=Wx+B)およびさらなる演算(z=A(y))を含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、システムが、
- 第1の計算ネットワークを受け取るための通信インターフェース、
- 第1のネットワーク内の演算を変換するために構成されたプロセッサシステム
を含み、演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得すること、
- 対応するFHE演算の入力値に対する規定の範囲を決定すること、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む。
【0229】
上述の実施形態は、本開示の主題を限定するものではなく例示するものであり、当業者であれば多くの代替実施形態を設計できることに留意されたい。
【0230】
特許請求の範囲において、括弧の間に置かれた参照符号は、特許請求の範囲を限定するものとして解釈されないものとする。動詞「含む」およびその活用の使用は、請求項に記載されているもの以外の要素またはステップの存在を排除するものではない。要素の前にある冠詞「1つ(a)」または「1つ(an)」は、そのような要素が複数存在することを排除するものではない。要素のリストにつづく「のうちの少なくとも1つ」などの表現は、リストからの要素のすべてまたはサブセットの選択を表す。例えば、「A、B、およびCのうちの少なくとも1つ」という表現は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、またはA、B、およびCのすべてを含むものとして理解されるべきである。ここで開示される主題は、いくつかの別個の要素を含むハードウェアによって、および適切にプログラムされたコンピュータによって実装され得る。いくつかの部分を列挙したデバイス請求項では、これらの部分のいくつかは、1つの同じハードウェアアイテムによって具現化され得る。特定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組み合わせが有利に使用できないことを示すものではない。
【0231】
特許請求の範囲において、括弧内の参照は、例示的な実施形態の図面の参照符号または実施形態の公式を参照しており、したがって、特許請求の範囲の分かりやすさを増加させている。これらの参照は、特許請求の範囲を限定するものとして解釈されるべきではない。
図1a
図1b
図1c
図1d
図2
図3
図4a
図4b
図5a
図5b
図6
図7a
図7b
【手続補正書】
【提出日】2024-03-13
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するための、コンピュータ実装される方法であって、第2の計算ネットワークの演算は完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算は整数行列乗算を含む行列演算(y=Wx+B)とさらなる演算(z=A(y))とを含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、
- 第1のネットワーク内の演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得することであって、観察される範囲を取得するために、入力値を監視しながら、入力値のサンプルセットに対して第1のネットワークが評価され、サポートされる範囲が観察される範囲から導出される、こと、
- 対応するFHE演算の入力値に対する規定の範囲を決定することであって、規定の範囲が、FHE演算による入力値の正確な処理を保証する、こと、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む、方法。
【請求項2】
行列演算が、行列乗算と行列加算(Wx+B)を含み、行列演算を調整することは、スケーリング係数でスケーリングされた入力値(x’=x/d)を受け取るように、行列乗算ではなく行列加算を調整する(B’=B/d)ことを含む、請求項1に記載の変換方法。
【請求項3】
さらなる演算(A(x))が、スケーリング係数でスケーリングされ、シフト値でシフトされた入力値を受け取るように調整される(A(dx-s))、請求項1に記載の変換方法。
【請求項4】
第1の計算ネットワーク内のさらなる演算(A(x))が、各入力値に適用される関数(f(x))を含み、関数が同じスケーリング係数と複数の異なるシフト値について調整された複数のFHE演算に変換される(f(dx-s))、請求項1に記載の変換方法。
【請求項5】
さらなる演算(A(x))が、次の演算のためのさらなるスケーリング関数でスケーリングされた出力値を生成するようにさらに調整される(A()/d;(A()/d+s)、請求項1に記載の変換方法。
【請求項6】
第1および第2の計算ネットワークがニューラルネットワークである、請求項1に記載の変換方法。
【請求項7】
さらなる演算に対する規定の範囲が、0を含み0から1以下の値(ε)までである、請求項1に記載の変換方法。
【請求項8】
max-pool演算に対する規定の範囲が、活性化関数の規定の範囲の半分のサイズである、請求項1に記載の変換方法。
【請求項9】
サポートされる範囲が、マージン関数を観察される範囲に適用することによって、より大きな観察される範囲から計算される、請求項1に記載の変換方法。
【請求項10】
第1の計算ネットワーク内の演算が、複数の前の演算から入力値を受け取り、第2の計算ネットワーク内の対応する演算が、すべての入力値に対して等しいスケーリング係数でスケーリングされた、対応する複数の前の演算からの入力値を受け取る、請求項1に記載の変換方法。
【請求項11】
複数の前の演算から入力値を受け取る第1の計算ネットワーク内の演算が、加算、減算、または連結である、請求項10に記載の変換方法。
【請求項12】
第2の計算ネットワーク内の値が、スケーリング関数が適用される第1の計算ネットワーク内の値と等しく、スケーリング関数(x’=x/d+s)が、スケーリング係数(1/d)とシフティング加算(s)によって定義され、同じ層内の値が同じスケーリング係数を持つ、請求項1に記載の変換方法。
【請求項13】
- 演算間の層にシンボル的スケーリング係数を割り当てること、
- 第1のネットワークアーキテクチャからシンボル的スケーリング係数の条件を導出すること、
- 導出された条件を使用して、シンボル的スケーリング係数の数を低減させること
を含む、請求項1に記載の変換方法。
【請求項14】
- スケーリング後のサポートされる範囲と規定の範囲の差から入力値のシフト値を決定することを含む、
請求項12に記載の変換方法。
【請求項15】
- 第2ネットワーク内の1つ以上の層に対応する残りのシンボル的スケーリング係数については、スケーリング係数がシンボル的スケーリング係数に関連付けられており、対応する1つ以上の層内のサポートされる範囲に適用されるスケーリング係数が、対応する1つ以上の層の規定の範囲に適合する、
請求項13に記載の変換方法。
【請求項16】
あるスケーリング係数から別のスケーリング係数に移行するために、第1の計算ネットワーク内の演算に対応する2つの演算の間に、第2の計算ネットワーク内のさらなる演算を挿入することを含む、請求項1に記載の変換方法。
【請求項17】
さらなる演算が整数乗算である、請求項16に記載の変換方法。
【請求項18】
さらなる演算(A(x))が、それぞれが個々のシフト値に対して調整されたテストベクトルを有する複数のプログラマブルブートストラッピング演算として第2の計算ネットワーク内で実装され、方法が、
- 個々のシフトに従ってさらなる演算を実装するテストベクトルをグループ化すること、
- グループ内のテストベクトルを単一のプログラマブルブートストラッピング演算で置き換え、テストベクトルの数を低減させること、
- 対応するプログラマブルブートストラッピングの入力のシフトをグループの1つのシフトに調整すること
をさらに含む、請求項1に記載の変換方法。
【請求項19】
演算の第1の計算ネットワークおよび第2の計算ネットワークが、画像を入力としてとるように構成されている、請求項1に記載の変換方法。
【請求項20】
さらなる演算が、活性化関数、ReLu関数、シグモイド関数、ソフトマックス関数、ソフトプラス関数、ソフトサイン関数、tanh関数、selu関数、elu関数、指数関数、LeakyReLU層、PReLU層、ThresholdedReLU層のうちの1つ以上を含む、請求項1に記載の変換方法。
【請求項21】
- プロセッサシステムによって実行されると、プロセッサシステムに請求項1から20のいずれか一項に記載の方法を行わせる命令、および
- 請求項1から20のいずれか一項に従って取得された第2のネットワークを表すデータ、
のうちのいずれか1つを表すデータ(1020)を含む、一時的または非一時的なコンピュータ可読媒体(1000)。
【請求項22】
演算の第1の計算ネットワークを演算の第2の計算ネットワークに変換するためのシステムであって、第2の計算ネットワークの演算が完全準同型暗号化(FHE)された演算であり、第1の計算ネットワーク内の演算が、整数行列乗算を含む行列演算(y=Wx+B)およびさらなる演算(z=A(y))を含み、第1の計算ネットワークを第2の計算ネットワークに変換することが、第1のネットワーク内の演算を第2のネットワーク内の対応するFHE演算に変換することを含み、システムが、
- 第1の計算ネットワークを受け取るための通信インターフェース、
- 第1のネットワーク内の演算を変換するために構成されたプロセッサシステム
を含み、演算を変換することが、
- 演算の入力値について、第1の計算ネットワーク内の入力値のサポートされる範囲を取得することであって、観察される範囲を取得するために、入力値を監視しながら、入力値のサンプルセットに対して第1のネットワークが評価され、サポートされる範囲は観察される範囲から導出される、こと、
- 対応するFHE演算の入力値に対する規定の範囲を決定することであって、規定の範囲が、FHE演算による入力値の正確な処理を保証する、決定すること、
- 第1の計算ネットワーク内の値のサポートされる範囲のサイズと、第2の計算ネットワーク内の値のスケーリングされた範囲のサイズとの間のスケーリング係数(1/d)を決定することであって、各入力値のサポートされる範囲にスケーリング係数を適用することが、最大でも規定の範囲のサイズである、こと、
- スケーリング係数でスケーリングされた入力値を受け取るように演算を調整すること
を含む、システム。
【国際調査報告】