TOP > 国内特許検索 > 携帯端末を用いた察知エージェントシステム、察知エージェントシステムにおける機械学習方法、及びこれを実施するためのプログラム > 明細書

明細書 :携帯端末を用いた察知エージェントシステム、察知エージェントシステムにおける機械学習方法、及びこれを実施するためのプログラム

発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2018-045679 (P2018-045679A)
公開日 平成30年3月22日(2018.3.22)
発明の名称または考案の名称 携帯端末を用いた察知エージェントシステム、察知エージェントシステムにおける機械学習方法、及びこれを実施するためのプログラム
国際特許分類 G06N   3/08        (2006.01)
H04L   9/14        (2006.01)
FI G06N 3/08
H04L 9/00 641
請求項の数または発明の数 13
出願形態 OL
全頁数 34
出願番号 特願2017-120278 (P2017-120278)
出願日 平成29年6月20日(2017.6.20)
公序良俗違反の表示 1.ANDROID
優先権出願番号 2016175700
優先日 平成28年9月8日(2016.9.8)
優先権主張国 日本国(JP)
発明者または考案者 【氏名】趙 強福
【氏名】橋本 雅人
出願人 【識別番号】506301140
【氏名又は名称】公立大学法人会津大学
個別代理人の代理人 【識別番号】100094525、【弁理士】、【氏名又は名称】土井 健二
【識別番号】100094514、【弁理士】、【氏名又は名称】林 恒徳
審査請求 未請求
テーマコード 5J104
Fターム 5J104AA16
5J104EA04
5J104EA18
5J104NA02
5J104NA37
5J104PA02
要約 【課題】機械学習による大規模な計算処理の不都合を解決し、ユーザの様々な情報を察知して、その情報を基にユーザに役立つ情報の提供や、問題解決する携帯端末を用いた察知エージェントシステムを提供する。
【解決手段】携帯端末を用いた察知エージェントシステムであって、携帯端末と、携帯端末に接続するサーバを有する。携帯端末は、ユーザから取得する情報に含まれる特徴ベクトルを暗号化し、次いで、暗号化された特徴ベクトルをニューラルネットワークの入力層としてサーバに送信する。サーバは、前記暗号化された特徴ベクトルを受信して、前記ニューラルネットワークの入力層から隠れ層を計算し、前記隠れ層の計算結果を前記携帯端末に送信する。携帯端末は更に、前記サーバからの隠れ層の計算結果から出力層の計算を行う。
【選択図】図4
特許請求の範囲 【請求項1】
携帯端末を用いた察知エージェントシステムであって、
携帯端末と、
前記携帯端末に接続されるサーバを有し、
前記携帯端末は、
ユーザから取得される情報から取得した特徴ベクトルを暗号化し、次いで、前記暗号化された特徴ベクトルをニューラルネットワークの入力層として前記サーバに送信し、
前記サーバは、
前記暗号化された特徴ベクトルを受信して、前記ニューラルネットワークの入力層から隠れ層を計算し、
前記隠れ層の計算結果を前記携帯端末に送信し、
前記携帯端末は、更に、前記サーバからの隠れ層の計算結果から出力層の計算を行う、
ことを特徴とする察知エージェントシステム。
【請求項2】
携帯端末を用いた察知エージェントシステムであって、
携帯端末と、
前記携帯端末に接続されるサーバを有し、
前記携帯端末は、
ユーザから取得される情報から取得した特徴ベクトルを第1の鍵により暗号化し、次いで、前記暗号化された特徴ベクトルをニューラルネットワークの入力層として前記サーバに送信し、
前記サーバは、
前記暗号化された特徴ベクトルを受信して、大きな乱数行列から部分重み行列を決定するための第2の鍵を用い、前記第2の鍵により決定される部分重み行列を用いて前記ニューラルネットワークの入力層から隠れ層を計算し、前記隠れ層の計算結果を前記携帯端末に送信し、
前記携帯端末は更に、前記隠れ層の計算結果の要素のうちその後の処理に用いない要素を決定するための第3の鍵を用いて、前記隠れ層の計算結果の要素を隠す処理を行い、その後、出力層の計算を行う、
ことを特徴とする察知エージェントシステム。
【請求項3】
請求項2において、
前記第1の鍵により、前記ユーザからのデータがベクトル置換によりを暗号化される、
ことを特徴とする察知エージェントシステム。
【請求項4】
請求項1乃至3において、
前記ニューラルネットワークは、機械学習アルゴリズムであって、
前記機械学習アルゴリズムは、処理フェーズとして、学習フェーズと、識別分類フェーズを有する、
ことを特徴とする察知エージェントシステム。
【請求項5】
請求項1において、
さらに、コンピュータを有し、
前記コンピュータは、学習フェーズとして、
前記携帯端末において前記暗号化に用いる複数の暗号鍵と、前記複数の暗号鍵に対応して前記出力層の計算に用いる複数の重みβを生成し、更に
前記サーバにおいて前記暗号化された特徴ベクトルに対して隠れ層の計算をするための重みWとバイアスbを生成する、
ことを特徴とする携帯端末を用いた察知エージェントシステム。
【請求項6】
請求項5において、
さらに、識別分類フェーズとして、
前記携帯端末は、前記複数の暗号鍵によりランダムに決定した暗号鍵を用いて、ユーザの入力した特徴ベクトルを暗号化し、
前記サーバは、前記暗号化された特徴ベクトルを、前記重みWとバイアスbを用いて隠れ層の計算をし、
前記携帯端末は、更に前記サーバにおける隠れ層の計算結果に対し、前記暗号化に用いた暗号鍵に対応する重みβを用いて出力層の計算を行う、
ことを特徴とする携帯端末を用いた察知エージェントシステム。
【請求項7】
請求項1乃至6の何れかにおいて、
前記サーバは、クラウドサーバであって、
前記携帯端末はインターネットを通して前記サーバに接続する、
ことを特徴とする携帯端末を用いた察知エージェントシステム。
【請求項8】
請求項2において、
さらに、コンピュータを有し、
前記コンピュータは、学習フェーズとして、
隠れニューロン数を決定し、
ユーザから取得される情報から取得した特徴ベクトルを暗号化するための第1の鍵と、
大きな乱数行列から部分重み行列を決定するための第2の鍵と、隠れ層の計算結果の要素のうちその後の処理に用いない要素を決定するための第3の鍵を生成し、更に出力層の重みを算出する、
ことを特徴とする携帯端末を用いた察知エージェントシステム。
【請求項9】
請求項8において、
さらに、識別分類フェーズとして、
前記携帯端末は、
前記第1、第2、第3の鍵と前記出力層の重みを保存し、前記第1の鍵を用いて、前記特徴ベクトルを暗号化し、
前記暗号化された特徴ベクトルと、前記第2の鍵及び隠れニューロン数を前記サーバに送信し、
前記サーバは、
前記第2の鍵及び隠れニューロン数により隠れ層の重みを求め、隠れ層を計算して携帯端末に送信し、更に
前記携帯端末は、前記計算された隠れ層の出力から前記第3の鍵により後の計算に用いない要素を決定する、
ことを特徴とする携帯端末を用いた察知エージェントシステム。
【請求項10】
携帯端末を用いた察知エージェントシステムにおける機械学習方法であって、
学習フェーズと識別分類フェーズを有し、
前記学習フェーズとして、コンピュータによる、
前記携帯端末における転置式暗号化のための異なるn個の暗号鍵(key1-keyn)と、前記暗号鍵に対応して、ニューラルネットワークの出力層の計算のための重みβを生成し、更に、サーバにおける前記ニューラルネットワークの隠れ層の計算に用いるニューロンの重みWとバイアスbを生成するステップと、
前記識別分類フェーズとして、
前記携帯端末による前記n個の暗号鍵をランダムに用いて、特徴ベクトルを暗号化するステップと、
前記サーバによる前記暗号化された特徴ベクトルを前記ニューロンの重みWとバイアスbを用いて前記ニューラルネットワークの隠れ層の計算をするステップと、
前記携帯端末により更に、前記隠れ層の計算結果に対し、前記特徴ベクトルを暗号化に用いた暗号鍵に対応する重みβを用いて前記ニューラルネットワークの出力層の計算を行うステップを、
有することを特徴とする機械学習方法。
【請求項11】
携帯端末を用いた察知エージェントシステムにおける機械学習方法であって、
学習フェーズと、識別分類フェーズを有し、
前記学習フェーズとして、
コンピュータによる、
隠れニューロン数を決定するステップと、
ユーザから取得される情報から取得した特徴ベクトルを暗号化するための第1の鍵と、
大きな乱数行列から部分重み行列を決定するための第2の鍵と、隠れ層の計算結果の要素のうちその後の処理に用いない要素を決定するための第3の鍵を生成するステップと
出力層の重みを算出するステップを有し、
前記携帯端末に第1、第2、第3の鍵と前記出力層の重みを保存するステップを有し、
前記識別分類フェーズとして、
前記携帯端末による前記第1の鍵を用いて、前記特徴ベクトルを暗号化するステップと、
暗号化された特徴ベクトルと、前記第2の鍵及び隠れニューロン数をサーバに送信するステップと、
前記サーバにより、前記第2の鍵及び隠れニューロン数により隠れ層の重みを求め、隠れ層を計算して携帯端末に送信するステップと、
携帯端末で、前記計算された隠れ層の出力から前記第3の鍵により後の計算に用いない要素を決定し、更に出力層の計算を行うステップを有する、
ことを特徴とする機械学習方法。
【請求項12】
携帯端末とサーバを有する察知エージェントシステムにおける機械学習方法を実行するプログラムであって、
コンピュータに、
前記携帯端末における転置式暗号化のための異なるn個の暗号鍵(key1-keyn)と、前記暗号鍵に対応して、ニューラルネットワークの出力層の計算のための重みβを生成し、更に、サーバにおける前記ニューラルネットワークの隠れ層の計算に用いるニューロンの重みWとバイアスbを生成するステップを実行させ、
前記携帯端末に、
前記n個の暗号鍵をランダムに用いて、特徴ベクトルを暗号化するステップを実行させ、
前記サーバに
前記暗号化された特徴ベクトルを前記ニューロンの重みWとバイアスbを用いて前記ニューラルネットワークの隠れ層の計算をするステップを実行させ、更に、
前記携帯端末に、
前記隠れ層の計算結果に対し、前記特徴ベクトルを暗号化に用いた暗号鍵に対応する重みβを用いて前記ニューラルネットワークの出力層の計算を行うステップを実行させる、
ことを特徴とするプログラム。
【請求項13】
携帯端末を用いた察知エージェントシステムにおける機械学習方法を実行するプログラムであって、
学習フェーズと、識別分類フェーズを有し、
前記学習フェーズとして、
コンピュータに、
隠れニューロン数を決定させるステップと、
ユーザから取得される情報から取得した特徴ベクトルを暗号化するための第1の鍵と、
大きな乱数行列から部分重み行列を決定するための第2の鍵と、隠れ層の計算結果のうちその後の処理に用いない要素を決定するための第3の鍵を生成するステップと
出力層の重みを算出するステップを実行させ、
前記携帯端末に前記第1、第2、第3の鍵と前記出力層の重みを保存させるステップを実行させ、更に、
前記識別分類フェーズとして、
前記携帯端末に、
前記第1の鍵を用いて、前記特徴ベクトルを暗号化させるステップと、
暗号化された特徴ベクトルと、前記第2の鍵及び隠れニューロン数をサーバに送信させるステップを実行させ、
前記サーバに、
前記第2の鍵及び隠れニューロン数により隠れ層の重みを求め、隠れ層を計算して携帯端末に送信させるステップを実行させ、更に
前記携帯端末に、
前記隠れ層の計算結果のうちその後の処理に用いない要素を前記第3の鍵を用いて決定させ、その後、出力層を計算させる、
ことを特徴とするプログラム。
発明の詳細な説明 【技術分野】
【0001】
本発明は、察知エージェントシステムに関し、特に携帯して利用可能な情報処理機能を有する通信機器や情報機器(以降これらを携帯端末と称す)を用いた察知エージェントシステムに関する。さらに、察知エージェントシステムにおける機械学習方法、及びこれを実施するためのプログラムに関する。
【背景技術】
【0002】
察知エージェントとは、ユーザの様々な情報を察知して、その情報を基にユーザに役立つ情報の提供や、問題解決を行うことを目的としたさまざまな分野に応用ができるシステムである。
【0003】
かかる察知エージェントにELM(Extreme Learning Machine)に基づく機械学習手法を取り入れることによりユーザにカスタマイズされたエージェントを提供することが可能である。
【0004】
ここで、脳の中には多数の神経細胞(ニューロン)があり、ニューロンは、他のニューロンからの信号を受け、入力される信号の状態から所定の信号を他の多数のニューロンに受け渡しして情報処理を行っている。このような脳における仕組みをコンピュータにより実現するものが、ニューラルネットワークである。
【0005】
ELMは、一種のニューラルネットワークであり、大量の既知のデータから情報を抽出し、その情報をもとに未知のデータが何であるかを推論、分類する技術である。ここで、以降の説明では、「情報を抽出」することを学習、「推論、分類」することを分類と表示する。
【0006】
図1は、一般的なELMニューラルネットワークを示す図である。図において、ニューラルネットワーク1は、入力層1a、隠れ層(中間層)1b、出力層1cを有する。
【0007】
隠れ層1bの重みWとバイアスbは、乱数である。βは出力層1cの重みである。これら重みと係数は、事前のトレーニングにより決められる。
【0008】
ここで、入力の特徴ベクトルをxとすると、特徴ベクトルxの関数は、次式で表される。
【0009】
【数1】
JP2018045679A_000003t.gif

