(57)【特許請求の範囲】
【請求項１】
機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更する演算手順変更部と、
前記演算実行タイミングが到来する度に、前記演算手順変更部による変更後の演算手順にて前記学習パラメータを用いた演算を実行する演算実行部とを有し、
前記演算手順変更部は、
前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値が用いられる演算手順を、前記学習パラメータの値及び前記被演算値が秘匿されるように変更し、前記演算手順における演算順序をシャッフルアルゴリズムを用いて変更する情報処理装置。
【請求項２】
機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更する演算手順変更部と、
前記演算実行タイミングが到来する度に、前記演算手順変更部による変更後の演算手順にて前記学習パラメータを用いた演算を実行する演算実行部とを有し、
前記演算手順変更部は、
前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値をシャミアの秘密分散法に基づき変更する情報処理装置。
【請求項３】
前記演算手順変更部は、
前記学習パラメータの値及び前記被演算値以外の他の値の追加により前記演算手順を変更する請求項１に記載の情報処理装置。
【請求項４】
前記演算手順変更部は、
前記他の値を用いた加算の追加により前記演算手順を変更する請求項３に記載の情報処理装置。
【請求項５】
前記演算手順変更部は、
前記他の値を用いた乗算の追加により前記演算手順を変更する請求項３に記載の情報処理装置。
【請求項６】
前記演算手順変更部は、
前記学習パラメータの値及び前記被演算値をシャミアの秘密分散法に基づき変更する請求項１に記載の情報処理装置。
【請求項７】
前記演算手順変更部は、
前記シャッフルアルゴリズムとして、フィッシャー−イェーツのシャッフル又はサットロのアルゴリズムを用いる請求項１に記載の情報処理装置。
【請求項８】
前記演算手順変更部は、
乱数を用いて、前記演算手順を変更する請求項１又は７に記載の情報処理装置。
【請求項９】
コンピュータが、機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更し、
前記演算実行タイミングが到来する度に、前記コンピュータが、変更された変更後の演算手順にて前記学習パラメータを用いた演算を実行し、
前記コンピュータが前記変更前の演算手順とは異なる演算手順に変更する際、前記コンピュータが、前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値が用いられる演算手順を、前記学習パラメータの値及び前記被演算値が秘匿されるように変更し、前記演算手順における演算順序をシャッフルアルゴリズムを用いて変更する情報処理方法。
【請求項１０】
機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更する演算手順変更処理と、
前記演算実行タイミングが到来する度に、前記演算手順変更処理による変更後の演算手順にて前記学習パラメータを用いた演算を実行する演算実行処理とをコンピュータに実行させる情報処理プログラムであって、
前記演算手順変更処理が、
前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値が用いられる演算手順を、前記学習パラメータの値及び前記被演算値が秘匿されるように変更し、前記演算手順における演算順序をシャッフルアルゴリズムを用いて変更する情報処理プログラム。
【請求項１１】
コンピュータが、機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更し、
前記演算実行タイミングが到来する度に、前記コンピュータが、変更された変更後の演算手順にて前記学習パラメータを用いた演算を実行し、
前記コンピュータが前記変更前の演算手順とは異なる演算手順に変更する際、前記コンピュータが、前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値をシャミアの秘密分散法に基づき変更する情報処理方法。
【請求項１２】
機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更する演算手順変更処理と、
前記演算実行タイミングが到来する度に、前記演算手順変更処理による変更後の演算手順にて前記学習パラメータを用いた演算を実行する演算実行処理とをコンピュータに実行させる情報処理プログラムであって、
前記演算手順変更処理が、
前記学習パラメータの値及び前記学習パラメータと演算される値である被演算値をシャミアの秘密分散法に基づき変更する情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【０００２】
近年、インターネットの普及に伴い、インターネットを利用した多種多様なサービスが提供されている。そのうちの一つとして、ディープラーニングに代表される機械学習を用いた金融サービス、検索エンジン、パターン認識等のサービスが増加している。
一方で、サイバー攻撃による機密情報等の情報漏洩といったセキュリティインシデントが多数報告されている。そして、セキュリティインシデントによる情報資産の流出を防ぐため、データの暗号化といったサイバー攻撃に対するセキュリティ対策が取られるようになった。【０００３】
機械学習を用いたサービスにおいては、機械学習の学習モデルを構成するモデルアーキテクチャ及び学習により値が調整される学習パラメータといった学習モデル情報は、サービスの品質を決定する重要な情報であり、産業上の価値を有する一つの情報資産とされている。そして、その学習モデル情報の盗難を目的としたサイバー攻撃の存在が指摘されている。そこで、学習モデル情報をサイバー攻撃から保護するセキュリティ対策が検討されている。
例えば、特許文献１では、耐タンパ性を有するセキュアエレメントに学習モデル情報を格納し、さらに学習モデル情報をスクランブル化して格納することで、学習モデル情報をサイバー攻撃から保護する方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１９−１０１８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の手法では、学習モデル情報をスクランブル化してセキュアエレメントに格納するが、演算実行時には学習モデル情報はプロセッサにデスクランブルされ読み出され演算に用いられる。
そのため、演算実行時に発生する消費電力、漏洩電磁波といったサイドチャネル情報から、学習モデル情報を解析し、学習モデルを模倣するＭｏｄｅｌ  Ｒｅｖｅｒｓｅ−Ｅｎｇｉｎｅｅｒｉｎｇ攻撃手法から学習モデル情報を保護することが出来ないという課題があった。【０００６】
本開示は、上記のような課題を解決することを主な目的とする。具体的には、本開示は、Ｍｏｄｅｌ  Ｒｅｖｅｒｓｅ−Ｅｎｇｉｎｅｅｒｉｎｇ攻撃手法から学習モデル情報である学習パラメータを保護することを主な目的とする。
【課題を解決するための手段】
【０００７】
本開示に係る情報処理装置は、
機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる前記変更前の演算手順とは異なる演算手順に変更する演算手順変更部と、
前記演算実行タイミングが到来する度に、前記演算手順変更部による変更後の演算手順にて前記学習パラメータを用いた演算を実行する演算実行部とを有する。
【発明の効果】
【０００８】
本開示によれば、Ｍｏｄｅｌ  Ｒｅｖｅｒｓｅ−Ｅｎｇｉｎｅｅｒｉｎｇ攻撃手法から学習パラメータを保護することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る情報処理装置のハードウェアの構成例を示す図。
【図２】実施の形態１に係る情報処理装置の機能構成例を示す図。
【図３】実施の形態１に係る情報処理装置の動作例を示すフローチャート。
【図４】実施の形態１に係る情報処理装置の演算処理を示すフローチャート。
【図５】実施の形態１に係る学習モデルのユニットの演算手順を示す図。
【図６】実施の形態１に係る演算手順の変更を示す図。
【図７】実施の形態１の変形例１に係る演算手順の変更を示す図。
【図８】実施の形態１の変形例２に係る演算手順の変更を示す図。
【図９】実施の形態１の変形例３に係る演算手順の変更を示す図。
【図１０】実施の形態２に係る情報処理装置の演算処理を示すフローチャート。
【図１１】実施の形態２に係る演算手順の変更を示す図。
【図１２】実施の形態３に係る情報処理装置の演算処理を示すフローチャート。
【図１３】実施の形態３に係る演算手順の変更を示す図。
【発明を実施するための形態】
【００１０】
以下、本開示の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
なお、以下の実施の形態では、学習モデルの基となる機械学習手法の例として、ニューラルネットワークを用いた手法を用いて説明を進める。
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係る情報処理装置１のハードウェア構成例を示す。
情報処理装置１は、コンピュータである。
情報処理装置１は、後述の学習モデル１１０を用いて、学習処理及び推論処理を行う情報処理装置である。
なお、学習処理は、例えば教師あり学習において教師データを与え、後述の学習パラメータ２２０を調整する処理である。また、推論処理は、学習処理によって調整された学習パラメータ２２０に基づき、未知のデータについての予測又は識別等を行う処理である。
情報処理装置１は、プロセッサ１０、メモリ１１、補助記憶装置１２、入出力Ｉ／Ｆ１３、通信装置１４、及び乱数発生器１５を備え、信号線を介して互いに接続される。
なお、情報処理装置１の動作手順は、情報処理方法に相当する。また、情報処理装置１の動作を実現するプログラムは、情報処理プログラムに相当する。
【００１２】
プロセッサ１０は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１０は、具体例としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
【００１３】
メモリ１１は、データを一時的に記憶する記憶装置である。メモリ１１は、具体例としては、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１４】
補助記憶装置１２は、後述する演算手順変更部１００、及び演算実行部１０１の機能を実現するプログラムを保管する補助記憶装置である。補助記憶装置１２は、具体例としては、ハードディスクである。
また、補助記憶装置１２は、ＳＳＤ（登録商標、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＳＤ（登録商標、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、ＣＦ（登録商標、ＣｏｍｐａｃｔＦｌａｓｈ）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（登録商標、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）といった可搬記録媒体であってもよい。
補助記憶装置１２に記憶された演算手順変更部１００、及び演算実行部１０１の機能を実現するプログラムは、メモリ１１によりロードされる。また当該プログラムはプロセッサ１０に読み出され、実行される。
【００１５】
また、補助記憶装置１２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ１０により実行される。
プロセッサ１０はＯＳの少なくとも一部を実行しながら、演算手順変更部１００、及び演算実行部１０１の機能を実現するプログラムを実行する。
プロセッサ１０がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
【００１６】
また、演算手順変更部１００、及び演算実行部１０１の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、プロセッサ１０、メモリ１１、補助記憶装置１２内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
【００１７】
また、演算手順変更部１００、及び演算実行部１０１の機能を実現するプログラムは、ハードディスク、ＳＳＤ（登録商標）、ＳＤ（登録商標）メモリカード、ＣＦ（登録商標）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（登録商標）といった可搬記録媒体に格納されていてもよい。
そして、演算手順変更部１００、及び演算実行部１０１の機能を実現するプログラムを流通させてもよい。
【００１８】
通信装置１４は、信号線を介して接続先とのデータの通信処理を実行する電子回路である。通信装置１４は、具体例としては、Ｅｔｈｅｒｎｅｔ（登録商標）用の通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００１９】
乱数発生器１５は、でたらめな乱数を発生させる電子回路である。また、乱数発生器１５は、プロセッサ１０で実現されるプログラムであってもよい。
【００２０】
図２は、本実施の形態に係る情報処理装置１の機能構成例を示す図である。
情報処理装置１は、演算手順変更部１００、演算実行部１０１、及び記憶部２００を備える。
【００２１】
演算手順変更部１００は、後述の学習パラメータ２２０を用いる演算手順を変更する。
具体的には、演算手順変更部１００は、学習パラメータ２２０を用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を変更する。なお、演算手順変更部１００は、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる、変更前の演算手順とは異なる演算手順に変更する。
演算手順変更部１００で行われる処理は演算手順変更処理に相当する。
【００２２】
演算実行部１０１は、学習モデル１１０に定められ、演算手順変更部１００が変更した演算手順に基づき、演算を実行する。
具体的には、演算実行部１０１は、演算実行タイミングが到来する度に、演算手順変更部１００による変更後の演算手順にて学習パラメータ２２０を用いた演算を実行する。
演算実行部１０１で行われる処理は演算実行処理に相当する。
なお、学習モデル１１０は、機械学習に基づく演算手順を定めたモデルである。学習モデル１１０は、後述の学習モデル情報により決定される。
なお、本実施の形態では、学習モデル１１０はニューラルネットワークである。
【００２３】
記憶部２００は、情報処理装置１の学習処理及び推論処理に用いられる学習モデル情報が格納される記憶領域である。学習モデル情報は、具体的には、モデルアーキテクチャ２１０及び学習パラメータ２２０である。
なお、モデルアーキテクチャ２１０は、具体的には、ニューラルネットワークにおける、ユニット数、層数、又は活性化関数といった学習処理によって調整されないパラメータである。
図２では、学習モデル１１０の丸はユニットを示す。また、丸の列が層を示す。したがって、モデルアーキテクチャ２１０のユニット数、層数は、それぞれ、１４、４であることを示す。
【００２４】
また、学習パラメータ２２０は、具体的には、ニューラルネットワークにおける、重み、又はバイアスといった学習処理によって値が調整されるパラメータである。
記憶部２００は、メモリ１１及び補助記憶装置１２により実現される。
また、モデルアーキテクチャ２１０、及び学習パラメータ２２０は、ハードディスク、ＳＳＤ（登録商標）、ＳＤ（登録商標）メモリカード、ＣＦ（登録商標）、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（登録商標）といった可搬記録媒体に格納されていてもよい。
また、モデルアーキテクチャ２１０、及び学習パラメータ２２０は、通信装置１４を介した接続先に格納されていてもよい。
【００２５】
また、演算手順変更部１００、演算実行部１０１、及び記憶部２００の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、情報処理装置１は、処理回路により実現されてもよい。処理回路は、例えば、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）である。
この場合は、演算手順変更部１００、演算実行部１０１、及び記憶部２００は、それぞれ処理回路の一部として実現される。
なお、本明細書では、プロセッサと処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【００２６】
＊＊＊動作の説明＊＊＊
次に、図３のフローチャートを用いて、本実施の形態に係る情報処理装置１の動作例について説明する。
なお、本実施の形態では、機械学習の処理の例として、推論処理を用いて説明を進める。
【００２７】
まず、ステップＳ１００では、演算実行部１０１は、入出力Ｉ／Ｆ１３を介して入力データを取得する。
【００２８】
次に、ステップＳ１１０では、演算実行部１０１は、記憶部２００に格納されている学習モデル情報である、モデルアーキテクチャ２１０、及び学習パラメータ２２０をロードする。
【００２９】
次に、ステップＳ１２０では、演算実行部１０１は、ロードした学習モデル情報に基づき学習モデル１１０が定め、演算手順変更部１００が変更した演算手順にて演算を実行する。なお、演算手順変更部１００が演算を実行するタイミングは、演算実行タイミングである。演算の処理の詳細は後述する。
【００３０】
そして、ステップＳ１３０では、演算実行部１０１は、入出力Ｉ／Ｆ１３を介して演算結果を出力する。
【００３１】
図４は、本実施の形態に係る情報処理装置１の演算処理例を示すフローチャートである。
なお、本実施の形態では、学習パラメータ２２０の値は、学習モデル１１０で定められた各々のユニットにおける重みである。また、学習パラメータ２２０の値と演算される被演算値は学習モデル１１０で定められた各々のユニットにおける入力値である。
【００３２】
まず、ステップＳ２００では、演算実行部１０１は、学習モデル１１０で定められたニューラルネットワークの１つのユニットを指定する。
具体的には、演算実行部１０１は、２層目のユニットから指定されていないユニットを順に指定する。また、演算実行部１０１は、各層の全てのユニットを指定済みであれば、次の層のユニットを指定する。具体例としては、演算実行部１０１は、２層目の全てのユニットが指定済みであれば、３層目のいずれかのユニットを指定する。
【００３３】
次に、ステップＳ２１０では、演算手順変更部１００は、マスキングを実施する。
具体的には、演算実行部１０１は、指定したユニットに入力される複数の入力値及び複数の重みを演算手順変更部１００へ通知する。
演算手順変更部１００は、演算実行部１０１からの通知を受け、乱数発生器１５より乱数を取得する。そして、演算手順変更部１００は、乱数発生器１５より取得した乱数を用いて、演算実行部１０１から通知された値をマスキングする。マスキングの詳細は後述する。
【００３４】
さらに、演算手順変更部１００は、乱数発生器１５より取得した乱数及び演算実行部１０１から通知された値に基づき、アンマスキングに用いる値を算出し、記憶する。
アンマスキングとは、マスキング後の値を用いて演算した結果を、マスキングを実施せずに演算した結果と同一にする処理である。
そして、演算手順変更部１００は、マスキング後の値を演算実行部１０１に通知する。
【００３５】
次に、ステップＳ２２０では、演算実行部１０１は、演算手順変更部１００より通知されたマスキング後の値を用いて演算を実行する。マスキング後の演算の詳細は後述する。
そして、演算実行部１０１は、演算結果を演算手順変更部１００へ通知する。
【００３６】
次に、ステップＳ２３０では、演算手順変更部１００は、演算実行部１０１より通知された演算結果にアンマスキングを実施する。アンマスキングの詳細は後述する。
このアンマスキングにより得られる演算結果は、マスキングを実施する前の重みと入力値とを用いた演算結果と同一となる。
そして、演算手順変更部１００は、このアンマスキングにより得られる演算結果を演算実行部１０１に通知する。
【００３７】
次に、ステップＳ２４０では、演算実行部１０１は、演算手順変更部１００より通知された演算結果に、順に、バイアスの加算、活性化関数の演算を実行する。
なお、活性化関数の演算を実行した結果は、下層のユニットに入力される値となる。又は、下層のユニットが無い場合は、出力される演算結果となる。
【００３８】
演算手順変更部１００は、ユニットへの入力値にマスキングを行い、演算実行部１０１にマスキング後の値を用いた演算を行わせ、演算実行部１０１の演算結果にアンマスキングを行い、また、演算実行部１０１にアンマスキング後の値を用いたバイアスの加算及び活性化関数の演算を行わせることで演算手順を変更する。演算手順の変更前の演算結果（活性化関数の演算結果）と演算手順の変更後の演算結果（活性化関数の演算結果）は同一である。
このように、演算手順変更部１００は、活性化関数を用いた演算の演算結果の同一性を維持しつつ、演算手順を変更する。そして、演算実行部１０１は、変更後の演算手順にて演算を行う。具体的には、演算実行部１０１は、ユニットへの入力値に対して演算を行うのではなく、演算手順変更部１００によるマスキング後の値に対して演算を行う。また、演算実行部１０１は、ユニットへの入力値に対する演算結果に対して活性化関数の演算を実行するのではなく、マスキング後の値に対する演算結果を演算手順変更部１００に出力し、演算手順変更部１００によるアンマスキング後の値に対してバイアスの加算及び活性化関数の演算を実行する。
【００３９】
次に、ステップＳ２５０では、演算実行部１０１は、演算が終了したか否かを判定する。
具体的には、演算実行部１０１は、学習モデル１１０で定めた１層目のユニットを除く全てのユニットが指定済みであるか否かを確認する。
そして、演算実行部１０１は、学習モデル１１０で定めた１層目のユニットを除く全てのユニットが指定済みであることを確認すれば、演算処理は終了する。
一方、演算実行部１０１は、学習モデル１１０で定めた１層目のユニットを除くユニットに指定済みでないユニットがあることを確認すれば、処理はステップＳ２００に戻る。
【００４０】
次に、図５及び図６を用いて、マスキング、マスキング後の演算、及びアンマスキングの例を説明する。
図５は、学習モデル１１０の１つのユニットの演算手順の例を図示したものである。
入力値はそれぞれｘ０、ｘ１、ｘ２である。また、重みはそれぞれｗ０、ｗ１、ｗ２である。
入力値ｘ０、ｘ１、ｘ２と重みｗ０、ｗ１、ｗ２とは、同じ添え字の値の組合せで乗算される。そして、それら各々の乗算値の総和が算出される。総和は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２である。
その後、その総和にバイアスｂ０が加算される。そして、そのバイアスｂ０の加算後の値は活性化関数による演算が行われ出力ｙ０として出力される。
【００４１】
図６は、図５の演算手順に、加算によるマスキングとアンマスキングの処理とを実施し、変更した演算手順の例を図示したものである。
重みｗ０、ｗ１、ｗ２の各々は、まず乱数ｍと加算され、マスキングされる。このように、学習パラメータ２２０の値及び被演算値のうち少なくともいずれか一方を、乱数発生器１５により発生させた乱数を加算又は乗算することで秘匿する処理がマスキングである。
その後、入力値ｘ０、ｘ１、ｘ２とマスキング後の重みｗ０＋ｍ、ｗ１＋ｍ、ｗ２＋ｍとは、同じ添え字の値の組合せで乗算される。そして、それら各々の乗算値の総和が算出される。総和は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２＋ｍ（ｘ０＋ｘ１＋ｘ２）である。
そして、その総和は、演算手順変更部１００が算出し、記憶するアンマスキングに用いられる値−ｍ（ｘ０＋ｘ１＋ｘ２）と加算され、アンマスキングされる。このアンマスキングにより、バイアスｂ０が加算される前の演算結果は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２となり、マスキングを実施しない場合のバイアスｂ０が加算される前の演算結果と同一となる。
なお、加算によるマスキングの場合は、アンマスキングの実施はバイアスｂ０が加算された後であってもよい。
【００４２】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態では、学習モデルで定められた演算手順に、乱数を用いたマスキングの処理とアンマスキングの処理が追加される。このため、演算実行タイミングの度に、不規則に演算手順が変更される。これにより、演算実行時に発生するサイドチャネル情報が不規則に変化する。したがって、学習モデルである学習パラメータの解析を防ぐことが可能である。
なお、本実施の形態では、学習モデルの基となる機械学習手法の例として、ニューラルネットワークを用いた手法を用いて説明した。しかし、これに限らず、ディープラーニング、回帰法、決定木学習、ベイズ法、クラスタリング等の手法に基づく学習モデルであってもよい。
また、機械学習の処理は推論処理に限らず、学習処理に適用されてもよい。
【００４３】
＊＊＊他の構成＊＊＊
＜変形例１＞
実施の形態１では、学習パラメータ２２０の値である重みに乱数を加算してマスキングを実施した。しかし、重みに乱数を乗算してマスキングしてもよい。この変形例１について、実施の形態１と異なる点を説明する。
【００４４】
図７は、図５の演算手順に、重みへの乗算によるマスキングの処理とアンマスキングの処理とを実施し、変更した演算手順の例を図示したものである。
重みｗ０、ｗ１、ｗ２の各々は、まず乱数ｍと乗算され、マスキングされる。
その後、入力値ｘ０、ｘ１、ｘ２とマスキング後の重みｍｗ０、ｍｗ１、ｍｗ２とは、同じ添え字の値の組合せで乗算される。そして、それら各々の乗算値の総和が算出される。総和は、ｍｘ０ｗ０＋ｍｘ１ｗ１＋ｍｘ２ｗ２である。
そして、その総和は、演算手順変更部１００が算出し、記憶するアンマスキングに用いられる値１／ｍと乗算され、アンマスキングされる。このアンマスキングにより、バイアスｂ０が加算される前の演算結果は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２となり、マスキングを実施しない場合のバイアスｂ０が加算される前の演算結果と同一となる。
【００４５】
＜変形例２＞
変形例２として、被演算値である入力値に乱数を加算してマスキングを実施してもよい。
図８は、図５の演算手順に、入力値への加算によるマスキングの処理とアンマスキングの処理とを実施し、変更した演算手順の例を図示したものである。
入力値ｘ０、ｘ１、ｘ２の各々は、まず乱数ｍと加算され、マスキングされる。
その後、マスキング後の入力値ｘ０＋ｍ、ｘ１＋ｍ、ｘ２＋ｍと重みｗ０、ｗ１、ｗ２は、同じ添え字の値の組合せで乗算される。そして、それら各々の乗算値の総和が算出される。総和は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２＋ｍ（ｗ０＋ｗ１＋ｗ２）である。
そして、その総和は、演算手順変更部１００が算出し、記憶するアンマスキングに用いられる値−ｍ（ｗ０＋ｗ１＋ｗ２）と加算され、アンマスキングされる。このアンマスキングにより、バイアスｂ０が加算される前の演算結果は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２となり、マスキングを実施しない場合のバイアスｂ０が加算される前の演算結果と同一となる。
なお、加算によるマスキングの場合は、アンマスキングの実施はバイアスｂ０が加算された後であってもよい。
【００４６】
＜変形例３＞
変形例３として、被演算値である入力値に乱数を乗算してマスキングを実施してもよい。
図９は、図５の演算手順に、入力値への乗算によるマスキングの処理とアンマスキングの処理とを実施し、変更した演算手順の例を図示したものである。
入力値ｘ０、ｘ１、ｘ２の各々は、まず乱数ｍと乗算され、マスキングされる。
その後、マスキング後の入力値ｍｘ０、ｍｘ１、ｍｘ２と重みｗ０、ｗ１、ｗ２は、同じ添え字の値の組合せで乗算される。そして、それら各々の乗算値の総和が算出される。総和は、ｍｘ０ｗ０＋ｍｘ１ｗ１＋ｍｘ２ｗ２である。
そして、その総和は、演算手順変更部１００が算出し、記憶するアンマスキングに用いられる値１／ｍと乗算され、アンマスキングされる。このアンマスキングにより、バイアスｂ０が加算される前の演算結果は、ｘ０ｗ０＋ｘ１ｗ１＋ｘ２ｗ２となり、マスキングを実施しない場合のバイアスｂ０が加算される前の演算結果と同一となる。
【００４７】
実施の形態２．
本実施の構成では、演算順序を変更する処理の例を説明する。
本実施の形態では、主に実施の形態１との差異を説明する。
なお、以下で説明していない事項は、実施の形態１と同様である。
【００４８】
図１０は、本実施の形態に係る情報処理装置１の演算処理例を示すフローチャートである。なお、実施の形態１と同一の動作には同一番号を付してその説明を省略する。
ステップＳ２００が完了した後、ステップＳ３００では、演算手順変更部１００は、演算の順序を変更する。
具体的には、演算実行部１０１は、指定したユニットに入力される複数の入力値及び複数の重みを用いた演算の演算順序を演算手順変更部１００へ通知する。
次に、演算手順変更部１００は、乱数発生器１５より乱数を取得し、変更後の演算順序を決定する。演算手順変更部１００は、具体例としては、フィッシャー−イェーツのシャッフルを用いて演算順序を決定する。なお、変更後の演算順序の決定には、フィッシャー−イェーツのシャッフルに限らず、サットロのアルゴリズムといったその他のシャッフルアルゴリズムを用いてもよい。
そして、演算手順変更部１００は、決定した変更後の演算順序を演算実行部１０１に通知する。
【００４９】
次に、ステップＳ３１０では、演算実行部１０１は、演算手順変更部１００より通知された変更後の演算順序に基づき、演算を実行する。
その後、演算実行部１０１は、順に、バイアスの加算、活性化関数の演算を実行する。
【００５０】
次に、図１１を用いて、本実施の形態に係る演算手順の変更例を示す。
図１１では、左端の欄に演算の順序を示す。また、変更前、変更後の順序を示す。
変更前の順序は、順に、演算１：ｘ０×ｗ０、演算２：ｘ１×ｗ１、演算３：ｘ２×ｗ２であることが示されている。
また、変更後の演算順は、順に、演算１：ｘ２×ｗ２、演算２：ｘ０×ｗ０、演算３：ｘ１×ｗ１となったことが示される。
【００５１】
以上のように、本実施の形態では、学習モデルで定められた演算手順に、乱数を用いた演算順序を変更する処理が追加される。このため、演算実行タイミングの度に、不規則に演算手順が変更される。これにより、演算実行時に発生するサイドチャネル情報が不規則に変化する。したがって、学習モデル情報である学習パラメータの解析を防ぐことが可能である。
【００５２】
実施の形態３．
本実施の形態では、シャミアの秘密分散法に基づき、学習パラメータ２２０の値及び学習パラメータ２２０と演算される被演算値を秘匿する秘密分散処理を実施する例を説明する。
なお、本実施の形態では、学習パラメータ２２０の値は、学習モデル１１０で定められた各々のユニットにおける重みである。また、学習パラメータ２２０の値と演算される被演算値は学習モデル１１０で定められた各々ユニットにおける入力値である。
本実施の形態では、主に実施の形態２との差異を説明する。
なお、以下で説明していない事項は、実施の形態２と同様である。
【００５３】
図１２は、本実施の形態に係る情報処理装置１の演算処理例を示すフローチャートである。なお、実施の形態２と同一の動作には同一番号を付してその説明を省略する。
【００５４】
ステップＳ２００が完了後、ステップＳ４００では、演算手順変更部１００は、シャミアの秘密分散法に基づき、秘密分散処理を実施する。
具体的には、演算実行部１０１は、指定したユニットに入力される複数の入力値及び複数の重みを演算手順変更部１００へ通知する。
演算手順変更部１００は、演算実行部１０１からの通知を受け、乱数発生器１５より乱数を取得する。
そして、演算手順変更部１００は、乱数発生器１５より取得した乱数を用いて、演算実行部１０１から通知された複数の入力値の各々及び複数の重みの各々から各々５つずつのシェアを生成する。
そして、演算手順変更部１００は、生成したシェアを演算実行部１０１に通知する。秘密分散処理の詳細は後述する。
【００５５】
次に、ステップＳ４１０では、演算実行部１０１は、演算手順変更部１００より通知されたシェアを用いて演算を行う。シェアを用いた演算の詳細は後述する。
そして、演算実行部１０１は、シェアを用いた演算の結果を演算手順変更部１００へ通知する。
【００５６】
次に、ステップＳ４２０では、演算手順変更部１００は、演算実行部１０１から通知されたシェアを用いた演算の結果を用いて、複数の入力値の各々と複数の重みの各々との乗算結果を復元する復元処理を実施する。復元処理の詳細は後述する。
この復元処理により得られる演算結果は、秘密分散処理を実施する前の重みと入力値とを用いた演算結果と同一となる。
そして、演算手順変更部１００は、復元した乗算結果を演算実行部１０１に通知する。
【００５７】
次に、ステップＳ４３０では、演算実行部１０１は、演算手順変更部１００より通知された復元された乗算結果の総和を取る。その後、順に、バイアスの加算、活性化関数の演算を実行する。
【００５８】
演算手順変更部１００は、ユニットへの入力値に秘密分散処理を行い、演算実行部１０１に秘密分散処理後の値を用いた演算を行わせ、演算実行部１０１の演算結果に復元処理を行い、また、演算実行部１０１に復元処理後の値を用いたバイアスの加算及び活性化関数の演算を行わせることで演算手順を変更する。演算手順の変更前の演算結果（活性化関数の演算結果）と演算手順の変更後の演算結果（活性化関数の演算結果）は同一である。
このように、演算手順変更部１００は、活性化関数を用いた演算の演算結果の同一性を維持しつつ、演算手順を変更する。そして、演算実行部１０１は、変更後の演算手順にて演算を行う。具体的には、演算実行部１０１は、ユニットへの入力値に対して演算を行うのではなく、演算手順変更部１００による秘密分散処理後の値に対して演算を行う。また、演算実行部１０１は、ユニットへの入力値に対する演算結果に対して活性化関数の演算を実行するのではなく、復元処理後の値に対する演算結果を演算手順変更部１００に出力し、演算手順変更部１００による復元処理後の値に対してバイアスの加算及び活性化関数の演算を実行する。
【００５９】
次に、図１３を用いて、秘密分散処理、シェアを用いた演算、及び復元処理の詳細な説明をする。
図１３は、本実施の形態に係る演算手順の変更例を示す。
図１３では、秘密分散処理及び復元処理は、複数の入力値の各々と複数の重みの各々との演算の各々で実施されることを示す。
より具体的には、入力値ｘ０と重みｗ０との乗算に係る秘密分散処理と復元処理の例を示す。
演算手順変更部１００は、乱数発生器１５が発生した乱数を用いて識別子を生成する。また、演算手順変更部１００は、生成した識別子を用いて、入力値及び重みをシェアに分散する。
【００６０】
図１３では、識別子は、０、１、２、３、４の５つである。
そして、演算手順変更部１００は、入力値ｘ０を５つの識別子に各々対応した５つのシェアｘ０−０、ｘ０−１、ｘ０−２、ｘ０−３、ｘ０−４に分散することを示す。
また、演算手順変更部１００は、重みｗ０を５つの識別子に各々対応した５つのシェアｗ０−０、ｗ０−１、ｗ０−２、ｗ０−３、ｗ０−４に分散することを示す。
上述の通り、５つの識別子は乱数発生器１５が発生した乱数を用いるため、演算実行タイミングの度に、識別子及び識別子に対応した不規則な値となる。具体例としては、５つの識別子は、１、１０、５、９、３であってもよい。その場合、入力値ｘ０の５つの識別子に対応した５つのシェアは、ｘ０−１、ｘ０−１０、ｘ０−５、ｘ０−９、ｘ０−３となる。また、重みｗ０の５つの識別子に対応した５つのシェアは、ｗ０−１、ｗ０−１０、ｗ０−５、ｗ０−９、ｗ０−３となる。
【００６１】
次に、演算実行部１０１は、生成された各々５つのシェアを、それぞれ、同じ添え字である２つのシェアで乗算する。具体的には、ｘ０−０はｗ０−０と乗算される。また、ｘ０−１はｗ０−１と乗算される。
そして、乗算されて得られた各々の乗算値は、復元処理に用いられる。
【００６２】
次に、復元処理では、演算手順変更部１００は、５つの各々の識別子及び各々の乗算値に基づき、入力値ｘ０と重みｗ０との乗算値を復元する。
【００６３】
なお、本実施の形態では、識別子の個数を５としたが、それに限らず、３以上のいずれかの値でもよい。
【００６４】
以上のように、本実施の形態では、学習モデルで定められた演算手順に、シャミアの秘密分散法に基づき、乱数を用いた秘密分散処理が追加される。このため、演算実行タイミングの度に、不規則に演算手順が変更される。これにより、演算実行時に発生するサイドチャネル情報が不規則に変化する。したがって、学習モデル情報である学習パラメータの解析を防ぐことが可能である。
【００６５】
以上、本開示の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００６６】
１  情報処理装置、１０  プロセッサ、１１  メモリ、１２  補助記憶装置、１３  入出力Ｉ／Ｆ、１４  通信装置、１５  乱数発生器、１００  演算手順変更部、１０１  演算実行部、１１０  学習モデル、２００  記憶部、２１０  モデルアーキテクチャ、２２０  学習パラメータ。
【要約】
演算手順変更部（１００）は、機械学習により値が調整される学習パラメータを用いる演算を実行する演算実行タイミングが到来する度に、不規則に、演算手順を、変更前の演算手順にて演算を実行して得られる演算結果と同一の演算結果が得られる変更前の演算手順とは異なる演算手順に変更する。演算実行部（１０１）は、演算実行タイミングが到来する度に、演算手順変更部（１００）による変更後の演算手順にて学習パラメータを用いた演算を実行する。【図１】
0006808100.tif 000002
【図２】
0006808100.tif 000003
【図３】
0006808100.tif 000004
【図４】
0006808100.tif 000005
【図５】
0006808100.tif 000006
【図６】
0006808100.tif 000007
【図７】
0006808100.tif 000008
【図８】
0006808100.tif 000009
【図９】
0006808100.tif 000010
【図１０】
0006808100.tif 000011
【図１１】
0006808100.tif 000012
【図１２】
0006808100.tif 000013
【図１３】
0006808100.tif 000014