(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-17
(45)【発行日】2022-10-25
(54)【発明の名称】情報処理システム及び情報処理方法
(51)【国際特許分類】
G06N 3/04 20060101AFI20221018BHJP
G06Q 50/00 20120101ALI20221018BHJP
【FI】
G06N3/04 154
G06Q50/00 300
(21)【出願番号】P 2020157805
(22)【出願日】2020-09-18
【審査請求日】2021-03-17
(73)【特許権者】
【識別番号】319013263
【氏名又は名称】ヤフー株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】坪内 孝太
(72)【発明者】
【氏名】清水 徹
【審査官】中村 信也
(56)【参考文献】
【文献】米国特許出願公開第2019/0197396(US,A1)
【文献】特開2020-071552(JP,A)
【文献】特開2008-269215(JP,A)
【文献】YANG kai,Federated Learning via Over-the-Air Computation,arXive:1812.11750v3,Cornell University,2019年02月17日,[検索日:2022.04.26],インターネット<URL:https://arxiv.org/pdf/1812.11750.pdf>
【文献】松木 萌,センサを用いた人間行動認識におけるZero-shot学習法の検討,情報処理学会第81回(2019年)全国大会,2019年02月28日,P.3-225~3-226
【文献】TATSUAKI Kobayashi,機械学習における欠測の取扱い,Qiita,2019年10月15日,[検索日:2022.4.26],インターネット<URL:https://qiita.com/tatsunidas/items/fe768ec934c0d17a657a>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/04
G06Q 50/00
(57)【特許請求の範囲】
【請求項1】
端末装置が取得した
位置情報を含むデータからユーザのコンテキストを示すベクトルを生成する共通モデルを提供するサーバと、
各々保有する
位置情報を含むデータを用いて、前記サーバから受信した前記共通モデルのパラメータを更新した局所モデルを生成し、前記局所モデルに関する情報である更新用情報を前記サーバへ送信する複数の端末装置と、
を有し、
前記サーバは、
前記複数の端末装置から受信した前記更新用情報を用いて、前記共通モデルのパラメータを更新し、更新後の前記共通モデルを前記複数の端末装置に提供
し、
前記複数の端末装置のうち少なくとも一の端末装置は、位置情報を含むデータを自装置が有する一の局所モデルに入力し、当該一の局所モデルが出力したベクトルを前記サーバへ送信する
ことを特徴とする情報処理システム。
【請求項2】
前記複数の端末装置は、
前記共通モデルと前記局所モデルとの差分を前記更新用情報として前記サーバへ送信する
ことを特徴とする請求項1に記載の情報処理システム。
【請求項3】
前記複数の端末装置は、
保有する前記データに欠損がある場合、欠損した欠損データに対する所定の処理を行い、前記局所モデルを生成する
ことを特徴とする請求項1または2に記載の情報処理システム。
【請求項4】
前記複数の端末装置は、
前記欠損データを推定し、推定した推定データを用いて、前記局所モデルを生成する
ことを特徴とする請求項3に記載の情報処理システム。
【請求項5】
前記共通モデルは、
センサにより検知されたセンサ情報を含む前記データを用いて前記局所モデルを生成する
ことを特徴とする請求項1~4のうちいずれか1つに記載の情報処理システム。
【請求項6】
前記共通モデルは、
前記データを入力として前記ベクトルを出力する、
ことを特徴とする請求項1~
5のうちいずれか1つに記載の情報処理システム。
【請求項7】
前記サーバは、
各々が端末装置を含む複数の第1グループごとに異なる前記共通モデルを第1階層共通モデルとして提供し、前記複数の第1グループの端末装置から受信した前記更新用情報を用いて、複数の第1階層共通モデルの各々のパラメータを更新し、更新後の前記複数の第1階層共通モデルを用いて、前記複数の第1階層共通モデルの上位階層のモデルである第2階層共通モデルのパラメータを更新する
ことを特徴とする請求項1~
6のうちいずれか1つに記載の情報処理システム。
【請求項8】
前記サーバは、
各々が第1グループを含む複数の第2グループの各々に対応する複数の第2階層共通モデルのパラメータを更新し、更新後の前記複数の第2階層共通モデルを用いて、前記複数の第2階層共通モデルの上位階層のモデルである第3階層共通モデルのパラメータを更新する
ことを特徴とする請求項
7に記載の情報処理システム。
【請求項9】
サーバが、端末装置が取得した
位置情報を含むデータからユーザのコンテキストを示すベクトルを生成する共通モデルを提供し、
複数の端末装置が、各々保有する
位置情報を含むデータを用いて、前記サーバから受信した前記共通モデルのパラメータを更新した局所モデルを生成し、前記局所モデルに関する情報である更新用情報を前記サーバへ送信し、
前記サーバが、前記複数の端末装置から受信した前記更新用情報を用いて、前記共通モデルのパラメータを更新し、更新後の前記共通モデルを前記複数の端末装置に提供
し、
前記複数の端末装置のうち少なくとも一の端末装置が、位置情報を含むデータを自装置が有する一の局所モデルに入力し、当該一の局所モデルが出力したベクトルを前記サーバへ送信する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム及び情報処理方法に関する。
【背景技術】
【0002】
ユーザ等のコンテキストを示す情報を生成する技術が開示されている。例えば、コンテキストの一例として、機械学習モデル(単に「モデル」ともいう)により、ユーザのおかれた状況を表わした情報を自動的に生成する技術が提供されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記の従来技術では、コンテキストを示す情報を生成するモデルを効率的に学習できるとは言い難い。例えば、上記の従来技術では、複数のユーザを対象とする場合については考慮されていない。そのため、複数のユーザの各々が利用する複数の端末装置が保有するデータを用いてモデルを学習する場合については、モデルを効率的に学習できるとは限らない。
【0005】
本願は、上記に鑑みてなされたものであって、ベクトルを生成するモデルを、複数の端末装置が保有するデータを用いて効率的に学習することを目的とする。
【課題を解決するための手段】
【0006】
本願に係る情報処理システムは、端末装置が取得したデータからユーザのコンテキストを示すベクトルを生成する共通モデルを提供するサーバと、各々保有するデータを用いて、前記サーバから受信した前記共通モデルのパラメータを更新した局所モデルを生成し、前記局所モデルに関する情報である更新用情報を前記サーバへ送信する複数の端末装置と、を有し、前記サーバは、前記複数の端末装置から受信した前記更新用情報を用いて、前記共通モデルのパラメータを更新し、更新後の前記共通モデルを前記複数の端末装置に提供することを特徴とする。
【発明の効果】
【0007】
実施形態の一態様によれば、ベクトルを生成するモデルを、複数の端末装置が保有するデータを用いて効率的に学習することができる。
【図面の簡単な説明】
【0008】
【
図1】
図1は、実施形態に係る情報処理の概要を示す説明図である。
【
図2】
図2は、実施形態に係る情報処理システムの構成例を示す図である。
【
図3】
図3は、実施形態に係る端末装置の構成例を示す図である。
【
図4】
図4は、モデル情報記憶部の一例を示す図である。
【
図5】
図5は、実施形態に係るサーバ装置の構成例を示す図である。
【
図6】
図6は、モデル情報記憶部の一例を示す図である。
【
図7】
図7は、コミュニティ情報記憶部の一例を示す図である。
【
図9】
図9は、データの一部が欠損した場合の一例を示す図である。
【
図10】
図10は、複数階層のコミュニティの一例を示す図である。
【
図11】
図11は、実施形態に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下に、本願に係る情報処理システム及び情報処理方法を実施するための形態(以下、「実施形態」と記載する)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理システム及び情報処理方法が限定されるものではない。また、以下の実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【0010】
〔1.情報処理の概要〕
まず、
図1を参照し、実施形態に係る情報処理システム1が行う情報処理の概要について説明する。
図1は、実施形態に係る情報処理の概要を示す説明図である。
図1では、サーバ装置100と複数の端末装置10とによりモデルを学習する場合の一例を示す。以下では、サーバ装置100が端末装置10に提供するモデルを共通モデルまたはグローバルモデルと記載し、各端末装置10がグローバルモデルのパラメータを更新したモデルを局所モデルまたはローカルモデルを記載する場合がある。
【0011】
なお、情報処理システム1により生成されるモデルの構成は、後述する学習処理が適用可能であれば、どのような構成であってもよい。すなわち、モデルのネットワーク構成は、SVM(Support Vector Machine)やDNN(Deep Neural Network)等の任意のネットワーク構成が採用可能である。例えば、グローバルモデルのネットワーク構成は、CNN(Convolutional Neural Network)、RNN(Recurrent Neural Network)、LSTM(Long short-term memory)等であってもよい。また、グローバルモデルのネットワーク構成は、CNNとRNNとの組み合わせのように、複数のネットワークを組合せた構成であってもよい。なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。なお、具体的にネットワーク構成例については後述する。
【0012】
図1では、説明を簡単にするために、ユーザの位置を示すデータとしてユーザの位置情報を入力をとし、そのユーザのコンテキストを示すエンベディングベクトル(埋め込みベクトル)を出力(生成)するモデルM1を学習する場合を示す。以下では、エンベディングベクトルを単にベクトルと記載する場合がある。すなわち、モデルM1は、ユーザの位置情報を、ユーザのコンテキストを示すベクトルに変換(ベクトル化)する。なお、コンテキストについての詳細は後述するが、コンテキストとは、ベクトルの生成対象となる主体の状況を意味する。例えば、モデルM1の場合、端末装置10を利用するユーザの状況を意味する。
【0013】
以下では、ユーザID「U1」により識別されるユーザを「ユーザU1」とする場合がある。このように、以下では、「ユーザU*(*は任意の数値)」と記載した場合、そのユーザはユーザID「U*」により識別されるユーザであることを示す。例えば、「ユーザU2」と記載した場合、そのユーザはユーザID「U2」により識別されるユーザである。また、
図1に示す例においては、端末装置10を利用するユーザに応じて、端末装置10を端末装置10-1~10-3として説明する。例えば、端末装置10-1は、ユーザID「U1」により識別されるユーザ(ユーザU1)により使用される端末装置10である。また、例えば、端末装置10-2は、ユーザID「U2」により識別される(ユーザU2)により使用される端末装置10である。また、以下では、端末装置10-1~10-3について、特に区別なく説明する場合には、端末装置10と記載する。また、ユーザU1~U3等のユーザについて、特に区別なく説明する場合には、ユーザUと記載する場合がある。
【0014】
まず、サーバ装置100は、ユーザU1が利用する端末装置10-1にグローバルモデルであるモデルM1を提供する(ステップS11-1)。また、サーバ装置100は、ユーザU2が利用する端末装置10-2にモデルM1を提供する(ステップS11-2)。また、サーバ装置100は、ユーザU3が利用する端末装置10-3にモデルM1を提供する(ステップS11-3)。なお、ステップS11-1~S11-3の順序は任意の順序であってよく、ステップS11-3がS11-1よりも先に行われてもよい。以下、ステップS11-1~S11-3を区別せずに説明する場合、ステップS11と総称する。なお、
図1では、3人のユーザU1~U3を図示するが、サーバ装置100は、ユーザU1~U3に限らず、例えばユーザU4、ユーザU5等の多数のユーザ(例えば、100万ユーザや1000万ユーザ等)の端末装置10にモデルM1を提供してもよい。例えば、モデルM1の適用対象となる全ユーザの端末装置10にモデルM1を提供してもよい。
【0015】
ステップS11では、サーバ装置100は、端末装置10にグローバルモデルであるモデルM1を未提供である場合、モデルM1のネットワーク構成と、モデルM1の重みやバイアス等のモデルパラメータ(単に「パラメータ」ともいう)とを端末装置10に送信する。また、ステップS11では、サーバ装置100は、端末装置10にモデルM1を提供済みである場合、モデルM1の重みやバイアス等のパラメータを端末装置10に送信する。これにより、情報処理システム1は、サーバ装置100が端末装置10へ送信するデータ量の増大を抑制し、通信量の増大を抑制することができる。
【0016】
サーバ装置100からモデルM1を受信した端末装置10-1は、モデルM1のパラメータを更新し、モデルM1のパラメータが更新されたローカルモデルであるモデルM1aを生成する(ステップS12-1)。サーバ装置100からモデルM1を受信した端末装置10-2は、モデルM1のパラメータを更新し、モデルM1のパラメータが更新されたローカルモデルであるモデルM1bを生成する(ステップS12-2)。サーバ装置100からモデルM1を受信した端末装置10-3は、モデルM1のパラメータを更新し、端末装置10-3は、モデルM1のパラメータが更新されたローカルモデルであるモデルM1cを生成する(ステップS12-3)。なお、ステップS12-1~S12-3の順序は任意の順序であってよく、ステップS12-3がS12-1よりも先に行われてもよい。以下、ステップS12-1~S12-3を区別せずに説明する場合、ステップS12と総称する。
【0017】
ここで、モデルM1a、M1b、M1cは、モデルM1とネットワーク構成は共通であるが、重み等のパラメータのみが更新されたモデルである。このように、ステップS12では、端末装置10は、自身が保有するデータ(位置情報)を用いた学習処理により、グローバルモデルであるモデルM1のパラメータを更新することにより、ローカルモデルを生成する。例えば、端末装置10は、GNSS(Global Navigation Satellite System:全球測位衛星システム)や屋内測位技術等の位置測位技術を用いて、位置情報を取得し、取得した位置情報を記憶部40等に格納し保有する。
【0018】
端末装置10は、取得した位置情報を用いて学習処理を行い、ローカルモデルを生成する。例えば、端末装置10-1は、ユーザU1の位置情報やユーザU1のコンテキストを基に生成したベクトルを用いて、モデルM1のパラメータを更新し、モデルM1aを生成する。これにより、端末装置10-1は、ユーザU1の情報を反映したパラメータに更新されたモデルM1aを生成することができる。同様の処理により、端末装置10-2、10-3は、ユーザU2、U3の情報を反映したパラメータに更新されたモデルM1b、M1cを生成することができる。
【0019】
そして、端末装置10-1は、生成したモデルM1aとモデルM1との差分を示す情報をサーバ装置100へ送信する(ステップS13-1)。端末装置10-2は、生成したモデルM1bとモデルM1との差分を示す情報をサーバ装置100へ送信する(ステップS13-2)。端末装置10-3は、生成したモデルM1cとモデルM1との差分を示す情報をサーバ装置100へ送信する(ステップS13-3)。なお、ステップS13-1~S13-3の順序は任意の順序であってよく、ステップS13-3がS13-1よりも先に行われてもよい。以下、ステップS13-1~S13-3を区別せずに説明する場合、ステップS13と総称する。
【0020】
このように、ステップS13では、各端末装置10は、自身が更新したローカルモデルとグローバルモデルとの差分の情報のみをサーバ装置100へ送信する。各端末装置10は、自身が更新したパラメータを差分としてサーバ装置100へ送信する。これにより、情報処理システム1は、端末装置10が保有するユーザのデータをサーバ装置100に送信する必要が無いため、ユーザのプライバシや個人情報を保護することができる。また、情報処理システム1は、端末装置10がサーバ装置100へ送信するデータ量の増大を抑制し、通信量の増大を抑制することができる。なお、各端末装置10は、自身が更新したローカルモデルのパラメータと、グローバルモデルのパラメータとの差分をサーバ装置100へ送信してもよい。
【0021】
そして、サーバ装置100は、各端末装置10から受信した差分の情報を用いて、グローバルモデルであるモデルM1を更新する(ステップS14)。サーバ装置100は、各端末装置10から受信したパラメータを基に、グローバルモデルであるモデルM1のパラメータを更新する。これにより、サーバ装置100は、各端末装置10での学習の結果を反映し、グローバルモデルを更新することができる。以下では、説明のために、パラメータ更新後のモデルM1を、ダッシュを付した「モデルM1’」と記載する場合がある。なお、差分の情報を用いてグローバルモデルを更新する処理は、フェデレーテッド ラーニング(Federated Learning)におけるグローバルモデルを更新する処理と同様であるため詳細な説明は省略する。
【0022】
そして、サーバ装置100は、端末装置10-1に更新後のグローバルモデルであるモデルM1’を提供する(ステップS15-1)。また、サーバ装置100は、端末装置10-2に更新後のグローバルモデルであるモデルM1’を提供する(ステップS15-2)。また、サーバ装置100は、端末装置10-3に更新後のグローバルモデルであるモデルM1’を提供する(ステップS15-3)。なお、ステップS15-1~S15-3の順序は任意の順序であってよく、ステップS15-3がS15-1よりも先に行われてもよい。以下、ステップS15-1~S15-3を区別せずに説明する場合、ステップS15と総称する。
【0023】
その後、情報処理システム1は、ステップS12~S15を繰り返すことにより、モデルM1を更新することができる。これにより、情報処理システム1は、ベクトルを生成するモデルを、複数の端末装置が保有するデータを用いて効率的に学習することができる。また、
【0024】
〔1-1.モデルの利用時(推論時)について〕
上述した処理ではモデルの学習時について説明したが、モデルの利用時(推論時)について説明する。
図1では、端末装置10は、学習処理後においては、受信したモデルM1’(更新後のモデルM1)を用いて、推論処理を行う。例えば、推論時においては、端末装置10は、自身が保有するデータ(位置情報)をローカルモデルに入力し、ローカルモデルが出力したベクトルをサーバ装置100へ送信する。そして、サーバ装置100は、端末装置10から受信したベクトルを解析して、端末装置10を利用するユーザのコンテキストを判定する。
【0025】
例えば、サーバ装置100は、ベクトルを特定空間に配置する。サーバ装置100は、ベクトルを特定空間に配置することで、ユーザ自身の行動の類似性や変化、及び/又はユーザと他のユーザとの行動の類似性や相違性を明確に把握することができる。
【0026】
まず、位置情報をベクトルに変換する利点について説明する。従来、端末装置10は、サーバ装置100に対して位置情報を送信していたが、このとき、端末装置10は、ユーザのプライバシへの配慮やデータ通信量の削減のため、位置情報の端数処理(丸め処理)を行い、位置情報を丸めて精度の粗い位置情報に変換してから送信していた。例えば、位置情報がGPS(Global Positioning System)座標の緯度経度情報である場合、緯度と経度の10進角度での小数点第2位以下の値の切り上げ又は切り捨て(四捨五入でも可)を行い、大まかな値の位置情報に変換していた。
【0027】
この場合、サーバ装置100は、位置情報に基づいてユーザの行動を推定しようとしたとき、丸めた位置情報は大まかな値であるため、地域や大規模施設等のエリア単位の広い場所は特定できても、隣接する小規模な建物や部屋等の狭い場所(及び/又は屋内外の違い)を特定できないことがあった。そのため、ユーザの大まかな行動については推定可能であるが、ユーザの詳細な行動については推定できないこともあった。例えば、ユーザの丸めた位置情報が示す場所の範囲内に小規模な建物Aと建物B(例えばコンビニエンスストアとファストフード店等)が隣接して建っている場合、ユーザが建物Aと建物Bのどちらにいるのか、あるいは建物(又は敷地)の内側と外側のどちらにいるのかを、位置情報から特定できないこともあった。サーバ装置100(サーバ側)が本当に知りたいのは、ユーザの位置情報それ自体ではなく、位置情報が示すユーザのコンテキストである。
【0028】
今回、端末装置10は、自身の位置情報をベクトルに変換(ベクトル化)するに際して、端数処理(丸め処理)を行う前の位置情報の生データをベクトルに変換する。したがって、端末装置10は、隣接する小規模な建物や部屋等の狭い場所(及び/又は屋内外の違い)を特定した上で、ベクトルを生成することができる。そのため、サーバ装置100は、ベクトルに基づいて、ユーザの詳細なコンテキストを知ることができる。すなわち、サーバ装置100は、端末装置10から、従来の丸めた位置情報を受信するよりも、ユーザの行動に関する具体的かつ詳細な情報を取得することができる。また、ベクトルのベクトル値及びそれが意味する内容を定義するのはサーバ装置100(サーバ側)であるため、第三者がベクトルのベクトル値だけを見ても、そのベクトル値が何を意味しているのか理解できないので、安全である。
【0029】
〔1-2.コンテキスト〕
上述したように、コンテキストは、ベクトルの生成対象となる主体の状況を意味し、モデルM1の場合、端末装置10を利用するユーザの状況を意味する。ベクトルの生成対象がユーザである場合のコンテキスト(「ユーザコンテキスト」ともいう)は、ユーザに提供されるコンテンツの内容、ユーザが反応したコンテンツの内容、ユーザの属性、ユーザの現在位置、現在時刻、ユーザが置かれた物理環境、ユーザが置かれた社会環境、ユーザの運動状態、および、推定されるユーザの感情、心理状態等の様々なユーザの状況を示す情報であってもよい。
【0030】
また、ユーザコンテキストは、ユーザの周期的な行動を示す周期性情報であってもよい。ユーザの周期的な行動とは、日課(ルーティン:routine)等の曜日や時刻ごとに毎回決まって行う行動、職場や行きつけの店舗等の特定の場所に向かう行動、習慣化した特定の行動等を指す。例えば、コンテキストは、一週間単位での曜日や時刻ごとの平均的なユーザの行動を示す周期性情報であってもよい。
【0031】
また、コンテキストは、ベクトルの生成対象が複数のユーザを要素とするグループ(以下コミュニティともいう)や、複数のコミュニティを要素とするコミュニティであるである場合、そのコミュニティの状況を意味する。
【0032】
ベクトルの生成対象がコミュニティである場合のコンテキスト(「コミュニティコンテキスト」ともいう)は、コミュニティ属するユーザ群の統計的情報であってもよい。コミュニティコンテキストは、コミュニティ属するユーザ群に提供されるコンテンツの内容、コミュニティ属するユーザ群が反応したコンテンツの内容、コミュニティ属するユーザ群の属性、コミュニティ属するユーザ群の現在位置、現在時刻、コミュニティ属するユーザ群が置かれた物理環境、コミュニティ属するユーザ群が置かれた社会環境、コミュニティ属するユーザ群の運動状態、および、推定されるコミュニティ属するユーザ群の感情、心理状態等の様々なコミュニティ属するユーザ群の状況を示す情報(統計的情報)であってもよい。また、コミュニティコンテキストは、コミュニティ属するユーザ群の周期的な行動を統計的に示す周期性情報(統計的情報)であってもよい。
【0033】
なお、上記のコンテキストの例示は、一例に過ぎず、ベクトルの生成対象となる主体の状況を示すものであれば、どのような情報であってもよい。
【0034】
〔1-3.他のモデル例〕
図1では、位置情報を入力とするモデルM1を一例として説明したが、モデルがベクトルの生成対象となる主体のコンテキストを出力すれば、入力は任意のデータが採用可能である。この点について以下説明する。
【0035】
例えば、情報処理システム1は、位置情報を時系列に並べたシーケンスデータを入力として、ユーザのコンテキストを示すベクトルを出力するモデル(以下「シーケンスモデル」ともいう)を生成してもよい。この場合、情報処理システム1は、例えばRNNやLSTM等のネットワーク構成を有するシーケンスモデルを生成してもよい。シーケンスモデルは、同じデータであっても、入れる順番で出力が変わる。例えば、「位置1」→「位置2」→「位置3」の順で移動していたら「出勤した」(往路)と出力し、「位置3」→「位置2」→「位置1」の順で移動していたら「帰宅した」(復路)と出力する。情報処理システム1は、このようなシーケンスモデルを用いることで、位置情報の変遷が有する特徴に基づくベクトルを生成することができる。
【0036】
このように、シーケンスデータからシーケンスモデルを用いてベクトルを生成した場合、シーケンスデータが示すユーザのコンテキストからユーザが所定の行動を行ったか否かを示すベクトルを生成することができる。例えば、情報処理システム1は、ユーザが自宅のあるエリアから職場のあるエリアまで移動していた旨を、位置情報のシーケンスデータが示す場合は、「出勤した」という行動と対応する要素が所定値を取るベクトルを出力するシーケンスモデルを生成することができる。
【0037】
上述したシーケンスモデルを用いる場合、サーバ装置100は、位置情報に基づくベクトルのベクトル値により、ユーザが「自宅にいる」、「出勤した」、「買い物に行った」、「電車で移動している」等のユーザコンテキストを判定する。このとき、サーバ装置100は、多次元のベクトルのうちの複数の要素が示す値により、時間帯ごとに行動を判定してもよい。例えば、サーバ装置100は、位置情報に基づくベクトルに、「午前中に外出した」ことを示す値と、「出勤した」ことを示す値とが含まれているとき、「午前中に出勤した」と判定してもよい。
【0038】
ここでは、ベクトルの各要素の値は、ユーザの行動と対応している。例えば、3次元ベクトルの場合、1要素目の値が「出勤したか否か」を示し、2要素目の値が「外食したか否か」を示し、3要素目の値が「電車に乗ったか否か」を示すように規定してもよい。この場合、ベクトルは、One-hotベクトル(One Hot Vector)であってもよい。One-hotベクトルとは、(1,0,0)のように、1つの成分が1で、残りの成分が全て0であるようなベクトルである。但し、実際には、ベクトルは、One-hotベクトルに限定されない。
【0039】
また、ベクトルの各要素の値は、ユーザの複数の行動と対応していてもよい。例えば、1要素目の値が「職場に行き、かつ、外食したか否か」を示し、2要素目の値が「職場に行かず、かつ、外食したか否か」を示すように規定してもよい。
【0040】
ベクトルのある範囲に含まれる複数の要素の値が、ユーザの行動と対応していてもよい。例えば、3要素目までの値(上位三桁)が、「100」なら「出勤した」ことを示し、「101」なら「職場に電車で行った」ことを示すように規定してもよい。
【0041】
また、ベクトルの各要素の値は、評価値でもよい。例えば、3要素目までの値(上位三桁)が「000」なら「移動していない」ことを示し、「100」なら「100キロメートル移動した」ことを示すように規定してもよい。また、ベクトルのいずれかの要素の値は、移動方向を示す値であってもよい。例えば、4要素目から7要素目までの値が「0000」なら移動方向が「北」であることを示し、「0001」なら移動方向が「北北東」であることを示し、「0010」なら移動方向が「北東」であることを示し、「0011」なら移動方向が「東北東」であることを示し、「0100」なら移動方向が「東」であることを示し、「1000」なら移動方向が「南」であることを示し、「1100」なら移動方向が「西」であることを示すように規定してもよい。また、ベクトルの各要素の値は、健康的な生活のスコアであってもよい。
【0042】
なお、ベクトルの各要素の値は、モデルの学習時に、任意の設定が適用可能であるものとする。例えば、サーバ側が、ユーザ側からどのような行動に関する情報を取得して、ユーザに提供するサービスに使用したいかといった事情に応じて、適宜任意の設定が可能であるものとする。
【0043】
また、端末装置10は、モデルへ入力するデータに対応する正解データを生成してもよい。例えば、端末装置10は、ユーザに自身のコンテキストを指定する画面を表示し、ユーザが指定したコンテキスト(「指定コンテキスト」ともいう)を基に、その指定コンテキストに対応するベクトルを生成し、正解データとして用いてもよい。例えば、端末装置10は、「自宅」、「勤務中」、「買い物中」、「電車で移動中」等のコンテキストを指定する画面を表示し、ユーザから指定コンテキストの指定を受け付けてもよい。
【0044】
この場合、端末装置10は、コンテキストとベクトルとの対応付けを示すリストを用いて、リストと、ユーザが指定した指定コンテキストとを比較し、指定コンテキストに一致(または類似)するコンテキストに対応付けられたベクトルを正解データとしてもよい。端末装置10は、ユーザの指定コンテキストを示す情報を、その指定コンテキストを示すベクトルに変換する変換モデルを用いて、正解データを生成してもよい。そして、端末装置10は、生成した正解データと、対応するデータ(入力データ)とを用いて、ローカルモデルを学習する。なお、上記は一例であり、端末装置10は、データに対応する正解データを取得可能であれば、どのような情報を用いて、データに対応する正解データを取得してもよい。
【0045】
〔2.情報処理システムの構成例〕
次に、
図2を用いて、実施形態に係るサーバ装置100が含まれる情報処理システム1の構成について説明する。
図2は、実施形態に係る情報処理システム1の構成例を示す図である。
図2に示すように、実施形態に係る情報処理システム1は、複数の端末装置10とサーバ装置100とを含む。これらの各種装置は、ネットワークNを介して、有線又は無線により通信可能に接続される。ネットワークNは、例えば、LAN(Local Area Network)や、インターネット等のWAN(Wide Area Network)である。
【0046】
また、
図2に示す情報処理システム1に含まれる各装置の数は図示したものに限られない。例えば、
図2では、図示の簡略化のため、端末装置10-1、10-2、10-3の3台のみを示したが、これはあくまでも例示であって限定されるものではなく、4台以上であってもよい。
【0047】
端末装置10は、ユーザ(利用者)によって使用される情報処理装置である。例えば、端末装置10は、スマートフォンやタブレット端末等のスマートデバイス、フィーチャーフォン、PC(Personal Computer)、PDA(Personal Digital Assistant)、カーナビゲーションシステム、スマートウォッチやヘッドマウントディスプレイ等のウェアラブルデバイス(Wearable Device)、スマートグラス等である。例えば、端末装置10は、タッチパネルの機能を有する液晶ディスプレイ等の画面を有し、ユーザから指やスタイラス等によりタップ操作、スライド操作、スクロール操作等、コンテンツ等の表示データに対する各種の操作を受付ける。なお、画面のうち、コンテンツが表示されている領域上で行われた操作を、コンテンツに対する操作としてもよい。また、端末装置10は、スマートデバイスのみならず、デスクトップPC(Personal Computer)やノートPC等の情報処理装置であってもよい。
【0048】
端末装置10は、LTE(Long Term Evolution)、4G(4th Generation)、5G(5th Generation:第5世代移動通信システム)等の無線通信網や、Bluetooth(登録商標)、無線LAN(Local Area Network)等の近距離無線通信を介してネットワークNに接続し、サーバ装置100と通信することができる。
【0049】
サーバ装置100は、例えばPCやサーバ装置、あるいはメインフレーム又はワークステーション等である。なお、サーバ装置100は、クラウドコンピューティングにより実現されてもよい。
【0050】
〔3.端末装置の構成例〕
次に、
図3を用いて、端末装置10の構成について説明する。
図3は、端末装置10の構成例を示す図である。
図3に示すように、端末装置10は、通信部11と、表示部12と、入力部13と、測位部14と、センサ部20と、制御部30(コントローラ)と、記憶部40とを備える。
【0051】
(通信部11)
通信部11は、ネットワークN(
図2参照)と有線又は無線で接続され、ネットワークNを介して、サーバ装置100との間で情報の送受信を行う。例えば、通信部11は、NIC(Network Interface Card)やアンテナ等によって実現される。
【0052】
(表示部12)
表示部12は、位置情報等の各種情報を表示する表示デバイスである。例えば、表示部12は、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機ELディスプレイ(Organic Electro-Luminescent Display)である。また、表示部12は、タッチパネル式のディスプレイであるが、これに限定されるものではない。
【0053】
(入力部13)
入力部13は、ユーザUから各種操作を受け付ける入力デバイスである。入力部13は、例えば、文字や数字等を入力するためのボタン等を有する。また、表示部12がタッチパネル式のディスプレイである場合、表示部12の一部が入力部13として機能する。なお、入力部13は、ユーザUから音声入力を受け付けるマイク等であってもよい。マイクはワイヤレスであってもよい。
【0054】
(測位部14)
測位部14は、GPSの衛星から送出される信号(電波)を受信し、受信した信号に基づいて、自装置である端末装置10の現在位置を示す位置情報(例えば、緯度及び経度)を取得する。すなわち、測位部14は、端末装置10の位置を測位する。なお、GPSは、GNSS(Global Navigation Satellite System)の一例に過ぎない。
【0055】
また、測位部14は、GPS以外にも、種々の手法により位置を測位することができる。例えば、測位部14は、位置補正等のための補助的な測位手段として、下記のように、端末装置10の様々な通信機能を利用して位置を測位してもよい。
【0056】
(Wi-Fi測位)
例えば、測位部14は、端末装置10のWi-Fi(登録商標)通信機能や、各通信会社が備える通信網を利用して、端末装置10の位置を測位する。具体的には、測位部14は、Wi-Fi通信等を行い、付近の基地局やアクセスポイントとの距離を測位することにより、端末装置10の位置を測位する。
【0057】
(ビーコン測位)
また、測位部14は、端末装置10のBluetooth(登録商標)機能を利用して位置を測位してもよい。例えば、測位部14は、Bluetooth(登録商標)機能によって接続されるビーコン(beacon)発信機と接続することにより、端末装置10の位置を測位する。
【0058】
(地磁気測位)
また、測位部14は、予め測定された構造物の地磁気のパターンと、端末装置10が備える地磁気センサとに基づいて、端末装置10の位置を測位する。
【0059】
(RFID測位)
また、例えば、端末装置10が駅改札や店舗等で使用される非接触型ICカードと同等のRFID(Radio Frequency Identification)タグの機能を備えている場合、もしくはRFIDタグを読み取る機能を備えている場合、端末装置10によって決済等が行われた情報とともに、使用された位置が記録される。測位部14は、かかる情報を取得することで、端末装置10の位置を測位してもよい。また、位置は、端末装置10が備える光学式センサや、赤外線センサ等によって測位されてもよい。
【0060】
測位部14は、必要に応じて、上述した測位手段の一つ又は組合せを用いて、端末装置10の位置を測位してもよい。
【0061】
(センサ部20)
センサ部20は、端末装置10に搭載又は接続される各種のセンサを含む。なお、接続は、有線接続、無線接続を問わない。例えば、センサ部20は、ウェアラブルデバイス等、端末装置10以外の検知装置であってもよい。
図3に示す例では、センサ部20は、加速度センサ21と、ジャイロセンサ22と、気圧センサ23と、気温センサ24と、音センサ25と、光センサ26と、磁気センサ27と、画像センサ(カメラ)28とを備える。
【0062】
なお、上記した各センサ21~28は、あくまでも例示であって限定されるものではない。すなわち、センサ部20は、各センサ21~28のうちの一部を備える構成であってもよいし、各センサ21~28に加えてあるいは代えて、湿度センサ等その他のセンサを備えてもよい。
【0063】
加速度センサ21は、例えば、3軸加速度センサであり、端末装置10の移動方向、速度、及び、加速度等の端末装置10の物理的な動きを検知する。ジャイロセンサ22は、端末装置10の角速度等に基づいて3軸方向の傾き等の端末装置10の物理的な動きを検知する。気圧センサ23は、例えば端末装置10の周囲の気圧を検知する。
【0064】
端末装置10は、上記した加速度センサ21やジャイロセンサ22、気圧センサ23等を備えることから、これらの各センサ21~23等を利用した歩行者自律航法(PDR:Pedestrian Dead-Reckoning)等の技術を用いて端末装置10の位置を測位することが可能になる。これにより、GPS等の測位システムでは取得することが困難な屋内での位置情報を取得することが可能になる。
【0065】
例えば、加速度センサ21を利用した歩数計により、歩数や歩くスピード、歩いた距離を算出することができる。また、ジャイロセンサ22を利用して、ユーザUの進行方向や視線の方向、体の傾きを知ることができる。また、気圧センサ23で検知した気圧から、ユーザUの端末装置10が存在する高度やフロアの階数を知ることもできる。
【0066】
気温センサ24は、例えば端末装置10の周囲の気温を検知する。音センサ25は、例えば端末装置10の周囲の音を検知する。光センサ26は、端末装置10の周囲の照度を検知する。磁気センサ27は、例えば端末装置10の周囲の地磁気を検知する。画像センサ28は、端末装置10の周囲の画像を撮像する。
【0067】
上記した気圧センサ23、気温センサ24、音センサ25、光センサ26及び画像センサ28は、それぞれ気圧、気温、音、照度を検知したり、周囲の画像を撮像したりすることで、端末装置10の周囲の環境や状況等を検知することができる。また、端末装置10の周囲の環境や状況等から、端末装置10の位置情報の精度を向上させることが可能になる。
【0068】
(制御部30)
制御部30は、例えば、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM、入出力ポート等を有するマイクロコンピュータや各種の回路を含む。また、制御部30は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路等のハードウェアで構成されてもよい。制御部30は、受信部31と、取得部32と、処理部33と、学習部34と、推定部35と、送信部36とを備える。
【0069】
(受信部31)
受信部31は、通信部11を介して、サーバ装置100から提供される各種情報を受信する。例えば、受信部31は、通信部11を介して、サーバ装置100から提供されるグローバルモデルを受信する。受信部31は、受信したグローバルモデルをモデル情報記憶部41に格納(記憶)する。
【0070】
(取得部32)
取得部32は、常時/周期的に/所定のタイミングで、端末装置10の位置情報を取得する。例えば、取得部32は、測位部14により測位された端末装置10の位置情報を取得する。また、取得部32は、各センサ21~28によって検知された各種情報に基づいて端末装置10の位置情報を推定して取得する。
【0071】
また、取得部32は、取得した位置情報を記憶部40に記憶(保存)する。例えば、取得部32は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積する。
【0072】
(処理部33)
処理部33は、表示部12等を含め、端末装置10全体を制御する。例えば、処理部33は、送信部36によって送信される各種情報や、受信部31によって受信されたサーバ装置100からの各種情報を表示部12へ出力して表示させることができる。処理部33は、データに対応する正解データを生成する。
【0073】
処理部33は、モデルに入力する入力データを生成する。処理部33は、取得部32が取得した位置情報等のデータをそのままモデルの入力データとする場合、入力データ生成する処理を行わずに、取得部32が取得したデータを入力データとする。
【0074】
処理部33は、欠損データに対応可能なモデルを学習する場合、データのうち、欠損部分のデータの値(単にデータともいう)として、特定のデータ(例えばn/a(該当なしを示す値)等)を用いて、欠損部分を補完した入力データを生成する。処理部33は、欠損データに対応可能なモデルを学習する場合、推定部35により推定された推定データを用いて入力データを生成してもよい。
【0075】
処理部33は、1分ごとに位置情報を取得していた場合、1分ごとの位置情報を時系列に並べて、30分間(例えば8:01~8:30)ごとに区切ったシーケンスデータを、入力データとして生成する。例えば、処理部33は、30分間における1分ごとの位置情報を時系列に並べたシーケンスデータを、入力データとして生成する。例えば、処理部33は、30分間における最初の1分間の位置情報とその位置情報に対する1分ごとの差分を時系列に並べたシーケンスデータを、入力データとして生成する。なお、シーケンスデータは一例に過ぎず、例えば位置情報の生データをそのまま時系列に沿って順番に入力する入力データであってもよい。
【0076】
また、処理部33は、学習部34により学習されたローカルモデルを用いて、ベクトルを生成してもよい。処理部33は、推論時においてローカルモデルを用いて、ベクトルを生成してもよい。
【0077】
処理部33は、推論時においてデータに欠損がある場合、データのうち、欠損部分のデータとして、特定のデータを用いて、欠損部分を補完した入力データをローカルモデルに入力し、ベクトルを生成してもよい。また、処理部33は、推論時において欠損データがある場合、推定部35により推定された推定データを用いた入力データをローカルモデルに入力し、ベクトルを生成してもよい。
【0078】
(学習部34)
学習部34は、ローカルモデルを生成する。学習部34は、保有するデータを用いて、サーバ装置100から受信したグローバルモデルのパラメータを更新したローカルモデルを生成する。学習部34は、推定した推定データを用いて、ローカルモデルを生成する。
【0079】
学習部34は、センサにより検知されたセンサ情報を含むデータを用いてローカルモデルを生成する。学習部34は、位置情報を含むデータを用いてローカルモデルを生成する。
【0080】
例えば、学習部34は、取得部32が取得したデータとそのデータに対応する正解データであるベクトルとのペアを用いて学習処理を行い、グローバルモデルのパラメータを更新したローカルモデルを生成する。なお、正解データであるベクトルは、任意の手段により提供される。例えば、正解データは、端末装置10のユーザが指定したコンテキストを示す情報を基に生成されたベクトルであってもよい。
【0081】
学習部34がモデルのパラメータを更新する学習処理は、モデルのネットワーク構成に応じて適宜の手法が採用される。例えば、モデルのネットワーク構成がDNNである場合、学習部34は、深層学習の手法によりモデルのパラメータを更新する。学習部34は、モデルに入力するデータと、そのデータが入力された場合の出力を示す正解データとのペア(組合せ)を用いて行う学習処理、すなわち教師有り学習の手法によりモデルのパラメータを更新する。なお、上記は一例であり、学習部34は、モデルのパラメータを更新可能であれば、どのような学習処理により、モデルのパラメータを更新してもよい。
【0082】
欠損データを許容するモデルを生成する場合、学習部34は、欠損データに対応可能なモデルを学習する。例えば、学習部34は、データのうち、欠損部分のデータとして、特定のデータを用いて、欠損部分を補完したデータを用いて、欠損データに対応可能なモデルを学習する。
【0083】
学習部34は、欠損データを推定した推定データを含む入力データを入力とするモデルを学習してもよい。学習部34は、推定部35により推定された推定データを含む入力データを入力とするローカルモデルを学習する。
【0084】
(推定部35)
推定部35は、欠損データを推定する。推定部35は、欠損部分のデータ(の値)を推定した推定データ(推定値)を生成する。推定部35は、欠損部分のデータを推定する推定モデルを用いて、欠損部分のデータを推定してもよい。
【0085】
例えば、推定部35は、センサ情報の一部に欠損がある場合、その欠損に対応するデータを推定する。推定部35は、データが欠損したセンサの過去の情報を基に、欠損したセンサに対応するデータを推定する。推定部35は、位置を示すデータが欠損した場合、位置を検知するセンサ(測位部14等)が検知の過去の位置情報と、加速度センサの情報を基に、欠損した位置を示すデータを推定する。例えば、推定部35は、日時Xのユーザの位置を示すデータが欠損した場合、位置を検知するセンサが検知した日時Xより前の日時Yのユーザの位置情報と、日時Yから日時Xまでの加速度センサ21やジャイロセンサ22の情報とを基に、欠損した日時Xのユーザの位置を示すデータを推定する。
【0086】
例えば、推定部35は、データが欠損したセンサ以外のセンサの情報を基に、欠損したセンサに対応するデータを推定する。例えば、推定部35は、端末装置10が気温センサ24を有さず、温度を示すデータが欠損した場合、気圧センサ23や光センサ26の情報を基に、温度を示すデータを推定する。例えば、推定部35は、気圧の値及び照度の値の組合せを入力し、その組合せに対応する温度の値を出力する推定モデルを用いて、温度を示すデータを推定する。推定部35は、気圧及び照度の組合せと、その組合せに対応する温度とのペアを学習データとして学習された推定モデルを用いて、温度を示すデータを推定する。この場合、推定部35は、推定対象日時での気圧の値及び照度の値を推定モデルに入力することにより推定モデルが出力した値を、推定対象日時での温度であると推定する。
【0087】
なお、上記は一例であり、推定部35は、欠損したデータを推定可能であれば、どのような手法により推定を行ってもよい。推定部35は、欠損部分のデータを、特定のデータであると推定してもよい。例えば、推定部35は、データの種別と、その種別のデータが欠損した場合に補完するデータとの対応付けを示す一覧を用いて、欠損部分のデータを推定し、補間してもよい。例えば、推定部35は、欠損したセンサの値として用いる複数段階のレベルの各々の値と、他のセンサの値とを対応付けた一覧を用いて、他のセンサの値から欠損部分のデータを推定し、補間してもよい。
【0088】
(送信部36)
送信部36は、通信部11を介して、サーバ装置100へ情報を送信する。送信部36は、ローカルモデルに関する情報である更新用情報をサーバ装置100へ送信する。送信部36は、グローバルモデルとローカルモデルとの差分を更新用情報としてサーバ装置100へ送信する。
【0089】
また、送信部36は、例えば入力部13を用いてユーザUにより入力された各種情報や、処理部33により処理された各種情報等を、サーバ装置100へ送信してもよい。また、送信部36は、処理部33により生成されたベクトルを、サーバ装置100へ送信する。
【0090】
(記憶部40)
記憶部40は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置によって実現される。かかる記憶部40には、各種プログラムや各種データ等が記憶される。
図3に示すように、記憶部40は、モデル情報記憶部41を有する。
【0091】
(モデル情報記憶部41)
実施形態に係るモデル情報記憶部41は、モデルに関する情報を記憶する。例えば、モデル情報記憶部41は、サーバ装置100から受信した共通モデル(グローバルモデル)や、自装置でグローバルモデルのパラメータを更新した局所モデル(ローカルモデル)を記憶する。
図4は、実施形態に係るモデル情報記憶部の一例を示す図である。
図4に示すモデル情報記憶部41は、「モデルID」、「用途」、「種別」、「モデルデータ」といった項目が含まれる。
【0092】
「モデルID」は、モデルを識別するための識別情報を示す。例えば、モデルID「M1」により識別されるモデルは、
図1の例に示したモデルM1に対応する。「用途」は、対応するモデルの用途を示す。「種別」は、モデルの種別を示す。例えば、「種別」は、そのモデルがグローバルモデルであるか、ローカルモデルであるかを示す。また、「モデルデータ」は、モデルIDに対応付けられた対応するモデルのデータを示す。
図4等では「モデルデータ」に「MDT1」といった概念的な情報が格納される例を示したが、実際には、モデルの構成(ネットワーク構成)の情報やパラメータに関する情報等、そのモデルを構成する種々の情報が含まれる。例えば、「モデルデータ」には、ネットワークの各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれる。
【0093】
図4では、モデルID「M1」により識別されるモデル(モデルM1)は、用途が「ベクトル変換」であることを示す。モデルM1は、種別が「グローバル」であり、グローバルモデルであることを示す。また、モデルM1のモデルデータは、モデルデータMDT1であることを示す。
【0094】
また、モデルID「M1a」により識別されるモデル(モデルM1a)は、用途が「ベクトル変換」であることを示す。また、モデルM1aは、種別が「ローカル」であり、ローカルモデルであることを示す。また、モデルM1aのモデルデータは、モデルデータMDT1aであることを示す。
【0095】
なお、モデル情報記憶部41は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
【0096】
また、記憶部40は、例えば入力部13を用いてユーザUにより入力された各種情報や、端末装置10に搭載又は接続された各センサ21~28によって検知された各種情報、測位部14によって測位された端末装置10の位置情報等を記憶する。また、処理部33によって処理された各種情報や、受信部31によって受信された各種情報を記憶する。
【0097】
〔4.サーバ装置の構成例〕
次に、
図5を用いて、実施形態に係るサーバ装置100の構成について説明する。
図5は、実施形態に係るサーバ装置100の構成例を示す図である。
図5に示すように、サーバ装置100は、通信部110と、記憶部120と、制御部130とを有する。
【0098】
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。また、通信部110は、ネットワークN(
図2参照)と有線又は無線で接続される。
【0099】
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現される。
図5に示すように、記憶部120は、モデル情報記憶部121と、コミュニティ情報記憶部122とを有する。
【0100】
(モデル情報記憶部121)
実施形態に係るモデル情報記憶部121は、モデルに関する情報を記憶する。例えば、モデル情報記憶部121は、ユーザやコミュニティを対象として学習した共通モデル(グローバルモデル)を記憶する。
図6は、実施形態に係るモデル情報記憶部の一例を示す図である。
図6に示すモデル情報記憶部121は、「モデルID」、「用途」、「種別」、「対象」、「モデルデータ」といった項目が含まれる。
【0101】
「モデルID」は、モデルを識別するための識別情報を示す。「用途」は、対応するモデルの用途を示す。「種別」は、モデルの種別を示す。「対象」は、モデルが用いられる対象を示す。また、「モデルデータ」は、モデルIDに対応付けられた対応するモデルのデータを示す。
【0102】
図6では、モデルID「M1」により識別されるモデル(モデルM1)は、用途が「ベクトル変換」であることを示す。モデルM1は、種別が「グローバル」であり、グローバルモデルであることを示す。モデルM1の対象は、ユーザU1、U2、U3等のユーザを対象とするモデルであることを示す。また、モデルM1のモデルデータは、モデルデータMDT1であることを示す。
【0103】
また、モデルID「M11」により識別されるモデル(モデルM11)は、用途が「ベクトル変換」であることを示す。モデルM11は、種別が「グローバル」であり、グローバルモデルであることを示す。モデルM11の対象は、コミュニティGP1、GP2、GP3等のグループ(ユーザ群)を対象とするモデルであることを示す。また、モデルM11のモデルデータは、モデルデータMDT11であることを示す。
【0104】
なお、モデル情報記憶部121は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
【0105】
(コミュニティ情報記憶部122)
実施形態に係るコミュニティ情報記憶部122は、コミュニティ(グループ)に関する各種情報を記憶する。例えば、コミュニティ情報記憶部122は、コミュニティの階層やコミュニティの構成要素を記憶する。
図7は、実施形態に係るコミュニティ情報記憶部の一例を示す図である。
図7に示すコミュニティ情報記憶部122には、「コミュニティID」、「階層」、「要素」といった項目が含まれる。
【0106】
「コミュニティID」は、コミュニティを識別するための識別情報を示す。「階層」は、コミュニティの階層を示す。例えば、「階層」は、「H1」、「H2」等、階層が上位になるほど「H*(*は任意の値)」の「*」が大きくなり、階層H2は階層H1の上位階層である。また、「要素」は、各コミュニティに属する要素、すなわちそのコミュニティの構成要素を示す。
【0107】
図7では、コミュニティID「GP1」により識別されるコミュニティ(コミュニティGP1)は、階層H1であり、その構成要素がユーザU1、U2、U3等であることを示す。なお、ユーザはコミュニティを構成する基底となる要素であり、階層H0として管理されてもよい。
【0108】
また、コミュニティID「GP11」により識別されるコミュニティ(コミュニティGP11)は、階層H2であり、その構成要素がコミュニティGP1、GP2、GP3等であることを示す。すなわち、階層H2のコミュニティGP11は、階層H1のコミュニティGP1、GP2、GP3等を要素とすることを示す。
【0109】
なお、コミュニティ情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【0110】
(制御部130)
図5に戻り、説明を続ける。制御部130は、コントローラ(Controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等によって、サーバ装置100の内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAM等の記憶領域を作業領域として実行されることにより実現される。
図5に示す例では、制御部130は、提供部131と、取得部132と、学習部133と、判定部134とを有する。
【0111】
(提供部131)
提供部131は、通信部110を介して、グローバルモデルを端末装置10へ送信する。提供部131は、端末装置10が取得したデータからユーザのコンテキストを示すベクトルを生成するグローバルモデルを提供する。提供部131は、更新後のグローバルモデルを複数の端末装置10に提供する。
【0112】
(取得部132)
取得部132は、通信部110を介して、グローバルモデルを更新するための情報を端末装置10から受信する。取得部132は、ローカルモデルに関する情報である更新用情報を複数の端末装置10の各々から取得する。取得部132は、グローバルモデルとローカルモデルとの差分を複数の端末装置10の各々から取得する。
【0113】
取得部132は、端末装置10が取得したデータから生成されたベクトルを端末装置10から受信する。取得部132は、記憶部120から各種の情報を取得する。
【0114】
(学習部133)
学習部133は、グローバルモデルを生成する。学習部133は、データを入力としてベクトルを出力するベクトル変換モデルをグローバルモデルとして学習する。学習部133は、各パラメータを所定の初期値に設定したグローバルモデルを生成してもよい。学習部133は、過去に取得したデータを用いて、グローバルモデルを生成してもよい。例えば、学習部133は、過去に取得したデータとそのデータに対応する正解データであるベクトルとのペアを用いてグローバルモデルを学習してもよい。
【0115】
学習部133は、複数の端末装置10から受信した更新用情報を用いて、グローバルモデルのパラメータを更新する。学習部133は、複数の端末装置10から受信した差分の情報を用いて、グローバルモデルのパラメータを更新する。
【0116】
なお、上述のように、学習部133が生成するグローバルモデルのネットワーク構成は、任意のネットワーク構成が採用可能である。例えば、グローバルモデルのネットワーク構成は、CNN、RNN、LSTM等であってもよい。また、グローバルモデルのネットワーク構成は、CNNとRNNとの組み合わせのように、複数のネットワークを組合せた構成であってもよい。なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。また、学習部133は、同様の自然言語処理モデルを用いてもよい。
【0117】
(判定部134)
判定部134は、取得部132により取得されたベクトルを解析し、端末装置10を利用するユーザのコンテキストを判定する。例えば、判定部134は、ベクトルを特定空間に配置し、ユーザ自身の行動の類似性や変化、及び/又はユーザUと他のユーザとの行動の類似性や相違性を判定する。
【0118】
〔5.データ欠損がある場合について〕
ここで、データ欠損がある場合について、
図8及び
図9を用いて説明する。
図8は、モデルの一例を示す図である。
図9は、データの一部が欠損した場合の一例を示す図である。
【0119】
まず、
図8を用いてモデルの全体について説明する。例えば、
図8では、センサaは位置を検知するセンサ(測位部14等)であり、センサbは音センサ25であり、センサcは画像センサ28であってもよい。
【0120】
図8に示すモデルMXは、センサaのセンサ情報SD1を中間表現IR1に変換するエンコーダEN1、センサbのセンサ情報SD2を中間表現IR2に変換するエンコーダEN2、センサcのセンサ情報SD3を中間表現IR3に変換するエンコーダEN3、及び中間表現IR1、IR2、IR3を入力として、ベクトルVD1を出力するネットワークNN1とを含む。ネットワークNN1は、RNN等の構成を有するintegratorである。
【0121】
エンコーダEN1~EN3は、各センサの生データを中間的な表現に加工するブロックである。また、ネットワークNN1は、中間的な表現を集約して、コンテキストを示すベクトルを生成するブロックである。すなわち、モデルMXは、センサa、センサb、センサcの3つのセンサにより検知されるセンサ情報SD1~SD3を入力データとして、その入力データに対応するコンテキストを示すベクトルVD1を出力するモデルである。なお、モデルMXは、エンコーダEN1~EN3、及びネットワークNN1の各ブロックを個別に学習されてもよく、エンコーダEN1~EN3には外部装置から取得した学習済みのエンコーダが用いられ、ネットワークNN1のみが情報処理システム1の学習処理の対象であってもよい。例えば、情報処理システム1は、ネットワークNN1のみを学習してもよい。
【0122】
複数の端末装置10を用いて学習する場合、ある端末装置10がセンサa、センサb、センサcのうち少なくとも1つを有していない場合や、センサa、センサb、センサcのうち少なくとも1つが検知を行えなかった場合、モデルMXを適切に学習できない場合がある。
【0123】
そこで、情報処理システム1は、入力データの欠損がある場合であっても、適切に学習ができるようにモデルMXを調整する。例えば、情報処理システム1は、
図9に示すように、センサ情報が取得できなかったことを示す特定のデータ(例えばn/a(該当なしを示す値)等)を、ネットワークNN1が入力として受け付け可能にする。
図9は、センサcのセンサ情報SD3が取得できなかった場合を示し、この場合、情報処理システム1は、該当なしを示す値をセンサcの中間表現IR31としてネットワークNN1に入力し、モデルMXがベクトルVD2を出力する。
【0124】
このように、情報処理システム1は、センサ情報が取得できない場合であってもベクトルを生成することができるようにモデルMXを学習する。これにより、情報処理システム1は、複数の端末装置10に、必要なセンサにうち一部のセンサを有しない端末装置10が含まれる場合や、一部のセンサ情報が取得できなかった場合であっても、推論に利用可能なモデルを生成することができる。なお、情報処理システム1は、欠損データについては、推定処理を行ってデータを補完してもよい。
【0125】
上述のように、情報処理システム1は、データのうち一部のセンサ情報が欠損している場合、n/a(not available)を示す特定のデータをモデルに入力可能にする。これにより、情報処理システム1は、センサ情報が揃っていればそれをフル活用しベクトルを生成し、欠損している場合であってもベクトルを生成可能にする。情報処理システム1は、欠損がある場合でも無い場合でも、グローバルモデルのパラメータとローカルモデルのパラメータとの差分をグローバルモデルへ足し込む形で反映する。
【0126】
学習時に特定のセンサの情報が欠落する理由としては、例えば、端末装置10そのものの機能の制限、ユーザのprivacy preferenceなどが挙げられる。このような理由の場合、学習時だけでなくモデルの利用時(推論時)にも同じ制限がある可能性が非常に高い。
【0127】
しかしながら、情報処理システム1は、センサ情報が全種類揃っている端末装置10、例えば環境音やジャイロなどの特定のセンサの入力が欠落している端末装置10等の様々な端末装置10を対象として、ローカルモデルの差分をグローバルモデルに反映させることができる。そして、情報処理システム1は、推論時において、データに欠損がある端末装置10についても対象として処理を行うことができる。このように、情報処理システム1は、センサ情報が取得できず、データに欠損がある端末装置10についても、学習時及び推論時にいずれも適切に処理可能にすることができる。
【0128】
〔6.コミュニティモデルについて〕
なお、情報処理システム1が生成するモデルについては上記に限られない。例えば、情報処理システム1は、各コミュニティモデルを適用範囲とするモデルを生成してもよい。この点について、
図10を用いて説明する。
【0129】
図10は、複数階層のコミュニティの一例を示す図である。
図10の例では、コミュニティが階層化されている場合において、各コミュニティについて生成されるモデルの例を示す。
【0130】
図10でコミュニティ#1と記載するコミュニティGP1は、ユーザU1、U2、U3等の複数のユーザを構成要素とするコミュニティである。すなわち、コミュニティGP1は、複数のユーザ(階層H0)が構成要素として含まれる階層H1のコミュニティ(第1階層コミュニティ)である。例えば、コミュニティGP1は、ユーザU1~U3等が位置するエリアに対応する。
【0131】
図10でコミュニティ#2と記載するコミュニティGP2は、ユーザU11、U12、U13等の複数のユーザを構成要素とするコミュニティである。すなわち、コミュニティGP2は、複数のユーザ(階層H0)が構成要素として含まれる階層H1のコミュニティ(第1階層コミュニティ)である。
【0132】
図10でコミュニティ#11と記載するコミュニティGP11は、コミュニティGP1、GP2等の複数のコミュニティを構成要素とするコミュニティである。すなわち、コミュニティGP11は、複数の第1階層コミュニティ(階層H1)が構成要素として含まれる階層H2のコミュニティ(第2階層コミュニティ)である。例えば、コミュニティGP11は、コミュニティGP1のエリア及びコミュニティGP2のエリアを含む範囲のエリアに対応する。
【0133】
図10でコミュニティ#21と記載するコミュニティGP21は、コミュニティGP11、GP12等の複数のコミュニティを構成要素とするコミュニティである。すなわち、コミュニティGP21は、複数の第2階層コミュニティ(階層H2)が構成要素として含まれる階層H3のコミュニティ(第3階層コミュニティ)である。このように、各コミュニティは、ユーザを基底として階層的に構成される。
【0134】
図10では、
図1で示したグローバルモデルであるモデルM1は、ユーザU1、U2、U3等を構成要素とするコミュニティGP1に適用される第1階層モデルであることを示す。すなわち、モデルM1は、コミュニティGP1に属するユーザU1、U2、U3等がベクトルの生成対象となるモデルであることを示す。モデルM1は、
図1で説明したように学習され、コミュニティGP1に属するユーザU1、U2、U3等を対象とする推論に用いられる。
【0135】
グローバルモデルであるモデルM2は、ユーザU11、U12、U13等を構成要素とするコミュニティGP2に適用される第1階層モデルであることを示す。すなわち、モデルM2は、コミュニティGP2に属するユーザU11、U12、U13等がベクトルの生成対象となるモデルであることを示す。モデルM2は、モデルM1と同様に学習され、コミュニティGP2に属するユーザU11、U12、U13等を対象とする推論に用いられる。
【0136】
このように、
図10では、サーバ装置100は、各々が端末装置10を含む複数の第1グループ(第1階層コミュニティ)ごとに異なるグローバルモデルを第1階層モデルとして提供する。例えば、サーバ装置100は、第1階層コミュニティの端末装置10から受信した差分の情報を用いて、複数の第1階層モデルの各々のパラメータを更新する。サーバ装置100は、ユーザU1、U2、U3等が利用する端末装置10から受信した差分の情報を用いて、モデルM1のパラメータを更新する。また、サーバ装置100は、ユーザU11、U12、U13等が利用する端末装置10から受信した差分の情報を用いて、モデルM2のパラメータを更新する。なお、ローカルモデルの学習については、
図1と同様であるため詳細な説明は省略する。
【0137】
図10では、グローバルモデルであるモデルM11は、コミュニティGP1、GP2等を構成要素とするコミュニティGP11に適用される第2階層モデルであることを示す。また、グローバルモデルであるモデルM21は、コミュニティGP11、GP12等を構成要素とするコミュニティGP21に適用される第3階層モデルであることを示す。以下、第2階層以上のモデルについて、第2階層モデルを一例として説明する。
【0138】
第2階層コミュニティの第2階層モデルは、ベクトルの生成対象がそのコミュニティの配下のコミュニティに属するユーザであってもよい。この場合、第2階層モデルは、ユーザが利用する端末装置10が取得したデータを入力として、そのユーザのコンテキストを示すベクトルを出力する。
【0139】
例えば、モデルM11は、コミュニティGP11の配下のコミュニティGP1に属するユーザU1、U2、U3、及びコミュニティGP2に属するユーザU11、U12、U13等がベクトルの生成対象となるモデルである。情報処理システム1は、モデルM1及びモデルM2が学習済みである場合、モデルM1とモデルM2とを統合してモデルM11を生成してもよい。この場合、サーバ装置100は、モデルM1のパラメータとモデルM2のパラメータとを統合(例えば平均)してモデルM11を生成してもよい。すなわち、サーバ装置100は、モデルM1とモデルM2等の複数の第1階層モデルを用いて、第1階層モデルの上位階層の第2階層モデルであるM11のパラメータを更新する。
【0140】
また、モデルM1及びモデルM2が未学習の場合、モデルM11は、ユーザU1、U2、U3、U11、U12、U13等を対象として、
図1と同様の処理が行われることにより学習される。モデルM11は、コミュニティGP11の配下のコミュニティGP1に属するユーザU1、U2、U3、及びコミュニティGP2に属するユーザU11、U12、U13等を対象とする推論に用いられる。また、第3階層以上のモデルについて、第2階層モデルの場合と同様に学習される。全階層のモデルは同じネットワーク構成を有してもよい。また、全階層のモデルは入力がユーザのデータであり、出力がユーザのコンテキストを示すベクトルであってもよい。
【0141】
このように、情報処理システム1は、適用される範囲、すなわちコミュニティの規模が異なるコミュニティモデルを学習し、推論を行う規模に応じたコミュニティモデルを用いて適切なサービスを提供することができる。なお、
図10の例では、ユーザ及びコミュニティが各階層のコミュニティに重複して含まれないように構成された場合を一例として、示すが、ユーザまたはコミュニティは各階層のコミュニティに重複して含まれてもよい。例えば、ユーザU1がコミュニティGP1に加えてコミュニティGP6に含まれてもよい。
【0142】
また、第2階層コミュニティの第2階層モデルは、ベクトルの生成対象がそのコミュニティの配下のコミュニティ、すなわち第1階層コミュニティであってもよい。この場合、第2階層モデルは、第1階層コミュニティのデータを入力として、その第1階層コミュニティのコンテキストを示すベクトルを出力する。第1階層コミュニティのデータは、第1階層コミュニティのコミュニティコンテキストを示すベクトルを生成可能であれば、どのような情報であってもよく、第1階層コミュニティに属するユーザ群に関する統計的情報であってもよいし、第1階層コミュニティが占める範囲に関する情報であってもよい。第2階層モデルの入力とする第1階層コミュニティのデータは、第1階層コミュニティのモデル(第1階層モデル)が出力したベクトルを用いて生成されてもよい。また、第3階層以上のモデルについて、第2階層モデルの場合と同様に学習される。
【0143】
なお、サーバ装置100は、学習時に用いる正解データを、適宜の方法により生成されてもよいし、外部装置から取得してもよい。サーバ装置100は、コミュニティコンテキストを示す情報を外部装置から取得してもよい。サーバ装置100は、コミュニティコンテキストとベクトルとの対応付けを示すリストを用いて、リストと、取得したコミュニティコンテキスト(取得コンテキスト)とを比較し、取得コンテキストに一致(または類似)するコミュニティコンテキストに対応付けられたベクトルを正解データとしてもよい。また、コミュニティは、エリアに関するコミュニティに限らず、任意の構成が採用可能である。例えば、コミュニティは、性別や年齢等のユーザ属性に関するコミュニティであってもよい。この場合、例えば、性別が同じユーザが同じコミュニティに属したり、年齢が近いユーザが同じコミュニティに属したりしてもよい。
【0144】
〔7.処理手順〕
次に、
図11を用いて実施形態に係る情報処理システム1による処理手順について説明する。
図11は、実施形態に係る処理手順を示すフローチャートである。
【0145】
図11に示すように、情報処理システム1では、サーバ装置100が端末装置10が取得したデータから利用者のコンテキストを示すベクトルを生成する共通モデルを提供する(ステップS101)。
【0146】
そして、情報処理システム1では、複数の端末装置10が各々が保有するデータを用いて、サーバから受信した共通モデルのパラメータを更新した局所モデルを生成する(ステップS102)。
【0147】
そして、情報処理システム1では、複数の端末装置10が局所モデルに関する情報である更新用情報をサーバ装置100へ送信する(ステップS103)。
【0148】
そして、情報処理システム1では、サーバ装置100が複数の端末装置10から受信した更新用情報を用いて、共通モデルのパラメータを更新し、更新後の共通モデルを複数の端末装置10に提供する(ステップS104)。
【0149】
〔8.その他の例〕
上述した端末装置10及びサーバ装置100は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、実施形態の変形例について説明する。
【0150】
上記実施形態において、サーバ装置100は、位置情報に基づくベクトルのベクトル値により、ユーザが「山に行った」、「海に行った」、「地方に行った」、「外国に行った」等の行動を判定してもよい。また、ユーザが「旅行に行った」、「出張した」等の行動を判定してもよい。また、ユーザが「日帰りした」、「宿泊した」等の行動を判定してもよい。
【0151】
また、上記実施形態において、端末装置10は、サーバ装置100(サーバ側)に、ユーザの行動に関する詳細な情報を知らせたくない場合、位置情報を蓄積する際、又はエンベディングに先立って、位置情報の端数処理(丸め処理)を行い、位置情報を丸めて精度の粗い位置情報に変換してもよい。例えば、端末装置10は、位置情報がGPS座標の緯度経度情報である場合、緯度と経度の10進角度での小数点以下(度分秒法での分以下)の値の切り上げ又は切り捨て(四捨五入でも可)を行い、大まかな値の位置情報に変換する。これにより、ユーザの行動に関する情報について、端末装置10からサーバ装置100(サーバ側)に伝える情報の内容を制限することができる。また、機械学習の学習データとしての位置情報の情報量を削減し、処理の負荷を軽減することができる。
【0152】
また、上記実施形態において、ベクトルの各要素の値は、便宜上、「0」と「1」とで表現しているが、実際には、「2」以上の数値や、複数桁の数値や、整数部分と小数部分とを有する数値であってもよい。すなわち、実数であればよい。これにより、多次元のベクトルの各要素において複数の情報や詳細な情報を表現することができる。
【0153】
また、上記実施形態において、端末装置10は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積しているが、位置履歴の蓄積が制限又は禁止されている場合には、ベクトル化した状態で蓄積してもよい。例えば、端末装置10は、個々の位置情報が示す場所に基づいて、位置情報を、「自宅にいる」、「職場にいる」、「店舗にいる」、「屋外にいる」等を示すベクトル値に変換して蓄積してもよい。そして、時系列に沿って同じベクトル値が連続している場合、それらを一括してベクトルとしてもよい。
【0154】
〔9.効果〕
上述してきたように、本願に係る情報処理システム1は、端末装置10が取得したデータからユーザのコンテキストを示すベクトルを生成する共通モデル(実施形態ではグローバルモデル)を提供するサーバ(実施形態ではサーバ装置100)と、各々保有するデータを用いて、サーバから受信した共通モデルのパラメータを更新した局所モデル(実施形態ではローカルモデル)を生成し、局所モデルに関する情報である更新用情報をサーバへ送信する複数の端末装置10とを有する。サーバは、複数の端末装置10から受信した更新用情報を用いて、共通モデルのパラメータを更新し、更新後の共通モデルを複数の端末装置10に提供する。
【0155】
これにより、情報処理システム1は、ベクトルを生成するモデルを、複数の端末装置10が保有するデータを用いて効率的に学習することができる。
【0156】
また、情報処理システム1において、複数の端末装置10は、共通モデルと局所モデルとの差分を更新用情報としてサーバへ送信する。このように、情報処理システム1は、複数の端末装置10が差分のみをサーバ装置100へ送信することにより、通信量を削減し、複数の端末装置10が保有するデータを外部へ送信することを抑制できる。
【0157】
また、情報処理システム1において、複数の端末装置10は、保有するデータに欠損がある場合、欠損した欠損データに対する所定の処理を行い、局所モデルを生成する。このように、情報処理システム1は、データに欠損がある場合であっても、複数の端末装置10が局所モデルの学習ができるため、モデルを効率的に学習することができる。
【0158】
また、情報処理システム1において、複数の端末装置10は、欠損データを推定し、推定した推定データを用いて、局所モデルを生成する。このように、情報処理システム1は、データに欠損がある場合であっても、複数の端末装置10が欠損データを推定し局所モデルの学習ができるため、モデルを効率的に学習することができる。
【0159】
また、情報処理システム1において、複数の端末装置10は、センサ(実施形態では測位部14またはセンサ部20)により検知されたセンサ情報を含むデータを用いて局所モデルを生成する。このように、情報処理システム1は、複数の端末装置10がセンサ情報を用いて局所モデルの学習ができるため、センサ情報に基づくコンテキストを示すベクトルを出力するモデルを効率的に学習することができる。
【0160】
また、情報処理システム1において、複数の端末装置10は、位置情報を含むデータを用いて局所モデルを生成する。このように、情報処理システム1は、複数の端末装置10が位置情報を用いて局所モデルの学習ができるため、位置情報に基づくコンテキストを示すベクトルを出力するモデルを効率的に学習することができる。
【0161】
また、情報処理システム1において、共通モデルは、データを入力としてベクトルを出力する。このように、情報処理システム1は、データを入力としてベクトルを出力するモデルを効率的に学習することができる。
【0162】
また、情報処理システム1において、サーバは、各々が端末装置10を含む複数の第1グループ(実施形態ではコミュニティ)ごとに異なる共通モデルを第1階層共通モデルとして提供し、複数の第1グループの端末装置10から受信した更新用情報を用いて、複数の第1階層共通モデルの各々のパラメータを更新し、更新後の複数の第1階層共通モデルを用いて、複数の第1階層共通モデルの上位階層のモデルである第2階層共通モデルのパラメータを更新する。このように、情報処理システム1は、複数の階層に対応する複数のモデルを効率的に学習することができる。
【0163】
また、情報処理システム1において、サーバは、各々が第1グループを含む複数の第2グループの各々に対応する複数の第2階層共通モデルのパラメータを更新し、更新後の複数の第2階層共通モデルを用いて、複数の第2階層共通モデルの上位階層のモデルである第3階層共通モデルのパラメータを更新する。このように、情報処理システム1は、複数の階層に対応する複数のモデルを効率的に学習することができる。
【0164】
〔10.ハードウェア構成〕
また、上述した実施形態に係る端末装置10やサーバ装置100は、例えば
図12に示すような構成のコンピュータ1000によって実現される。以下、サーバ装置100を例に挙げて説明する。
図12は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
【0165】
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
【0166】
一次記憶装置1040は、RAM(Random Access Memory)等、演算装置1030が各種の演算に用いるデータを一次的に記憶するメモリ装置である。また、二次記憶装置1050は、演算装置1030が各種の演算に用いるデータや、各種のデータベースが登録される記憶装置であり、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等により実現される。二次記憶装置1050は、内蔵ストレージであってもよいし、外付けストレージであってもよい。また、二次記憶装置1050は、USBメモリやSD(Secure Digital)メモリカード等の取り外し可能な記憶媒体であってもよい。また、二次記憶装置1050は、クラウドストレージ(オンラインストレージ)やNAS(Network Attached Storage)、ファイルサーバ等であってもよい。
【0167】
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェイスであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェイスであり、例えば、USB等により実現される。
【0168】
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
【0169】
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
【0170】
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
【0171】
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
【0172】
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
【0173】
例えば、コンピュータ1000がサーバ装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
【0174】
〔11.その他〕
以上、本願の実施形態を説明したが、これら実施形態の内容により本発明が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【0175】
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【0176】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0177】
例えば、上述したサーバ装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットホーム等をAPI(Application Programming Interface)やネットワークコンピューティング等で呼び出して実現するなど、構成は柔軟に変更できる。
【0178】
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【0179】
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【0180】
1 情報処理システム
10 端末装置
14 測位部
30 制御部
31 受信部
32 取得部
33 処理部
34 学習部
35 推定部
36 送信部
40 記憶部
41 モデル情報記憶部
100 サーバ装置
110 通信部
120 記憶部
121 モデル情報記憶部
122 コミュニティ情報記憶部
130 制御部
131 提供部
132 取得部
133 学習部
134 判定部