【0010】
【数2】
JP2018045679A_000004t.gif

【0011】
【数3】
JP2018045679A_000005t.gif

【0012】
【数4】
JP2018045679A_000006t.gif

【0013】
活性化関数としてシグモイド関数g(z)を用いる。以下はシグモイド関数の一例である。
【0014】
【数5】
JP2018045679A_000007t.gif

【0015】
上記式(1)-(4)において、Nhは隠れニューロンの数、Wは入力層から隠れ層の間の重み、bはバイアスである。βは隠れ層から出力層の間の重みである。また、Nfは特徴ベクトルxの次元数である。
【0016】
基本的なELMの学習方法を示すと次の手順のようである。
【0017】
学習データが、
【0018】
【数6】
JP2018045679A_000008t.gif

【0019】
である。(但し、Nfは特徴ベクトルの次元数、Ncはクラス数、Ndはデータ数)
1)まず、Wとbを乱数で初期化する。通常、乱数の範囲は、[-1,1]である。行列Wのサイズは、Nh×Nf,bはNh次元のベクトルである。
2)隠れ層の出力の行列を計算する。
【0020】
【数7】
JP2018045679A_000009t.gif

【0021】
次いで、
3)出力層の重みベクトルβを求める。
【0022】
【数8】
JP2018045679A_000010t.gif

【0023】
このとき、H+は式(6)の疑似逆行列である。Tは次に示す行列式である。
【0024】
【数9】
JP2018045679A_000011t.gif

【0025】
この方法によって求められたWとβと式(1)を用いて、分類処理を行う。
【0026】
一方、近年、スマートフォンをはじめとした携帯端末(Portable/Wearable Computing Device: P/WCD)が急速に普及し、今後も利用者が増えることが予想される。様々なアプリケーションがかかる携帯端末に向けて開発され、電話やメールに限らず多くの場面で利用されている。
【0027】
したがって、機械学習の手法を取り入れたアプリケーションの一つとして察知エージェントを携帯端末で実行できる場合、ユーザの様々な情報を察知して、その情報を基にユーザに役立つ情報の提供や、問題解決を行うことが可能である。
【先行技術文献】
【0028】

