(57)【要約】【課題】機械学習結果を利用した処理を安全に実行することができるデバイス等を提供する。【解決手段】デバイス１は、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、前記学習済みモデルに基づく演算処理を実行する実行部と、該実行部よりセキュアなコンポーネントであって、前記実行部からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行するセキュア部とを備え、前記実行部は、前記セキュア部による演算結果を用いて、最終的な演算結果を出力することを特徴とする。【選択図】図１
2019121141.tif 000002
【特許請求の範囲】
【請求項１】
機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、
前記学習済みモデルに基づく演算処理を実行する実行部と、
該実行部よりセキュアなコンポーネントであって、前記実行部からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行するセキュア部と
を備え、
前記実行部は、前記セキュア部による演算結果を用いて、最終的な演算結果を出力する
ことを特徴とするデバイス。
【請求項２】
前記実行部は、
前記学習済みモデルの一部の前記演算要素に係る演算を行い、
該一部の演算要素に係る演算結果と、該一部の演算要素とは異なる前記演算要素を演算対象に指定する情報とを前記セキュア部に出力し、
前記セキュア部は、
前記実行部から出力された演算結果を用いて、指定された前記演算要素に係る演算を実行し、
指定された前記演算要素の演算結果を前記実行部に返送する
ことを特徴とする請求項１に記載のデバイス。
【請求項３】
前記セキュア部は、
確率で表現された演算結果の端数処理を行って、前記実行部に返送する演算結果を変換し、
変換後の演算結果を前記実行部に返送する
ことを特徴とする請求項２に記載のデバイス。
【請求項４】
運用者認証に必要な認証情報を取得する取得部を備え、
前記セキュア部は、前記認証情報に基づく運用者認証に成功した場合、前記演算処理を実行する
ことを特徴とする請求項１〜３のいずれか１項に記載のデバイス。
【請求項５】
前記セキュア部は、耐タンパ性を有するセキュアエレメント、又は前記実行部が処理を行う実行環境からのアクセスが制限されたトラステッド実行環境である
ことを特徴とする請求項１〜４のいずれか１項に記載のデバイス。
【請求項６】
前記セキュア部は、
前記実行部から要求された前記演算処理の一部又は全部の実行を、デバイスと通信可能な管理装置に要求し、
前記管理装置から演算結果を取得し、
前記管理装置から取得した演算結果を、又は該取得した演算結果を用いて前記セキュア部が実行した前記演算処理の結果を、前記実行部に返送する
ことを特徴とする請求項１〜５のいずれか１項に記載のデバイス。
【請求項７】
前記セキュア部は、
前記実行部からの演算要求を受け付けた場合、前記演算処理の実行回数をカウントし、
前記実行回数が所定回数に達した場合、前記演算処理を制限する
ことを特徴とする請求項１〜５のいずれか１項に記載のデバイス。
【請求項８】
前記セキュア部は、カウントした前記実行回数、又は前記演算処理を実行した旨を示す情報を、デバイスと通信可能な管理装置に通知する
ことを特徴とする請求項７に記載のデバイス。
【請求項９】
前記セキュア部は、前記演算処理を実行した実行日時を併せて通知する
ことを特徴とする請求項８に記載のデバイス。
【請求項１０】
前記セキュア部は、
前記所定回数を、前記管理装置からの指示に従って更新する
ことを特徴とする請求項８又は９に記載のデバイス。
【請求項１１】
前記セキュア部は、
前記演算処理の許可又は禁止を表す許否情報を保持し、
前記演算処理の許可を表す前記許否情報を保持してある場合、前記演算処理を実行する
ことを特徴とする請求項１〜５のいずれか１項に記載のデバイス。
【請求項１２】
デバイスの動作状況を管理する管理装置と通信を行い、該管理装置からの指示に従って前記許否情報を設定する
ことを特徴とする請求項１１に記載のデバイス。
【請求項１３】
前記セキュア部は、
デバイスと通信可能な管理装置から、最新の前記学習済みモデルを展開するために必要なパラメータを取得し、
取得した前記パラメータを、前記実行部に出力し、
前記実行部は、前記セキュア部から取得した前記パラメータに基づき、前記最新の学習済みモデルを前記記憶部に展開する
ことを特徴とする請求項１〜５のいずれか１項に記載のデバイス。
【請求項１４】
前記セキュア部は、通信内容を暗号化した秘匿通信路を介して、前記管理装置との間の通信を行う
ことを特徴とする請求項６、８〜１０、１２及び１３のいずれか１項に記載のデバイス。
【請求項１５】
デバイスに搭載されるセキュアエレメントであって、
前記デバイスから、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルに基づく演算処理の実行要求を受け付ける受付部と、
受け付けた実行要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行する演算部と、
演算結果を前記デバイスに出力する出力部と
を備えることを特徴とするセキュアエレメント。
【請求項１６】
前記デバイスから要求された前記演算処理の一部又は全部の実行を、前記デバイスと通信可能な管理装置に要求する要求部と、
前記管理装置から演算結果を取得する取得部と
を備えることを特徴とする請求項１５に記載のセキュアエレメント。
【請求項１７】
セキュアエレメントを搭載したデバイスに、
機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶部に記憶し、
該学習済みモデルに基づく演算処理を実行する
処理を実行させるプログラムであって、
前記セキュアエレメントに対し、前記学習済みモデルの一部の前記演算要素に係る演算処理を要求し、
前記セキュアエレメントによる演算結果を用いて、最終的な演算結果を出力する
ことを特徴とするプログラム。
【請求項１８】
デバイスに、
機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを第１の実行環境に保持し、
前記学習済みモデルに基づく演算処理を前記第１の実行環境において実行する
処理を実行させるプログラムであって、
前記第１の実行環境よりもセキュアな第２の実行環境において、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行し、
前記第２の実行環境における演算結果を用いて、最終的な演算結果を出力する
ことを特徴とするプログラム。
【請求項１９】
デバイスと、該デバイスと通信可能な管理装置とを有する情報処理システムであって、
前記デバイスは、
機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、
前記学習済みモデルに基づく演算処理を実行する実行部と、
該実行部よりセキュアなコンポーネントであって、前記実行部からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行するセキュア部と
を備え、
前記実行部は、前記セキュア部による演算結果を用いて、最終的な演算結果を出力し、
前記セキュア部は、前記演算処理の実行回数、又は該演算処理を実行した旨を示す情報を前記管理装置に通知し、
前記管理装置は、前記セキュア部からの通知に基づき、前記実行回数を管理する
ことを特徴とする情報処理システム。
【請求項２０】
前記セキュア部は、
前記実行部からの演算要求を受け付けた場合、前記実行回数をカウントし、
カウントした前記実行回数を前記管理装置に通知する
ことを特徴とする請求項１９に記載の情報処理システム。
【請求項２１】
前記セキュア部は、前記演算処理を実行した場合に、該演算処理を実行した旨を示す情報を前記管理装置に通知し、
前記管理装置は、前記セキュア部からの通知に基づいて前記実行回数をカウントする
ことを特徴とする請求項２０に記載の情報処理システム。
【請求項２２】
前記セキュア部は、前記実行回数が所定回数に達していない場合、前記演算処理を実行する
ことを特徴とする請求項１９〜２１のいずれか１項に記載の情報処理システム。
【請求項２３】
前記セキュア部は、前記実行回数又は前記演算処理を実行した旨を示す情報を、前記デバイスの識別情報と共に前記管理装置に通知し、
前記管理装置は、前記実行回数又は前記演算処理を実行した旨を示す情報を、前記識別情報と対応付けて記憶部に記憶する
ことを特徴とする請求項１９〜２２のいずれか１項に記載の情報処理システム。
【請求項２４】
前記セキュア部は、前記実行回数又は前記演算処理を実行した旨を示す情報を、前記演算処理を実行した実行日時と共に前記管理装置に通知し、
前記管理装置は、前記実行回数又は前記演算処理を実行した旨を示す情報を、前記実行日時と共に記憶部に記憶する
ことを特徴とする請求項１９〜２３のいずれか１項に記載の情報処理システム。
【請求項２５】
前記管理装置は、
前記実行回数及び実行日時に基づき、前記演算処理の実行頻度が閾値以上であるか否かを判定する判定部と、
前記実行頻度が閾値以上であると前記判定部が判定した場合、前記演算処理の禁止を前記セキュア部に指示する指示部と
を備えることを特徴とする請求項２４に記載の情報処理システム。
【請求項２６】
前記記憶部は、複数の前記デバイスを互いに関連付けて記憶してあり、
前記指示部は、互いに関連付けられた複数の前記デバイスに対し、前記演算処理の禁止を指示する
ことを特徴とする請求項２５に記載の情報処理システム。
【請求項２７】
機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、前記学習済みモデルに基づく演算処理を実行する実行部とを備えたデバイスに、
前記実行部が、該実行部よりもセキュアなコンポーネントに対し、前記学習済みモデルの一部の前記演算要素に係る演算処理を要求し、
前記セキュアなコンポーネントが、前記一部の演算要素に係る演算処理を実行し、
前記実行部は、前記セキュアなコンポーネントによる演算結果を用いて、最終的な演算結果を出力する
処理を実行させることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス、セキュアエレメント、プログラム、情報処理システム及び情報処理方法に関する。
【背景技術】
【０００２】
近年、ＩｏＴ（Internet of Things）技術が急速に普及し、様々なデバイスがインターネットに接続されるようになっている。一方で、インターネットに接続されるデバイスが拡大することによって、デバイスの脆弱性に起因するセキュリティ上の問題が顕在化している。
【０００３】
また、ＩｏＴに限らず、ディープラーニングに代表される機械学習への関心が高まっている。これに伴い、機械学習技術をＩｏＴに係るクラウドコンピューティングに適用し、データセンタであるクラウドサーバが機械学習を行って学習済みモデルを構築し、学習結果をＩｏＴデバイスに提供して種々の処理を行うシステムが検討されている（例えば特許文献１）。
【０００４】
一方で、クラウド上に全てのデータ及び機能を集約するクラウドコンピューティングでは、ユーザとクラウドサーバとの間の通信距離が長くなることから、レイテンシー（処理速度）の遅延が避けられないとの問題がある。この問題に対し、クラウドサーバが行う処理の一部を、よりユーザに近いクライアント側で行うことで、通信距離を短縮してレイテンシーを向上させるエッジコンピューティングの技術が注目を集めている。
【０００５】
上記の機械学習とエッジコンピューティングとの相補についても注目を集めている。すなわち、クライアントであるＩｏＴデバイスに機械学習演算の一部を委譲することで、クラウドコンピューティングに比べて演算結果を早くユーザに伝達する、という考え方である。例えばクラウドサーバが機械学習を行って学習結果をＩｏＴデバイスに配信し、ＩｏＴデバイスが学習結果である学習済みモデルをメモリ上に展開して、学習済みモデルに基づく種々の処理を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−１４２６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の如くＩｏＴデバイスでのセキュリティの問題から、デバイス上に展開された学習済みモデルを第三者により盗難、模倣される等の課題が顕在化するであろうことが予測される。
【０００８】
一つの側面では、機械学習結果を利用した処理を安全に実行することができるデバイス等を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一つの側面に係るデバイスは、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、前記学習済みモデルに基づく演算処理を実行する実行部と、該実行部よりセキュアなコンポーネントであって、前記実行部からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行するセキュア部とを備え、前記実行部は、前記セキュア部による演算結果を用いて、最終的な演算結果を出力することを特徴とする。
【００１０】
一つの側面に係るセキュアエレメントは、デバイスに搭載されるセキュアエレメントであって、前記デバイスから、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルに基づく演算処理の実行要求を受け付ける受付部と、受け付けた実行要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行する演算部と、演算結果を前記デバイスに出力する出力部とを備えることを特徴とする。
【００１１】
一つの側面に係るプログラムは、セキュアエレメントを搭載したデバイスに、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶部に記憶し、該学習済みモデルに基づく演算処理を実行する処理を実行させるプログラムであって、前記セキュアエレメントに対し、前記学習済みモデルの一部の前記演算要素に係る演算処理を要求し、前記セキュアエレメントによる演算結果を用いて、最終的な演算結果を出力することを特徴とする。
【００１２】
一つの側面に係るプログラムは、デバイスに、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを第１の実行環境に保持し、前記学習済みモデルに基づく演算処理を前記第１の実行環境において実行する処理を実行させるプログラムであって、前記第１の実行環境よりもセキュアな第２の実行環境において、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行し、前記第２の実行環境における演算結果を用いて、最終的な演算結果を出力することを特徴とする。
【００１３】
一つの側面に係る情報処理システムは、デバイスと、該デバイスと通信可能な管理装置とを有する情報処理システムであって、前記デバイスは、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、前記学習済みモデルに基づく演算処理を実行する実行部と、該実行部よりセキュアなコンポーネントであって、前記実行部からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行するセキュア部とを備え、前記実行部は、前記セキュア部による演算結果を用いて、最終的な演算結果を出力し、前記セキュア部は、前記演算処理の実行回数、又は該演算処理を実行した旨を示す情報を前記管理装置に通知し、前記管理装置は、前記セキュア部からの通知に基づき、前記実行回数を管理することを特徴とする。
【００１４】
一つの側面に係る情報処理方法は、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する記憶部と、前記学習済みモデルに基づく演算処理を実行する実行部とを備えたデバイスに、前記実行部が、該実行部よりもセキュアなコンポーネントに対し、前記学習済みモデルの一部の前記演算要素に係る演算処理を要求し、前記セキュアなコンポーネントが、前記一部の演算要素に係る演算処理を実行し、前記実行部は、前記セキュアなコンポーネントによる演算結果を用いて、最終的な演算結果を出力する処理を実行させることを特徴とする。
【発明の効果】
【００１５】
一つの側面では、機械学習結果を利用した処理を安全に実行することができる。
【図面の簡単な説明】
【００１６】
【図１】ＩｏＴシステムの構成例を示すブロック図である。
【図２】動作管理ＤＢのレコードレイアウトの一例を示す説明図である。
【図３】推論モデルの展開処理を説明するための説明図である。
【図４】推論モデルの基本構造の一例を示す説明図である。
【図５】学習パラメータの適用処理に関する説明図である。
【図６】教師モデルを用いた生徒モデルの生成に関する説明図である。
【図７】推論処理を説明するための説明図である。
【図８】デバイス本体及びセキュアエレメントがそれぞれ行う演算内容について説明するための説明図である。
【図９】推論実行回数及び許否情報の更新処理に関する説明図である。
【図１０】推論モデルの展開処理の処理手順の一例を示すフローチャートである。
【図１１】推論処理の処理手順の一例を示すフローチャートである。
【図１２】推論実行回数及び許否情報の更新処理の処理手順の一例を示すフローチャートである。
【図１３】実施の形態２に係る推論処理に関する説明図である。
【図１４】デバイス本体、セキュアエレメント及びサーバがそれぞれ行う演算内容について説明するための説明図である。
【図１５】実施の形態２に係る推論処理の処理手順の一例を示すフローチャートである。
【図１６】実施の形態２に係る推論処理の処理手順の一例を示すフローチャートである。
【図１７】応用実施例に係る推論処理の処理手順を示すフローチャートである。
【図１８】実施の形態３に係るＩｏＴシステムの構成例を示すブロック図である。
【図１９】推論モデルの更新処理に関する説明図である。
【図２０】推論モデルの更新処理の処理手順の一例を示すフローチャートである。
【図２１】推論処理の実行頻度に基づく推論禁止処理に関する説明図である。
【図２２】推論禁止処理の処理手順の一例を示すフローチャートである。
【図２３】上述した形態のデバイスの動作を示す機能ブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
（実施の形態１）
図１は、ＩｏＴシステムの構成例を示すブロック図である。本実施の形態では、ＩｏＴ端末であるデバイス１に機械学習の成果物である推論モデル１２１をインストールし、デバイス１が推論モデル１２１を利用して、入力データから適切な出力データを推論する推論処理を行う形態について述べる。なお、本明細書において「推論」とは機械学習結果を利用した処理全般を表す文言として用い、「推論モデル」とは機械学習により生成された学習済みモデルを表す文言として用いる。
【００１８】
ＩｏＴシステムは、デバイス１と、サーバ３とを有する。デバイス１は、インターネットであるネットワークＮに接続された電子機器であり、例えば監視カメラ、多機能端末、車両に搭載されたＥＣＵ（Electronic Control Unit）、生産設備やインフラ設備の異常監視装置等、種々の機器であり得る。本実施の形態においてデバイス１は監視カメラであるものとして説明する。
【００１９】
サーバ３は、デバイス１の動作状況を管理する管理装置であり、ネットワークＮを介してデバイス１に通信接続されている。本実施の形態では、サーバ３が機械学習を行って推論モデル１２１を生成し、生成した推論モデル１２１のデータ（図１に示す最新モデル用パラメータ３４１）をデバイス１に配信する。デバイス１は、当該データに基づいて推論モデル１２１を自装置のメモリ上に展開し、推論処理を行う。例えばデバイス１が監視カメラである場合、デバイス１は撮像画像に含まれる物体が何であるかを推論（推定）し、推論結果を外部に通知する。
【００２０】
また、サーバ３は、推論モデル１２１に基づくデバイス１の動作状況に関するデータを収集し、データベース上でデバイス１の動作状況を管理する。詳しくは後述するように、サーバ３は、各デバイス１にインストールした推論モデル１２１の種類やバージョン情報のほか、各デバイス１において実行させた推論処理の実行回数、及び各デバイス１における推論処理を許可するか否か等の情報を管理する。
【００２１】
デバイス１は、デバイス本体１０と、セキュアエレメント（セキュア部）２０とを有する。デバイス本体１０は、ＳｏＣ（System on Chip）により構成され、デバイス１の多く又は全部の機能を実現するデバイス１の本体部分である。セキュアエレメント２０は、デバイス本体１０とは物理的又は論理的に分離されたハードウェアであり、外部からの攻撃に対して耐タンパ性を有するチップである。セキュアエレメント２０は内部に不揮発性メモリを有し、データを安全に保管する。なお、セキュアエレメント２０はＵＩＣＣ（Universal Integrated Circuit Card）のように、デバイス１に対して着脱自在な構成であってもよい。デバイス本体１０及びセキュアエレメント２０は、例えばＩＳＯ（International Organization Standardization）７８１６、ＳＰＩ（Serial Peripheral Interface）等の規格で相互に接続されている。
【００２２】
デバイス本体１０は、制御部１１、記憶部１２、入出力Ｉ／Ｆ１３、通信部１４、入力部１５、及び撮像部１６を備える。
制御部１１は、一又は複数のＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-Processing Unit）、ＧＰＵ（Graphics Processing Unit）等の演算処理装置を有し、記憶部１２に記憶されたプログラムＰ１を読み出して実行することにより、デバイス１に係る種々の情報処理、制御処理を行う。記憶部１２は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等を有し、制御部１１が演算処理を実行するために必要なプログラムＰ１、その他のデータを記憶する。また、記憶部１２は、後述するように、セキュアエレメント２０に格納された推論モデル用パラメータ２７１に基づき構築した推論モデル１２１を記憶する。
【００２３】
入出力Ｉ／Ｆ１３は、セキュアエレメント２０と情報の入出力を行うためのインターフェイスであり、上述の如く、ＩＳＯ７８１６、ＳＰＩ等の規格で情報の入出力を行う。通信部１４は、インターネット通信に関する処理を行うための処理回路、アンテナ等を含み、ネットワークＮを介してサーバ３等と情報の送受信を行う。入力部１５は、ユーザから情報の入力を受け付ける入力インターフェイスであり、デバイス１の種類に応じて、例えばメカニカルキー、タッチパネル、音声入力マイク等、種々の形態であり得る。撮像部１６は、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等を有する撮像機構であり、画像の撮像を行う。
【００２４】
セキュアエレメント２０は、読出部２１、認証部２２、演算部２３、カウンタ２４、通信路開設部２５、入出力Ｉ／Ｆ２６、及び記憶部２７を備える。
読出部２１は、記憶部２７からデータを読み出してデバイス本体１０に出力する。認証部２２は、後述するように、デバイス本体１０から入力される認証情報の確認を行う。演算部２３は、推論モデル１２１に基づく演算処理を実行する。カウンタ２４は、デバイス１における推論処理の実行回数をカウントする。通信路開設部２５は、サーバ３との間で通信内容を暗号化した秘匿通信路４１（図７等参照）を開設する。入出力Ｉ／Ｆ２６は、デバイス本体１０の入出力Ｉ／Ｆ１３との間でデータの入出力を行う。
【００２５】
記憶部２７は不揮発性メモリであり、推論モデル用パラメータ２７１、推論モデル１２１、許可フラグ２７２、及び固有ＩＤ２７３を記憶している。推論モデル用パラメータ２７１は、後述するように、デバイス本体１０が推論モデル１２１を展開するために必要なパラメータである。推論モデル１２１は、デバイス本体１０の記憶部１２に記憶してあるモデルデータと同じデータであり、機械学習により生成された学習済みモデルのデータである。許可フラグ２７２は、自装置（デバイス１）での推論処理の実行が許可又は禁止されていることを示す許否情報であり、後述するように、サーバ３からの指示に従って設定される。固有ＩＤ２７３は、セキュアエレメント２０に固有の個体識別情報であり、例えばセキュアエレメント２０の製造番号等である。
【００２６】
サーバ３は、制御部３１、主記憶部３２、通信部３３、及び補助記憶部３４を備える。
制御部３１は、一又は複数のＣＰＵ、ＭＰＵ等の演算装置を備え、サーバ３に係る種々の情報処理、制御処理を行う。主記憶部３２は、ＲＡＭ等の揮発性メモリであり、制御部３１が処理を実行する上で必要なデータを一時的に記憶する。通信部３３は、通信に関する処理を行う処理回路等を有し、ネットワークＮを介してデバイス１等と通信を行う。
【００２７】
補助記憶部３４は、大容量メモリ、ハードディスク等であり、サーバ３が処理を行うために必要なプログラムＰ２、その他のデータを記憶している。また、補助記憶部３４は、最新モデル用パラメータ３４１及び動作管理ＤＢ３４２を記憶している。最新モデル用パラメータ３４１は、デバイス１に配信する最新の推論モデル１２１のデータであり、デバイス１が推論モデル１２１を展開する上で必要なパラメータである。動作管理ＤＢ３４２は、デバイス１の動作状況を管理するデータベースである。
【００２８】
なお、補助記憶部３４はサーバ３に接続された外部記憶装置であってもよい。また、サーバ３は複数のコンピュータからなるマルチサーバであってもよく、ソフトウェアによって仮想的に構築された仮想マシンであってもよい。
【００２９】
図２は、動作管理ＤＢ３４２のレコードレイアウトの一例を示す説明図である。動作管理ＤＢ３４２は、ＩＤ列、実行回数列、実行日時列、実行許可列、種別列、バージョン列を含む。ＩＤ列は、各デバイス１（セキュアエレメント２０）の識別情報である固有ＩＤ２７３を記憶している。実行回数列は、固有ＩＤ２７３と対応付けて、各デバイス１で推論処理を実行した実行回数を記憶している。実行日時列は、固有ＩＤ２７３と対応付けて、各デバイス１で推論処理を実行した日時を記憶している。実行許可列は、固有ＩＤ２７３と対応付けて、各デバイス１において推論処理を許可又は禁止していることを示す許否情報を記憶している。種別列は、固有ＩＤ２７３と対応付けて、各デバイス１に適用（インストール）してある推論モデル１２１の種別を記憶している。バージョン列は、固有ＩＤ２７３と対応付けて、各デバイス１に適用してある推論モデル１２１のバージョン情報を記憶している。
【００３０】
図３は、推論モデル１２１の展開処理を説明するための説明図である。図３では、デバイス本体１０がセキュアエレメント２０から推論モデル用パラメータ２７１を読み出し、当該パラメータに基づいて推論モデル１２１をメモリ上に展開する様子を概念的に図示している。
上述の如く、セキュアエレメント２０は記憶部２７に、機械学習により生成された推論モデル１２１を展開するための推論モデル用パラメータ２７１を記憶している。本実施の形態において推論モデル１２１は、ディープラーニングにより生成されたニューラルネットワークであるものとして説明する。なお、機械学習のアルゴリズムはディープラーニングに限定されるものではなく、例えば回帰法、決定木学習、ベイズ法、クラスタリング等であってもよく、また、推論モデル１２１はニューラルネットワークに限定されるものではなく、線形モデル、決定木、ベイジアンネットワーク等であってもよい。
【００３１】
例えばサーバ３は、定期的に推論モデル１２１のアップデート（学習）を行い、最新モデル用パラメータ３４１をデバイス１に配信する。デバイス１は、サーバ３から配信された最新モデル用パラメータ３４１を、推論モデル用パラメータ２７１としてセキュアエレメント２０に格納しておく。なお、機械学習は、パラメータの配信元であるサーバ３が主体となって行うものでもよく、他のコンピュータが機械学習を行って学習結果をサーバ３に保存しておいてもよい。
【００３２】
推論モデル用パラメータ２７１は、ハイパーパラメータ２７１ａと、学習パラメータ２７１ｂと、バージョン情報２７１ｃとから成るデータ群である。ハイパーパラメータ２７１ａは、コンピュータに機械学習を行わせるために手動設定される設定値であり、推論モデル１２１の基本構造を一意に特定可能なパラメータである。例えば推論モデル１２１がニューラルネットワークである場合、ハイパーパラメータ２７１ａは、各ニューロン層に入力される入力数、各ニューロン層から出力される出力数、ニューロン間の層間結合、各ニューロンの演算処理に用いられる活性化関数等を指し示す情報である。
【００３３】
学習パラメータ２７１ｂは、ハイパーパラメータ２７１ａで規定されるネットワーク構造の下、機械学習によりコンピュータが学習した学習値である。例えば推論モデル１２１がニューラルネットワークである場合、学習パラメータ２７１ｂは、各ニューロンの重み付け係数、バイアス値等のパラメータである。サーバ３は、正解値付きの教師データの入力を受け、各ニューロンに適用する学習パラメータ２７１ｂを学習する。
なお、機械学習は教師なし学習、半教師学習等であってもよい。また、機械学習は強化学習であってもよく、この場合、推論モデル用パラメータ２７１はＱ値（Ｑ（ｓ，ａ）；ｓは状態、ａは行動）であってもよい。
【００３４】
バージョン情報２７１ｃは、推論モデル１２１のバージョン数を表す情報である。上述の如く、サーバ３は定期的に推論モデル１２１をアップデートし、最新モデル用パラメータ３４１を配信する。バージョン情報２７１ｃは、当該アップデートによるバージョン数を表す。
【００３５】
図３において符号Ｐ１〜Ｐ８で示す処理プロセスについて、順に説明する。なお、初期段階でデバイス本体１０には推論モデル１２１が未展開であるものとする。
例えばデバイス１の起動時、又は推論を伴うアプリケーションの動作開始時等に、デバイス本体１０の制御部１１は、セキュアエレメント２０に対して推論モデル用パラメータ２７１の読み出しを要求する（Ｐ１）。
【００３６】
読出要求を受け付けた場合、セキュアエレメント２０の読出部２１はまず、当該読出要求が正当なものであるか否か、運用者認証を行う。読出部２１は認証部２２に対し、運用者（デバイス１のユーザ等）の認証に必要な認証情報を確認するよう要求する（Ｐ２）。当該要求を受け付けた場合、認証部２２はデバイス本体１０に対し、認証情報の出力を要求する（Ｐ３）。
【００３７】
認証情報の出力要求を受け付けた場合、デバイス本体１０の制御部１１は、セキュアエレメント２０に対して認証情報を出力する（Ｐ４）。認証情報は例えば、入力部１５を介して入力されるＰＩＮ（Personal Identification Number）コード、パスワード、生体情報等である。なお、認証情報はこれらに限定されるものではなく、運用者の正当性を適切に確認することができればよい。認証部２２は、デバイス本体１０から取得した認証情報を、セキュアエレメント２０で事前に保持してある認証情報（不図示）と照合し、認証を行う。
【００３８】
認証に失敗した場合、セキュアエレメント２０は推論モデル用パラメータ２７１を出力せず、一連の処理を終了する。認証に成功した場合、認証部２２は認証が完了した旨をセキュアエレメント２０内に保持すると共に、認証が完了した旨をデバイス本体１０に通知する。
【００３９】
認証完了の通知を受けた場合、デバイス本体１０の制御部１１は再度、パラメータの読出要求を行う（Ｐ５）。読出要求を受け付けた場合、セキュアエレメント２０の読出部２１は、記憶部２７から推論モデル用パラメータ２７１を読み出す（Ｐ６）。読出部２１は、読み出したパラメータをデバイス本体１０に出力する（Ｐ７）。
【００４０】
デバイス本体１０の制御部１１は、セキュアエレメント２０から取得したパラメータに基づき、推論モデル１２１をメモリ上に展開する（Ｐ８）。具体的には以下に説明するように、制御部１１は、推論モデル用パラメータ２７１のうち、ハイパーパラメータ２７１ａに基づいてニューラルネットワークの基本構造を決定し、基本構造を決定したニューラルネットワークの各ニューロンに対して学習パラメータ２７１ｂを適用することで、推論モデル１２１を展開する。
【００４１】
図４は、推論モデル１２１の基本構造の一例を示す説明図である。図４では、ハイパーパラメータ２７１ａに基づいてニューラルネットワークの基本構造を決定する様子を概念的に図示している。ハイパーパラメータ２７１ａは、各ニューロン層の入力数、出力数、層間結合等を規定するデータであり、ニューロン層毎に構造を一意に特定可能なように規定されている。
【００４２】
図４の例では、第０層（入力層）の入力数は「３」に規定されているため、デバイス本体１０の制御部１１は、入力値ｘ０〜ｘ２を想定する。また、第０層の出力数は「３」であるため、制御部１１は、ニューロンを３つ配置する。また、層間結合は「全結合」であるため、制御部１１は、第０層の全てのニューロンの出力値を、次の層（第１層）の全てのニューロンに対して入力する。さらに、第０層の活性化関数はＲｅＬＵ（Rectified Linear Unit）で定義されているため、制御部１１は、第０層の各ニューロンにおいて、ＲｅＬＵ関数を用いて出力値を演算する。
【００４３】
以下同様にして、制御部１１は、各ニューロン層における構造を決定する。これによって制御部１１は、図４に示すように、入力から出力に至るニューラルネットワークの基本構造を決定する。
【００４４】
図５は、学習パラメータ２７１ｂの適用処理に関する説明図である。図５では、図４で示したニューラルネットワークの基本構造に対し、機械学習結果に応じた学習パラメータ２７１ｂを適用する様子を図示している。
例えばセキュアエレメント２０には、ハイパーパラメータ２７１ａで規定する第０〜３層のニューロン層に対応して、各ニューロン層に適用する学習パラメータ２７１ｂが保持されている。具体的には、セキュアエレメント２０は各ニューロンに対して適用する重み付け係数、バイアス値等のパラメータを格納しており、制御部１１は、当該パラメータを各々のニューロンに対して適用する。
【００４５】
図３、図５の表では、「ｆｒｏｍ／ｔｏ」で示す表部分の値が重み付け係数に該当する。なお、「ｆｒｏｍ」は入力元である入力値ｘ０〜ｘ２、あるいは前層のニューロンを、「ｔｏ」は入力対象となるニューロンを示している。例えば第０層において、（ｆｒｏｍ，ｔｏ）＝（０，０）のとき、表の値は０．１である。この値は、０番目の入力（ｘ０）が、ニューロン番号が「０」である０番目のニューロンに入力される際の重み付け係数を示している。従って、制御部１１は入力値ｘ０が０番目のニューロンに対して入力される際の重みを０．１として計算する。以下同様にして、制御部１１は、入力値ｘ０が１番目のニューロンに対して入力される際の重みを０．２、入力値ｘ０が２番目のニューロンに対して入力される際の重みを０．３、入力値ｘ１が０番目のニューロンに対して入力される際の重みを０．１、…として設定する。
【００４６】
また、図３、図５の表における「ｂｉａｓ」は、各ニューロンにおいて、重み付け係数を乗算後の入力値に対して加えるバイアス値を示す。例えば第０層におけるバイアス値は全て０．６である。従って、制御部１１は、バイアス値０．６を第０層の各ニューロンに対して設定する。
【００４７】
以下同様にして、制御部１１は第１〜３層のニューロン層についても、重み付け係数及びバイアス値を設定する。これによって制御部１１は、学習パラメータをネットワーク全体に展開し、最初の入力値ｘ０〜ｘ２から最終的な出力値ｙ０〜ｙ２を演算するニューラルネットワークを生成する。
【００４８】
デバイス本体１０は、上記のようにして展開した推論モデル１２１（ニューラルネットワーク）を利用して、所定の推論処理を行う。詳細な図示及び説明は省略するが、例えばデバイス１が監視カメラである場合、デバイス本体１０は、撮像部１６で撮像した画像を入力データとして取得し、当該入力データを推論モデル１２１に入力して、画像内に含まれる物体を推定（推論）する処理を行う。デバイス本体１０は、撮像画像の各画素の色度、輝度等の値を入力値として推論モデル１２１に入力し、出力値を演算する。例えば出力値は、画像内に含まれる物体が、機械学習時にその特徴量を学習した特定の物体である確率を示す値である。デバイス本体１０は、当該出力値を、サーバ３やその他の装置に出力する。例えば画像から不審物を特定した場合、デバイス本体１０は、不審物を発見した旨を報知する。
【００４９】
なお、上記でデバイス１は、セキュアエレメント２０からハイパーパラメータ２７１ａ及び学習パラメータ２７１ｂの両方を読み出して推論モデル１２１を展開しているが、本実施の形態はこれに限定されるものではない。例えばデバイス１は、ハイパーパラメータ２７１ａはデバイス本体１０に保持しておき、学習パラメータ２７１ｂはセキュアエレメント２０に格納しておいて、デバイス本体１０がセキュアエレメント２０から学習パラメータ２７１ｂのみを読み出して推論モデル１２１を展開するようにしてもよい。このように、推論モデル用パラメータ２７１の一部のみをセキュアエレメント２０で保存するようにしてもよい。
【００５０】
上記のようにデバイス１は、デバイス本体１０とは物理的又は論理的に分離されたセキュアエレメント２０に推論モデル用パラメータ２７１を格納しておき、セキュアエレメント２０から推論モデル用パラメータ２７１を読み出して推論モデル１２１を展開する。デバイス本体１０よりセキュアなコンポーネントに推論モデル用パラメータ２７１を保持しておくことで、第三者による推論モデル１２１の盗難、模倣等の可能性を低減することができる。
【００５１】
しかしながら、以下で述べる理由により、推論モデル１２１自体のデータを保護するだけでは安全性を損なう虞がある。
【００５２】
図６は、教師モデルを用いた生徒モデルの生成に関する説明図である。図６を用いて、蒸留と呼ばれる学習済みモデルの生成アルゴリズムについて説明する。
蒸留とは、既存の学習済みモデル（図６の例ではニューラルネットワーク）の出力を、より小規模な他のモデルに対する教師データとすることで、学習済みモデルの規模を縮小しつつ、同等の推論を行うことが可能な生徒モデルを生成する手法である。
【００５３】
図６上側では、一般的なディープラーニングの手法を概念的に図示する。一般的な学習手法では、入力値に対して正解値（ラベル）が付加された教師データをニューラルネットワークに与え、ニューラルネットワークの出力値が正解値に近づくように重み付け係数、バイアス値等を調整（学習）する。例えば画像認識のための学習モデルを想定した場合、入力画像に映っている物体が特定の物体であるかどうか（例えば犬か猫か）を表現する出力値ｙ０、ｙ１の正解値を与える。教師データでは、ある入力画像が犬であるか、又は猫であるかが予め規定されるため、正解値は０又は１の値で与えられる。一方で、入力値から演算されるニューラルネットワークの出力値は、確率で表現された０〜１の値となる。教師データを得たコンピュータは、０〜１の確率値で演算される出力値ｙ０、ｙ１が、正解値である０又は１に近づくように重み付け係数、バイアス値等（図６では下線付きの三点リーダで図示）を学習する。
【００５４】
一方で、蒸留による学習手法では、学習済みのニューラルネットワークを教師モデルとし、教師モデルの入出力値を教師データとして利用して、当該教師データを、教師モデルよりも小規模な生徒モデルに学習させる。図６下側に、蒸留による学習手法を概念的に図示する。図６に示す例では、生徒モデルは教師モデルよりもニューロン層の数が少なくなっている。
【００５５】
当該生徒モデルに対し、教師モデルで推論処理を実行した際の入出力値を与える。ここで、出力値ｙ０、ｙ１の正解値として、犬か猫かの推論結果を示す０又は１の二値ではなく、教師モデルから出力された確率値を用いる点が、一般的な学習手法と相違する。例えば図６下側の表に示すように、生徒モデルには出力値ｙ０、ｙ１の正解値として、０〜１の確率値が与えられる。
【００５６】
蒸留では、上記のように確率で表現された教師モデルの出力値を正解値として用い、生徒モデルの出力値との差異が最小化するように、重み付け係数、バイアス値等を調整する。これにより、教師モデルよりも演算工数を削減しながらも、同等の推論を行うことが可能な学習済みモデルが生成される。
【００５７】
蒸留のアルゴリズムによれば、教師データとして教師モデルの入出力値のみを用いており、教師モデルの基本構造を規定するハイパーパラメータ２７１ａ、又は教師モデルの学習パラメータ２７１ｂを参照していない。従って、本実施の形態のように推論モデル用パラメータ２７１をブラックボックス化しても、デバイス本体１０から推論処理実行時の入出力値を搾取することにより、推論モデル１２１を模倣される虞がある。
【００５８】
そこで本実施の形態に係るデバイス１は、推論処理の一部をデバイス本体１０ではなくセキュアエレメント２０で実行することで、上記の問題を解決する。
【００５９】
図７は、推論処理を説明するための説明図である。図８は、デバイス本体１０及びセキュアエレメント２０がそれぞれ行う演算内容について説明するための説明図である。図７では、デバイス本体１０が推論モデル１２１の一部の演算を実行して演算結果をセキュアエレメント２０に出力し、セキュアエレメント２０が推論モデル１２１の残りの部分の演算を実行して、最終的な推論結果をデバイス本体１０へ返送する様子を概念的に図示している。図８では、図７を用いて説明する演算処理の具体例を図示している。
【００６０】
図７において符号Ｐ２１〜Ｐ４２で示す処理プロセスについて、図８も用いながら順に説明する。なお、図７では便宜上、デバイス本体１０の入出力Ｉ／Ｆ１３、及びセキュアエレメント２０の入出力Ｉ／Ｆ２６を点線の矩形枠で図示している。
まずデバイス本体１０の制御部１１は、推論対象である入力データを推論モデル１２１に入力し、推論モデル１２１の一部の演算を実行する（Ｐ２１）。例えば推論モデル１２１がニューラルネットワークである場合、推論モデル１２１は複数のニューロン層、つまり複数の演算要素を有する。制御部１１は、推論モデル１２１を構成する複数の演算要素のうち、入力層を含む前段要素の演算を行う。
【００６１】
図８の例では、デバイス本体１０が、第０〜３層から成るニューラルネットワークにおいて、入力層である第０層と、次の第１層の演算を行っている。デバイス本体１０は入力データに係る入力値ｘ０〜ｘ２（例えば入力画像の画素値）を第０層に入力し、第０層、第１層の演算を行って、第１層までの演算結果、つまり前段要素の演算結果を得る。
【００６２】
前段要素の演算が完了した場合、デバイス本体１０の制御部１１は、前段要素の演算結果をセキュアエレメント２０に出力し、前段要素を除く推論モデル１２１の後段要素の演算をセキュアエレメント２０に要求する（Ｐ２２）。具体的には、制御部１１は、前段要素の演算結果と共に、セキュアエレメント２０に演算させる後段要素を指定する指定情報を出力し、演算を要求する。指定情報は、自身が演算すべき要素をセキュアエレメント２０が特定可能な情報であり、例えばニューラルネットワークである場合、演算すべきニューロン層の層番号を示す情報である。
【００６３】
図８の例では、デバイス本体１０は、第１層までの演算結果を入力値としてセキュアエレメント２０に入力し、推論モデル１２１の後段要素である第２層、第３層の演算をセキュアエレメント２０に要求する。デバイス本体１０は、演算すべきニューロン層をセキュアエレメント２０が判別可能なように、演算処理の開始層の層番号である「２」と、終了層の層番号である「３」とを併せて通知し、具体的に演算を指示する。
【００６４】
デバイス本体１０から演算要求を受け付けた場合、まずセキュアエレメント２０の認証部２２が運用者認証を行い、正当な運用者からの演算要求であるか否かを確認する（Ｐ２３）。具体的には推論モデル１２１の展開時と同様に、認証部２２はデバイス本体１０からＰＩＮコード、パスワード等の認証情報を取得し、認証情報に基づいて運用者の認証を行う。認証に失敗した場合、認証部２２は認証に失敗した旨をデバイス本体１０に通知し、推論処理を停止させる。なお、例えばすでに運用者認証が行われている場合は、当該認証処理をスキップしてもよい。認証に成功した場合、認証部２２は、デバイス本体１０から取得した前段要素の演算結果及び後段要素の指定情報を演算部２３に受け渡し、演算を要求する（Ｐ２４）。
【００６５】
認証部２２から演算要求を受け付けた場合、演算部２３はまず、カウンタ２４に推論処理（演算処理）の実行回数をカウントさせ、推論実行回数が一定回数に達しているか否かを確認する（Ｐ２５）。例えばカウンタ２４は、推論実行回数の制限回数を保持しており、デバイス本体１０から演算要求を受け付ける毎に残回数をデクリメントする。推論実行回数の制限回数は、各デバイス１のセキュアエレメント２０毎に異なる。後述するように、サーバ３は各デバイス１のセキュアエレメント２０に対して個別に制限回数を付与し、動作管理ＤＢ３４２上で各デバイス１の推論実行回数を一元的に管理する。カウンタ２４は、残回数が０になったか否かをチェックすることで、サーバ３から付与された制限回数に至ったか否かを確認する。実行回数が一定回数に達した場合、演算部２３は演算処理を実行せず、実行回数が一定回数に達した旨をデバイス本体１０に通知して、推論処理を停止させる。これにより、外部からの不正アクセスにより推論処理が実行され、入出力値が大量に搾取される事態を防ぐことができる。
【００６６】
実行回数が一定回数に達していない場合、演算部２３は、許可フラグ２７２を参照して、推論処理が許可されているか否かを確認する（Ｐ２６）。上述の如く、許可フラグ２７２は推論処理の許可又は禁止を表す許否情報である。例えば許可フラグ２７２は、推論実行回数と同様にサーバ３が動作管理ＤＢ３４２上で管理しており、セキュアエレメント２０は、サーバ３からの指示に従って許可フラグ２７２を「許可」又は「禁止」に設定する。許可フラグ２７２が「禁止」である場合、演算部２３は演算を行わず、推論処理が禁止されている旨をデバイス本体１０に通知して処理を停止させる。
【００６７】
許可フラグ２７２が「許可」である場合、演算部２３は、記憶部２７に保持してある推論モデル１２１のデータを参照して、デバイス本体１０から要求された後段要素の演算処理を実行する（Ｐ２７）。例えば推論モデル１２１がニューラルネットワークである場合、演算部２３は、推論モデル１２１を構成する複数の演算要素（ニューロン層）のうち、出力層を含む後段要素の演算を行う。
【００６８】
図８の例では、セキュアエレメント２０が、第０〜３層のうち、第２層と、出力層である第３層との演算を行う様子を図示している。セキュアエレメント２０は、デバイス本体１０から指定された演算処理の開始層である第２層に、デバイス本体１０で演算された第１層の演算結果を入力する。セキュアエレメント２０は、第２層、第３層の演算を実行し、出力値ｙ０、ｙ１、ｙ２を得る。このように、本実施の形態ではセキュアエレメント２０が推論モデル１２１の後段要素の演算を行い、推論結果に相当する出力値ｙ０、ｙ１、ｙ２を計算する。
【００６９】
演算部２３は、後段要素の演算結果をデバイス本体１０に出力する（Ｐ２８）。ここで演算部２３は、確率で表現された推論モデル１２１の出力値をそのままデバイス本体１０に出力することなく、確率値を０又は１の二値に変換する端数処理を行い、変換後の値をデバイス本体１０に出力する。
【００７０】
例えば図８に示すように、推論モデル１２１を構成する演算要素として、０〜１で表現された確率値を０又は１の二値に変換する変換層を用意しておく。セキュアエレメント２０は、出力層（第３層）から出力された出力値ｙ０、ｙ１、ｙ２を当該変換層に入力する。セキュアエレメント２０は、変換層において出力値ｙ０、ｙ１、ｙ２を端数処理し、０又は１の値を出力する。
【００７１】
上記のように、セキュアエレメント２０は推論モデル１２１の出力値を確率値で出力することなく、０又は１の二値に表現し直して出力する。従って、デバイス本体１０から出力値が搾取された場合であっても、確率で表現されていないため、推論モデル１２１の模倣が困難になる。
【００７２】
セキュアエレメント２０から後段要素の演算結果を取得した場合、デバイス本体１０の制御部１１は、取得した演算結果を用いて、一連の推論処理に係る推論結果を出力する。例えばデバイス１が監視カメラである場合、制御部１１は、入力画像に含まれる物体を推論した推論結果を外部に出力する。このように、デバイス本体１０はセキュアエレメント２０での演算結果を推論結果に用いることで、推論モデル１２１の模倣を困難にする。
【００７３】
さらに本実施の形態では、推論処理の実行後、推論処理を実行した旨をセキュアエレメント２０がサーバ３に通知（報告）することで、サーバ３が各デバイス１における推論処理の実行回数を管理する。まずセキュアエレメント２０のカウンタ２４が、カウントした推論実行回数を通信路開設部２５に受け渡す（Ｐ２９）。そして通信路開設部２５が、デバイス１とサーバ３との間で、エンドツーエンドの秘匿通信路４１を開設する（Ｐ３０）。
【００７４】
秘匿通信路４１は、例えばＴＬＳ（Transport Layer Security）のプロトコルで通信内容を暗号化した通信路である。通信路開設部２５は、デバイス本体１０におけるネットワークＮとの通信インターフェイスである通信部１４を経由して、サーバ３との間の秘匿通信路４１を開設する。
【００７５】
なお、秘匿通信路４１は通信内容を秘匿可能であればよく、例えばＳＳＬ（Secure Sockets Layer）等のプロトコルを採用してもよい。また、上記ではデバイス本体１０の物理的な通信手段（通信部１４）を経由して秘匿通信路４１を確立しているが、セキュアエレメント２０がサーバ３との間で秘匿通信路４１を開設可能であればよく、セキュアエレメント２０自体が物理的な通信手段（ＬＡＮ、Ｗｉ−Ｆｉ（登録商標）等）を有する場合、セキュアエレメント２０はサーバ３との間で秘匿通信路４１を直接確立してもよい。
【００７６】
通信路開設部２５は秘匿通信路４１を介して、現在までカウントした推論実行回数をサーバ３に通知する（Ｐ４１）。具体的には、通信路開設部２５は、セキュアエレメント２０の個体識別情報である固有ＩＤ２７３と、カウンタ２４の現在の値（残回数）とを、推論処理を実行する現在の実行日時と共にサーバ３に通知する。サーバ３の制御部３１は、通知された推論実行回数を動作管理ＤＢ３４２に記憶する（Ｐ４２）。具体的には、制御部３１は、セキュアエレメント２０から通知された固有ＩＤ２７３と対応付けて、通知された推論処理の残回数と、実行日時とを動作管理ＤＢ３４２に記憶する。
【００７７】
上記のように、セキュアエレメント２０は推論実行回数をサーバ３へ通知し、サーバ３が各デバイス１（セキュアエレメント２０）の実行回数を管理する。これにより、各デバイス１での推論実行回数が一元管理される。
【００７８】
図９は、推論実行回数及び許否情報の更新処理に関する説明図である。既に触れたように、本実施の形態ではサーバ３が各デバイス１における推論処理の実行回数、及び推論処理の許否情報を管理する。ここでは図９を用いて、推論実行回数及び許否情報の具体的な管理手法の一つとして、サーバ３が各デバイス１と通信を行い、セキュアエレメント２０に保持してある推論実行回数及び許否情報を更新する処理について説明する。なお、図９では図示の便宜のため、デバイス本体１０の通信部１４、及びサーバ３の通信部３３を点線の矩形枠で図示している。
【００７９】
例えばサーバ３は、本システムの管理者が、動作管理ＤＢ３４２において各デバイス１の固有ＩＤ２７３に紐付く推論実行回数及び許否情報を更新した場合、更新内容を各デバイス１に通知し、セキュアエレメント２０に保持してある推論実行回数及び許否情報を更新させる。
【００８０】
例えばサーバ３は、バッチ処理により動作管理ＤＢ３４２を参照して、推論実行回数又は許否情報が変更されたデバイス１があるか否かを確認する（Ｐ４１）。推論実行回数又は許否情報が変更されたデバイス１がある場合、サーバ３は、当該デバイス１の固有ＩＤ２７３を特定する。
【００８１】
サーバ３は、特定した固有ＩＤ２７３のデバイス１のセキュアエレメント２０との間で、秘匿通信路４１を開設する（Ｐ４２）。そしてサーバ３は、秘匿通信路４１を介して、推論実行回数又は許否情報に関する更新内容をセキュアエレメント２０に送信する（Ｐ４３）。
【００８２】
サーバ３から更新内容を受信した場合、セキュアエレメント２０の通信路開設部２５は、更新内容をセキュアエレメント２０内に格納し、推論実行回数又は許否情報を更新する（Ｐ４４）。例えば図９に図示するように、通信路開設部２５は、カウンタ２４が保持する推論処理の残回数、又は記憶部２７に保持してある許可フラグ２７２の値を、サーバ３から受信した値に上書きする。
【００８３】
上記のように、セキュアエレメント２０は、動作管理ＤＢ３４２に設定されている推論実行回数及び許否情報と、自身が保持している推論実行回数及び許否情報とを同期する。セキュアエレメント２０は、上記のようにしてサーバ３から指示された推論実行回数及び許否情報に従って推論処理の可否を判断する。これにより、サーバ３からのセキュアエレメント２０の遠隔制御が可能となる。
【００８４】
なお、上記では管理者による手動設定に従って推論実行回数及び許否情報を更新することにしたが、本実施の形態はこれに限定されるものではない。例えばサーバ３は、セキュアエレメント２０からの通知により残回数が０となった場合、セキュアエレメント２０と通信を行い、残回数を所定のデフォルト値に自動的にリセットさせることにしてもよい。このように、セキュアエレメント２０が保持する推論実行回数及び許否情報をサーバ３が遠隔制御することができればよく、更新のタイミングや処理内容は特に限定されない。
【００８５】
図１０は、推論モデル１２１の展開処理の処理手順の一例を示すフローチャートである。図１０に基づき、推論モデル１２１の展開処理の処理内容について説明する。
例えばデバイス１は、自装置の起動時、又は推論処理を伴うアプリケーションの起動時等、所定のタイミングで以下の処理を実行する。デバイス本体１０の制御部１１は、推論モデル１２１を展開するために必要なパラメータを保持するセキュアエレメント２０に対し、当該パラメータの読み出しを要求する（ステップＳ１１）。上述の如く、セキュアエレメント２０は耐タンパ性を有するチップであり、デバイス本体１０とは物理的に分離され、推論モデル用のパラメータを安全に保持する。
【００８６】
デバイス本体１０からパラメータの読出要求を受け付けた場合、セキュアエレメント２０は、デバイス本体１０に対し、運用者認証に必要な認証情報の出力を要求する（ステップＳ１２）。認証情報の出力要求を受け付けた場合、デバイス本体１０の制御部１１は、入力部１５を介して認証情報の入力を受け付け、セキュアエレメント２０に出力する（ステップＳ１３）。認証情報は、例えばＰＩＮコード、パスワード、生体情報等であるが、運用者の正当性を適切に確認可能な情報であればよい。
【００８７】
セキュアエレメント２０は、認証情報に基づく運用者認証を行う（ステップＳ１４）。セキュアエレメント２０は、運用者認証が成功したか否かを判定する（ステップＳ１５）。認証に失敗した場合（Ｓ１５：ＮＯ）、セキュアエレメント２０はパラメータの読み出しを行わず、一連の処理を終了する。認証が成功した場合（Ｓ１５：ＹＥＳ）、セキュアエレメント２０は推論モデル用パラメータ２７１を記憶部２７から読み出す（ステップＳ１６）。例えば推論モデル１２１がディープラーニングにより生成されるニューラルネットワークである場合、セキュアエレメント２０は、ニューラルネットワークの基本構造を規定するハイパーパラメータ２７１ａと、各ニューロン層に適用する学習パラメータ２７１ｂとを読み出す。セキュアエレメント２０は、読み出したパラメータをデバイス本体１０に出力する（ステップＳ１７）。
【００８８】
セキュアエレメント２０からパラメータの出力を受けた場合、デバイス本体１０の制御部１１は、当該パラメータに基づき、推論モデル１２１を記憶部１２に展開する（ステップＳ１８）。具体的には、制御部１１はハイパーパラメータ２７１ａに従ってニューラルネットワークの基本構造を決定し、決定した基本構造のニューラルネットワークの各ニューロンに学習パラメータ２７１ｂを適用することで、推論モデル１２１を展開する。制御部１１は、一連の処理を終了する。
【００８９】
図１１は、推論処理の処理手順の一例を示すフローチャートである。図１１に基づき、推論モデル１２１に基づく推論処理の処理内容について説明する。
デバイス本体１０の制御部１１は、推論モデル１２１に入力する入力データを取得する（ステップＳ３１）。例えばデバイス１が監視カメラである場合、制御部１１は、撮像部１６で撮像された画像データを取得する。制御部１１は、推論モデル１２１を構成する前段要素の演算処理を実行する（ステップＳ３２）。例えば推論モデル１２１がニューラルネットワークである場合、制御部１１は、ニューラルネットワークの入力層を含む一又は複数のニューロン層の演算を実行する。
【００９０】
制御部１１は、前段要素の演算結果を出力し、前段要素とは異なる推論モデル１２１の後段要素の演算処理をセキュアエレメント２０に要求する（ステップＳ３３）。具体的には、制御部１１は、デバイス本体１０で演算した前段要素の演算結果と共に、セキュアエレメント２０が演算すべき演算要素を指定する情報（例えばニューロン層の層番号等）をセキュアエレメント２０に出力する。
【００９１】
デバイス本体１０から演算要求を受け付けた場合、セキュアエレメント２０は、真正の運用者による演算要求であるか否かを確認する認証処理を行う（ステップＳ３４）。例えばセキュアエレメント２０は、ＰＩＮ情報、パスワード等の認証情報をデバイス本体１０に問い合わせ、デバイス本体１０は認証情報を返信する。セキュアエレメント２０は、当該認証情報に基づいて認証処理を行う。
【００９２】
セキュアエレメント２０は、認証が成功したか否かを判定する（ステップＳ３５）。認証が成功したと判定した場合（Ｓ３５：ＹＥＳ）、セキュアエレメント２０は、デバイス１における推論処理（演算処理）の実行回数をカウントする（ステップＳ３６）。セキュアエレメント２０は、カウントした実行回数が一定回数に達したか否かを判定する（ステップＳ３７）。判定基準とする回数は、デバイス１に許可されている推論処理の制限回数であり、サーバ３がデバイス１（セキュアエレメント２０）毎に制限回数を管理している。
【００９３】
実行回数が一定回数に達していないと判定した場合（Ｓ３７：ＮＯ）、セキュアエレメント２０は許可フラグ２７２を確認し、推論モデル１２１に基づく推論処理（演算処理）が許可されているか否かを判定する（ステップＳ３８）。許可フラグ２７２は、デバイス１での推論処理が許可又は禁止されていることを示す許否情報であり、推論実行回数と同じく、サーバ３がデバイス１毎に許可又は禁止を管理している。
【００９４】
認証に成功しなかったと判定した場合（Ｓ３５：ＮＯ）、実行回数が一定回数に達したと判定した場合（Ｓ３７：ＹＥＳ）、又は推論処理が許可されていないと判定した場合（Ｓ３８：ＮＯ）、セキュアエレメント２０は、要求された演算処理の実行を拒否する旨をデバイス本体１０に通知する（ステップＳ３９）。セキュアエレメント２０から演算拒否の通知を取得した場合、デバイス本体１０の制御部１１は推論処理を停止し（ステップＳ４０）、一連の処理を終了する。
【００９５】
推論処理が許可されていると判定した場合（Ｓ３８：ＹＥＳ）、セキュアエレメント２０は、デバイス本体１０から要求された後段要素の演算処理を実行する（ステップＳ４１）。例えば推論モデル１２１がニューラルネットワークである場合、セキュアエレメント２０は、デバイス本体１０から指定されたニューロン層に対し、デバイス本体１０から取得した前段要素の演算結果を入力値として入力する。デバイス本体１０から指定されるニューロン層は、ニューラルネットワークを構成する一又は複数のニューロン層であり、出力層を含むニューロン層である。セキュアエレメント２０は、出力層に至るまで各ニューロンの演算を行い、最終的な出力値を演算する。
【００９６】
セキュアエレメント２０は、ステップＳ４１における演算結果（出力値）の端数処理を行い、演算結果を変換する（ステップＳ４２）。セキュアエレメント２０は、変換後の演算結果をデバイス本体１０に出力する（ステップＳ４３）。セキュアエレメント２０から演算結果を取得した場合、デバイス本体１０の制御部１１は、当該演算結果を用いて最終的な推論結果（演算結果）を出力し（ステップＳ４４）、一連の処理を終了する。
【００９７】
ステップＳ４３の処理を実行後、セキュアエレメント２０は、サーバ３との間で通信内容を暗号化した秘匿通信路４１を開設する（ステップＳ４５）。セキュアエレメント２０は当該秘匿通信路４１を介して、ステップＳ３６でカウントした推論実行回数をサーバ３に通知する（ステップＳ４６）。具体的には、セキュアエレメント２０は、カウントした推論実行回数と共に、セキュアエレメント２０の固有ＩＤ２７３、及び推論処理の実行日時をサーバ３に通知する。セキュアエレメント２０から推論実行回数の通知を取得した場合、サーバ３の制御部３１は、デバイス１（セキュアエレメント２０）の固有ＩＤ２７３と対応付けて、通知された推論実行回数、及び実行日時を動作管理ＤＢ３４２に記憶する（ステップＳ４７）。制御部３１は、一連の処理を終了する。
【００９８】
図１２は、推論実行回数及び許否情報の更新処理の処理手順の一例を示すフローチャートである。図１２に基づき、サーバ３が、個々のデバイス１のセキュアエレメント２０に保持されている推論実行回数のカウント値、及び許否情報を更新する処理について説明する。
例えばサーバ３は、バッチ処理により一連の処理をスタートする。サーバ３の制御部３１は、動作管理ＤＢ３４２を確認し、推論実行回数又は許否情報が更新されているデバイス１があるか否かを判定する（ステップＳ７１）。上述の如く、動作管理ＤＢ３４２には、個々のデバイス１の固有ＩＤ２７３と対応付けて、各デバイス１の推論実行回数、及び推論処理の許可又は禁止を表す許否情報を記憶している。例えばサーバ３は、本システムの管理者から各データの更新入力を受け付け、動作管理ＤＢ３４２に更新値を記憶しておく。制御部３１は、バッチ処理で動作管理ＤＢ３４２を参照し、更新を検知する。
【００９９】
更新されているデバイス１がないと判定した場合、（Ｓ７１：ＮＯ）、制御部３１は特段の処理を行うことなく一連の処理を終了する。更新されているデバイス１があると判定した場合、制御部３１は、推論実行回数又は許否情報が更新されているデバイス１の固有ＩＤ２７３を特定する（ステップＳ７２）。
【０１００】
制御部３１は、当該固有ＩＤ２７３が示すデバイス１のセキュアエレメント２０との間で、秘匿通信路４１を開設する（ステップＳ７３）。制御部３１は、開設した秘匿通信路４１を介して、更新後の実行回数又は許否情報をセキュアエレメント２０に送信する（ステップＳ７４）。
【０１０１】
サーバ３から実行回数又は許否情報を受信した場合、デバイス１のセキュアエレメント２０は、自身が保持してある実行回数又は許否情報を、受信した実行回数又は許否情報に更新する（ステップＳ７５）。セキュアエレメント２０は、一連の処理を終了する。
【０１０２】
なお、上記でセキュアエレメント２０は、推論処理の実行直後に実行回数をサーバ３へ通知しているが、通知のタイミングは実行直後に限定されず、別途独立して行ってもよい。また、セキュアエレメント２０は推論実行回数のカウント値（残回数）を通知しているが、実行した旨を示す事実のみを通知し、サーバ３が実行回数を別途カウントしてもよい。また、上記ではセキュアエレメント２０から通知された実行日時を動作管理ＤＢ３４２に保存しているが、実行回数の通知を受けた際にサーバ３がタイムスタンプを付し、これを動作管理ＤＢ３４２に保存してもよい。つまり、セキュアエレメント２０からの実行日時の送信は必須ではない。
【０１０３】
また、上記ではデバイス本体１０が推論モデル１２１の前段要素を、セキュアエレメント２０が後段要素の演算を担当しているが、どちらの処理主体がどの演算要素を演算するかは任意の設計事項であり、特に限定されない。後述するように、実施の形態によってはすべての演算をセキュアエレメント２０に指示する設計も想定され得る。また、デバイス本体１０及びセキュアエレメント２０は、それぞれ推論モデル１２１の一部のみ演算を行うため、少なくとも自身が演算を行う推論モデル１２１の一部分のデータを保持してあればよく、完全な推論モデル１２１のデータを保持していなくともよい。また、上記ではセキュアエレメント２０が演算する演算要素をデバイス本体１０が指定しているが、例えば各々が担当する演算要素を予め固定化しておいてもよく、この場合、デバイス本体１０は、演算要素を指定する指定情報（例えばニューロン層の層番号）をセキュアエレメント２０に出力する必要はない。つまり、デバイス本体１０は少なくとも自身で演算した演算結果、または制御部１１から受け取った入力データをセキュアエレメント２０に入力し、演算処理を要求することができればよい。
【０１０４】
以上より、本実施の形態１によれば、デバイス１は、推論モデル１２１の一部の演算要素の演算をデバイス本体１０よりも安全なセキュアエレメント２０で実行する。これにより、デバイス１は、機械学習結果に基づく処理を安全に実行することができる。
【０１０５】
また、本実施の形態１によれば、デバイス１は、推論モデル１２１の前段要素の演算をデバイス本体１０で実行し、最終的な出力値を得る後段要素の演算を、セキュアエレメント２０で実行する。これにより、上記で説明した蒸留の問題に対して適切な対策が取られ、安全性を高めることができる。
【０１０６】
また、本実施の形態１によれば、セキュアエレメント２０は、確率で表現された出力値の端数処理を行い、変換後の出力値をデバイス本体１０に返送する。これにより、たとえデバイス本体１０から出力値が搾取された場合であっても、蒸留のために必要な確率値を搾取されることは避けることができ、安全性をより高めることができる。
【０１０７】
また、本実施の形態１によれば、セキュアエレメント２０は運用者認証を行い、認証に成功した場合にのみ演算処理を実行する。これにより、安全性をさらに高めることができる。
【０１０８】
また、本実施の形態１によれば、推論処理（演算処理）の実行回数が一定回数に至った場合に演算処理を制限することで、外部からの不正操作による演算処理の過剰な実行を防止し、安全性を高めることができる。
【０１０９】
また、本実施の形態１によれば、カウントした推論実行回数、又は推論処理を実行した旨をサーバ３へ通知することで、サーバ３において各デバイス１での推論実行回数を一元管理することができる。
【０１１０】
また、本実施の形態１によれば、単に実行回数を通知するだけでなく、実行日時を併せて通知することで、サーバ３においてデバイス１の動作状況を実行履歴として適切に管理することができる。
【０１１１】
また、本実施の形態１によれば、セキュアエレメント２０がカウントしている推論実行回数をサーバ３から更新することで、デバイス１における推論処理の遠隔制御が可能となる。
【０１１２】
また、本実施の形態１によれば、安全性が高いセキュアエレメント２０に許否情報（許可フラグ２７２）を保持し、当該許否情報に従って推論の可否を判断することで、外部から不正操作が行われる事態に適切に対応することができる。
【０１１３】
また、本実施の形態１によれば、セキュアエレメント２０が保持する許否情報を、サーバ３の指示に従って設定させることで、サーバ３からデバイス１（セキュアエレメント２０）の遠隔制御が可能となる。
【０１１４】
また、本実施の形態１によれば、サーバ３とセキュアエレメント２０との間の通信を、秘匿通信路４１を介して行うことで、実行回数、許否情報等の送受信を安全に行うことができ、通信伝送路上で命令や通知が改竄される事態を防止することができる。
【０１１５】
（実施の形態２）
実施の形態１では、デバイス１内のセキュアエレメント２０において推論モデル１２１の一部の演算処理を実行する形態について述べた。本実施の形態では、デバイス１外部のサーバ３が、セキュアエレメント２０が実行すべき演算処理の一部を行う形態について述べる。なお、実施の形態１と重複する内容については同一の符号を付して説明を省略する。
【０１１６】
図１３は、実施の形態２に係る推論処理に関する説明図である。図１３に基づき、本実施の形態に係る推論処理の処理プロセスについて説明する。なお、符号Ｐ２１〜Ｐ２６に示す処理プロセスは実施の形態１と同様であるため、ここでは同一の符号を付し、説明を省略する。本実施の形態では、符号Ｐ４１〜Ｐ４９に示す処理プロセスについて順に説明する。
【０１１７】
推論実行回数及び許可フラグ２７２を確認した後（Ｐ２５、Ｐ２６）、セキュアエレメント２０の演算部２３は、デバイス本体１０から演算を要求された推論モデル１２１の演算要素のうち、一部の演算要素について演算処理を実行する（Ｐ４１）。例えば推論モデル１２１がニューラルネットワークである場合、演算部２３は、デバイス本体１０から指定された複数のニューロン層のうち、少なくとも出力層を除く、一部のニューロン層についてのみ演算を実行する。
【０１１８】
図１４は、デバイス本体１０、セキュアエレメント２０及びサーバ３がそれぞれ行う演算内容について説明するための説明図である。図１４では、第０層の演算をデバイス本体１０が、第１層の演算をセキュアエレメント２０が、第２層及び第３層の演算をサーバ３が行う様子を図示している。
【０１１９】
図１４に示すように、本実施の形態でデバイス本体１０は第０層の演算を行い、第０層の演算結果を入力値としてセキュアエレメント２０に受け渡す。そしてデバイス本体１０は、残りの第１〜３層を演算すべきニューロン層として指定し、演算処理を実行するようセキュアエレメント２０に要求する。
【０１２０】
デバイス本体１０から演算要求を受け付けた場合、セキュアエレメント２０は、デバイス本体１０から指定されたニューロン層の演算を実行する。ここで、セキュアエレメント２０は指定された全てのニューロン層の演算を行わず、一部のニューロン層についてのみ演算を行う。例えば図１４のように、セキュアエレメント２０は、デバイス本体１０から指定された第１〜３層のうち、演算開始層である第１層についてのみ演算を行う。
【０１２１】
そしてセキュアエレメント２０は、デバイス本体１０から指定されたニューロン層のうち、自身が演算を行わない残りの第２層、第３層の演算を行うよう、サーバ３に要求する。具体的には図１４のように、セキュアエレメント２０は、第１層の演算結果を入力値とし、第２層及び第３層を演算対象として指定して、斯かる演算を実行するよう要求する。
【０１２２】
図１３に戻って、演算処理を実行後、演算部２３は通信路開設部２５に演算結果を受け渡す（Ｐ４２）。通信路開設部２５は、サーバ３との間で秘匿通信路４１を開設する（Ｐ４３）。そして通信路開設部２５は、演算部２３が演算した演算結果をサーバ３に送信し、推論モデル１２１の一部の演算を実行するよう要求する（Ｐ４４）。具体的には、通信路開設部２５は、演算部２３が演算した演算結果と共に、サーバ３が演算すべき演算要素を指定する指定情報と、セキュアエレメント２０の固有ＩＤ２７３とをサーバ３に送信する。
【０１２３】
演算要求を受け付けた場合、サーバ３の制御部３１はまず、要求元のデバイス１における推論実行回数をカウントし、推論実行回数が一定回数に達しているか否かを確認する（Ｐ４５）。実施の形態１で述べたように、動作管理ＤＢ３４２には、セキュアエレメント２０の固有ＩＤ２７３と対応付けて、各デバイス１における推論実行回数（残回数）が記憶されている。制御部３１は、セキュアエレメント２０から取得した固有ＩＤ２７３を参照して、当該固有ＩＤ２７３に対応付けられた残回数をデクリメントする。そして制御部３１は、残回数が０、つまり一定回数に達したか否かを確認する。なお、制御部３１はデクリメント後の値を実行日時と共に動作管理ＤＢ３４２に格納し、推論実行回数を更新する。
【０１２４】
一定回数に達している場合、制御部３１は演算処理を実行せず、実行回数が一定回数に達した旨をデバイス１に通知して推論処理を停止させる。一方、実行回数が一定回数に達していない場合、次に制御部３１は、要求元のデバイス１における推論処理を許可してあるか否かを確認する（Ｐ４６）。具体的には上記と同様に、制御部３１は固有ＩＤ２７３に対応付けられた許否情報を動作管理ＤＢ３４２から参照して、推論処理の許可又は禁止を判別する。推論処理を許可していない場合、制御部３１は演算処理を実行せず、推論処理が禁止されている旨をデバイス１に通知して処理を停止させる。
【０１２５】
推論処理を許可してある場合、制御部３１は、セキュアエレメント２０から要求された推論モデル１２１の一部の演算処理を実行する（Ｐ４７）。具体的には既に述べたように、制御部３１は、セキュアエレメント２０から取得した演算結果を入力値として用い、セキュアエレメント２０から指定された、ニューラルネットワークの出力層を含む一又は複数のニューロン層の演算を実行する。
【０１２６】
また、制御部３１は実施の形態１と同様に、ニューラルネットワークの出力層からの出力値に対して端数処理を行い、確率表現された出力値を、０又は１の二値で表現された値に変換する（図１４参照）。
【０１２７】
制御部３１は、変換後の出力値を演算結果として、秘匿通信路４１を介してセキュアエレメント２０に送信する（Ｐ４８）。セキュアエレメント２０は、サーバ３から取得した演算結果を、デバイス本体１０からの演算要求に対する出力値として返送する（Ｐ４９）。デバイス本体１０の制御部１１は、セキュアエレメント２０から返送された出力値を用いて推論結果を出力する。
【０１２８】
なお、上記ではデバイス本体１０から要求された演算処理を、セキュアエレメント２０及びサーバ３が分担して行ったが、本実施の形態はこれに限定されず、セキュアエレメント２０は特段の演算を行わず、サーバ３に演算要求を転送して演算処理を実行させてもよい。つまり、デバイス本体１０から要求された演算処理をセキュアエレメント２０又はサーバ３が実行可能であればよく、どちらがどの程度の演算を負担するかは限定されない。
【０１２９】
図１５及び図１６は、実施の形態２に係る推論処理の処理手順の一例を示すフローチャートである。図１５及び図１６に基づき、本実施の形態に係る推論処理の処理内容について説明する。
許可フラグ２７２を参照して、推論処理が許可されていると判定した場合（Ｓ３８：ＹＥＳ）、セキュアエレメント２０は以下の処理を実行する。セキュアエレメント２０は、デバイス本体１０から指定された推論モデル１２１の演算要素のうち、一部の演算要素について演算を実行する（ステップＳ２０１）。例えば推論モデル１２１がニューラルネットワークである場合、セキュアエレメント２０は、少なくともデバイス本体１０から指定された演算開始層を含む、一又は複数のニューロン層の演算を実行する。なお、セキュアエレメント２０では演算処理を実行しないものとする場合、ステップＳ２０１の処理をスキップして良い。
【０１３０】
セキュアエレメント２０は、サーバ３との間で秘匿通信路４１を開設する（ステップＳ２０２）。セキュアエレメント２０は、秘匿通信路４１を介してステップＳ２０１における演算結果をサーバ３に送信し、推論モデル１２１の一部の演算処理の実行をサーバ３に要求する（ステップＳ２０３）。具体的には、セキュアエレメント２０は、自身が演算した演算結果と共に、サーバ３が演算すべき演算要素（ニューロン層）を指定する指定情報と、セキュアエレメント２０の固有ＩＤ２７３とを送信する。
【０１３１】
セキュアエレメント２０から演算要求を受け付けた場合、サーバ３の制御部３１は、演算要求の送信元であるデバイス１での推論処理の実行回数をカウントする（ステップＳ２０４）。具体的には、制御部３１は動作管理ＤＢ３４２を参照して、セキュアエレメント２０から受信した固有ＩＤ２７３に基づき、当該固有ＩＤ２７３に対応付けられたデバイス１の推論実行回数（残回数）を読み出す。制御部３１は、読み出した残回数をデクリメントすることで、実行回数をカウントする。なお、制御部３１は、カウントした実行回数を、現在の実行日時と共に動作管理ＤＢ３４２に記憶する。
【０１３２】
制御部３１は、カウントした推論実行回数が一定回数に達したか否かを判定する（ステップＳ２０５）。一定回数に達していないと判定した場合（Ｓ２０５：ＮＯ）、制御部３１は動作管理ＤＢ３４２を参照して、要求元であるデバイス１での推論処理を許可してあるか否かを判定する（ステップＳ２０６）。具体的にはステップＳ２０４と同様に、制御部３１は固有ＩＤ２７３に対応付けられた許否情報（許可フラグ）を参照し、デバイス１に対して推論処理を許可又は禁止していたかを確認する。推論処理を許可してあると判定した場合（Ｓ２０６：ＹＥＳ）、制御部３１は、処理をステップＳ２１０に移行する。
【０１３３】
推論実行回数が一定回数に達したと判定した場合（Ｓ２０５：ＹＥＳ）、又は推論処理を許可していないと判定した場合（Ｓ２０６：ＮＯ）、制御部３１は、演算要求を拒否する旨を、秘匿通信路４１を介してセキュアエレメント２０に通知する（ステップ２０７）。セキュアエレメント２０は、当該通知をデバイス本体１０に転送する（ステップＳ２０８）。当該通知を取得した場合、デバイス本体１０は推論処理を停止し（ステップＳ２０９）、一連の処理を終了する。
【０１３４】
図１６に移って、ステップＳ２０６でＹＥＳの場合、サーバ３の制御部３１は、セキュアエレメント２０からの要求に従い、推論モデル１２１の一部の演算を実行する（ステップＳ２１０）。具体的には、制御部３１は、セキュアエレメント２０から取得した演算結果（入力値）を指定されたニューロン層に入力し、最終的な出力値を演算する。
【０１３５】
制御部３１は、ステップＳ２１０の演算結果の端数処理を行い、出力値を変換する（ステップＳ２１１）。制御部３１は、変換後の出力値（演算結果）をセキュアエレメント２０に送信する（ステップＳ２１２）。セキュアエレメント２０は、サーバ３から取得した出力値をデバイス本体１０に転送する（ステップＳ２１３）。制御部３１は、セキュアエレメント２０から取得した出力値を用いて推論結果を出力し（ステップＳ２１４）、一連の処理を終了する。
【０１３６】
なお、上記では、セキュアエレメント２０が演算を行った後にサーバ３が残る演算要素（出力層を含むニューロン層）の演算を行ったが、例えばサーバ３が演算を行った後でセキュアエレメント２０が残る演算要素の演算を行うようにしてもよい。つまり、デバイス本体１０から要求された演算要素のうち、少なくとも一部の演算要素の演算をサーバ３が実行することができればよく、演算処理の前後関係は特に限定されない。
【０１３７】
以上より、本実施の形態２によれば、サーバ３にも推論モデル１２１に基づく演算処理の一部を実行させることで、例えばセキュアエレメント２０のみでは演算能力が足りない場合等に対応することができる。
【０１３８】
実施の形態２に基づけば、デバイス本体１０、セキュアエレメント２０、サーバ３の３者に推論処理を分担させて実施することも可能であるが、加えて、デバイス本体１０が実施すべき処理を含め、推論処理の一部ではなく全部の実施をセキュアエレメント２０に指示し、セキュアエレメント２０、サーバ３の２者のみで推論処理を行うことも、本実施の形態の応用実施例として示すことができる。
【０１３９】
図１７は応用実施例に係る推論処理の処理手順を示すフローチャートである。図１７では、図１５に代替するフローチャートを図示する。この場合、実施の形態１や２における前段要素の演算（ステップＳ３２、図１５参照）をデバイス本体１０にて行うことなく、制御部１１は推論モデルの演算処理をセキュアエレメント２０に要求する（ステップＳ３３）。具体的には、セキュアエレメント２０が演算すべき演算要素を指定する情報として、前段要素(例えばニューラルネットワークの最初の層を示す情報)を指定しつつ、制御部１１が受け取った入力データをセキュアエレメント２０に出力する。
【０１４０】
従前にて述べた通り、デバイス本体１０及びセキュアエレメント２０がどの演算要素を演算するかは任意の設計事項である。よってデバイス本体１０が意図的に一切の演算を行わず、セキュアエレメント２０及びサーバ３のみが連携して演算を行う実施についても、本実施の形態の範疇に含まれることは容易に理解されよう。
【０１４１】
（実施の形態３）
実施の形態１では、デバイス１に搭載されたセキュアエレメント２０において推論モデル１２１の一部の演算処理を実行する形態について述べた。本実施の形態では、デバイス１に仮想的に構築されたトラステッド実行環境（ＴＥＥ；Trusted Execution Environment）において演算処理を実行する形態について述べる。
図１８は、実施の形態３に係るＩｏＴシステムの構成例を示すブロック図である。本実施の形態に係るデバイス１は、例えばＴｒｕｓｔＺｏｎｅ（登録商標）と称される技術を用いることによって、ソフトウェア（ＯＳ、アプリケーションなど）の実行環境を、通常実行環境（ＲＥＥ；Rich Execution Environment）５１と、トラステッド実行環境５２とに分離している。
【０１４２】
通常実行環境５１は、広く一般的に利用されている汎用ＯＳ５１１の実行環境であり、トラステッド実行環境５２へのアクセスが制限される以外に、特段の機能制約がない実行環境である。汎用ＯＳ５１１は、通常実行環境５１においてＯＳの機能を果たすソフトウェアであり、アプリケーション５１２からの要求に応じて、デバイス１に接続されたハードウェアの制御等を含む各種ＯＳ機能を提供する。制御部１１は、汎用ＯＳ５１１上でアプリケーション５１２を実行することで、デバイス１の基本的、汎用的な処理を実行する。
【０１４３】
トラステッド実行環境５２は、セキュリティ機能を隔離する目的で、同一のＳｏＣ上で通常実行環境とは別に提供される独立した実行環境である。トラステッド実行環境５２は、通常実行環境５１からのアクセスが制限されており、実行可能な機能も限定されている。なお、トラステッド実行環境は、ＴＥＥのような称呼に限定されるものではなく、通常実行環境５１と分離され、セキュリティ上より安全な実行環境であれば、どのような称呼の実行環境であってもよい。デバイス１は、セキュリティ上保護すべきソフトウェア及びデータをトラステッド実行環境５２に配置すると共に、通常実行環境５１及びデバイス１の外部からのアクセスを制限することで、安全性を確保する。
【０１４４】
上述のように、通常実行環境５１からトラステッド実行環境５２にはアクセスできないように制限されており、通常実行環境５１からはトラステッド実行環境５２の存在を認識できない。通常実行環境５１からトラステッド実行環境５２で実行する処理を呼び出すためには、ソフトウェア上実現されるセキュアモニタ５３を経由しなければならない。
【０１４５】
トラステッドＯＳ５２１は、トラステッド実行環境５２においてＯＳの機能を果たすソフトウェアであり、アプリケーション５２２からの要求に応じて、セキュリティ機能を中心としたＯＳ機能を提供する。制御部１１は、トラステッドＯＳ５２１上でアプリケーション５２２を実行することで、推論モデル１２１に基づく演算処理を含む、セキュリティ上重要な処理を実行する。
【０１４６】
なお、本実施の形態では、デバイス１の各種機能がＯＳ、アプリケーションのいずれで実装されるかは本質的事項ではなく、実装者が適宜選択すべき設計事項であることから、ＯＳ、アプリケーションの機能分担については説明を省略する。
【０１４７】
図１８に示すように、本実施の形態においてデバイス１の制御部１１は、トラステッド実行環境５２に推論モデル用パラメータ２７１、許可フラグ２７２、固有ＩＤ２７３等を配置する。制御部１１は、トラステッド実行環境５２に配置された推論モデル用パラメータ２７１を読み出し、通常実行環境５１に推論モデル１２１を展開する。
【０１４８】
推論処理を実行する場合、制御部１１は、通常実行環境５１において推論モデル１２１の一部の演算処理を行った後、演算結果をトラステッド実行環境５２に受け渡す。制御部１１は、トラステッド実行環境５２において推論実行回数のカウント、許可フラグ２７２のチェック、及び推論モデル１２１の一部演算処理を実行し、演算結果を通常実行環境５１に返送する。制御部１１は、返送された演算結果を用いて、推論結果を出力する。
【０１４９】
以上より、本実施の形態３によれば、デバイス１は、通常実行環境５１と、通常実行環境５１よりもセキュアなトラステッド実行環境５２とを構築し、トラステッド実行環境５２において推論モデル１２１の一部の演算処理を実行する。このように、セキュアエレメント２０を搭載せずとも、ソフトウェア上の構成によって推論処理に係る安全性を確保することができる。
【０１５０】
上述の如く、デバイス１は、推論処理に係る演算を実行するコンポーネントよりもセキュアなコンポーネント（セキュア部）を有し、当該セキュアなコンポーネントにおいて推論モデル１２１の一部の演算処理を実行可能（あるいは実施の形態２のように、サーバ３に対して推論モデル１２１の一部演算を要求し、サーバ３から出力された演算結果を通常実行環境５１に返送可能）であればよい。当該セキュアなコンポーネントは、ハードウェア上分離されたセキュアエレメント２０等であってもよく、ソフトウェア上分離されたトラステッド実行環境５２等であってもよい。
【０１５１】
セキュアエレメント２０に代えてトラステッド実行環境５２を実装する以外は実施の形態１と共通するため、本実施の形態では詳細な図示及び説明を省略する。
【０１５２】
（実施の形態４）
本実施の形態では、デバイス１に格納されている推論モデル１２１を更新する形態について述べる。
図１９は、推論モデル１２１の更新処理に関する説明図である。図１９では、セキュアエレメント２０がサーバ３との間で通信を行い、推論モデル用パラメータ２７１を更新する様子を概念的に図示している。
【０１５３】
本実施の形態に係るセキュアエレメント２０は、更新部２８を備える。更新部２８は、サーバ３から最新モデル用パラメータ３４１を取得し、記憶部２７に格納してあるパラメータを更新する。
【０１５４】
図１９において符号Ｐ５１〜Ｐ５８に示す処理プロセスについて、順に説明する。まずデバイス本体１０がセキュアエレメント２０に対し、推論モデル１２１が最新のデータに更新済みであるか否かをサーバ３に確認するよう要求する（Ｐ５１）。確認要求を受け付けた場合、セキュアエレメント２０の更新部２８は、通信路開設部２５に対して秘匿通信路４１の開設を要求する（Ｐ５２）。当該要求を受け付けた場合、通信路開設部２５は、秘匿通信路４１を開設する（Ｐ５３）。
【０１５５】
更新部２８は、秘匿通信路４１を介してサーバ３に対し、推論モデル用パラメータ２７１の更新要求を行う（Ｐ５４）。具体的には、更新部２８は、セキュアエレメント２０で保持している現在の推論モデル用パラメータ２７１のバージョン情報２７１ｃと、自装置に係る固有ＩＤ２７３とを送信する。
【０１５６】
セキュアエレメント２０（デバイス１）から更新要求を受け付けた場合、サーバ３は、要求元であるデバイス１において推論モデル１２１を更新済みであるか否かを判定する（Ｐ５５）。具体的には、サーバ３は、セキュアエレメント２０から送信されたバージョン情報２７１ｃと、最新モデル用パラメータ３４１のバージョン情報３４１ｃ（図１９参照）とを照合する。バージョン情報が最新のものと一致する場合、デバイス１の推論モデル１２１は最新モデルに更新済みであるため、サーバ３は特段の処理を行わず、一連の処理を終了する。一方、バージョン情報が最新のものと不一致の場合、サーバ３は最新モデル用パラメータ３４１を、秘匿通信路４１を介してデバイス１に送信する（Ｐ５６）。また、サーバ３は、最新モデル用パラメータ３４１を送信した場合、バージョン情報２７１ｃと共に受信した固有ＩＤ２７３と対応付けて、デバイス１の推論モデル１２１を更新した旨を示す更新情報を動作管理ＤＢ３４２に記憶する（Ｐ５７）。例えばサーバ３は、現在の日時を最終更新日時として動作管理ＤＢ３４２に記憶する。なお、サーバ３は、更新された旨をデータベース上で格納することができればよく、例えば最新モデルのバージョン情報３４１ｃを記憶しておくなど、日時以外の情報を更新情報として記憶しておいてもよい。
【０１５７】
セキュアエレメント２０の更新部２８は、サーバ３から送信された最新モデル用パラメータ３４１に記憶部２７に格納し、パラメータの更新を行う（Ｐ５８）。例えば更新部２８は、パラメータのダウンロード直後に当該パラメータをデバイス本体１０に出力し、デバイス本体１０は、当該パラメータを基に推論モデル１２１を更新（再構築）する。なお、パラメータのダウンロード直後に推論モデル１２１の更新を行うことなく、デバイス１の次回起動時、アプリケーションの次回実行時等、任意のタイミングで更新を行ってよい。以上より、ＩｏＴデバイスに格納されているデータを最新のものに更新することができ、陳腐化を防止する等、更新のニーズに応えることができる。
【０１５８】
なお、上記ではデバイス本体１０からのリクエストに従って一連の処理を開始しているが、本実施の形態はこれに限定されない。例えば推論処理の残回数が０になった場合に更新を行う、あるいはサーバ３が動作管理ＤＢ３４２から古いバージョンで稼働しているデバイス１を検知し、サーバ３側からデバイス１側へパラメータの更新要求を行うなど、任意のタイミングで推論モデル１２１の更新処理を開始してよい。
【０１５９】
図２０は、推論モデル１２１の更新処理の処理手順の一例を示すフローチャートである。図２０に基づき、本実施の形態に係るＩｏＴシステムが実行する処理内容について説明する。
デバイス本体１０の制御部１１は、推論モデル１２１の最新のモデルであるか否かをサーバ３に確認するよう、セキュアエレメント２０に要求する（ステップＳ４０１）。当該要求を受け付けた場合、セキュアエレメント２０はサーバ３との間で秘匿通信路４１を開設する（ステップＳ４０２）。セキュアエレメント２０は秘匿通信路４１を介して、推論モデル用パラメータ２７１の更新要求を行う（ステップＳ４０３）。例えばセキュアエレメント２０は、上記のように、記憶部２７に格納してあるパラメータのバージョン情報２７１ｃと、自装置の固有ＩＤ２７３とをサーバ３へ送信する。
【０１６０】
更新要求を受け付けた場合、サーバ３の制御部３１は、更新要求を行ったデバイス１において推論モデル用パラメータ２７１を更新済みであるか否かを判定する（ステップＳ４０４）。例えば制御部３１は、最新モデルのバージョン情報３４１ｃが、セキュアエレメント２０から送信されたバージョン情報２７１ｃと一致するか否かを判定する。更新済みであると判定した場合（Ｓ４０４：ＹＥＳ）、制御部３１は一連の処理を終了する。
【０１６１】
更新済みでないと判定した場合（Ｓ４０４：ＮＯ）、制御部３１は秘匿通信路４１を介して、最新モデル用パラメータ３４１をセキュアエレメント２０に送信する（ステップＳ４０５）。また、最新モデル用パラメータ３４１を送信した場合、制御部３１は、デバイス１の推論モデル１２１を更新した旨を示す更新情報を動作管理ＤＢ３４２に記憶し（ステップＳ４０６）、一連の処理を終了する。
【０１６２】
最新モデル用パラメータ３４１をサーバ３から受信した場合、セキュアエレメント２０は、当該パラメータを記憶部２７に格納する（ステップＳ４０７）。セキュアエレメント２０は、新たに格納した最新モデル用パラメータ３４１をデバイス本体１０に出力する（ステップＳ４０８）。セキュアエレメント２０は、一連の処理を終了する。
【０１６３】
最新モデル用パラメータ３４１がセキュアエレメント２０から出力された場合、デバイス本体１０の制御部１１は、当該パラメータに基づいて最新の推論モデル１２１をメモリ上に展開する（ステップＳ４０９）。制御部１１は、一連の処理を終了する。
【０１６４】
なお、上記ではバージョン情報２７１ｃ、３４１ｃがバージョン数、つまりバージョンを表す番号であるものとして図示及び説明を行ったが、本実施の形態はこれに限定されるものではない。例えばバージョン情報２７１ｃ、３４１ｃは、パラメータの更新が行われた日付等の時間を表す情報であってもよい。また、例えばサーバ３は、デバイス１に展開されている推論モデル１２１と、最新の推論モデル１２１とのハッシュ値の比較を行って最新バージョンであるか否かを判定するようにしてもよい。このように、サーバ３は推論モデル１２１の新旧を判定可能な情報に基づいて推論モデル用パラメータ２７１を更新することができればよく、バージョン情報２７１ｃ、３４１ｃは番号に限定されない。
【０１６５】
以上より、本実施の形態４によれば、サーバ３からデバイス１へ最新モデル用パラメータ３４１を配信することで、最新の推論モデル１２１をデバイス１に展開することができ、モデルの陳腐化等、更新のニーズに対応することができる。特に本実施の形態では、実施の形態１と同様に、セキュアエレメント２０にパラメータを一旦保管（格納）し、デバイス本体１０はセキュアエレメント２０からパラメータを読み出してメモリ（記憶部１２）上に推論モデル１２１を展開する。これにより、推論モデル１２１を模倣可能なパラメータを搾取される可能性が低減し、安全性を確保することができる。
【０１６６】
（実施の形態５）
本実施の形態では、サーバ３が、デバイス１における推論処理の実行頻度に基づいて異常を検知し、推論処理を禁止する形態について述べる。
図２１は、推論処理の実行頻度に基づく推論禁止処理に関する説明図である。図２１に基づき、本実施の形態の概要について説明する。
【０１６７】
実施の形態１で述べたように、サーバ３は、セキュアエレメント２０から推論実行回数のカウント値を取得し、動作管理ＤＢ３４２上で実行回数を管理する。特にサーバ３は、セキュアエレメント２０から推論実行日時を併せて取得し、動作管理ＤＢ３４２に格納してあるため、各デバイス１での実行回数の時系列変化、つまり推論処理の頻度を一元的に可視化することができる。
【０１６８】
本実施の形態でサーバ３は、推論処理の頻度に基づき、デバイス１に対する外部からの不正解析を検知する。図６を用いて説明したように、推論モデル１２１の蒸留を試みる場合、デバイス１に推論処理を実行させ、大量の推論結果のデータを取得（搾取）する必要がある。このような不正行為は比較的短時間で行われ、不正行為が行われている間に推論実行回数が飛躍的に増大する。つまり、推論処理の頻度に不正行為の特徴が現れる。サーバ３は、推論処理頻度の増大を判別することで、外部からの不正解析を検知する。
【０１６９】
図２１の例では、推論処理の残回数を太字で表すデバイス１において、推論処理頻度が大幅に増大している。例えば固有ＩＤ２７３が「１００００２」であるデバイス１では、数分間の間に残回数を使い果たしている。また、固有ＩＤ２７３が「１００００３」のデバイス１でも同様に、数分間の間で１００回以上の推論演算が実行されている。
【０１７０】
サーバ３は、チェックポリシーとして、推論処理頻度が一定頻度以上の場合、不正解析が行われているものと判定する。判定基準となる頻度は、例えば１０回／分であるが、特に数値は限定されない。サーバ３は、１０回／分以上で推論処理を実行しているデバイス１を動作管理ＤＢ３４２から特定する。
【０１７１】
サーバ３は、特定したデバイス１に対し、推論処理を停止するよう指示する。例えばサーバ３は、動作管理ＤＢ３４２上の許否情報を「許可」から「禁止」に変更し、変更した許否情報を、秘匿通信路４１を介してデバイス１に送信する。セキュアエレメント２０は、サーバ３から送信された許否情報に従って許可フラグ２７２を「禁止」に変更し、以降の推論処理を停止させる。
【０１７２】
また、サーバ３は、推論処理頻度が高いデバイス１だけでなく、当該デバイス１と同種の推論モデル１２１を適用（展開）してある他のデバイス１に対しても、推論処理の実行を停止するよう指示する。
【０１７３】
上述の如く、サーバ３は複数のデバイス１に推論モデル用パラメータ２７１を配信し、推論モデル１２１に基づく推論処理を実行させる。この場合、攻撃者は複数のデバイス１を解析対象とした上で、並列的に解析を行うことが想定される。そこでサーバ３は、攻撃者によって近い将来解析対象となり得るデバイス１での推論処理を先に禁止し、不正解析を未然に防ぐ。
【０１７４】
例えばサーバ３は、チェックポリシーとして、２以上のデバイス１（セキュアエレメント２０）で推論処理頻度が一定頻度以上となった場合、当該デバイス１と同種の推論モデル１２１を適用した他のデバイス１（セキュアエレメント２０）に対し、推論処理を停止するよう指示する。具体的には図２１に示すように、サーバ３は該当するデバイス１のセキュアエレメント２０に対し、秘匿通信路４１を介して許否情報を送信し、許可フラグ２７２を「許可」から「禁止」に設定変更させる。
【０１７５】
なお、上記では推論モデル１２１の種類に応じてグルーピングを行い、推論処理を一斉に禁止することにしているが、グルーピングの基準は推論モデル１２１の種類に限定されるものではない。例えばサーバ３は、デバイス１の物理的な配置場所、コンポーネントの種類（例えばセキュアエレメント２０よりも比較的解析用意なトラステッド実行環境５２であるか）などに応じてグルーピングを行ってもよい。つまりサーバ３は、動作管理ＤＢ３４２上で各デバイス１を所定のチェックポリシーに従って互いに関連付けておき、いずれかのデバイス１における推論処理頻度に応じて、関連付けられた複数のデバイス１の推論処理を禁止することができればよい。
【０１７６】
図２２は、推論禁止処理の処理手順の一例を示すフローチャートである。図２２に基づき、本実施の形態に係るＩｏＴシステムの処理内容について説明する。
例えばサーバ３は、バッチ処理により以下の処理を実行する。サーバ３の制御部３１は、動作管理ＤＢ３４２を参照して、各デバイス１における推論処理の実行頻度を計算する（ステップＳ５０１）。上述の如く、各デバイス１は、推論処理の実行回数を実行時刻と共にサーバ３へ通知している。サーバ３は動作管理ＤＢ３４２に、推論処理の実行時刻も含めて、各デバイス１における推論処理の実行回数を記憶している。サーバ３は、動作管理ＤＢ３４２に記憶してある各推論時の実行時刻から、デバイス１における推論処理の実行頻度を計算する。
【０１７７】
制御部３１は、各デバイス１の実行頻度を所定の閾値と比較して、閾値以上の実行頻度で推論処理を行っているデバイス１があるか否かを判定する（ステップＳ５０２）。実行頻度が閾値以上のデバイス１がないと判定した場合（Ｓ５０２：ＮＯ）、制御部３１は一連の処理を終了する。
【０１７８】
実行頻度が閾値以上のデバイス１があると判定した場合（Ｓ５０２：ＹＥＳ）、制御部３１は、当該デバイス１に適用（インストール）されている推論モデル１２１を特定する（ステップＳ５０３）。そして制御部３１は、管理ＤＢ３４１を参照して、特定した推論モデル１２１と同種類の推論モデル１２１を適用した他のデバイス１を特定する（ステップＳ５０４）。
【０１７９】
制御部３１は、実行頻度が閾値以上のデバイス１、及び当該デバイス１と同種類の推論モデル１２１を適用した他のデバイス１に対し、推論処理の禁止指示を送信する（ステップＳ５０５）。制御部３１は、各デバイス１に対して推論処理を禁止した旨の許否情報を管理ＤＢ３４１に格納（更新）し（ステップＳ５０６）、一連の処理を終了する。
【０１８０】
サーバ３から禁止指示を受信した場合、デバイス１のセキュアエレメント２０は、当該指示に従い、推論処理を禁止する旨の許否情報を設定する（ステップＳ５０７）。例えばセキュアエレメント２０は、許可フラグ２７２を「許可」から「禁止」に設定変更する。セキュアエレメント２０は、一連の処理を終了する。
【０１８１】
以上より、本実施の形態５によれば、推論処理（演算処理）の実行頻度に応じてデバイス１での推論処理を禁止することで、不正解析を検知し、適切な対策を取ることができる。
【０１８２】
また、本実施の形態５によれば、推論実行頻度が高いデバイス１だけでなく、当該デバイス１と関連付けられた他のデバイス１の推論処理も併せて禁止することで、推論モデル１２１の不正解析をより効果的に防止することができる。
【０１８３】
（実施の形態６）
図２３は、上述した形態のデバイス１の動作を示す機能ブロック図である。制御部１１がプログラムＰ１を実行することにより、デバイス１は以下のように動作する。記憶部２２１は、機械学習により生成された学習済みモデルであって、複数の演算要素を有する学習済みモデルを記憶する。実行部２２２は、前記学習済みモデルに基づく演算処理を実行する。セキュア部２２３は、該実行部２２２よりセキュアなコンポーネントであって、前記実行部２２２からの演算要求に従い、前記学習済みモデルの一部の前記演算要素に係る演算処理を実行する。前記実行部２２２は、前記セキュア部２２３による演算結果を用いて、最終的な演算結果を出力する
【０１８４】
本実施の形態６は以上の如きであり、その他は実施の形態１から５と同様であるので、対応する部分には同一の符号を付してその詳細な説明を省略する。
【０１８５】
今回開示された実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１８６】
１  デバイス
１０  デバイス本体
１１  制御部
１２  記憶部
１２１  推論モデル
２０  セキュアエレメント（セキュア部）
２３  演算部
２７  記憶部
２７１  推論モデル用パラメータ
２７２  許可フラグ（許否情報）
２７３  固有ＩＤ
５１  通常実行環境
５２  トラステッド実行環境（セキュア部）
３  サーバ（管理装置）
３１  制御部
３４  補助記憶部
３４１  最新モデル用パラメータ
３４２  動作管理ＤＢ
【図１】
2019121141.tif 000003
【図２】
2019121141.tif 000004
【図３】
2019121141.tif 000005
【図４】
2019121141.tif 000006
【図５】
2019121141.tif 000007
【図６】
2019121141.tif 000008
【図７】
2019121141.tif 000009
【図８】
2019121141.tif 000010
【図９】
2019121141.tif 000011
【図１０】
2019121141.tif 000012
【図１１】
2019121141.tif 000013
【図１２】
2019121141.tif 000014
【図１３】
2019121141.tif 000015
【図１４】
2019121141.tif 000016
【図１５】
2019121141.tif 000017
【図１６】
2019121141.tif 000018
【図１７】
2019121141.tif 000019
【図１８】
2019121141.tif 000020
【図１９】
2019121141.tif 000021
【図２０】
2019121141.tif 000022
【図２１】
2019121141.tif 000023
【図２２】
2019121141.tif 000024
【図２３】
2019121141.tif 000025