JP7089303B2 - 推論装置、処理システム、推論方法及び推論プログラム - Google Patents

推論装置、処理システム、推論方法及び推論プログラム Download PDF

Info

Publication number
JP7089303B2
JP7089303B2 JP2020550013A JP2020550013A JP7089303B2 JP 7089303 B2 JP7089303 B2 JP 7089303B2 JP 2020550013 A JP2020550013 A JP 2020550013A JP 2020550013 A JP2020550013 A JP 2020550013A JP 7089303 B2 JP7089303 B2 JP 7089303B2
Authority
JP
Japan
Prior art keywords
unit
trained model
encrypted
inference
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020550013A
Other languages
English (en)
Other versions
JPWO2020075396A1 (ja
Inventor
一樹 客野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Axell Corp
Original Assignee
Axell Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Axell Corp filed Critical Axell Corp
Publication of JPWO2020075396A1 publication Critical patent/JPWO2020075396A1/ja
Application granted granted Critical
Publication of JP7089303B2 publication Critical patent/JP7089303B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Description

本発明は、推論装置、推論方法及び推論プログラムに関する。
画像認識、音声認識、及び文字認識などのアプリケーションにおいて、入力層、中間層、及び出力層を含むニューラルネットワーク(Neural Network:NN)を用いた推論処理が用いられている。なお、ニューラルネットワークは、入力層、中間層、及び出力層の各層に演算機能を有する複数のユニット(ニューロン)を含む。また、ニューラルネットワークの各層に含まれるユニットは、それぞれが隣り合う層に含まれるユニットと重み付きのエッジで結合されている。
ニューラルネットワークを用いた推論処理では、中間層を多層にしたニューラルネットワークを用いることにより、推論の制度を向上する技術が知られている。なお、中間層を多層にしたニューラルネットワークを用いた機械学習は、ディープラーニングと呼ばれている。以下の説明では、中間層を多層にしたニューラルネットワークのことを、単にニューラルネットワークともいう。
ディープラーニングでは、ニューラルネットワークが多数のユニットとエッジとを含み演算の規模が大きくなるため、高性能の情報処理装置が必要とされる。また、ディープラーニングは、設定するパラメータの数が多いため、ユーザがパラメータを適宜設定して、情報処理装置に機械学習を実行させ、推論の精度が高い学習済みモデルを得るのは困難である。学習済みモデルとは、ニューラルネットワークのネットワーク構造、重み、及びバイアスを含む、ネットワーク構造に機械学習済みのパラメータが設定されたニューラルネットワークである。重みとは、ニューラルネットワークに含まれるユニット間のエッジに設定される重み係数のことである。バイアスとは、ユニットの発火の閾値である。また、ニューラルネットワークのネットワーク構造のことを、単にネットワーク構造ともいう。
このため、ニューラルネットワークを用いた推論処理を利用するアプリケーションの開発者が、ディープラーニングを実行することにより得られた学習済みモデルをユーザに配布することが行われている。これにより、ユーザは、所有するエッジ側の端末で学習済みモデルを用いた推論処理を実行することができる。なお、エッジ側の端末とは、例えば、ユーザが所有する携帯電話、及びパソコンなどの情報処理装置のことである。以下の説明では、エッジ側の端末のことを、単にエッジ端末ともいう。
関連する技術として、携帯端末と、携帯端末に接続するサーバを有する、携帯端末を用いた察知エージェントシステムがある。携帯端末は、ユーザから取得する情報に含まれる特徴ベクトルを暗号化し、次いで、暗号化された特徴ベクトルをニューラルネットワークの入力層としてサーバに送信する。サーバは、暗号化された特徴ベクトルを受信して、ニューラルネットワークの入力層から隠れ層を計算し、隠れ層の計算結果を携帯端末に送信する。携帯端末は更に、サーバからの隠れ層の計算結果から出力層の計算を行う技術が知られている。
関連する他の技術として、ユーザから学習データを取得し、サーバ側で機械学習することにより得られた学習済みモデルを、ユーザが所有するエッジ端末に配信することにより、エッジ端末で推論処理を実行可能にする技術がある。エッジ端末に学習済みモデルを配信するとき、学習済みモデルは、暗号化された状態で、かつ暗号化された通信経路を経由してエッジ端末に配信される。さらに、エッジ端末が学習済みモデルを利用できる有効期限を設定することにより、学習済みモデルを保護する技術が知られている(例えば、特許文献1及び非特許文献1)。
特開2018-45679号公報
FUJITSU Cloud Service for OSS「Zinraiプラットフォームサービス」ご紹介 インターネット<http://jp.fujitsu.com/solutions/cloud/k5/document/pdf/k5-zinrai-platform-function-overview.pdf>
開発者側で学習した学習済みモデルは、ネットワーク構造、重み、及びバイアスが開示されると、開発者のノウハウとして保護したい学習方法が第三者に推測されることがある。このため、推論技術の分野では、学習済みモデルの内容を秘密状態のまま、学習済みモデルをユーザに利用させる技術が求められている。
前述した推論技術では、暗号化された学習済みモデルは、復号されたあとにエッジ端末側のフレームワークに読み込まれるので、ユーザ側で閲覧及びコピーすることが可能となり、学習済みモデルに含まれるネットワーク構造及び重みが漏洩することがある。
本発明は、一側面として、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止する技術を提供する。
本明細書で開示する推論装置のひとつに、出力部と、判定部と、停止部と、複合部と、推論部とを備える推論装置がある。出力部は、ニューラルネットワークの学習済みモデルの内容を表す情報を出力する。判定部は、学習済みモデルが暗号化された暗号化学習済みモデルが入力されたか否かを判定する。停止部は、暗号化学習済みモデルが入力されたとき、出力部による出力処理を停止する。複合部は、暗号化学習済みモデルが入力されたとき、暗号化学習済みモデルを復号する。推論部は、復号された学習済みモデルを用いて推論をする。
1実施態様によれば、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1のニューラルネットワークを用いた処理システムの一例を示す図である。 実施形態1の顧客装置の一実施例を示す機能ブロック図である。 ライセンス情報の一例を示す図である。 実施形態1の顧客装置が実行する処理の一実施例を説明する図である。 実施形態1の開発装置の一実施例を示す機能ブロック図である。 顧客管理情報の一例を示す図である。 プロダクト情報の一例を示す図である。 実施形態1の開発装置の実行する処理の一実施例を説明する図である。 実施形態1の管理装置の一実施例を示す機能ブロック図である。 製品管理情報の一例を示す図である。 実施形態1の処理システムにおいて実行される処理の一例を示すシーケンス図(その1)である。 実施形態1の処理システムにおいて実行される処理の一例を示すシーケンス図(その2)である。 実施形態2のニューラルネットワークを用いた処理システムの一例を示す図である。 実施形態2の顧客装置の一実施例を示す機能ブロック図である。 実施形態2の開発装置の一実施例を示す機能ブロック図である。 実施形態2の開発装置が実行する処理の一例を説明する図である。 実施形態2の処理装置の一実施例を示す機能ブロック図である。 実施形態2の処理システムにおいて実行される処理の一例を示すシーケンス図である。 実施形態3のニューラルネットワークを用いた処理システムの一例を示す図である。 実施形態3の顧客装置の一実施例を示す機能ブロック図である。 実施形態3の顧客装置が実行する処理の一例を説明する図である。 実施形態3の処理装置の一実施例を示す機能ブロック図である。 実施形態3の処理システムにおいて実行される処理の一例を示すシーケンス図である。 実施形態4のニューラルネットワークを用いた処理システムの一例を示す図である。 実施形態4の顧客装置の一実施例を示す機能ブロック図である。 畳み込みニューラルネットワークの構造を示す図である。 実施形態4の開発装置の一実施例を示す機能ブロック図である。 実施形態4の処理装置の一実施例を示す機能ブロック図である。 実施形態4の処理システムにおいて実行される処理の一例を示すシーケンス図である。 コンピュータ装置の一実施例を示すブロック図である。 DH鍵交換を用いた暗号処理システムの一実施例を示す図である。 公開鍵暗号方式を用いた暗号処理システムの一実施例を示す図である。 暗号化学習済みモデルの暗号化ヘッダの一実施例を示す図である。
[実施形態1]
実施形態1のニューラルネットワークを用いた処理について説明する。
図1は、実施形態1のニューラルネットワークを用いた処理システムの一例を示す図である。
図1を参照して、ニューラルネットワークを用いた処理の概要を説明する。
処理システム200は、例えば、顧客装置1a、1b、1cと、開発装置2と、管理装置3と、保存装置4とを備える。そして、顧客装置1a、1b、1cと、開発装置2と、管理装置3と、保存装置4とは、ネットワーク300を介して通信可能に接続される。また、顧客装置1a、1b、1cと、開発装置2と、管理装置3と、保存装置4とは、例えば、後述するコンピュータ装置である。以下の説明では、顧客装置1aと、顧客装置1bと、顧客装置1cとを特に区別しないとき、単に顧客装置1ともいう。
顧客装置1は、例えば、ユーザが所有する情報処理装置である。顧客装置1は、推論処理を用いたアプリケーションを実行する推論装置及びエッジ端末の一例である。開発装置2は、例えば、学習済みモデルの生成とアプリケーションの作成とをする情報処理装置である。開発装置2は、開発者が所有する学習装置の一例である。学習済みモデルは、ネットワーク構造と、重み及びバイアスとを別々のデータとして含んでもよい。
管理装置3は、例えば、管理者が所有する情報処理装置である。そして、管理装置3は、学習済みモデルの使用を許諾するライセンス情報を生成する。保存装置4は、例えば、開発者が所有する情報処理装置である。なお、保存装置4は、開発者が所有する情報処理装置に限らず、例えば、データの保存及び配信を実行する、第三者が運営するサーバ装置などの情報処理装置でもよい。
開発装置2は、開発者が設定したネットワーク構造を用いてディープラーニングを実行することにより、学習済みモデルを生成する。また、開発装置2は、推論処理を実行する推論DLL(Dynamic Link Library: DLL)を呼び出して利用するアプリケーションを作成する。そして、開発装置2は、学習済みモデルのプロダクト情報の登録を管理装置3に要求する。なお、アプリケーションには、スタブプログラムの始点を指し示すエントリーポイント、及びアプリケーションの実行時にアプリケーションの始点を指し示すとともに推論DLLを呼び出すスタブプログラムが付与されてもよい。推論DLLは、例えば、管理者から開発者に提供される。
管理装置3は、開発装置2から学習済みモデルのプロダクト情報の登録の要求を受信すると、共通鍵を含むプロダクト情報を生成し、プロダクト情報を記憶する。そして、管理装置3は、開発装置2にプロダクト情報を送信する。共通鍵は、暗号化鍵及び復号鍵の一例である。
開発装置2は、管理装置3からプロダクト情報を受信すると、プロダクト情報に含まれる共通鍵を用いて、学習済みモデルを暗号化する。そして、開発装置2は、暗号化学習済みモデルと、推論DLLと、アプリケーションとを含む推論情報4aを保存装置4に送信する。保存装置4は、推論情報4aを受信すると、推論情報4aを記憶する。
顧客装置1は、ユーザからの要求に応じて、保存装置4から推論情報4aを取得する。ユーザは、取得した推論情報4aに含まれる学習済みモデルが暗号化されている場合、顧客装置1を用いて、開発装置2に学習済みモデルの使用を許諾するライセンス情報の発行を要求する。
開発装置2は、顧客装置1からライセンス情報の発行の要求を受信すると、管理装置3にライセンス情報の生成を要求する。管理装置3は、開発装置2からライセンス情報の生成の要求を受信すると、学習済みモデルに対応する、プロダクト情報に含まれる共通鍵を付与したライセンス情報を生成し、開発装置2に送信する。
開発装置2は、管理装置3からライセンス情報を受信すると、顧客装置1にライセンス情報を送信する。顧客装置1は、開発装置2からライセンス情報を受信すると、ライセンス情報に含まれる共通鍵を用いて、推論情報4aに含まれる暗号化学習済みモデルを復号し、推論処理を実行する。具体的には、顧客装置1は、ニューラルネットワークのフレームワークに暗号化学習済みモデルを読み込んだとき、学習済みモデルが暗号化されていると判定し、自動的にライセンスファイルを読み込む。そして、顧客装置1は、ライセンス情報に含まれる共通鍵を用いて、暗号化学習済みモデルを復号する。学習済みモデルが暗号化されているか否かの判定は、フレームワークの機能の一部として実装してもよい。以下の説明では、ニューラルネットワークのフレームワークのことを、単にフレームワークともいう。
以上のように、顧客装置1は、フレームワークに学習済みモデルを読み込むことにより、学習済みモデルが暗号化されているか否かを判定する。そして、顧客装置1は、学習済みモデルが暗号化されている場合には、ライセンス情報を読み込み、ライセンス情報に含まれる共通鍵を用いて暗号化学習済みモデルを復号する。したがって、顧客装置1は、学習済みモデルをユーザ側で閲覧及びコピーすることを困難にし、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1の処理システムについて、より具体的に説明する。
以下の説明では、学習済みモデルが暗号化されている場合について説明する。なお、本発明の顧客装置1は、暗号化されていない学習済みモデルを取得した場合には、学習済みモデルが暗号化されていないことを判定し、学習済みモデルを用いた推論処理を自動的に実行する。
図2は、実施形態1の顧客装置の一実施例を示す機能ブロック図である。
図2を参照して、顧客装置1で実行される処理について説明する。
顧客装置1は、制御部10と、記憶部20とを備える。そして、顧客装置1は、各種情報を表示する表示装置30と接続される。なお、顧客装置1は、表示装置30を含む構成でもよい。
制御部10は、取得部11と、判定部12と、復号部13と、推論部14と、出力部15と、停止部16とを含む。記憶部20は、開発装置2から取得したライセンス情報21を記憶する。ライセンス情報21は、管理装置3で生成される許諾情報の一例である。
ライセンス情報21は、例えば、図3に示すように、プロダクト名と、難読化共通鍵と、顧客名と、有効期限と、機器識別子と、電子署名とを含む。
プロダクト名は、開発装置2が生成した学習済みモデルを識別する識別子である。
難読化共通鍵は、例えば、管理装置3が生成したプロダクト名で識別される学習済みモデルを暗号化及び復号する共通鍵を所定の演算により暗号化した暗号文である。難読化共通鍵は、管理装置3で生成される。
難読化共通鍵は、例えば、ライセンス情報21に含まれるプロダクト名、顧客名、有効期限、及び機器識別子の少なくとも一つと共通鍵との排他的論理和の演算を行うことにより、得られる値でもよい。難読化共通鍵は、例えば、ライセンス情報21に含まれる顧客名、有効期限、及び機器識別子の少なくとも一つと共通鍵との加減算の演算を行うことにより、得られる値でもよい。また、難読化共通鍵は、例えば、公開鍵暗号の秘密鍵で、共通鍵を暗号化した値でもよい。
顧客名は、顧客装置1を利用するユーザを識別する識別子である。例えば、顧客装置1aに記憶される顧客名Aは、顧客装置1aのユーザを識別する識別子である。
有効期限は、学習済みモデルの利用を許諾する期限を示す情報である。
機器識別子は、例えば、顧客装置1に含まれるいずれかの装置を識別する識別子である。顧客装置1に含まれる装置とは、例えば、CPU、及びHDDなどである。識別子は、例えば、CPU、及びHDDなどの機器IDでもよい。ライセンス情報21に含まれる機器識別子は、第1機器識別子の一例である。
電子署名は、ライセンス情報21の内容が改ざんされていないことを証明するために用いられる情報である。電子署名は、例えば、ライセンス情報21に含まれるプロダクト名、顧客名、有効期限、及び機器識別子の少なくとも一つを用いて得られる電子署名用の値を求め、電子署名用の値を公開鍵暗号の秘密鍵で暗号化した値でもよい。電子署名は、管理装置30で生成される。
図2を参照して説明する。
取得部11は、保存装置4から、学習済みモデルが暗号化されているか否かを識別する暗号化識別子が付与された暗号化学習済みモデルと、推論DLLと、アプリケーションとを含む推論情報4aを取得する。
また、取得部11は、ユーザからの要求に応じて、ライセンス情報21の発行を開発装置2に要求することにより、ライセンス情報21を取得する。ライセンス情報21の発行の要求には、使用許諾を要求する学習済みモデルのプロダクト名と、ユーザの顧客名と、希望する有効期限と、顧客装置1に含まれる機器の機器識別子とが含まれる。暗号化識別子は、開発装置2により、学習済みモデルに付与される情報である。機器識別子は、ユーザが顧客装置1に含まれる任意の装置の機器IDを設定してもよいし、ライセンス情報21の発行の要求をするときに、顧客装置1が選択した装置の機器IDでもよい。
判定部12は、ニューラルネットワークの構造及びニューラルネットワークに含まれるエッジの重みの少なくとも一つを含む学習済みモデル(データ)が暗号化された、暗号化学習済みモデルが入力されたか否かを判定する。このとき、判定部12は、暗号化学習済みモデルに付与されている暗号化識別子を参照することにより、暗号化学習済みモデルが入力されたか否かを判定してもよい。
復号部13は、暗号化学習済みモデルが入力されたとき、暗号化学習済みモデルを復号する。復号部13は、ラインセンス情報21に含まれる難読化共通鍵を復号し、復号した共通鍵を用いて暗号化学習済みモデルを復号してもよい。復号部13は、例えば、難読化共通鍵を生成したときと逆の演算をすることにより、難読化共通鍵を復号する。
また、復号部13は、ライセンス情報21に含まれる有効期限を参照し、学習済みモデルを復号するときの時刻が有効期限内に含まれるとき、暗号化学習済みモデルを復号してもよい。復号部13は、ライセンス情報21に含まれる機器識別子と、顧客装置に含まれるいずれかの機器を識別する機器識別子とが一致するとき、学習済みモデルを復号してもよい。顧客装置に含まれる機器を識別する機器識別子は、第2機器識別子の一例である。
推論部14は、復号された学習済みモデルを用いて推論を実行する。
出力部15は、学習済みモデルに含まれる情報を出力する。学習済みモデルに含まれる情報とは、ニューラルネットワークのネットワーク構造、重み、及びバイアスなどである。出力部15は、学習済みモデルに含まれる情報を、例えば、表示装置30に表示させてもよい。
停止部16は、暗号化学習済みモデルが入力されたとき、出力部15による出力処理を停止する。出力処理は、例えば、フレームワークの機能の一部であり、学習済みモデルに含まれる、ネットワーク構造、重み、及びバイアスを表示装置30に表示する機能である。また、出力処理は、例えば、フレームワークの機能の一部であり、学習済みモデルに含まれる、ネットワーク構造、重み、及びバイアスを記録媒体などに出力する機能でもよい。すなわち、停止部16は、暗号化学習済みモデルが入力されたとき、顧客によるネットワーク構造の閲覧及び取得を禁止する。
より具体的には、停止部16は、例えば、ニューラルネットワークの各レイヤーの名称、レイヤーの出力データの名称、レイヤーの出力データのサイズ、ネットワークのサマリー、及びネットワークのプロファイル情報についての、出力部15による出力処理を停止する。ネットワークのサマリーとは、例えば、レイヤーの名称とレイヤーのサイズとを羅列した情報である。また、ネットワークのプロファイル情報とは、各レイヤーの処理時間を含む情報である。
図4は、実施形態1の顧客装置の実行する処理の一実施例を説明する図である。
図4を参照して、推論処理についてより詳細に説明する。図4に示すように、顧客装置1において、推論処理は、推論DLLを制御部10が実行することにより処理される。推論DLLは、例えば、制御部10によって実行されることにより、復号部13と、推論部14として機能する。
ユーザによりアプリケーションが実行されると、判定部12は、取得部11が取得した学習済みモデルに付与されている暗号化識別子を参照し、学習済みモデルが暗号化されているか否かを判定する。なお、推論部14は、学習済みモデルが暗号化されていないとき、取得した学習済みモデルを用いて推論処理を実行する。
判定部12は、取得した学習済みモデルが暗号化されているとき、復号部13と推論部14とを含む推論DLLを呼び出す。
復号部13は、ライセンス情報21に含まれる電子署名の検証をする。例えば、復号部13は、電子署名を生成したときに用いた公開鍵暗号に対応する公開鍵を用いて、電子署名を復号する。また、復号部13は、ライセンス情報21に含まれるプロダクト名、顧客名、有効期限、及び機器識別子の少なくとも一つを用いて、電子署名を生成したときと同じ演算をして電子署名用の値を求める。そして、復号部13は、電子署名を復号した値と、求めた電子署名用の値とが一致するとき、電子署名の検証を承認する。これにより、復号部13は、ライセンス情報21が改ざんされていないことを確認する。
復号部13は、電子署名を承認すると、ライセンス情報21に含まれる難読化共通鍵を復号する。そして、復号部13は、復号した共通鍵を用いて暗号化学習済みモデルを復号する。
推論部14は、復号された学習済みモデルを用いて、推論処理を実行する。そして、推論部14は、推論結果をアプリケーションに出力する。
図5は、実施形態1の開発装置の一実施例を示す機能ブロック図である。
図5を参照して、開発装置2で実行される処理について説明する。
開発装置2は、制御部40と、記憶部50とを備える。
制御部40は、取得部41と、学習部42と、符号化部43と、暗号化部44と、付与部45と、生成部46と、出力部47とを含む。記憶部50は、顧客装置1から取得した顧客管理情報51と、管理装置3から取得したプロダクト情報52とを記憶する。
顧客管理情報51は、顧客からライセンス情報21の発行の要求とともに受信する情報であり、例えば、図6に示すように、プロダクト名と、顧客名と、有効期限と、機器識別子とを含む。
プロダクト名は、顧客装置1から使用の許諾を要求された学習済みモデルを識別する識別子である。
顧客名は、ライセンス情報21の発行を要求したユーザを識別する識別子である。
有効期限は、学習済みモデルの利用を許諾する期限を示す情報である。
機器識別子は、例えば、顧客装置1に含まれるいずれかの装置を識別する識別子である。
プロダクト情報52は、管理装置3にプロダクト情報52の登録の要求をすることにより、管理装置3から取得する情報であり、例えば、図7に示すように、プロダクト名と、開発者名と、難読化共通鍵とを含む。
プロダクト名は、管理装置3にプロダクト情報52の登録を要求した学習済みモデルを識別する識別子である。
開発者名は、プロダクト情報52の登録を要求した開発者を識別する識別子である。
難読化共通鍵は、管理装置3で生成された、学習済みモデルを暗号化及び復号する処理に用いる共通鍵を暗号化した情報である。
図5を参照して説明する。
取得部41は、顧客装置1からプロダクト名と、顧客名と、有効期限と、機器識別子とを含む顧客情報を取得し、顧客管理情報51に格納する。取得部41は、管理装置3にプロダクト情報の登録を要求する。そして、取得部41は、管理装置3で生成されたプロダクト情報52を取得し、記憶部50に記憶させる。プロダクト情報の登録の要求には、学習済みモデルのプロダクト名と学習済みモデルを生成した開発者名とが含まれる。
また、取得部41は、ライセンス情報21の生成の要求を管理装置3に送信する。そして、取得部41は、管理装置3で生成されたライセンス情報を取得する。
学習部42は、開発者が設定したネットワーク構造及び学習のパラメータを用いて、ニューラルネットワークの重みを調整する。学習のパラメータとは、例えば、フレームワークを用いたディープラーニングの学習時に設定する、ユニット数、荷重減衰、スパース正則化、ドロップアウト、学習率、及びオプティマイザーなどを設定するハイパーパラメータである。
符号化部43は、ネットワーク構造、重み及びバイアスの少なくとも一つを含む学習済みモデルを符号化する。これにより、符号化部43は、学習済みモデルが符号化された符号化学習済みモデルを生成する。符号化学習済みモデルは、符号化データの一例である。
暗号化部44は、符号化学習済みモデルを暗号化する。これにより、暗号化部44は、符号化学習済みモデルが暗号化された暗号化学習済みモデルを生成する。
付与部45は、学習済みモデルが暗号化されていることを識別する暗号化識別子を、符号化学習済みモデルが暗号化された暗号化学習済みモデルに付与する。付与部45は、学習済みモデルが暗号化されていないとき、学習済みモデルが暗号化されていないことを識別する暗号化識別子を、学習済みモデルに付与する。
なお、付与部45は、学習済みモデルがネットワーク構造と、重み及びバイアスとを別々のデータとして含むとき、例えば、暗号化されたネットワーク構造に暗号化識別子を付与してもよい。また、付与部45は、学習済みモデルがネットワーク構造と、重み及びバイアスとを別々のデータとして含むとき、例えば、暗号化された重み及びバイアスに暗号化識別子を付与してもよい。
生成部46は、暗号化学習済みモデルと、推論DLLと、アプリケーションとを含む推論情報4aを生成する。アプリケーションは、学習済みモデルを用いた推論処理の結果を用いて、画像認識、音声認識、及び文字認識などの各種処理を実行するプログラムであり、開発者によって作成される。
出力部47は、保存装置4に推論情報4aを出力する。すなわち、出力部47は、符号化学習済みモデルが暗号化された暗号化学習済みモデルを出力する。なお、出力部47は、推論情報4aを、例えば、記録媒体に出力してもよい。この場合には、ユーザは、開発者から記録媒体を受けとり、記録媒体から推論情報4aを読み込ませることにより、取得部11に推論情報4aを取得させてもよい。
また、出力部47は、管理装置3から取得したライセンス情報21を、顧客装置1に出力する。
図8は、実施形態1の開発装置の実行する処理の一実施例を説明する図である。
図8を参照して、開発装置2で実行される暗号化処理についてより詳細に説明する。開発装置2において、暗号化処理は、制御部40が暗号化ツールを実行することにより処理される。暗号化ツールとは、例えば、開発者が学習済みモデルを暗号化するときに用いられるプログラムであり、管理者3から提供される。暗号化ツールは、例えば、制御部40によって実行されることにより、符合化部43と、暗号化部44と、付与部45として機能する。
取得部41は、学習部42により学習済みモデルが生成されると、管理装置3に学習済みモデルに対応するプロダクト情報52の登録を要求する。そして、取得部42は、管理装置3から、管理装置3で生成されたプロダクト情報52を取得し、記憶部50に記憶する。
開発者は、プロダクト情報52が記憶部50に記憶されたあと、プロダクト情報52に含まれるプロダクト名に対応する学習済みモデルの暗号化を開発装置2に要求する。開発装置2は、学習済みモデルの暗号化が要求されると、符号化部43と、暗号化部44と、付与部45とを含む暗号化ツールを起動する。
符号化部43は、学習済みモデルを符号化する。符号化部43は、例えば、学習済みモデルに含まれる重み及びバイアスの少なくとも一つを符号化する。このとき、符号化部43は、符号化のアルゴリズムとして、量子化及びランレングス符号化の少なくとも一つを用いてもよい。
暗号化部44は、プロダクト情報52に含まれる難読化共通鍵を生成したときと逆の演算をして難読化共通鍵を復号する。そして、暗号化部44は、共通鍵を用いて符号化された学習済みモデルを暗号化する。付与部45は、暗号化学習済みモデルに暗号化されていることを識別する暗号化識別子を付与する。以上のように、開発装置2は、暗号化処理を実行することにより、学習済みモデルを暗号化した暗号化学習済みモデルを生成する。暗号化部44は、暗号化のアルゴリズムとして、Data Encryption Standard (DES)、及びAdvanced Encryption Standard (AES)などを適宜選択して使用してもよい。
図9は、実施形態1の管理装置の一実施例を示す機能ブロック図である。
図9を参照して、管理装置3で実行される処理について説明する。
管理装置3は、制御部60と、記憶部70とを備える。
制御部60は、割当部61と、難読化部62と、生成部63と、出力部64とを含む。記憶部70は、開発装置2から取得したプロダクト名に共通鍵を割り当てた製品管理情報71を記憶する。
製品管理情報71は、学習済みモデルのプロダクト名に対する、共通鍵の割り当てを示す情報である。製品管理情報71は、例えば、図10に示すように、プロダクト名と、開発者名と、難読化共通鍵とを含む。
プロダクト名は、プロダクト情報52の登録を要求された学習済みモデルを識別する識別子である。
開発者名は、プロダクト情報52の登録を要求した開発者を識別する識別子である。
難読化共通鍵は、プロダクト名に対応する学習済みモデルに割り当てた共通鍵を難読化した情報である。なお、共通鍵は、難読化しない状態で、製品管理情報71に格納されてもよい。この場合には、顧客装置1は、管理装置3から暗号化されていない共通鍵を、開発装置2を介して受信し、暗号化学習済みモデルの復号を実行してもよい。また、開発装置2は、暗号化されていない共通鍵を管理装置3から受信し、学習済みモデルの暗号化を実行してもよい。以下の説明では、共通鍵は、難読化されている状態で製品管理情報71に格納されているものとして説明する。共通鍵を難読化した状態で製品管理情報71に格納するのは、管理装置3がハッキングされるなどして、製品管理情報71に格納されている情報が盗難された場合において、共通鍵の不正利用を防止するためである。
図9を参照して説明する。
割当部61は、開発装置2からのプロダクト情報の登録の要求に含まれるプロダクト名及び開発者名に共通鍵を割り当てる。
難読化部62は、所定の演算を施すことにより、共通鍵を難読化する。
生成部63は、プロダクト名、開発者名、及び難読化共通鍵を対応付けたプロダクト情報52を製品管理情報71に格納する。
出力部64は、開発装置2からのプロダクト名と開発者名とを含むプロダクト情報52の取得要求に応じて、対応するプロダクト情報52を開発装置2に出力する。なお、出力部64は、プロダクト情報52を、例えば、記録媒体に出力してもよい。この場合には、開発者は、管理者から記録媒体を受けとり、取得部42に記録媒体からプロダクト情報52を読み込ませることにより、プロダクト情報52を取得してもよい。
図11、図12は、実施形態1の処理システムにおいて実行される処理の一例を示すシーケンス図である。
図11、図12を参照して実施形態1の処理システムにおいて実行される処理を説明する。以下の説明において、説明の簡単化のため、顧客装置1の制御部10、開発装置2の制御部40、及び管理装置3の制御部60が実行する処理のことを、顧客装置1、開発装置2、及び管理装置3が実行する処理と記載する。
図11を参照して説明する。
開発装置2は、開発者からニューラルネットワークのネットワーク構造の設定の入力を受け付ける(S101)。開発装置2は、機械学習を実行することにより、ニューラルネットワークに含まれるエッジの重み及びバイアスを調整する(S102)。さらに、開発装置2は、調整した重み及びバイアスを符号化する(S103)。そして、開発装置2は、ネットワーク構造と、符合化した重み及びバイアスと、を含む学習済みモデルを生成する(S104)。
開発装置2は、学習済みモデルのプロダクト名と開発者名とを含むプロダクト情報52の登録要求情報を生成する(S105)。そして、開発装置2は、登録要求情報を管理装置3に送信することにより、管理装置3にプロダクト情報52の登録要求をする(S106)。
管理装置3は、開発装置2から登録要求情報を受信すると、共通鍵を生成し、登録要求情報に含まれるプロダクト名と開発者名とに、共通鍵を割り当てる(S107)。また、管理装置3は、プロダクト名と開発者名とに割り当てた共通鍵を難読化する(S108)。そして、管理装置3は、プロダクト名と開発者名と難読化共通鍵とを関連付けたプロダクト情報52を生成し、製品管理情報71に格納する(S109)。管理装置3は、生成したプロダクト情報52を開発装置2に送信する(S110)。
開発装置2は、管理装置3からプロダクト情報52を受信すると、プロダクト情報52に含まれる難読化共通鍵を復号する(S111)。そして、開発装置2は、復号した共通鍵を用いて、プロダクト情報52に含まれるプロダクト名に対応する学習済みモデルを暗号化する(S112)。開発装置2は、暗号化した学習済みモデルを保存装置4に送信し、保存装置4に暗号化学習済みモデルを記憶させる(S113)。このとき、開発装置2は、暗号化学習済みモデルと、アプリケーションと、推論DLLとを含む推論情報4aを生成し、推論情報を保存装置4に記憶させてもよい。
図12を参照して説明する。
顧客装置1は、ユーザからの要求に応じて保存装置4から学習済みモデルを取得する(S114)。このとき、顧客装置1は、暗号化学習済みモデルと、アプリケーションと、推論DLLとを含む推論情報を保存装置4から取得することにより、推論情報4aに含まれる学習済みモデルを取得してもよい。
顧客装置1は、取得した学習済みモデルが暗号化されているか否かを判定する(S115)。顧客装置1は、取得した学習済みモデルが暗号化されていない場合、学習済みモデルを用いて推論処理を実行する。
顧客装置1は、取得した学習済みモデルが暗号化されているとき、プロダクト名と、顧客名と、有効期限と、機器識別子とを含む顧客情報を生成する(S116)。そして、顧客装置1は、生成した顧客情報を含むライセンス情報21の発行要求を開発装置2に送信する(S117)。
開発装置2は、ライセンス情報21の発行要求を受信すると、ライセンス情報21の発行要求に含まれる顧客情報を顧客管理情報51に格納する(S118)。そして、開発装置2は、顧客情報を含むライセンス情報21の生成要求を管理装置3に送信する(S119)。
管理装置3は、ライセンス情報21の生成要求を受信すると、顧客情報に含まれるプロダクト名に対応するレコードを製品管理情報71から抽出し、ライセンス情報21の発行要求に含まれる顧客情報を用いて電子署名を生成する。また、管理装置3は、抽出したレコードに含まれる難読化共通鍵と、生成した電子署名と、受信した顧客情報とを含むライセンス情報21を生成する(S120)。そして、管理装置3は、生成したライセンス情報21を開発装置2に送信する(S121)。
開発装置2は、管理装置3からライセンス情報21を受信すると、ライセンス情報21を顧客装置1に送信する(S122)。
顧客装置1は、開発装置2からライセンス情報21を受信すると、ライセンス情報21に含まれる電子署名を検証する(S123)顧客装置1は、電子署名が承認できないとき、処理を終了する。
顧客装置1は、電子署名を承認すると、難読化共通鍵を復号する(S124)。また、顧客装置1は、復号した共通鍵を用いて暗号化学習済みモデルを復号する(S125)。さらに、顧客装置1は、暗号化学習済みモデルの情報を出力する機能を停止する(S126)。そして、顧客装置1は、推論処理を実行する(S127)。
以上のように、実施形態1の顧客装置1は、取得した学習済みモデルが暗号化されているか否かを判定する。そして、顧客装置1は、学習済みモデルが暗号化されているとき、自動的に学習済みモデルを復号し、復号した学習済みモデルを用いた推論処理を実行する。したがって、顧客装置1は、復号した学習済みモデルを出力することなく、推論処理を実行するので、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1の顧客装置1は、暗号化学習済みモデルが入力されたとき、フレームワークの機能の一部である学習済みモデルを出力する処理を停止するので、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1の学習済みモデルは、ネットワーク構造または重みの情報に暗号化されているか否かを識別する暗号化識別子を含む。これにより、顧客装置1は、学習済みモデルが暗号化されているか否かを判定し、自動的に学習済みモデルを復号して、復号した学習済みモデルを用いた推論処理を実行する。したがって、顧客装置1は、復号した学習済みモデルを出力することなく、推論処理を実行するので、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1の顧客装置1は、ライセンス情報21を取得し、ライセンス情報21に応じて暗号化学習済みモデルを復号して利用するので、ライセンス情報21を保有していないユーザの学習済みモデルの利用を拒絶することができる。したがって、顧客装置1は、学習済みモデルの不正利用を防止することができる。
実施形態1の開発装置2は、学習によって調整した重み及びバイアスを符合化したあとに暗号化し、暗号化学習済みモデルを生成する。すなわち、開発装置2は、暗号化対象の学習済みモデルのサイズを小さくしてから、暗号化処理を実行する。したがって、開発装置2は、暗号処理の負荷を低減し、かつ暗号化学習済みモデルのサイズを小さくすることができる。
実施形態1の開発装置2は、ネットワーク構造または重みの情報に暗号化されているか否かを識別する暗号化識別子を含む暗号化学習済みモデルを生成する。また、実施形態1では、顧客装置1で実行するフレームワークの機能に、暗号化識別子を参照することにより、学習済みモデルが暗号化されているか否かを判定する機能と、暗号化学習済みモデルを復号する機能とを付与する。これにより、顧客装置1は、暗号化識別子を参照することにより、学習済みモデルが暗号化されているか否かを判定する。したがって、顧客装置1は、フレームワークに読み込んだ学習済みモデルが暗号化されているとき、自動的に学習済みモデルを復号可能となり、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態1のライセンス情報21は、プロダクト名、顧客名、有効期限、及び機器識別子の少なくとも一つを用いて共通鍵を難読化した情報を含む。これにより、実施形態1の処理システム200は、ライセンス情報21が盗難されても、共通鍵の利用を困難にし、学習済みモデルの不正利用、及びネットワーク構造及び重みの漏洩を防止することができる。
実施形態1のライセンス情報21は、有効期限を含む。これにより、顧客装置1は、有効期限が切れたときに、暗号化学習済みモデルの利用を拒絶する。したがって、顧客装置1は、例えば、学習済みモデルを評価版としてユーザに提供したときなどにおいて、学習済みモデルを利用可能な期間を設定することができる。
実施形態1の電子署名は、ライセンス情報21に含まれるプロダクト名、顧客名、有効期限、及び機器識別子の少なくとも一つを用いて生成される。これにより、顧客装置1は、ライセンス情報21に含まれる情報が書き換えられたとき、ライセンス情報21に不正な改ざんがされたものと判定し、暗号化学習済みモデルの利用を拒絶することができる。
実施形態1の処理システム200では、学習済みモデルの開発者が学習済みモデルを用いるアプリケーションを作成するものとして説明したが、アプリケーションは、学習済みモデルの開発者とは別のアプリ開発者が作成してもよい。この場合において、ライセンス情報21と、暗号化学習済みモデルとは、アプリ開発者を介して、学習済みモデルの開発者から顧客に提供されてもよい。
ライセンス情報21と暗号化学習済みモデルとをアプリ開発者を介して顧客に提供する場合においても、難読化共通鍵の復号は、推論DLL内で難読化共通鍵を生成したときと逆の演算をすることにより、自動的に行なわれる。すなわち、アプリ開発者及び顧客は、学習済みモデルの内容を知ることなくアプリケーションの開発及び利用をする。これにより、処理システム200において、学習済みモデルの内容は、学習済みモデルの開発者以外に知られることなく利用される。以上により、処理システム200は、学習済みモデルを無断で流用されるなどのリスクを抑制して、学習済みモデルの開発者と、アプリ開発者との協業を促進することができる。
[実施形態2]
実施形態2の処理システムについて説明する。
図13は、実施形態2のニューラルネットワークを用いた処理システムの一例を示す図である。
図13を参照して、ニューラルネットワークを用いた処理の概要を説明する。
実施形態2の処理システム400の構成は、図1で説明した実施形態1の処理システム200と同じ構成であるので説明を省略する。以下の説明では、処理システム400において、処理システム200と異なる機能を有する顧客装置5a、5b、5cの構成と、開発装置6Aの構成とを説明する。また、処理システム200と同じ構成については、実施形態1と同じ符号を付し、説明を省略する。顧客装置5aと、顧客装置5bと、顧客装置5cとを特に区別しないとき、単に顧客装置5Aともいう。
図14は、実施形態2の顧客装置の一実施例を示す機能ブロック図である。
図14を参照して、顧客装置5Aで実行される処理について説明する。
顧客装置5Aは、制御部80aと、記憶部20と、接続部84とを含む。顧客装置5Aの構成は、実施形態1の顧客装置1の構成に、接続部84が追加された構成である。以下の説明では、接続部84と、接続部84の追加にともない機能が一部変更された取得部81と、判定部82と、復号部83との変更された機能との説明をし、その他の説明を省略する。
接続部84は、ライセンス情報21が格納された処理装置7と着脱可能に接続される。処理装置7は、開発装置6によりライセンス情報21が格納された装置であり、例えば、制御回路、記憶装置、及び入出力インターフェイスを含むUSBドングルなどである。
取得部81は、ユーザからの要求に応じて、ライセンス情報21の発行を開発装置6Aに要求する。これにより、ユーザは、開発装置6Aによりライセンス情報21が格納された処理装置7を開発者から提供される。また、取得部81は、接続部84に処理装置7が接続さたとき、処理装置7からライセンス情報21を取得する。
そして、判定部82と、復号部83とは、処理装置7に格納されたライセンス情報21を用いて判定処理と復号処理とを実行する。
図15は、実施形態2の開発装置の一実施例を示す機能ブロック図である。
図15を参照して、開発装置6Aで実行される処理について説明する。
開発装置6Aは、制御部90aと、記憶部50と、接続部91とを備える。開発装置6Aの構成は、実施形態1の開発装置2の構成に、書込部92と、接続部91とが追加された構成である。以下の説明では、接続部91と、書込部92と、機能が一部変更された出力部93の変更された機能との説明をし、その他の説明を省略する。
接続部91は、処理装置7と着脱可能に接続される。書込部92は、図16に示すように、管理装置3から取得したライセンス情報21を、接続部91を介して処理装置7に書き込みをする。なお、実施形態2において、出力部93は、管理装置3から取得したライセンス情報21を、顧客装置1に出力しなくてもよい。
図17は、実施形態2の処理装置の一実施例を示す機能ブロック図である。
図17を参照して、処理装置7で実行される処理について説明する。
処理装置7は、制御部100と、記憶部110と、接続部103とを備える。制御部100は、取得部101と、出力部102とを含む。記憶部110は、ライセンス情報21を記憶する。
接続部103は、顧客装置5A及び開発装置6Aと着脱可能に接続される。取得部101は、接続部103が開発装置6Aと接続されたとき、開発装置6Aから接続部103を介してライセンス情報21を取得し、記憶部110にライセンス情報21を記憶する。出力部102は、接続部103が顧客装置5Aと接続されたとき、接続部103を介して顧客装置5Aにライセンス情報21を出力する。
図18は、実施形態2の処理システムにおいて実行される処理の一例を示すシーケンス図である。
図18を参照して、実施形態2の処理システムにおいて実行される処理を説明する。以下の説明において、説明の簡単化のため、顧客装置5Aの制御部80a、開発装置6Aの制御部90a、及び管理装置3の制御部60が実行する処理のことを、顧客装置5A、開発装置6A、及び管理装置3が実行する処理と記載する。
実施形態2の処理システム400は、実施形態1の処理システム200で実行される処理のS122からS124に代えて、下記で説明するS201からS204が追加された処理である。以下の説明では、S201からS204の処理を説明し、その他の処理の説明を省略する。
開発装置6Aは、S122において、管理装置3からライセンス情報21を受信すると、ライセンス情報21を処理装置7に書き込む(S201)。そして、開発者は、ユーザに処理装置7を提供する。
顧客装置5Aは、例えば、ユーザにより処理装置7が接続される(S202)と、処理装置7からライセンス情報21を取得し、取得したライセンス情報21に含まれる電子署名を検証する(S203)。顧客装置5Aは、電子署名が承認できないとき、処理を終了する。
顧客装置5Aは、電子署名を承認すると、処理装置7から取得したライセンス情報21に含まれる難読化共通鍵を復号する(S204)。そして、顧客装置5Aは、復号した共通鍵を用いて暗号化学習済みモデルを復号する(S125)。なお、難読化共通鍵の復号は、推論情報4aに含まれる推論DLLを用いて、顧客装置5Aが管理装置3における共通鍵の難読化と逆の処理を行うことにより実行されてもよい。
以上のように、実施形態2の顧客装置5Aは、処理装置7に記憶されたラインセンス情報21を用いて暗号化学習済みモデルを復号するため、処理装置7を提供されたユーザのみが学習済みモデルを復号可能にする。したがって、顧客装置5Aは、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態2の処理システム400では、学習済みモデルの開発者が学習済みモデルを用いるアプリケーションを作成するものとして説明したが、アプリケーションは、学習済みモデルの開発者とは別のアプリ開発者が作成してもよい。この場合において、暗号化学習済みモデルは、アプリ開発者を介して、学習済みモデルの開発者から顧客に提供されてもよい。
暗号化学習済みモデルを、アプリ開発者を介して顧客に提供する場合においても、難読化共通鍵の復号は、推論DLL内で難読化共通鍵を生成したときと逆の演算をすることにより、自動的に行なわれる。すなわち、アプリ開発者及び顧客は、学習済みモデルの内容を知ることなくアプリケーションの開発及び利用をする。これにより、処理システム400において、学習済みモデルの内容は、学習済みモデルの開発者以外に知られることなく利用される。以上により、処理システム400は、学習済みモデルを無断で流用されるなどのリスクを抑制して、学習済みモデルの開発者と、アプリ開発者との協業を促進することができる。
[実施形態3]
実施形態3の処理システムについて説明する。
図19は、実施形態3のニューラルネットワークを用いた処理システムの一例を示す図である。
図19を参照して、ニューラルネットワークを用いた処理の概要を説明する。
実施形態3の処理システム500の構成は、図13で説明した実施形態2の処理システム400と同じ構成であるので説明を省略する。以下の説明では、処理システム500において、処理システム400と異なる機能を有する顧客装置5d、5e、5fの構成と、処理装置9の構成とを説明する。また、処理システム400と同じ構成については、実施形態2と同じ符号を付し、説明を省略する。顧客装置5dと、顧客装置5eと、顧客装置5fとを特に区別しないとき、単に顧客装置5Bともいう。
図20は、実施形態3の顧客装置の一実施例を示す機能ブロック図である。
図20を参照して、顧客装置5Bで実行される処理について説明する。
顧客装置5Bは、制御部80bと、記憶部20と、接続部84とを含む。
以下の説明では、機能が一部変更された取得部85の変更された機能の説明をし、その他の説明を省略する。
接続部84は、暗号化学習済みモデルを復号する機能を有し、かつライセンス情報21が格納された処理装置8と着脱可能に接続される。処理装置8は、開発装置6によりライセンス情報21が格納された装置であり、例えば、制御回路、記憶装置、及び入出力インターフェイスを含むUSBドングルなどである。
取得部85は、図21に示すように、暗号化学習済みモデルが入力されたとき、接続部84に処理装置8が接続されている場合、処理装置8に暗号化学習済みモデルを復号させることにより、学習済みモデルを取得する。
推論部14は、復号された学習済みモデルを用いて、アプリケーションから入力される推論の対象の対象データを用いて、推論処理を実行する。
図22は、実施形態3の処理装置の一実施例を示す機能ブロック図である。
図22を参照して、処理装置8で実行される処理について説明する。
実施形態3の処理装置8は、制御部120と、記憶部110と、接続部101とを備える。処理装置8の構成は、実施形態2の処理装置7の構成に、復号部121が追加された構成である。以下の説明では、復号部121の説明をし、その他の説明を省略する。なお、処理装置8は、暗号化識別子を参照することにより、顧客装置5Bから入力される暗号化学習済みモデルが暗号化されているか否かを判定する判定部を備えてもよい。
復号部121は、顧客装置5Bを介して暗号化学習済みモデルが入力されると、ライセンス情報21に含まれる難読化共通鍵を復号する。また、復号部121は、復号した共通鍵を用いて暗号化学習済みモデルを復号する。そして、出力部103は、接続部101を介して顧客装置5Aに復号された暗号化学習済みモデルを出力する。
図23は、実施形態3の処理システムにおいて実行される処理の一例を示すシーケンス図である。
図23を参照して、実施形態3の処理システム500において実行される処理を説明する。以下の説明において、説明の簡単化のため、顧客装置5Bの制御部80b、開発装置6Aの制御部90a、及び管理装置3の制御部60が実行する処理のことを、顧客装置5B、開発装置6A、及び管理装置3が実行する処理と記載する。
実施形態3の処理システム500は、実施形態2の処理システム400で実行される処理のS204、S125に代えて、下記で説明するS301、S302が追加された処理である。以下の説明では、S301とS302の処理を説明し、その他の処理の説明を省略する。
顧客装置5Bは、例えば、ユーザにより処理装置8が接続される(S202)と、処理装置8からライセンス情報21を取得し、取得したライセンス情報21に含まれる電子署名を検証する(S203)。顧客装置5Bは、電子署名が承認できないとき、処理を終了する。
顧客装置5Bは、電子署名を承認すると、処理装置7に暗号化学習済みモデルを出力する(S301)。これにより、顧客装置5Bは、処理装置8に暗号化学習済みモデルを復号させる。そして、顧客装置5Bは、処理装置8から復号された学習済みモデルを取得する(S302)。
以上のように、実施形態3の顧客装置5Bは、処理装置8に暗号化学習済みモデルを復号させるため、処理装置8を提供されたユーザのみが学習済みモデルを復号可能にする。したがって、顧客装置5Bは、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
実施形態3の処理システム500では、学習済みモデルの開発者が学習済みモデルを用いるアプリケーションを作成するものとして説明したが、アプリケーションは、学習済みモデルの開発者とは別のアプリ開発者が作成してもよい。この場合において、暗号化学習済みモデルは、アプリ開発者を介して、学習済みモデルの開発者から顧客に提供されてもよい。
暗号化学習済みモデルを、アプリ開発者を介して顧客に提供する場合においても、難読化共通鍵の復号は、推論DLL内で難読化共通鍵を生成したときと逆の演算をすることにより、自動的に行なわれる。すなわち、アプリ開発者及び顧客は、学習済みモデルの内容を知ることなくアプリケーションの開発及び利用をする。これにより、処理システム500において、学習済みモデルの内容は、学習済みモデルの開発者以外に知られることなく利用される。以上により、処理システム500は、学習済みモデルを無断で流用されるなどのリスクを抑制して、学習済みモデルの開発者と、アプリ開発者との協業を促進することができる。
[実施形態4]
実施形態4の処理システムについて説明する。
図24は、実施形態4のニューラルネットワークを用いた処理システムの一例を示す図である。
図24を参照して、ニューラルネットワークを用いた処理の概要を説明する。
実施形態4の処理システム600の構成は、図19で説明した実施形態3の処理システム500と同じ構成であるので説明を省略する。以下の説明では、処理システム600において、処理システム500と異なる機能を有する5g、5h、5iの構成と、開発装置6Bの構成と、処理装置9の構成とを説明する。また、処理システム500と同じ構成については、実施形態3と同じ符号を付し、説明を省略する。顧客装置5gと、顧客装置5hと、顧客装置5iとを特に区別しないとき、単に顧客装置5Cともいう。
図25は、実施形態4の顧客装置の一実施例を示す機能ブロック図である。
図25を参照して、顧客装置5Cで実行される処理について説明する。
顧客装置5Cは、制御部80bと、記憶部20と、接続部84とを含む。以下の説明では、機能が一部変更された取得部86と、判定部87と、推論部88との変更された機能との説明をし、その他の説明を省略する。
接続部84は、ニューラルネットワークに属する一部の層の演算(後述する第2演算)を実行する機能と暗号化学習済みモデルを復号する機能とを有し、かつライセンス情報21と層情報141とが格納された処理装置9と着脱可能に接続される。層情報141とは、例えば、図26に示す畳み込みニューラルネットワーク700に含まれる連続する3層以上の層730のネットワーク構成、重み、及びバイアスを含む情報である。
上述の層情報141は、一例であり、畳み込みニューラルネットワーク、またはその他のニューラルネットワークに含まれる任意の1以上の層でもよい。以下の説明において、ニューラルネットワークの構造は、図26に示す畳み込みニューラルネットワークであるものとして説明する。
取得部86は、層情報141を除く暗号化学習済みモデルを保存装置4から取得する。判定部87は、層情報141を除く暗号化学習済みモデルが入力されたか否かを判定する。層情報141を除く暗号化学習済みモデルとは、例えば、図26に示す層730のネットワーク構造、重み、及びバイアスを示す情報を、畳み込みニューラルネットワーク700の学習済みモデルから除いた情報である。
すなわち、層情報141を除く暗号化学習済みモデルとは、1以上の層を含む第1演算と、1以上の他の層を含む第2演算と、を含むニューラルネットワークの第1演算の構造及び重みを含む第1学習済みモデルを暗号化した情報である。第1演算とは、例えば、図26に示す、アプリケーションから推論の対象データ701が入力される入力層710、畳み込み層720、及び畳み込み層740から出力層780に含まれるネットワーク構造、重み、バイアスに対応する演算である。第2演算とは、例えば、図26に示す、プーリング層731からプーリング層733を含む層730に含まれるネットワーク構造、重み、バイアスに対応する演算である。
取得部86は、層情報141を除く暗号化学習済みモデルが入力されたとき、層情報141を除く暗号化学習済みモデルを処理装置9に出力する。これにより、取得部86は、処理装置9に層情報141を除く暗号化学習済みモデルを復号させる。
取得部86は、処理装置9から層情報141を除く学習済みモデルを取得する。推論部88は、層情報141を除く学習済みモデルを用いて、図26に示す畳み込み層720までの処理を実行する。そして、取得部86は、畳み込み層720の出力データを処理装置9に出力する。これにより、取得部86は、処理装置9に層情報141を用いて第2演算を実行させる。以下の説明では、層情報141を用いた第2演算のことを、層情報141の演算ともいう。
取得部86は、処理装置9から層情報141の演算結果を取得する。推論部88は、層情報141の演算結果を用いて、図26に示す畳み込み層730から出力層780までの層に対応する演算を実行する。
図27は、実施形態4の開発装置の一実施例を示す機能ブロック図である。
図27を参照して、開発装置6Bで実行される処理について説明する。
開発装置6Bは、制御部90bと、記憶部50と、接続部99とを含む。以下の説明では、機能が一部変更された書込部94と、暗号化部95、生成部96、出力部97との変更された機能との説明をし、その他の説明を省略する。
接続部91は、処理装置9と着脱可能に接続される。書込部94は、学習部42及び符合化部43により生成された学習済みモデルの一部である層情報141を、接続部91を介して処理装置9に書き込みをする。実施形態4において、暗号化部95は、層情報141を除く学習済みモデルを暗号化する。生成部96は、層情報141を除く暗号化学習済みモデルと、推論DLLと、アプリケーションとを含む推論情報4bを生成する。出力部97は、推論情報4bを保存装置4に出力する。なお、暗号化部95は、層情報141を暗号化してもよい。そして、書込部94は、暗号化された層情報141を処理装置9に書き込んでもよい。また、出力部97は、推論情報4aを保存装置4に出力してもよい。
図28は、実施形態4の処理装置の一実施例を示す機能ブロック図である。
図28を参照して、処理装置9で実行される処理について説明する。
実施形態4の処理装置9は、制御部130と、記憶部140と、接続部101とを備える。処理装置9の構成は、実施形態3の処理装置8の構成に、推論部131と、層情報141とが追加された構成である。以下の説明では、推論部131と、層情報141と、推論部131及び層情報141の追加にともない機能が一部変更された取得部132と、出力部133と、復号部134との変更された機能との説明をし、その他の説明を省略する。なお、処理装置9は、暗号化識別子を参照することにより、顧客装置5Cから入力される暗号化学習済みモデルが暗号化されているか否かを判定する判定部を備えてもよい。
推論部131は、顧客装置5Cから層情報141に入力する入力データを取得すると、層情報141の演算を実行する。そして、出力部101は、層情報141の演算結果を顧客装置5Cに出力する。層情報141に入力する入力データとは、例えば、図26に示す畳み込み層720の出力データである。層情報141の演算結果とは、例えば、図26に示すプーリング層733の出力データである。なお、層情報141が暗号化されている場合には、復号部133は、層情報141を復号する。そして、推論部131は、復号された層情報141を用いて、層情報141の演算を実行する。
取得部132は、開発装置6Bから層情報141を取得し、記憶部140に記憶する。
復号部134は、顧客装置5Cから層情報141を除く暗号化学習済みモデルが入力されると、ライセンス情報21に含まれる難読化共通鍵を復号する。また、復号部134は、復号した共通鍵を用いて層情報141を除く暗号化学習済みモデルを復号する。そして、出力部133は、復号された層情報141を除く暗号化学習済みモデルを顧客装置5Cに出力する。
以上のように、処理装置9には、1以上の層を含む第1演算と、1以上の他の層を含む第2演算と、を含むニューラルネットワークの第2演算の構造及び重みを含む第2学習済みモデルが記憶されている。そして、処理装置9は、第2学習済みモデルを用いて第2演算を実行する。
図29は、実施形態4の処理システムにおいて実行される処理の一例を示すシーケンス図である。
図29を参照して、実施形態4の処理システム600において実行される処理を説明する。以下の説明において、説明の簡単化のため、顧客装置5Cの制御部80c、開発装置6Bの制御部90b、及び管理装置3の制御部60が実行する処理のことを、顧客装置5C、開発装置6B、及び管理装置3が実行する処理と記載する。
実施形態4の処理システム600は、実施形態3の処理システム500で実行される処理のS127、S301、S302に代えて、下記で説明するS401からS406が追加された処理である。以下の説明では、S401からS406の処理を説明し、その他の処理の説明を省略する。
顧客装置5Cは、例えば、ユーザにより処理装置9が接続される(S202)と、処理装置9からライセンス情報21を取得し、取得したライセンス情報21に含まれる電子署名を検証する(S203)。顧客装置5Cは、電子署名が承認できないとき、処理を終了する。
顧客装置5Cは、電子署名を承認すると、処理装置9に層情報141を除く暗号化学習済みモデルを出力する(S401)。これにより、顧客装置5Cは、処理装置9に層情報141を除く暗号化学習済みモデルを復号させる。
顧客装置5Cは、処理装置8から復号された層情報141を除く学習済みモデルを取得する(S402)。顧客装置5Cは、暗号化学習済みモデルの情報を出力する機能を停止する(S126)。
顧客装置5Cは、層情報141を除く学習済みモデルを用いて、層情報141の前段の層までの推論処理を実行する(S403)。そして、顧客装置5Cは、処理装置9に層情報141の前段の層までの演算結果を処理装置9に出力する(S404)。これにより、顧客装置5Cは、処理装置9に層情報141の演算を実行させる。
顧客装置5Cは、層情報141の演算結果を処理装置9から取得する(S405)。顧客装置5Cは、層情報141の演算結果を用いて、層情報141の後段の層から出力層までの演算を実行する(S406)。
以上のように、実施形態4の顧客装置5Cは、処理装置9に推論処理の演算の一部を実行させるため、処理装置9から一部の層のネットワーク構造と、重みと、バイアスとを含む情報を出力することなく推論処理の実行を可能にする。したがって、顧客装置5Cは、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
また、実施形態4の処理装置9は、ニューラルネットワークに含まれる連続する3層以上に対応する層情報141の演算を内部で実行する。したがって、顧客装置5Cは、層730の少なくとも1以上の層の入出力の情報を隠した状態で推論処理が実行可能になる。これにより、顧客装置5Cは、学習済みモデルに含まれるネットワーク構造及び重みの漏洩を防止することができる。
上述の説明において、顧客装置5Cは、層情報141を除く暗号化学習済みモデルを処理装置9に復号させているが、復号部83が層情報141を除く暗号化学習済みモデルを復号してもよい。この場合には、推論部88は、復号部83で復号された層情報141を除く学習済みモデルを用いて、推論処理を実行する。
上述の説明において、顧客装置5Cは、層情報141を除く暗号化学習済みモデルを取得しているが、取得部86は、層情報141を除く学習済みモデルを取得してもよい。この場合には、推論部88は、層情報141を除く学習済みモデルが入力されたとき、層情報141を除く学習済みモデルを用いて第1演算を実行し、かつ処理装置9に層情報141を用いて第2演算を実行させることにより推論をする。
上述の説明において、処理装置9は、ニューラルネットワークに含まれる連続する3層以上の演算を実行しているが、これに限らず、ニューラルネットワークに含まれる任意の1層以上の演算を実行してもよい。これにより、処理装置9は、演算能力に応じた量の演算を実行することができるので、処理装置9の演算速度に起因する推論処理の速度の低下を抑制することができる。
実施形態4の処理システム600では、学習済みモデルの開発者が学習済みモデルを用いるアプリケーションを作成するものとして説明したが、アプリケーションは、学習済みモデルの開発者とは別のアプリ開発者が作成してもよい。この場合において、暗号化学習済みモデルは、アプリ開発者を介して、学習済みモデルの開発者から顧客に提供されてもよい。
暗号化学習済みモデルを、アプリ開発者を介して顧客に提供する場合においても、難読化共通鍵の復号は、推論DLL内で難読化共通鍵を生成したときと逆の演算をすることにより、自動的に行なわれる。すなわち、アプリ開発者及び顧客は、学習済みモデルの内容を知ることなくアプリケーションの開発及び利用をする。これにより、処理システム600において、学習済みモデルの内容は、学習済みモデルの開発者以外に知られることなく利用される。以上により、処理システム600は、学習済みモデルを無断で流用されるなどのリスクを抑制して、学習済みモデルの開発者と、アプリ開発者との協業を促進することができる。
図30は、コンピュータ装置の一実施例を示すブロック図である。
図30を参照して、コンピュータ装置800の構成について説明する。
図30において、コンピュータ装置800は、制御回路801と、記憶装置802と、読書装置803と、記録媒体804と、通信インターフェイス805と、入出力インターフェイス806と、入力装置807と、表示装置808とを含む。また、通信インターフェイス805は、ネットワーク809と接続される。そして、各構成要素は、バス810により接続される。顧客装置1、5A、5B、5Cと、開発装置2、6A、6Bと、管理装置3と、処理装置7、8,9とは、コンピュータ装置800に記載の構成要素の一部または全てを適宜選択して構成することができる。
制御回路801は、コンピュータ装置800全体の制御をする。そして、制御回路801は、例えば、Central Processing Unit(CPU)、及びField Programmable Gate Array(FPGA)などのプロセッサである。そして、制御回路801は、例えば、上述した各装置の制御部として機能する。
記憶装置802は、各種データを記憶する。そして、記憶装置802は、例えば、Read Only Memory(ROM)及びRandom Access Memory(RAM)、及びHard Disk(HD)などである。記憶装置802は、例えば、上述した各装置の記憶部として機能する。
また、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路801のワークエリアとして使用される。HDは、OS、アプリケーションプログラム、ファームウェアなどのプログラム、及び各種データを記憶している。記憶装置802は、制御回路801を、上述した各装置の制御部として機能させるプログラムを記憶してもよい。上述した各装置の制御部として機能させるプログラムとは、例えば、上述したフレームワーク、暗号化ツール、推論DLL、及びアプリケーションなどである。そして、フレームワーク、暗号化ツール、推論DLL、及びアプリケーションのそれぞれは、制御回路801を上述した各装置の制御部として機能させるプログラムの全てまたは一部を含んでもよい。
なお、上述の各プログラムは、制御回路801が通信インターフェイス805を介してアクセス可能であれば、ネットワーク809上のサーバが有する記憶装置に記憶されていても良い。
読書装置803は、制御回路801に制御され、着脱可能な記録媒体804のデータのリード/ライトを行なう。そして、読書装置803は、例えば、各種Disk Drive(DD)及びUniversal Serial Bus(USB)などである。
記録媒体804は、各種データを保存する。記録媒体804は、例えば、上述した各装置の制御部として機能させるプログラムを記憶する。さらに、記録媒体804は、図1、図13、図19に示す、推論情報4a、及び図24に示す、推論情報4bの少なくとも一つを記憶しても良い。そして、記録媒体804は、読書装置803を介してバス810に接続され、制御回路801が読書装置803を制御することにより、データのリード/ライトが行なわれる。
また、記録媒体804は、例えば、SD Memory Card(SDメモリーカード)、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu-ray(登録商標) Disk(BD)、及びフラッシュメモリなどの非一時的記録媒体である。
通信インターフェイス805は、ネットワーク809を介してコンピュータ装置800と他の装置とを通信可能に接続する。また、通信インターフェイス805は、無線LANの機能を有するインターフェイス、及び近距離無線通信機能を有するインターフェイスを含んでも良い。LANは、Local Area Networkの略である。
入出力インターフェイス806は、例えば、キーボード、マウス、及びタッチパネルなどの入力装置807と接続され、接続された入力装置807から各種情報を示す信号が入力されると、バス810を介して入力された信号を制御回路801に出力する。また、入出力インターフェイス806は、制御回路801から出力された各種情報を示す信号がバス810を介して入力されると、接続された各種装置にその信号を出力する。
入力装置807は、例えば、学習用のフレームワークのハイパーパラメータの設定の入力を受け付けても良い。
表示装置808は、各種情報を表示する。表示装置808は、タッチパネルでの入力を受け付けるための情報を表示しても良い。表示装置808は、例えば、顧客装置1、5A、5B、5Cに接続される、表示装置30として機能する。
入出力インターフェイス806、入力装置807、及び表示装置808は、GUIとして機能してもよい。
ネットワーク809は、例えば、LAN、無線通信、またはインターネットなどであり、コンピュータ装置800と他の装置を通信接続する。
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
以下の説明では、顧客装置1、5A、5B、5Cのことを特に区別しないとき、単に顧客装置ともいう。また、開発装置2、6A、6Bのことを特に区別しないとき、単に開発装置ともいう。さらに、管理装置3のことを、単に管理装置ともいう。そして、保存装置4のことを、単に保存装置ともいう。また、処理装置7、8,9のことを特に区別しないとき、単に処理装置ともいう。
実施形態1から実施形態4において、共通鍵は、難読化して顧客装置に提供されるものとして説明したが、管理装置で生成された秘密鍵と公開鍵とを用いて顧客装置に提供されてもよい。
後述する図31の構成に対応する第1の例として、管理装置は、第1生成部により、第1秘密鍵と、第1秘密鍵に対応する第1公開鍵とを生成する。開発装置は、学習部により、学習済みモデルの重みを調整する学習をする。また、開発装置は、第2生成部により、第2秘密鍵と、第1公開鍵と第2秘密鍵とを用いる共通鍵と、第2秘密鍵に対応する第2公開鍵とを生成する。そして、開発装置は、第2生成部で生成された共通鍵を用いて学習済みモデルを暗号化する。
顧客装置は、判定部により、暗号化学習済みモデルが入力されたか否かを判定する。また、顧客装置は、図示しない第3生成部により、第1秘密鍵と第2公開鍵とを用いて共通鍵を生成する。顧客装置は、学習済みモデルが入力されたとき、復号部により、第3生成部で生成された共通鍵を用いて学習済みモデルを復号する。そして、顧客装置は、推論部により、復号部により復号された学習済みモデルを用いて推論をする。なお、第3生成部は、例えば、顧客装置の制御部に含まれる。
図31は、DH鍵交換を用いた処理システムの一実施例を示す図である。
図31を参照して、DH鍵交換(Diffie-Hellman鍵交換)を用いた共通鍵の提供処理を説明する。以下の説明において、生成元gと素数nとは、管理装置が設定したあと、開発装置と顧客装置とにそれぞれ共有されているものとして説明する。暗号化ツール及び推論DLLは、それぞれ、破線で囲まれる情報を含み、破線で囲まれる処理を実行するものとする。また、アプリ開発装置は、アプリ開発者が利用する情報処理装置であり、例えば、上述した図30に示すコンピュータ装置である。なお、アプリ開発者とは、アプリケーションを開発する開発者のことである。アプリケーションとは、例えば、開発装置で開発された学習済みモデルを用いて、推論処理を実行するソフトウェアのことである。
管理装置は、秘密鍵sを生成して、推論DLLに秘密鍵sを付与する(S11)。S11において、管理装置は、さらに、推論DLLに生成元gと素数nとを付与することにより、生成元g及び素数nを顧客装置と共有してもよい。以下の説明では、管理装置が、推論DLLに生成元gと素数nとを付与したものとして説明する。
さらに、管理装置は、生成元gと素数nとを設定し、下記式(1)に生成元gと、素数nと、秘密鍵sとを代入して、公開鍵aを求める(S12)。
公開鍵a=g^s mod n・・・(1)
そして、管理装置は、暗号化ツールに公開鍵aを付与する(S13)。S13において、管理装置は、さらに、暗号化ツールに生成元gと素数nとを付与することにより、生成元gと素数nとを開発装置と共有してもよい。以下の説明では、管理装置が、暗号化ツールに生成元gと素数nとを付与したものとして説明する。
開発装置は、暗号化ツールを実行することにより、秘密鍵pを生成し、暗号化ツールに付与されている公開鍵aと、秘密鍵pとを下記式(2)に代入して、共通鍵dhを求める(S14)。
共通鍵dh=a^p mod n・・・(2)
そして、開発装置は、共通鍵dhを用いて、学習済みモデルを暗号化する(S15)。
さらに、開発装置は、暗号化ツールに付与されている生成元g及び素数nと、秘密鍵pとを下記式(3)に代入して、公開鍵bを求める(S16)。
公開鍵b=g^p mod n・・・(3)
アプリ開発装置は、開発装置から暗号化学習済みモデルと公開鍵bとを取得し、学習済みモデルを用いて推論処理を実行するアプリケーションを作成する。以下の説明では暗号化学習済みモデルと公開鍵bとは、アプリ開発者から顧客にアプリケーションとともに提供されるものとして説明するが、暗号化学習済みモデルと公開鍵bとは学習済みモデルの開発者から顧客に直接提供されてもよい。
また、図33に示すように、公開鍵bは、開発装置により、暗号化学習済みモデルに付与される暗号化ヘッダに格納されて、顧客に提供されてもよい。さらに、暗号化ヘッダには、例えば、ライセンス情報21に含まれるプロダクト名と、暗号化共通鍵と、顧客名と、有効期限と、機器識別子と、電子署名と、著作者情報との少なくとも一つを格納してもよい。さらに、暗号化ヘッダには、暗号化識別子を格納してもよい。この場合には、暗号化ヘッダに含まれる情報は、ライセンスファイルまたはドングルに代えて、暗号化ヘッダを媒体として顧客に提供される。なお、著作者情報とは、例えば、学習済みモデルの開発者を識別する情報である。また、実施形態1から実施形態4においても、ライセンスファイルに代えて、ライセンス情報21に含まれる情報の少なくとも一つを暗号化ヘッダに格納してもよい。この場合にも、暗号化ヘッダに含まれる情報は、ライセンスファイルまたはドングルに代えて、暗号化ヘッダを媒体として顧客に提供される。
顧客装置は、公開鍵bが入力されると、推論DLLに付与されている秘密鍵s、生成元g及び素数nと、公開鍵bとを下記式(4)に代入して、共通鍵dhを求める。
共通鍵dh=bsmod n・・・(4)
そして、顧客装置は、暗号化学習済みモデルが入力されると、共通鍵を用いて暗号化学習済みモデルを復号して、学習済みモデルを得る。
後述する図32の構成に対応する第2の例として、管理装置は、第1生成部により、秘密鍵と、秘密鍵に対応する公開鍵とを生成する。開発装置は、学習部により、学習済みモデルの重みを調整する。また、開発装置は、第2生成部により、共通鍵を生成する。そして、開発装置は、暗号化部により、公開鍵を用いて共通鍵を暗号化し、共通鍵を用いて学習済みモデルを暗号化する。
顧客装置は、判定部により、暗号化学習済みモデルが入力されたか否かを判定する。また、顧客装置は、復号部により、秘密鍵を用いて開発装置の暗号化部により暗号化された暗号化共通鍵を復号し、復号した共通鍵を用いて暗号化学習済みモデルを復号する。そして、顧客装置は、推論部により、復号部により復号された学習済みモデルを用いて推論をする。
図32は、公開鍵暗号方式を用いた暗号処理システムの一実施例を示す図である。
図32を参照して、公開鍵暗号方式を用いた共通鍵の提供処理を説明する。暗号化ツール及び推論DLLは、それぞれ、破線で囲まれる情報を含み、破線で囲まれる処理を実行するものとする。
管理装置は、秘密鍵xを生成して、推論DLLに秘密鍵xを付与する(S21)。また、管理装置は、秘密鍵xを用いて、秘密鍵xに対応する公開鍵yを生成し、暗号化ツールに公開鍵yを付与する(S22)。
開発装置は、共通鍵zを設定し、共通鍵zを用いて、学習済みモデルを暗号化する(S23)。また、開発装置は、暗号化ツールに付与されている公開鍵yを用いて、共通鍵zを暗号化する(S24)。
アプリ開発装置は、開発装置から暗号化学習済みモデルと、暗号化共通鍵ezとを取得し、学習済みモデルを用いて推論処理を実行するアプリケーションを作成する。以下の説明では、暗号化学習済みモデルと暗号化共通鍵ezとは、アプリ開発者から顧客にアプリケーションとともに提供されるものとして説明するが、暗号化学習済みモデルと暗号化共通鍵ezとは学習済みモデルの開発者から顧客に直接提供されてもよい。
また、図33に示すように、公開鍵ezは、開発装置により、暗号化学習済みモデルに付与される暗号化ヘッダに格納されて、顧客に提供されてもよい。さらに、暗号化ヘッダには、例えば、ライセンス情報21に含まれるプロダクト名と、暗号化共通鍵と、顧客名と、有効期限と、機器識別子と、電子署名と、著作者情報との少なくとも一つを格納してもよい。さらに、暗号化ヘッダには、暗号化識別子を格納してもよい。この場合には、暗号化ヘッダに含まれる情報は、ライセンスファイルまたはドングルに代えて、暗号化ヘッダを媒体として顧客に提供される。
顧客装置は、暗号化共通鍵ezが入力されると、推論DLLに付与されている秘密鍵xを用いて暗号化共通鍵ezを復号し、共通鍵zを得る。そして、顧客装置は、暗号化学習済みモデルが入力されると、共通鍵zを用いて暗号化学習済みモデルを復号して、学習済みモデルを得る。
以上の構成により、推論DLLに含まれる秘密鍵が流出しない限り、暗号化共通鍵が復号されることがないので、共通鍵の漏洩を防止することができる。
また、暗号化共通鍵の復号は、推論DLL内で秘密鍵を用いて自動的に行なわれる。すなわち、アプリ開発者及び顧客は、学習済みモデルの内容を知ることなくアプリケーションの開発及び利用をする。これにより、図31、図32に示す処理システムにおいて、学習済みモデルの内容は、学習済みモデルの開発者以外に知られることなく利用される。以上により、図31、図32に示す処理システムは、学習済みモデルを無断で流用されるなどのリスクを抑制して、学習済みモデルの開発者と、アプリ開発者との協業を促進することができる。
なお、上記の説明では、図31、図32に示す処理システムで得られる効果を具体的にするため、アプリ開発者は、学習済みモデルの開発者とは別の開発者であるものとして説明したが、アプリ開発者と、学習済みモデルの開発者とは、同一の開発者であってもよい。
図33は、暗号化学習済みモデルの暗号化ヘッダの一実施例を示す図である。
図33を参照して、暗号化学習済みモデルの変形例を説明する。
実施形態1から実施形態4において、ライセンス情報21は、ライセンスファイルまたはドングルに書き込むものとして説明したが、図33に示すように、学習済みモデルに付与される暗号化ヘッダに格納してもよい。すなわち、ライセンス情報21に含まれるプロダクト名と、難読化共通鍵と、顧客名と、有効期限と、機器識別子と、電子署名と、暗号化識別子と、著作者情報との少なくとも一つを学習済みモデルに付与する暗号化ヘッダに含ませてもよい。
より具体的には、開発装置は、暗号化学習済みモデルに付与される暗号化ヘッダにライセンス情報21と、暗号化識別子とを格納して、保存装置に保存する。そして、顧客装置は、開発装置に暗号化学習済みモデルの取得要求をする。開発装置は、取得要求に応じて、保存装置に保存した暗号化学習済みモデルを顧客装置に提供する。このとき、開発装置は、暗号化ヘッダに格納されている有効期限と、電子署名とを書き換えてもよい。なお、処理システムにおいて、保存装置が有効期限と、電子署名との書き換えを実行してもよい。この場合には、保存装置は、顧客装置からの暗号化学習済みモデルの取得要求を受け付け、暗号化ヘッダに格納されている有効期限と、電子署名とを書き換えて、暗号化学習済みモデルを顧客装置に提供してもよい。
以上の構成により、実施形態の処理システムは、顧客装置の取得要求に応じた有効期限を、顧客装置が暗号化学習済みモデルを取得するときに設定することができる。これにより、実施形態の処理システムは、学習済みモデルの配信サービスに適した運用が可能となる。なお、学習済みモデルの配信サービスにおいて、顧客装置による暗号化学習済みモデルの取得は、例えば、開発装置を介して行われてもよいし、保存装置から暗号化学習済みモデルを直接ダウンロードすることにより行われてもよい。
1、5A、5B、5C 顧客装置
2、6A、6B 開発装置
3 管理装置
4 保存装置
7、8,9 処理装置
800 コンピュータ装置
801 制御回路
802 記憶装置
803 読書装置
804 記録媒体
805 通信I/F
806 入出力I/F
807 入力装置
808 表示装置
809 ネットワーク
810 バス

Claims (15)

  1. ニューラルネットワークの学習済みモデルの内容を表す情報を出力する出力部と、
    前記学習済みモデルが暗号化された暗号化学習済みモデルが入力されたか否かを判定する判定部と、
    前記暗号化学習済みモデルが入力されたとき、前記出力部による出力処理を停止する停止部と、
    前記暗号化学習済みモデルが入力されたとき、前記暗号化学習済みモデルを復号する復号部と、
    復号された前記学習済みモデルを用いて推論をする推論部と、
    を備えることを特徴とする推論装置。
  2. 前記推論装置に含まれる機器を識別する第1機器識別子を含む許諾情報の発行要求を、学習済みモデルを生成する学習装置に送信する送信部と、
    前記第1機器識別子を含む許諾情報を前記学習装置から取得する取得部と、
    を備え、
    前記復号部は、
    前記暗号化学習済みモデルが入力されたとき、前記第1機器識別子と、前記推論装置に含まれるいずれかの機器を識別する第2機器識別子とが一致する場合、前記暗号化学習済みモデルを復号する
    ことを特徴とする請求項1に記載の推論装置。
  3. 前記許諾情報は、さらに、
    前記暗号化学習済みモデルを復号する復号鍵を含み、
    前記復号部は、
    前記復号鍵を用いて前記暗号化学習済みモデルを復号する
    ことを特徴とする請求項2に記載の推論装置。
  4. 前記許諾情報は、さらに、
    前記暗号化学習済みモデルの有効期限を含み、
    前記復号部は、
    前記暗号化学習済みモデルを復号するときの時刻が前記有効期限内に含まれるとき、前記暗号化学習済みモデルを復号する
    ことを特徴とする請求項2または3に記載の推論装置。
  5. 前記推論装置は、さらに、
    前記許諾情報が格納された処理装置と着脱可能に接続される接続部
    を備え、
    前記取得部は、
    前記接続部に前記処理装置が接続されているとき、前記処理装置から許諾情報を取得する
    ことを特徴とする請求項2から4のいずれか一つに記載の推論装置。
  6. 前記暗号化学習済みモデルは、
    前記学習済みモデルが暗号化されているか否かを識別する暗号化識別子が付与され、
    前記判定部は、
    前記暗号化識別子を参照することにより、前記暗号化学習済みモデルが入力されたか否かを判定する
    ことを特徴とする請求項1から5のいずれか一つに記載の推論装置。
  7. ニューラルネットワークの学習済みモデルの内容を表す情報を出力する出力部と、
    前記学習済みモデルに含まれる1以上の層の第1演算に対応する第1データが暗号化された第1暗号化データが入力されたか否かを判定する判定部と、
    前記第1暗号化データが入力されたとき、前記出力部による出力処理を停止する停止部と、
    前記学習済みモデルから前記1以上の層を除いた層の第2演算に対応する第2データが記憶され、かつ前記第2データを用いて前記第2演算を実行する処理装置と着脱可能に接続される接続部と、
    前記第1暗号化データが入力されたとき、前記第1暗号化データを復号する復号部と、
    前記第1データを用いて前記第1演算を実行し、かつ前記処理装置に前記第2演算を実行させることにより推論をする推論部と、
    を備えることを特徴とする推論装置。
  8. 前記処理装置は、さらに、
    前記第1暗号化データを復号する機能を有し、
    前記推論装置は、前記復号部に代えて、
    前記第1暗号化データが入力されたとき、前記処理装置に前記第1暗号化データを復号させることにより、前記第1データを取得する取得部
    を備えることを特徴とする請求項7に記載の推論装置。
  9. 前記第2演算は、
    ニューラルネットワークに含まれる連続する3層以上の演算を含む
    ことを特徴とする請求項7または8に記載の推論装置。
  10. 学習装置と推論装置とを含む処理システムであって、
    前記学習装置は、
    ニューラルネットワークの学習をする学習部と、
    前記学習部により学習された学習済みモデルを符号化する符号化部と、
    符号化された前記学習済みモデルを暗号化する暗号化部と、
    前記推論装置は、
    前記学習済みモデルの内容を表す情報を出力する出力部と、
    前記学習済みモデルが暗号化された暗号化学習済みモデルが入力されたか否かを判定する判定部と、
    前記暗号化学習済みモデルが入力されたとき、前記出力部による出力処理を停止する停止部と、
    前記暗号化学習済みモデルが入力されたとき、前記暗号化学習済みモデルを復号する復号部と、
    復号された前記学習済みモデルを用いて推論をする推論部と、
    を備えることを特徴とする処理システム。
  11. プロセッサにより実行される推論方法であって、
    前記プロセッサは、
    ニューラルネットワークの学習済みモデルの内容を表す情報を出力し、
    前記学習済みモデルが暗号化された暗号化学習済みモデルが入力されたか否かを判定し、
    前記暗号化学習済みモデルが入力されたとき、前記情報の出力を停止し、
    前記暗号化学習済みモデルが入力されたとき、前記暗号化学習済みモデルを復号し、
    復号された前記学習済みモデルを用いて推論をする
    ことを特徴とする推論方法。
  12. ニューラルネットワークの学習済みモデルの内容を表す情報を出力し、
    前記学習済みモデルが暗号化された暗号化学習済みモデルが入力されたか否かを判定し、
    前記暗号化学習済みモデルが入力されたとき、前記情報の出力を停止し、
    前記暗号化学習済みモデルが入力されたとき、前記暗号化学習済みモデルを復号し、
    復号された前記学習済みモデルを用いて推論をする
    処理をプロセッサに実行させることを特徴とする推論プログラム。
  13. 学習装置と保存装置と処理装置と推論装置とを含む処理システムであって、
    前記学習装置は、
    ニューラルネットワークの学習をする学習部と、
    前記処理装置と着脱可能に接続される第1接続部と、
    前記学習部により学習された学習済みモデルに含まれる1以上の層の第1演算に対応する第1データを暗号化する暗号化部と、
    前記第1データが暗号化された第1暗号化データを前記保存装置に出力する第1出力部と、
    前記学習済みモデルから前記1以上の層を除いた層の第2演算に対応する第2データを前記処理装置に書き込む書込部と、
    を備え、
    前記保存装置は、
    前記第1暗号化データを記憶する第1記憶部
    を備え、
    前記処理装置は、
    前記第2データを記憶する第2記憶部と、
    前記第2データを用いて前記第2演算を実行する推論部と、
    前記学習装置及び前記推論装置と着脱可能に接続される第2接続部と、
    を備え、
    前記推論装置は、
    前記学習済みモデルの内容を表す情報を出力する第2出力部と、
    前記保存装置から前記第1暗号化データを取得する取得部と、
    前記第1暗号化データが入力されたか否かを判定する判定部と、
    前記第1暗号化データが入力されたとき、前記第2出力部による出力処理を停止する停止部と、
    前記処理装置と着脱可能に接続される第3接続部と、
    前記第1暗号化データが入力されたとき、前記第1暗号化データを復号する第1復号部と、
    前記第1データを用いて前記第1演算を実行し、かつ前記処理装置に前記第2データを用いて前記第2演算を実行させることにより推論をする推論部と、
    を備えることを特徴とする処理システム。
  14. 前記処理装置は、前記第1復号部に代えて、
    前記推論装置から前記第1暗号化データが入力されたとき、前記第1暗号化データを復号する第2復号部と、
    前記第2復号部で復号された前記第1データを前記推論装置に出力する第3出力部と、
    を備え、
    前記推論装置において、
    前記取得部は、
    前記第1暗号化データが入力されたとき、前記処理装置に前記第1暗号化データを復号させることにより、復号された前記第1データを取得する
    ことを特徴とする請求項13に記載の処理システム。
  15. 前記第2演算は、
    ニューラルネットワークに含まれる連続する3層以上の演算を含む
    ことを特徴とする請求項13または14のいずれか一つに記載の処理システム。
JP2020550013A 2018-10-10 2019-08-21 推論装置、処理システム、推論方法及び推論プログラム Active JP7089303B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018191672 2018-10-10
JP2018191672 2018-10-10
PCT/JP2019/032598 WO2020075396A1 (ja) 2018-10-10 2019-08-21 推論装置、推論方法及び推論プログラム

Publications (2)

Publication Number Publication Date
JPWO2020075396A1 JPWO2020075396A1 (ja) 2021-12-09
JP7089303B2 true JP7089303B2 (ja) 2022-06-22

Family

ID=70164305

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020550013A Active JP7089303B2 (ja) 2018-10-10 2019-08-21 推論装置、処理システム、推論方法及び推論プログラム

Country Status (3)

Country Link
US (1) US20210117805A1 (ja)
JP (1) JP7089303B2 (ja)
WO (1) WO2020075396A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6804074B1 (ja) * 2020-04-27 2020-12-23 Arithmer株式会社 処理装置、学習装置、処理プログラム、及び学習プログラム
CN116249985A (zh) * 2020-09-29 2023-06-09 索尼半导体解决方案公司 信息处理系统和信息处理方法
JPWO2022085420A1 (ja) * 2020-10-19 2022-04-28
JP7241137B1 (ja) 2021-08-31 2023-03-16 株式会社ネクスティエレクトロニクス シミュレーションシステム、シミュレーション装置、シミュレーション方法及びコンピュータプログラム
WO2023195247A1 (ja) * 2022-04-06 2023-10-12 ソニーセミコンダクタソリューションズ株式会社 センサ装置、制御方法、情報処理装置、情報処理システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002026892A (ja) 2000-05-02 2002-01-25 Murata Mach Ltd 鍵共有方法,秘密鍵生成方法,共通鍵生成方法,暗号通信方法,秘密鍵生成器,共通鍵生成器,暗号通信システム及び記録媒体
JP2004282717A (ja) 2003-02-25 2004-10-07 Sharp Corp 画像処理装置
WO2016199330A1 (ja) 2015-06-12 2016-12-15 パナソニックIpマネジメント株式会社 画像符号化方法、画像復号方法、画像符号化装置および画像復号装置
CN108540444A (zh) 2018-02-24 2018-09-14 中山大学 一种信息传输储存方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271594A (ja) * 1994-03-31 1995-10-20 Mitsubishi Electric Corp ファジー開発支援装置
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
JP3409653B2 (ja) * 1997-07-14 2003-05-26 富士ゼロックス株式会社 サービス提供システム、認証装置及び認証プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2001307426A (ja) * 2000-04-26 2001-11-02 Matsushita Electric Ind Co Ltd データ管理方法
JP2003208406A (ja) * 2002-11-18 2003-07-25 Fuji Xerox Co Ltd サービス提供システム、認証装置及び認証プログラムを記録したコンピュータ読み取り可能な記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002026892A (ja) 2000-05-02 2002-01-25 Murata Mach Ltd 鍵共有方法,秘密鍵生成方法,共通鍵生成方法,暗号通信方法,秘密鍵生成器,共通鍵生成器,暗号通信システム及び記録媒体
JP2004282717A (ja) 2003-02-25 2004-10-07 Sharp Corp 画像処理装置
WO2016199330A1 (ja) 2015-06-12 2016-12-15 パナソニックIpマネジメント株式会社 画像符号化方法、画像復号方法、画像符号化装置および画像復号装置
CN108540444A (zh) 2018-02-24 2018-09-14 中山大学 一种信息传输储存方法及装置

Also Published As

Publication number Publication date
US20210117805A1 (en) 2021-04-22
JPWO2020075396A1 (ja) 2021-12-09
WO2020075396A1 (ja) 2020-04-16

Similar Documents

Publication Publication Date Title
JP7089303B2 (ja) 推論装置、処理システム、推論方法及び推論プログラム
US8555059B2 (en) Secure local update of content management software
KR101712784B1 (ko) 글로벌 플랫폼 규격을 사용하는 발행자 보안 도메인에 대한 키 관리 시스템 및 방법
CN105580027B (zh) 用于使用不同域特定密钥确保内容安全的方法
CN102271037B (zh) 基于在线密钥的密钥保护装置
KR100737628B1 (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
KR101861401B1 (ko) 장치 기능과 애플리케이션의 결합
US8464043B2 (en) Information security device and information security system
US9798888B2 (en) Data management
JP5417092B2 (ja) 暗号化属性を用いて高速化された暗号法
US20080285747A1 (en) Encryption-based security protection method for processor and apparatus thereof
US20110022856A1 (en) Key Protectors Based On Public Keys
JP2006121689A (ja) Drmシステムにおけるシステムキーを共有及び生成する方法、並びにその装置
JP2016513840A (ja) データセキュリティを保護するための方法、サーバ、ホスト、およびシステム
US20080229115A1 (en) Provision of functionality via obfuscated software
JP2007511810A (ja) 乱数関数を利用した実行証明
CN112953930A (zh) 一种云存储数据的处理方法、装置及计算机系统
JP6796861B2 (ja) アプリケーションソフトウェアの提供及び認証方法並びにそのためのシステム
JP2016129403A (ja) 暗号化プロトコルの難読化された初期値に対するシステムおよび方法
EP3455763B1 (en) Digital rights management for anonymous digital content sharing
US8756433B2 (en) Associating policy with unencrypted digital content
JP5997604B2 (ja) ソフトウェア不正使用防止機能を備えた情報処理装置、ソフトウェア不正使用防止方法及びプログラム
JP2020191552A (ja) シェア分散システムおよび方法
JP6806433B2 (ja) 鍵管理システム、鍵管理装置、鍵管理方法、およびプログラム
CN114666055A (zh) 软件数字水印的处理方法及相关装置

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A5211

Effective date: 20210317

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210317

AA64 Notification of invalidation of claim of internal priority (with term)

Free format text: JAPANESE INTERMEDIATE CODE: A241764

Effective date: 20211019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220531

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220603

R150 Certificate of patent or registration of utility model

Ref document number: 7089303

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150