【特許文献1】特開平8-206088号公報
【特許文献2】特許第5916466号公報
【特許文献3】特開2014-229124号公報
【0029】

【非特許文献1】M. Lichman. UCI Machine Learning repository, 2013. URL:http://archive.ics.uci.edu/ml.
【非特許文献2】mldata.org.URL:http://mldata.org/.
【非特許文献3】Stefan Van Der Walt, S Chris Colbert, and Gael Varoquaux. “The NumPy array: a structure for efficient numerical computation”. In: Computing in Science & Engineering 13.2 (2011), pp. 22-30.
【非特許文献4】Eric Jones, Travis Oliphant, Pearu Peterson, et al. SciPy: Open source scientific tools for Python. [Online; accessed 2016-04-05]. 2001-. URL:http://www.scipy.org.
【非特許文献5】F. Pedregosa et al. “Scikit-learn: Machine Learning in Python”. In: Journal of Machine Learning Research 12 (2011), pp. 2825-2830.
【非特許文献6】Lars Buitinck et al. “API design for machine learning software: experiences from the scikit-learn project”. In:ECML PKDD Workshop: Languages for Data Mining and Machine Learning. 2013, pp. 108-122.
【非特許文献7】Marcel Hellkamp. bottle. 2014. URL:http://bottlepy.org/.
【非特許文献8】Inc Square. OkHttp. 2014. URL: http://square.github.io/okhttp/.
【非特許文献9】Jackson. URL: http://wiki.fasterxml.com/JacksonHome.
【非特許文献10】Florian Tramer et al. "Stealing machine learning models via prediction apis". In: USENIX Security. 2016.
【非特許文献11】Masato Hashimoto, Yuya Kaneda, and Qiangfu Zhao. “An ELM-based privacy preserving protocol for cloud systems”. In IEEE Symposium Series on Computational Intelligence (2016).
【非特許文献12】Guang-Bin Huang, Qin-Yu Zhu, and Chee-Kheong Siew. “Extreme learning machine: theory and applications”. In: Neurocomputing 70.1 (2006), pp. 489-501.
【非特許文献13】Guang-Bin Huang et al. “Extreme learning machine for regression and multiclass classification”. In: Systems, Man, and Cybernetics, Part B: Cybernetics, IEEE Transactions on 42.2 (2012), pp. 513-529.
【非特許文献14】nginx. URL:https://nginx.org.
【非特許文献15】uWSGI.URL:https://uwsgi-docs.readthedocs.io/en/latest/.
【非特許文献16】ReactiveX.URL:http://reactivex.io/.
【非特許文献17】Retrofit. URL:https://square.github.io/retrofit/.
【非特許文献18】gson. URL:https://github.com/google/gson.
【非特許文献19】M.Lichman.UCI Machine Learning Repository. http://archive.ics.uci.edu/ml. 2013
【非特許文献20】australian. URL: https://archive.ics.uci.edu/ml/datasets/Statlog+(Australian+Credit+Approval).
【非特許文献21】QSAR. URL: https://archive.ics.uci.edu/ml/datasets/QSAR+biodegradation.
【非特許文献22】gisette. URL:https://archive.ics.uci.edu/ml/datasets/Gisette.
【非特許文献23】satimage. URL:https://arachive.ics.uci.edu/ml/datasets/Statlog+(Landsat+Satellite)
【発明の概要】
【発明が解決しようとする課題】
【0030】
上記したように、察知エージェントを携帯端末に実装することは、より適切なサービスをより多くのユーザに提供が可能であるという有利さがある。しかし、携帯端末における計算資源は、一般のコンピュータよりも劣っている。さらにバッテリ駆動であるために、携帯端末において察知エージェントのための機械学習による大規模な計算処理を行うことが困難である。
【0031】
このような性能と計算コストのトレードオフの問題を解決する方法として、クラウドを用いること、即ち携帯端末上での機械学習処理が困難である場合、クラウドサーバに行わせることが想定される。
【0032】
この方法は、ネットワークの高速化、安定化に伴い、多くの携帯端末用のアプリケーションの設計方法にもなっている。携帯端末ではデータの入出力のみを行い、計算処理はクラウドサーバで行う方法である。
【0033】
しかし、クラウドシステムは既知の問題として、情報漏えいの問題と、それによるプライバシー侵害の問題がある。全ての察知エージェントの処理をクラウドで行う場合、クラウド側でユーザのプライバシー情報の解析が可能になる。また、クラウドで情報漏えいが生じた場合は、第三者にユーザの個人情報が流出してしまうという恐れがある。
【0034】
したがって、本発明の目的は、かかる機械学習による大規模な計算処理の不都合を解決し、ユーザの様々な情報を察知して、その情報を基にユーザに役立つ情報の提供や、問題解決する携帯端末を用いた察知エージェントシステムを提供することにある。
【課題を解決するための手段】
【0035】
上記課題を解決する本発明に従う察知エージェントの第一の側面は、携帯端末を用いた察知エージェントシステムであって、携帯端末と、前記携帯端末に接続されるサーバを有し、前記携帯端末は、ユーザから取得される情報から取得した特徴ベクトルを暗号化し、次いで、前記暗号化された特徴ベクトルをニューラルネットワークの入力層として前記サーバに送信し、前記サーバは、前記暗号化された特徴ベクトルを受信して、前記ニューラルネットワークの入力層から隠れ層を計算し、前記隠れ層の計算結果を前記携帯端末に送信し、前記携帯端末は、更に、前記サーバからの隠れ層の計算結果から出力層の計算を行うことを特徴とする。
【0036】
上記課題を解決する本発明に従う察知エージェントの第二の側面は、携帯端末を用いた察知エージェントシステムであって、携帯端末と、前記携帯端末に接続されるサーバを有し、前記携帯端末は、ユーザから取得される情報から取得した特徴ベクトルを第1の鍵により暗号化し、次いで、前記暗号化された特徴ベクトルをニューラルネットワークの入力層として前記サーバに送信し、前記サーバは、前記暗号化された特徴ベクトルを受信して、大きな乱数行列から部分重み行列を決定するための第2の鍵を用い、前記第2の鍵により決定される部分重み行列を用いて前記ニューラルネットワークの入力層から隠れ層を計算し、前記隠れ層の計算結果を前記携帯端末に送信し、前記携帯端末は更に、前記隠れ層の計算結果の要素のうちその後の処理に用いない要素を決定するための第3の鍵を用いて、前記隠れ層の計算結果の要素を隠す処理を行い、その後、出力層の計算を行うことを特徴とする。
【0037】
上記課題を解決する本発明に従う察知エージェントの第二の側面において、前記第1の鍵により、前記ユーザからのデータがベクトル置換によりを暗号化されることを特徴とする。
【0038】
上記課題を解決する本発明に従う察知エージェントは、前記第一、第二の側面において、前記ニューラルネットワークは、機械学習アルゴリズムであって、前記機械学習アルゴリズムは、処理フェーズとして、学習フェーズと、識別分類フェーズを有することを特徴とする。
【0039】
上記課題を解決する本発明に従う察知エージェントの第一の側面において、さらに、コンピュータを有し、前記コンピュータは、学習フェーズとして、前記携帯端末において前記暗号化に用いる複数の暗号鍵と、前記複数の暗号鍵に対応して前記出力層の計算に用いる複数の重みβを生成し、更に前記サーバにおいて前記暗号化された特徴ベクトルに対して隠れ層の計算をするための重みWとバイアスbを生成することを特徴とする。
【0040】
上記課題を解決する本発明に従う察知エージェントの第一の側面において、前記識別分類フェーズとして、前記携帯端末は、前記複数の暗号鍵によりランダムに決定した暗号鍵を用いて、ユーザの入力した特徴ベクトルを暗号化し、前記サーバは、前記暗号化された特徴ベクトルを、前記重みWとバイアスbを用いて隠れ層の計算をし、前記携帯端末は、更に前記サーバにおける隠れ層の計算結果に対し、前記暗号化に用いた暗号鍵に対応する重みβを用いて出力層の計算を行うことを特徴とする。
【0041】
上記課題を解決する本発明に従う察知エージェントは、前記第一、第二の側面において、前記サーバは、クラウドサーバであって、前記携帯端末はインターネットを通して前記サーバに接続することを特徴とする。
【0042】
上記課題を解決する本発明に従う察知エージェントの第二の側面において、さらに、コンピュータを有し、前記コンピュータは、学習フェーズとして、隠れニューロン数を決定し、ユーザから取得される情報から取得した特徴ベクトルを暗号化するための第1の鍵と、大きな乱数行列から部分重み行列を決定するための第2の鍵と、隠れ層の計算結果の要素のうちその後の処理に用いない要素を決定するための第3の鍵を生成し、更に出力層の重みを算出することを特徴とする。
【0043】
上記課題を解決する本発明に従う察知エージェントの第二の側面において、さらに、前記識別分類フェーズとして、前記携帯端末は、前記第1、第2、第3の鍵と前記出力層の重みを保存し、前記第1の鍵を用いて、前記特徴ベクトルを暗号化し、前記暗号化された特徴ベクトルと、前記第2の鍵及び隠れニューロン数を前記サーバに送信し、前記サーバは、前記第2の鍵及び隠れニューロン数により隠れ層の重みを求め、隠れ層を計算して携帯端末に送信し、更に前記携帯端末は、前記計算された隠れ層の出力から前記第3の鍵により後の計算に用いない要素を決定、更に出力層を計算することを特徴とする。
【0044】
上記した本発明に従うプロトコルにおいて、携帯端末からサーバに送信されるデータは暗号化されたものである。さらに隠れ層のニューロンの重み行列は、完全に乱数である。従って、サーバでの計算、及び計算結果は優位な情報を持たず、よってユーザの情報は守られる。
【図面の簡単な説明】
【0045】
【図1】一般的なニューラルネットワークを示す図である。
【図2】本発明に従う携帯端末を用いた察知エージェントシステムの概念図である。
【図3】図2に対応するサーバ10と、携帯端末11の構成例ブロック図である。
【図4】本発明に従う察知エージェントシステムの処理フローである。
【図5】隠れ層が複数であっても、サーバ10での演算が可能であることを示す図である。
【図6】Australianデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図7】Satimageデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図8】USPSデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図9】Colon cancerデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図10】Dexterデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図11】Farm-adsデータベースを使用したときの分類時間の評価実験による結果を示すグラフである。
【図12】第2の実施例に対応するニューラルネットワークを示す図である。
【図13】第2の実施例に対応する学習(トレーニング)の処理フロー図である。
【図14】第2の実施例に従う分類処理フロー図である。
【図15A】Australianデータセットにおける10回の5分割交差検定による正答率を示す図である。
【図15B】QSARデータセットにおける10回の5分割交差検定による正答率を示す図である。
【図15C】Gisetteデータセットにおける10回の5分割交差検定による正答率を示す図である。
【図15D】Satimageデータセットにおける10回の5分割交差検定による正答率を示す図である。
【図16A】Nexus6におけるAustralianデータセットでの分類処理時間を示す図である。
【図16B】Nexus6におけるQSARデータセットでの分類処理時間を示す図である。
【図16C】Nexus6におけるGisetteデータセットでの分類処理時間を示す図である。
【図16D】Nexus6におけるSatimageデータセットでの分類処理時間を示す図である。
【図17A】Moto Z payにおけるAustralianデータセットでの分類処理時間を示す図である。
【図17B】Moto Z payにおけるQSARデータセットでの分類処理時間を示す図である。
【図17C】Moto Z payにおけるGisetteデータセットでの分類処理時間を示す図である。
【図17D】Moto Z payにおけるSatimageデータセットでの分類処理時間を示す図である。
【発明を実施するための形態】
【0046】
以下に、本発明の実施例を添付の図面に従い説明する。この実施例は本発明の理解を容易とするためのものであり、本発明の適用は、これら実施例に限定されるものではない。また、本発明の保護の範囲は、特許請求の範囲と同一又は類似の範囲に及ぶ。

【0047】
[第1の実施例]
図2は、本発明に従う携帯端末を用いた察知エージェントシステムの第1の実施例の概念図である。

【0048】
機械学習のためのニューラルネットワークは、入力層1a、中間層(隠れ層)1b、出力層1cを有する。本発明の特徴は、ニューラルネットワークの一部即ち、中間層1bの演算をサーバ10に行わすことにある。

【0049】
ここでサーバ10として、好ましい形態としてクラウドサーバを使用するが、独立した固有のコンピュータサーバであってもよい。

【0050】
事前に携帯端末11には、出力層1cの演算のための出力ニューロンの重みβkが与えられている。一方、サーバ10には、中間層1bの演算のための隠れニューロンの重みWとバイアスbが与えられている。

【0051】
携帯端末11においては、ユーザの入力に対する特徴ベクトルxを暗号化する。そして、暗号化された特徴ベクトルxを、サーバ10に送る。

【0052】
サーバ10は、重みWを用いて上記式(2)の計算をして中間層1bの演算をする。ついで、携帯端末11は、重みβkを用いて上記式(1)の計算を行い、最終結果を得る。

【0053】
かかる場合、サーバ10での処理は、式(2)のみになる。ELMにおいてWは乱数であるため、意味のある情報ではない。そのため、サーバ10上のモデルの保護は保証される。また、サーバ10で、全ての分類を行わないため、第三者にサーバ10のデータを見られてもユーザの計算の意図を把握することは困難である。

【0054】
さらに、サーバ10においても、ユーザの計算目的や計算に使用するデータが何であるかを判断することが出来ない。したがって、これにより携帯端末11を使用するユーザのプライバシーの保護が可能である。

【0055】
図3は、図2に対応するサーバ10と、携帯端末11の構成例ブロック図である。サーバ10と携帯端末11は、WiFiあるいは、ブルーツース等の無線通信機能12を介して接続される。また必要であれば、携帯端末11が有線接続によりサーバ10に接続されてもよい。

【0056】
携帯端末11において、特徴ベクトルxを暗号化部20により暗号化してサーバ10側に送信する。この暗号化部20における暗号化のために、複数の暗号化キー(key1~keyn)とそれに対する重みβ1~βnの組を暗号鍵と重みβの対応テーブル13に事前に用意する。そして、分類毎に、これら暗号化キーと重みの組をランダムに切り替えて、暗号化部20で使用することで安全性が高められる。

【0057】
サーバ10での処理は、入力される暗号化された特徴ベクトルxに対して、演算部14により中間層(隠れ層)1bの演算を、あらかじめ通知されている重みWとバイアスbの乱数を用いて行列計算を行う。

【0058】
したがって、サーバ10における処理において、データが第三者に知られてもセキュリティ上の不都合はない。すなわち、サーバ10側では、ユーザの計算の意図、計算に使うデータがどのような意味を持つものであるかを判断することができない。

【0059】
サーバ10における演算の結果が、携帯端末11に送られると、携帯端末11の演算部15で出力層1cの演算を行いクラスラベル16が得られる。この際、携帯端末11ではサーバ10に特徴ベクトルを暗号化する際に使用した鍵(keyi)に対応する重みβを用いて出力層1cの演算を行う。

【0060】
図4は、本発明に従う察知エージェントシステムの処理フローである。処理は、学習フェーズPh1と分類フェーズPh2で構成される。

【0061】
「学習フェーズPh1」
学習フェーズPh1では、ニューラルネットワークで使用する先に図1に関して説明した隠れ層1bの重みWとバイアスb、更に出力層1cの重みβを求める処理を行う。かかる処理は、コンピュータ17として例えば、パーソナルコンピュータを用いて行うことも可能である。

【0062】
コンピュータ17において、携帯端末11からユーザのさまざまな情報データを収集してデータベースを作成する(ステップS0)。ここで、ユーザの情報データは、察知エージェントをどのように使用するかによってその内容が変わる。

【0063】
ユーザのさまざまな情報データとして、目的に対応して例えば、ユーザの心拍、血液情報の生態情報(健康状態の診断管理)、写真画像(写っている人、物のタグ付け)、手書き文字の画像データ(手書き文字認識によるユーザ認証)などがあげられる。

【0064】
ついで、コンピュータ17で、作成されたデータベースに基づき、特徴数が定義される。この特徴数によって、暗号化のための暗号鍵を生成する(ステップS1)。

【0065】
例えば、暗号化として転置式暗号を用い、異なるn(2≦n≦Nf!)個の暗号鍵を生成する。ここで、転置式暗号とは、ベクトルの要素の順序をシャッフルすることによる行われる暗号化であり、ベクトル要素の置換である。例えば鍵をK=(K1, K2,…Km)とするとき、Ki=jならば、特徴ベクトルのjの位置をiの位置に置換する。

【0066】
コンピュータ17で、作成されたデータベースに基づき、n個のそれぞれの鍵を用いて学習データの暗号化を行う。これによりn個の異なる学習データセットが生成される。暗号化された学習データセットをそれぞれ用いて学習を行い、n個の機械学習(ELM)モデルを作成する(ステップS2)。

【0067】
この際、中間層における隠れニューロンの重み行列(W,b)は乱数である、複数のモデルで共有することが出来る。n個のELMモデルに対して1つの隠れニューロンの重み行列で十分である。一方、出力ニューロンの重みβは、暗号鍵と一対一に対応させる必要があるため、n個生成する必要がある。

【0068】
このように機械学習のためのニューラルネットワークに使用する中間層の重みWとバイアスb、更に出力層の重みβが生成される。

【0069】
ついで、求められた重みWとバイアスbは、サーバ10に送られ保存される(ステップS3)。

【0070】
一方、n個の鍵Key1,Key2,…Keynとそれに対応するn個の出力層の重みβ1, β2,…βnは、携帯端末11に送られ保存される(ステップS4)。

【0071】
上記の学習フェーズPh1が終了すると、次に処理は、分類フェーズPh2に移行する。

【0072】
「分類フェーズPh2」
図4において、携帯端末11は、ユーザからの情報に基づき、特徴ベクトルxを作成取得する(ステップS5)。

【0073】
先に学習フェーズPh1でコンピュータ17から得られたn個の暗号鍵から暗号化に用いる一つの鍵をランダムに決定する。ここでは、決定された鍵を鍵kとする(ステップS6)。

【0074】
決定された暗号鍵を用いて特徴ベクトルxを転置式暗号で暗号化する(ステップS7)。

【0075】
【数10】
JP2018045679A_000012t.gif

【0076】
次いで、暗号化された特徴ベクトルx'を携帯端末11からサーバ10に送信する(ステップS8)。

【0077】
サーバ10では、受信した特徴ベクトルx'に対し、演算部14において、先にステップS3において入手している重みWとバイアスbを用いて、入力層から隠れ層の計算を先に示した式(2)に従い行う(ステップS9)。ついで、演算結果を携帯端末11に送る(ステップS10)。

【0078】
携帯端末11は、演算部15(図3)において、対応テーブル13を参照して先に用いた鍵kに対応した出力ニューロンの重みβkを用いて隠れ層から出力層の演算を、先に示した式(1)に従い実行し結果16(図3)を出力する。

【0079】
ここで、上記に説明した例では、隠れ層が一層の例であるが、本発明の適用はこれに限られない。図5は、隠れ層が複数であっても、サーバ10での演算が可能であることを示す図である。

【0080】
「実験例」
ここで、上記した本発明に従う察知エージェントの性能評価実験による検証を説明する。

【0081】
性能評価実験の目的は、第1に本発明の察知エージェントのプロトコルを用いることにより携帯端末11における計算処理の削減を確認することである。なお、実験では、携帯端末やサーバにおける暗号鍵や重みの読み込み時間は、計測に含まれていない。

【0082】
1)識別時間の計測:
識別時間とは、携帯端末11で特徴ベクトルxを入力してからクラスラベルが出力されるまでの時間である。かかる識別時間を計測することにより携帯端末11での計算処理を削減できているか否かを確認することが出来る。

【0083】
携帯端末11として、実験ではAndroidスマートフォンを用いた。

【0084】
測定を行ったのは以下に示す3つの手法である。

【0085】
a: All Smartphone:スマートフォン(携帯端末11)のみでELMによる識別を行う場合の識別時間の測定である。

【0086】
b:All Server:ELMモデルを全てサーバ10に保存し,スマートフォン(携帯端末11)からサーバ10へ送信されたデータを識別,その結果をスマートフォンに返す場合の識別時間の測定である。

【0087】
c: Cloud System: 本発明で提案したクラウドシステム(プロトコル)を用いて識別を行う場合の識別時間の測定である。

【0088】
評価実験には,UCI Machine Learning Repository(非特許文献1),および mldata.org(非特許文献2)により公開されているデータベースを用いた。

【0089】
これらのデータベースの情報を下記の表1に示す。

【0090】
【表1】
JP2018045679A_000013t.gif

【0091】
データベースAustralian,Satimage,USPS,Colon cancerにおいて平均が0,分散が1になるような正規化を行った.Dexter,Farmadsに関してはスパース性を持つデータベースであるため正規化を行わなかった(正規化は時間測定の結果には影響を与えないため,フェアな比較である)。

【0092】
ネットワークはスマートフォン(携帯端末11)1台、サーバ20を1台,ルータ1台の計3台で構成した.スマートフォン,ルータ間は無線,サーバ,ルータ間はLANケーブルで接続した。

【0093】
表2に、スマートフォン(携帯端末11)の仕様情報を示し、表3に、サーバ10の仕様情報を示す。ルータは NEC PA-WG1800HP2を用いた。

【0094】
【表2】
JP2018045679A_000014t.gif

【0095】
【表3】
JP2018045679A_000015t.gif

【0096】
ELMに関しては,Python 3.4.3とそのオープンソースライブラリであるNumpy 1.9.2 (非特許文献3),SciPy 0.15.1 (非特許文献4),Scikit-learn 0.16.1(非特許文献5、6) を用いて実装した。

【0097】
活性関数は標準シグモイド関数, 隠れニューロン数Nhは100,500,1,000とした。スマートフォン(携帯端末11),サーバ10間の通信はHTTP通信を行い,データはJSON形式にシリアライズして行った。

【0098】
サーバ10はPythonWebフレームワークであるbottle 0.12.8(非特許文献7)を用いた。携帯端末11であるAndroidスマートフォンでは HTTP 通信ライブラリ OkHttp 2.4.0(非特許文献8),JSON ライブラリ Jackson 2.6.0-rc3(非特許文献9)を用いた。

【0099】
「実験結果と考察」
最初に、十分なELMの性能を出すためのNhを検証するため交差検定による実験を行った。データベース,及び隠れニューロン数Nh毎の10回の5分割交差検定による識別率の平均値(%)を表4に示す。

【0100】
【表4】
JP2018045679A_000016t.gif

【0101】
表4において、太字は,各データベースにおける最も高い精度を表している。いくつかのデータベースにおいて、Nh=1,000のとき高い精度を示していた。しかし、Australianにおいては Nh=100のとき,最も高い精度だった。したがって、高い精度を得るためには、各データベースによって最適な隠れニューロン数Nhを選択する必要がある。

【0102】
図6-図11にデータベース毎の識別時間の評価実験による結果を示すグラフである。すなわち、それぞれ、上記のAustralianデータベース、Satimageデータベース、USPSデータベース、Colon cancerデータベース、Dexterデータベース、更にFarm-adsデータベースを使用した場合の識別時間の比較を示している。

【0103】
図6-図11において、共通にグラフの縦軸は識別時間 (秒),横軸は隠れニューロン数Nhであり、30回の識別時間測定の平均値を表している。それぞれのグラフの縦棒は左から順にAll Smartphone,All Server,Cloud System(プロトコル)における結果である。それぞれのグラフにおいて、エラーバー(EB)は各測定結果の標準偏差を表している。

【0104】
図6-図11から特徴数Nf,隠れニューロン数Nhが大きい値であるほど、いずれのデータベースを使用する場合でも識別に時間がかかっていることが示される。式 (1)の計算量は,特徴数Nf,隠れニューロン数Nhに依存しており、Nf,Nhの値が増加するにつれて、計算量も増加するからである。

【0105】
また、特徴数Nfが大きいほど、特徴ベクトルのデータ容量が大きくなり,スマートフォンからサーバへの転送時間が増加する。したがって、いずれの手法においても,特徴数Nfと識別時間,隠れニューロン数Nhと識別時間の間には、正の相関関係があると考えられる。

【0106】
また、いずれの隠れニューロン数においても、Cloud SystemよりAll Serverの方が識別時間が速かった。サーバからスマートフォンへの式(2)の計算結果の送信や、スマートフォンにおける式(1)の計算に時間が必要であるためである。しかし、All Serverは全ての識別処理をサーバ10で行っているため,サーバの情報漏洩の際、第三者に有意な情報が渡る可能性があり、プライバシーの安全性に欠ける。

【0107】
All ServerはCloud Systemよりも高速に識別を行うことができるが、実用性が低い。データベースAustralian,Satimage,USPS,Colon cancerの実験結果に関しては,いずれの隠れニューロン数においても、識別時間は 1) All Smartphone,2) All Server,3) Cloud Systemの順に速かった。

【0108】
一方、図8、図9に示すように、Dexter,Farm-adsの実験結果に関しては 1) All Server, 2) Cloud System, and 3) All Smartphoneの順であった。スマートフォンにおける式(1)の計算時間がクラウドサーバとの通信時間を上回るためだと考える。携帯端末のみで,特徴数が比較的多いデータを,高い精度で識別することは困難であることを示している。本実験の結果から、データの特徴数が比較的多い場合、本発明に従うクラウドシステム(プロトコル)を用いることで高速に識別が行えることが確認できた。

【0109】
したがって、携帯端末に察知エージェントを搭載する場合、携帯端末における識別コストとプライバシーの保護を考慮すると、本発明の有用性は十分にある。

【0110】
[第2の実施例]
ここで、本発明の第2の実施例として、分類処理の安全性を更に高めるため、3つの鍵を用いたプロトコル手続きについて以下に説明する。この実施例では、上記した実施例に対して更に次の特徴利点を有する。

【0111】
サーバ10から携帯端末1へのレスポンスの情報も守られる。これによりさらなる安全性の向上が期待される。サーバ10の処理に乱数行列を用いる。

【0112】
図12は、第2の実施例に対応するニューラルネットワークであり、携帯端末11側にサーバ10における隠れ層計算結果出力に対してドロップ処理機能部30が付加され、出力層の重みβを変えるだけで隠れ層の重み行列とバイアスが共通に複数のユーザに使用されることを示している。

【0113】
すなわち、第2の実施例では、十分大きな乱数行列(ランダムマトリクス)からサブマトリクスを通して部分行列を決定する。これにより一つの乱数行列を複数の察知エージェント、複数のユーザが共有して使うことができる。そのため、サーバ10は、エージェントやユーザ毎に異なる行列を持つ必要がなく、ただ一つの乱数行列を保持していれば良い。これにより、異なるエージェント、ユーザ毎に乱数行列を読み込み直す必要がないために、サーバ10の処理の高速化や実装コストの削減が期待できる。

【0114】
かかる第2の実施例における3つの鍵を1)置換鍵(trans-key),2)部分行列の位置の鍵(pos-key),3)隠れ層の出力ベクトルから要素を選択するための鍵(drop-key)と定義する。3つの鍵のそれぞれの役割は、次のようである。
(trans-key):
ベクトル置換によるユーザからのデータを暗号化するための鍵である。

【0115】
これにより暗号化されユーザのデータが保護される。置換鍵は、置換後の要素の添字を並べたベクトルになる。

【0116】
暗号化したい特徴ベクトルがv、置換鍵がKt=(k1, k2,…kNf)(Nfはvの次元数)の場合を想定する。暗号化の処理は、kc=dの時(1≦c≦Nf), vのd番目の要素が暗号化後のc番目のベクトルの要素になる。例として、v=(v1, v2, v3), Kt =(2,3,1)の時、暗号化後のc番目のベクトルは、Enc(v, Kt)=(v2, v3, v1)となる。

【0117】
(pos-key):
サーバ10に保存された十分大きい乱数行列Woから部分行列W(入力層から隠れ層間の重み)を決定するための鍵である。鍵は、行番号と列番号の2要素のベクトルになる。なお、行列Wのサイズは、
JP2018045679A_000017t.gifである。
JP2018045679A_000018t.gifは、後に説明する。例えば、pos-keyがKp=(e,f)のとき、Woのe行f列目の要素が、Wの1行1列目の要素となるようにする。したがって、Woのサイズが、γ×δのとき、Kp=(e,f)の各要素の範囲は、1≦e≦γ-Nh, 1≦f≦δ-Nfである。
(drop-key):
隠れ層の出力ベクトルからその後の処理に使用しない要素を決定する鍵である。(以降この処理を「ドロップする」と表記する)この処理の意図は、全ての隠れ層の出力を、その後の計算で使わせなくさせることである。サーバ10の計算の出力結果のうち、実際に計算に使われる要素を隠すことができるので、安全性の向上が果たされる。

【0118】
drop-key Kdは隠れ層の出力のうち、ドロップする要素の添字を並べたベクトルになる。

【0119】
【数11】
JP2018045679A_000019t.gif

【0120】
が隠れ層の出力ベクトルの次元数のとき、Kdの各要素の範囲は、

【0121】
【数12】
JP2018045679A_000020t.gif

【0122】
であり、大きさは(r-1)・Nhになる。rは、隠れニューロン数の冗長率である。ここでの冗長とは、隠れニューロン数Nhを必要より多く設定し、隠れ層の計算を余分に行うことである。

【0123】
rの範囲は、

【0124】
【数13】
JP2018045679A_000021t.gif

【0125】
である。真の隠れニューロン数がNhのとき、プロトコルでは

【0126】
【数14】
JP2018045679A_000022t.gif

【0127】
で隠れ層までの処理を行う。例えば、真の隠れニューロン数Nh=2、冗長数r=2.0のとき、

【0128】
【数15】
JP2018045679A_000023t.gif

【0129】
になる。したがって、プロトコルは隠れニューロン数は、

【0130】
【数16】
JP2018045679A_000024t.gif

【0131】
として隠れ層の計算を行う。

【0132】
【数17】
JP2018045679A_000025t.gif

【0133】
なので、隠れ層の出力は、h(v)=(h1,h2,h3,h4), Kd=(1,3)のとき、処理後の出力は、drop(h(v),Kd)=(h2,h4)になる。

【0134】
このように、ドロップ処理により、隠れ層の計算を必要以上に行った分を真に必要な分に調整することになる。

【0135】
つぎに、上記3つの鍵の処理を加えた第2の実施例のプロトコル処理について処理フローに従い説明する。

【0136】
図13は、第2の実施例に対応する学習(トレーニング)の処理フローである。

【0137】
ここで、ローカルサーバ(PC)17は、各ユーザが持つコンピュータ(パソコン)であって、本発明のプロトコルを用いて察知エージェントを実運用する際、第1の実施例と同様に学習処理はユーザの所有するコンピュータ17で行うことを想定する。

【0138】
まず、コンピュータ17により、十分大きい乱数行列Woを生成定義する(ステップS20)。なお、前記Woのサイズは任意であり、任意の分類タスク、及び複数のユーザで共有して使うことが出来る。そのため、Woは一度だけ生成すればよい。

【0139】
携帯端末11によりトレーニングデータを収集し、コンピュータ17に送る(ステップS21)。

【0140】
コンピュータ17では、冗長度r、真の隠れニューロン数Nhを決定し、

【0141】
【数18】
JP2018045679A_000026t.gif

【0142】
を求める(ステップS22)。

【0143】
次いで、コンピュータ17は、

【0144】
【数19】
JP2018045679A_000027t.gif

【0145】
を順次生成する(ステップS23-1,23-2,23-3)。

【0146】
ついで、暗号化データと隠れ層から出力層の重みβを、以下のように算出する(ステップS24)。

【0147】
n個のtrans-keyそれぞれを使って学習データセットを暗号化する。すなわち、n個の異なる学習データセットが生成される。

【0148】
例えば、学習データ数が、Nd, Nf=4の時、学習データセットは、式(10)である。特徴ベクトルを行に並べたもの、あるいは、trans-keyが式(11)であるとき、暗号化されたデータセットは、式(12)になる。

【0149】
【数20】
JP2018045679A_000028t.gif

【0150】
【数21】
JP2018045679A_000029t.gif

【0151】
【数22】
JP2018045679A_000030t.gif

【0152】
Woと複数のpos-keyと

【0153】
【数23】
JP2018045679A_000031t.gif

【0154】
を使ってm個の異なる部分行列(隠れ層の重み)を生成する。

【0155】
例えば、Woが式(13)、pos-keyが式(14)で、

【0156】
【数24】
JP2018045679A_000032t.gif

【0157】
であるとき、部分行列は式(15)になる。Wの大きさは、

【0158】
【数25】
JP2018045679A_000033t.gif

【0159】
である。

【0160】
【数26】
JP2018045679A_000034t.gif

【0161】
【数27】
JP2018045679A_000035t.gif

【0162】
【数28】
JP2018045679A_000036t.gif

【0163】
ついで、それぞれのデータセット、それぞれの重みを用いて、隠れ層の出力を求める。その出力に対してそれぞれのdrop-keyを用いて複数のドロップされた出力を求める。これにより、n,m,l個の異なる隠れ層の出力が決定する。

【0164】
例えば、

【0165】
【数29】
JP2018045679A_000037t.gif

【0166】
で、隠れ層の出力を式(16)とする。

【0167】
drop-keyが式(17)のとき、ベクトルの大きさは、(r-1)・Nh=(1.6-1)・5=3であって、式(16)の5,4,7行目をドロップさせるので、結果は式(18)になる。

【0168】
【数30】
JP2018045679A_000038t.gif

【0169】
【数31】
JP2018045679A_000039t.gif

【0170】
【数32】
JP2018045679A_000040t.gif

【0171】
次に、それぞれの隠れ層の出力を使って重みβを求める。これによりn,m,l個の異なるβが生成される。

【0172】
したがって、Kt, Kp, Kd, βs更に

【0173】
【数33】
JP2018045679A_000041t.gif

【0174】
の全ての携帯端末11に保存する(ステップS25)。さらに、Woをサーバ10に保存する(ステップS26)。

【0175】
次に本発明の第2の実施例に従う分類処理について説明する。図14は、かかる分類処理の処理フローである。

【0176】
携帯端末11は、ユーザからデータを取得する(ステップS30)。trans-key Ktを選択し(ステップS31)、選択した

【0177】
【数34】
JP2018045679A_000042t.gif

【0178】
を用いて取得したユーザデータの特徴ベクトルを暗号化する(式19)(ステップS32)。

【0179】
このとき、iは, 1≦i≦nからランダムに定義される。

【0180】
【数35】
JP2018045679A_000043t.gif

【0181】
例えば、特徴ベクトルが式(20)、Ktが式(11)のとき、暗号化後のベクトルは、式(21)のようになる。

【0182】
【数36】
JP2018045679A_000044t.gif

【0183】
【数37】
JP2018045679A_000045t.gif

【0184】
携帯端末11は、

【0185】
【数38】
JP2018045679A_000046t.gif

【0186】
をサーバ10に送信する(ステップS34)。このとき、jは1≦j≦mにランダムに定義される。

【0187】
サーバ10では、

【0188】
【数39】
JP2018045679A_000047t.gif

【0189】
を用いて式(22)により隠れ層の重みWを求め(ステップS35)、隠れ層の計算(式(23))を行う(ステップS36)。

【0190】
【数40】
JP2018045679A_000048t.gif

【0191】
【数41】
JP2018045679A_000049t.gif

【0192】
ついで、サーバ10は、計算出力である隠れ層h(x')を携帯端末に送信する(ステップS37)。

【0193】
携帯端末11において、

【0194】
【数42】
JP2018045679A_000050t.gif

【0195】
をもとに、後の計算に使う要素を選択する(ステップS38:式(24))。このとき、kは、1≦k≦1からランダムに定義される。

【0196】
【数43】
JP2018045679A_000051t.gif

【0197】
例えば、

【0198】
【数44】
JP2018045679A_000052t.gif

【0199】
で、隠れ層の出力を式(25)とする。Kdが式(17)のとき、結果は式(26)となる。

【0200】
【数45】
JP2018045679A_000053t.gif

【0201】
【数46】
JP2018045679A_000054t.gif

【0202】
携帯端末11は、βijkを用いて出力層の計算をし、結果を得る。

【0203】
【数47】
JP2018045679A_000055t.gif

【0204】
上記第2の実施例でのプロトコルでは、暗号化した状態で最終結果を得るため、復号化の処理を行う必要はない。

【0205】
以下に、上記第2の実施例における効果を確認するために行った実験例について説明する。

【0206】
[実験例1]
この実験での目的は、各データセットに対し十分な性能を出すための最適なNhを探すことにある。

【0207】
評価は、5分割交差検定による識別正答率で行う。なお、5分割交差検定とは、「データセットを特徴ベクトルの数で5分割し、1/5をテスト用データ、4/5を学習用データとして使う。そして、テストデータ、学習データを異なる5パターンの組み合わせのそれぞれで性能評価を行い、その5回分の平均値を最終結果とする。」機械学習アルゴリズムの分類性能を評価するための一手法であり、一般にk分割交差検定と呼ばれる。

【0208】
かかる5分割交差検定において、最適なNhを探すため、Nh=1000, 1500, 2000,…5000とNhを変え、それぞれの値で5分割交差検定を行った。活性化関数には、標準シグモイド関数を用いた。なお、実験は、Python3, Numpy 1.10.4(非特許文献3), Scipy 0.17.0(非特許文献4), 及びScikit-learn 0.18.1(非特許文献5)を用いて本発明者が作成したプログラムによって実行した。

【0209】
[実験例2]
この実験は、本発明のプロトコルのシミュレーション実験である。以下の手法それぞれで分類時間の測定を行い、比較を行った。

【0210】
1)Local:ELMによる全ての分類処理を携帯端末11のみで行う。

【0211】
2)Protocol:本発明によるプロトコルにより行う。
第3の発明のプロトコルが有効であるかを確認することが出来る。

【0212】
真の隠れニューロン数には実験例1で得られた最適な(高い性能が出る)値を設定した。trans-keyの数n, pos-keyの数m, drop-keyの数lは、それぞれ5に設定した。r=1.4に設定した。Woのサイズは、10,000×10,000で行った。

【0213】
携帯端末11として2つのAndroidスマートフォンを用いてそれぞれで実験を行った。

【0214】
各実験でのネットワークは、スマートフォン1つ、ルータ一1つ、サーバ1つで構成した。スマートフォンとルータは無線(WiFi)で接続され、サーバとルータはLANケーブルで接続された。

【0215】
実験に用いた携帯端末11としてのスマートフォンとサーバ10の情報は、それぞれ以下の表5,表6に示すとおりである。

【0216】
【表5】
JP2018045679A_000056t.gif

【0217】
【表6】
JP2018045679A_000057t.gif

【0218】
プロトコルのためのシステムはWeb APIとして実装され、通信には、HTTPを用いた。

【0219】
ELMのモデル(Wといくつかのβ)と3つの各鍵(Kt, Kp, Kd)は、Python3で生成し、npyファイルフォーマットでダンプした。なお、npyファイルフォーマットとは、Numpy arrayの標準的なバイナリーフォーマットである。かかるELMも本発明者により著作した。

【0220】
サーバ10は、Python3 bottle(非特許文献7),Nginx(非特許文献14),及びuWSGI(非特許文献15)で実装された。

【0221】
Androidスマートフォンでのプログラムは、Java(登録商標)とC++で書かれた。Javaは、Android開発のための標準的な開発言語である。Android端末でのサーバ10と通信を行う部分は、Rxjava(ReactiveX)(非特許文献16)、Retrfit(非特許文献17)、Gson(非特許文献18)をライブラリとして使用した。

【0222】
サーバ10へは、JSONフォーマットでデータを送信するようにした。また、Android端末上での重み(W,β)や鍵(Kt, Kp, Kd)の読み込み、行列演算の処理にはAndroid NDKを用いた。

【0223】
Android NDK(C++)で実装することにより、Javaでの実装より高速に実行することが出来る。npyファイルフォーマットの読み込み、及び行列演算の処理をC++で記述した。C++プログラムとJavaプログラムの接続は、Java Native Interface(JNI)を用いた。行列積には基本的な3-loopの方法を用いた。

【0224】
実験において、モデルの読み込み、プロトコルの処理、モデルのメモリからの削除の3つの測定範囲を含め、1つの分類処理を30回行い、その平均時間を求めた。

【0225】
ここで、実験に用いたデータセットについて説明する。実験に用いたデータセットは表7に示すとおりである。

【0226】
【表7】
JP2018045679A_000058t.gif

【0227】
上記データセットのそれぞれについて説明する。
1)Australian:
Australian(非特許文献20)は、クレジットカードを認可するか否かを判断するためのデータである。それぞれの特徴ベクトル(Nf)は、一人分のデータを表す。クラスラベル(Nc)は高信用か低信用かの二値である。
2)QSAR:
QSAR(非特許文献21)は、定量的構造活性相間に関するデータである。
3)Gisette:
Gisette(非特許文献22)は、手書き数字画像分類問題であり、“4”と“9”のどちらかを分類する。
4)Satimage:
Satimageは、地球観測衛星(LANDSAT)による写真に基づいたデータである。クラスラベルは以下の6つの風景である。1.赤い土壌(red soil)2.綿花(cotton crop) 3.灰色の土壌(grey soil)4.湿った灰色の土壌(damp grey soil) 5.植物の切り株がある土壌(soil with vegetation stubble) 6.より湿った灰色の土壌(very damp grey soil)

【0228】
[実験結果]
上記第2の実施例に対する実験1、実験2の結果をまとめると次のようである。

【0229】
実験1の結果:
図15A-15Dは、上記4つのデータセットのそれぞれにおける10回の5分割交差検定による正答率を表している。縦軸は正答率、横軸は隠れニューロン数を示している。“Train”ラベルは学習データでのスコアを示す、“Test”ラベルはテストデータでのスコアを示している。

【0230】
図15A,図15Bにそれぞれ示すAustralianとQSARの結果において過学習が起きている。すなわち、学習モデルが、学習データに依存しすぎ、学習データは高性能に分類できるがテストデータに関しての分類において精度がなくなる状態である。

【0231】
これらの結果による各データセットの最適なNhを示すと表8に示すようである。

【0232】
【表8】
JP2018045679A_000059t.gif

【0233】
実験2の結果:
図16A-図16D、及び図17A-図17Dは、上記4つのデータセットのそれぞれでの分類処理時間を示している。処理時間が小さい値ほど高速の処理が行われることを示している。

【0234】
Nexus6での結果は図16A-図16D、Moto Z playの結果は図17A-図17Dである。

【0235】
各図において、左側の棒は、携帯端末11のみを使用する手法での結果、右側の棒は、本発明のプロトコルによる結果を示している。AustralianとQSARは、先に説明のとおり過学習が起こり精度がでないため、Nh=1000までにとどめている。縦軸は分類時間で、単位は、秒である。斜線部分40は、携帯端末サーバ11がサーバ10へリクエストを送り、レスポンスが還ってくるまでの時間である。

【0236】
表9、表10に1回の分類での各処理に要した時間を示す。

【0237】
Preとは、trans-keyの読み込みや暗号化、drop-keyの読み込み処理であり、サーバ10とネットワークの処理時間である。Convertは、Javaオブジェクトをサーバ10へ送信するためJSONフォーマットに変換する処理である。逆にサーバ10からのレスポンスをJSONフォーマットからJavaオブジェクトに変換する処理も含む。

【0238】
Hiddenは、サーバにおける処理に要した時間である。すなわち、携帯端末でリクエストをしてレスポンスの返ってくる時間である。

【0239】
さらに、Outputは、携帯端末10でのドロップ処理と出力層の計算を行う処理である。また、TotalはProtocol, Localそれぞれの分類処理の合計時間である。

【0240】
【表9】
JP2018045679A_000060t.gif

【0241】
【表10】
JP2018045679A_000061t.gif

【0242】
[考察]
図16A-16D,及び図17A-17Dにより全ての結果において、処理時間が1秒以下であった。これはユーザにとっては許容範囲の処理時間である。Nexus6及びMOTO Z playのいずれの携帯端末においてもAustralian, QSAR, Satimage データセットはLocalの方が高速であった。上記表9、表10によれば、プロトコルはJSONとJavaオブジェクトの返還に時間が掛かっている。よって、変換処理を改善することにより本発明のプロトコル全体の改善が期待できる。

【0243】
Gisetteデータセットは両方の端末において、本発明プロトコルの方が高速に動作している。

【0244】
プロトコルがサーバ10で行う隠れ層の計算は、式(2)よりNhとNfに依存する。
GisetteのようなNh, Nfともに大きい値の分類処理において有効である。これらの点から本発明に従うプロトコルは携帯端末11での分類処理を削減する方法として有効である。
【符号の説明】
【0245】
1 ニューラルネットワーク
1a 入力層
1b 隠れ層(中間層)
1c 出力層
10 サーバ
11 携帯端末
12 無線通信機能
13 暗号鍵と重みβの対応テーブル
14、15 演算部
16 クラスラベル
17 コンピュータ
20 暗号化部
30 ドロップ処理機能部
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5】
4
【図6】
5
【図7】
6
【図8】
7
【図9】
8
【図10】
9
【図11】
10
【図12】
11
【図13】
12
【図14】
13
【図15A】
14
【図15B】
15
【図15C】
16
【図15D】
17
【図16A】
18
【図16B】
19
【図16C】
20
【図16D】
21
【図17A】
22
【図17B】
23
【図17C】
24
【図17D】
25