以下に、本願に係る情報処理装置、情報処理方法及び情報処理プログラムを実施するための形態(以下、「実施形態」と記載する)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。また、以下の実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
〔1.情報処理方法の概要〕
まず、図1を参照し、実施形態に係る情報処理装置が行う情報処理方法の概要について説明する。図1は、実施形態に係る情報処理方法の概要を示す説明図である。なお、図1では、端末装置が位置情報をエンベディングし、周囲に存在する他の端末のエンベディング情報とともに1つに束ねて送信する場合を例に挙げて説明する。
図1に示すように、情報処理システム1は、端末装置10と情報提供装置100とを含む。端末装置10と情報提供装置100とは、それぞれネットワークN(図2参照)を介して有線又は無線で互いに通信可能に接続される。
端末装置10は、ユーザU(利用者)により利用されるスマートフォンやタブレット等のスマートデバイスであり、4G(Generation)やLTE(Long Term Evolution)等の無線通信網を介して任意のサーバ装置と通信を行うことができる携帯端末装置である。また、端末装置10は、液晶ディスプレイ等の画面であって、タッチパネルの機能を有する画面を有し、ユーザから指やスタイラス等によりタップ操作、スライド操作、スクロール操作等、コンテンツ等の表示データに対する各種の操作を受付ける。なお、画面のうち、コンテンツが表示されている領域上で行われた操作を、コンテンツに対する操作としてもよい。また、端末装置10は、スマートデバイスのみならず、デスクトップPC(Personal Computer)やノートPC等の情報処理装置であってもよい。
ここでは、端末装置10は、自身の位置情報を取得し、取得した位置情報をベクトルに変換(ベクトル化)する。すなわち、端末装置10は、いわゆるエンベディング(embedding:埋め込み)を行い、エンベディングベクトル(埋め込みベクトル)を生成する。そして、端末装置10は、エンベディングベクトルを情報提供装置100に送信する。
情報提供装置100は、端末装置10からエンベディングベクトルを受信し、エンベディングベクトルに基づいて、ユーザUの行動(所在、振る舞い、移動等)を解析する情報処理装置であり、サーバ装置やクラウドシステム等により実現される。
〔1-1.位置情報をベクトルに変換する利点〕
まず、位置情報をベクトルに変換する利点について説明する。
従来、端末装置10は、情報提供装置100に対して位置情報を送信していたが、このとき、端末装置10は、ユーザUのプライバシー配慮やデータ通信量の削減のため、位置情報の端数処理(丸め処理)を行い、位置情報を丸めて精度の粗い位置情報に変換してから送信していた。例えば、位置情報がGPS(Global Positioning System)座標の緯度経度情報である場合、緯度と経度の10進角度での小数点第2位以下の値の切り上げ又は切り捨て(四捨五入でも可)を行い、大まかな値の位置情報に変換していた。
この場合、情報提供装置100は、位置情報に基づいてユーザUの行動を推定しようとしたとき、丸めた位置情報は大まかな値であるため、地域や大規模施設等のエリア単位の広い場所は特定できても、隣接する小規模な建物や部屋等の狭い場所(及び/又は屋内外の違い)を特定できないことがあった。そのため、ユーザUの大まかな行動については推定可能であるが、ユーザUの詳細な行動については推定できないこともあった。例えば、ユーザUの丸めた位置情報が示す場所の範囲内に小規模な建物Aと建物B(例えばコンビニエンスストアとファストフード店等)が隣接して建っている場合、ユーザUが建物Aと建物Bのどちらにいるのか、あるいは建物(又は敷地)の内側と外側のどちらにいるのかを、位置情報から特定できないこともあった。情報提供装置100(サーバ側)が本当に知りたいのは、ユーザUの位置情報それ自体ではなく、位置情報が示すユーザUの行動(すなわち、ユーザUのコンテキスト)である。
今回、端末装置10は、自身の位置情報をベクトルに変換(ベクトル化)するに際して、端数処理(丸め処理)を行う前の位置情報の生データをベクトルに変換する。したがって、端末装置10は、隣接する小規模な建物や部屋等の狭い場所(及び/又は屋内外の違い)を特定した上で、エンベディングベクトルを生成することができる。そのため、情報提供装置100は、エンベディングベクトルに基づいて、ユーザUの詳細な行動を知ることができる。すなわち、情報提供装置100は、端末装置10から、従来の丸めた位置情報を受信するよりも、ユーザUの行動に関する具体的かつ詳細な情報を取得することができる。また、エンベディングベクトルのベクトル値及びそれが意味する内容を定義するのは情報提供装置100(サーバ側)であるため、第三者がエンベディングベクトルのベクトル値だけを見ても、そのベクトル値が何を意味しているのか理解できないので、安全である。
〔1-2.位置情報をエンベディングして送信する情報処理方法の概要〕
次に、図1を参照して、位置情報をエンベディングして送信する情報処理方法の概要について説明する。
図1に示すように、ユーザUの端末装置10は、自身の位置情報を取得する(ステップS1)。
そして、端末装置10は、取得した位置情報を蓄積する(ステップS2)。
そして、端末装置10は、位置情報に対してエンベディングを行い、複数の位置情報を1つのベクトルに変換(ベクトル化)し、位置情報に基づくエンベディングベクトル(埋め込みベクトル)を生成する(ステップS3)。
そして、端末装置10は、周囲に存在する他の端末装置から、その端末装置に関する情報をベクトル化したエンベディングベクトルを収集する(ステップS4)。
そして、端末装置10は、自身が生成したエンベディングベクトルと、周囲に存在する他の端末装置から収集したエンベディングベクトルとを結合(集約)する(ステップS5)。
そして、端末装置10は、集約されたエンベディングベクトルを情報提供装置100に送信する(ステップS6)。
そして、情報提供装置100は、端末装置10から、集約されたエンベディングベクトルを受信する(ステップS7)。
そして、情報提供装置100は、端末装置10から受信したエンベディングベクトルに基づいて、ユーザUの行動(所在、振る舞い、移動等)を解析する(ステップS8)。
〔1-3.実施例1〕
次に、上記の位置情報をエンベディングして送信する情報処理方法の実施例1について説明する。
例えば、ステップS1において、各地域に所在する複数のユーザUの各々が所持する端末装置10は、GNSS(Global Navigation Satellite System:全球測位衛星システム)や屋内測位技術等の位置測位技術を用いて、それぞれ自身の位置情報を取得する。このとき、端末装置10は、自身の位置情報と共に、その位置情報を取得した時刻を示す時刻情報を取得する。
続いて、ステップS2において、端末装置10は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積する。
続いて、ステップS3において、端末装置10は、位置情報をベクトルに変換し、エンベディングベクトルを生成する。このとき、端末装置10は、複数の位置情報を一括して単数の多次元ベクトルに変換する。例えば、端末装置10は、1分ごとに位置情報を取得していた場合、1分ごとの位置情報を時系列に並べて、各時間帯の30分間(例えば8:01~8:30)の位置情報から単数のエンベディングベクトルを生成する。
例えば、端末装置10は、30分間における1分ごとの位置情報を時系列に並べたシーケンスデータ(時系列データ)を生成する。あるいは、端末装置10は、30分間における最初の1分間の位置情報とその位置情報に対する1分ごとの差分を時系列に並べたシーケンスデータを生成する。そして、端末装置10は、シーケンスデータに基づいて、エンベディングベクトルを生成する。
例えば、端末装置10は、シーケンスデータをデータセットとし、ニューラルネットワークによる機械学習の手法等を用いて、シーケンスデータを多次元からなる実数値ベクトルへと変換する。すなわち、端末装置10は、例えばRNN(Recurrent Neural Network)やLSTM(Long short-term memory)等を用いた機械学習を経て生成されるベクトル変換モデルにシーケンスデータを入力し、それぞれの出力としてエンベディングベクトルを取得する。端末装置10は、情報提供装置100から、ベクトル変換モデルの提供を受けてもよい。
なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。アテンションは、文章のような前後の並びが重要なデータを扱うことができる。また、端末装置10は、同様の自然言語処理モデルを用いてもよい。このようなモデルを用いて、シーケンスデータからエンベディングベクトルを生成することにより、より情報の順序に重点を置いたエンベディングベクトルの生成を実現することができる。
あるいは、端末装置10は、所定の変換規則(ルール)に従って(ルールベースで)、シーケンスデータをエンベディングベクトルに変換してもよい。
但し、シーケンスデータは一例に過ぎない。実際には、例えば位置情報の生データをそのまま時系列に沿って順番にモデルに入力してもよい。
ここでは、端末装置10が上記のベクトル変換モデルや所定の変換規則等に従って位置情報のデータを元にエンベディングすると、出力される値がベクトル表現になる。これらの出力されたベクトルを時系列に並べると、ユーザの移動経路が示される。例えば、具体的な緯度経度は不明であるが、ベクトル空間上のA点からB点へ移動したこと等が示される。すなわち、端末装置10が位置情報を使ってエンベディングした結果(出力された値)が、エンベディングベクトルである。このエンベディングベクトルは、ユーザの行動を示す値(コンテキストを示す値)である。
なお、端末装置10がエンベディングを行うタイミングについては任意である。例えば、端末装置10から情報提供装置100への位置情報の送信が許可されているタイミングで、蓄積された位置情報をエンベディングしてもよい。また、アプリケーション(アプリ)の起動時から位置情報の蓄積を開始し、当該アプリの使用を終了したタイミングで、蓄積された位置情報をエンベディングしてもよい。また、蓄積された位置情報が所定の件数(例えば100件)に達した時に、蓄積された位置情報をエンベディングしてもよい。あるいは、それまで滞在していた場所から移動した時(位置情報が大きく変化した時)に、蓄積された位置情報をエンベディングしてもよい。
続いて、ステップS4において、端末装置10は、周囲に存在する他の端末装置のそれぞれから、近距離無線通信により、その端末装置に関する情報をベクトル化したエンベディングベクトルを受信する。なお、エンベディングベクトルの受信は、アクティブでもパッシブでもよい。
ここで、周囲とは、Bluetooth(登録商標)等の近距離無線通信により、端末装置10が他の端末装置から情報を受信できる範囲をいう。すなわち、周囲に存在する他の端末装置は、端末装置10に対して、近距離無線通信での電波の届く距離に存在する端末装置である。なお、他の端末装置は、端末装置10の周囲に複数存在していてもよい。
図1に示す例では、ユーザUとしてユーザU1~U3を示し、端末装置10として端末装置10A~10Cを示している。ここでは、ユーザU1の端末装置10Aが、ユーザU2の端末装置10Bと、ユーザU3の端末装置10Cとから、エンベディングベクトルを収集している。すなわち、ユーザU1の端末装置10Aが、当該説明における端末装置10に該当し、ユーザU2の端末装置10Bと、ユーザU3の端末装置10Cとが、当該説明における他の端末装置に該当する。
端末装置10は、エンベディングベクトルをサーバ側(情報提供装置100)に送信する代表者として、周囲に存在する他の端末装置からエンベディングベクトルを収集する。なお、代表者は持ち回りであり、同じ端末装置が連続して(又は頻繁に)代表者に選ばれることがないようにアルゴリズム等で調整する。例えば、一度代表者に選ばれたら、その時から所定期間(例えば1週間)は代表者に選ばれないようにしてもよい。自身を含め周囲に存在する他の端末装置が、いずれも上記所定期間内(例えば1週間以内)に代表者に選ばれた端末装置である場合には、代表者に選ばれた日時や回数等に応じて各端末装置に優先度を設定し、優先度に基づいて代表者を決定してもよい。
あるいは、端末装置10と他の端末装置とが互いにエンベディングベクトルをやり取り(送受信)してもよい。すなわち、複数の端末装置10が、それぞれのエンベディングベクトルを共有し、自身のエンベディングベクトルに組み込んでもよい。
例えば、端末装置10は、周囲に存在する他の端末装置が位置情報をベクトルに変換して生成したエンベディングベクトルを収集する。なお、端末装置10は、他の端末装置の過去の位置履歴(例えば、少し前の位置履歴)をベクトルに変換して生成したエンベディングベクトルを収集してもよい。
このとき、端末装置10及び他の端末装置はそれぞれ、位置情報とともに、自身を示す端末ID(識別情報)をベクトルに変換してエンベディングベクトルを生成してもよい。例えば、端末装置10及び他の端末装置はそれぞれ、位置情報に基づくエンベディングベクトルと、端末IDに基づくエンベディングベクトルとの2種類のエンベディングベクトルを生成してもよい。
なお、個々の端末装置を特定する必要がなければ、端末IDをベクトルに変換する必要はない。例えば、サーバ側が、人物を特定せずに、端末装置10の周囲に存在する不特定多数の人間の行動履歴のみを知りたい場合(周囲にいる人間が通勤客か買物客か旅行者か等)には、端末装置10は、他の端末装置から位置情報に基づくエンベディングベクトルのみ収集すればよい。
また、サーバ側が端末装置10と他の端末装置とが同じ場所に存在していることを知りたい場合には、他の端末装置は、自身を示す端末IDのみベクトルに変換してエンベディングベクトルを生成してもよい。他の端末装置は、端末装置10の周囲に存在しているので、端末装置10と他の端末装置とのそれぞれの位置情報は近似(ほぼ同一又は類似)していることは明らかである。例えば、サーバ側が「同じ時間帯に同じ建物内/電車内にいるユーザ数」を知りたい場合には、端末装置10は、他の端末装置から端末IDに基づくエンベディングベクトルのみ収集すればよい。
続いて、ステップS5において、端末装置10は、自身が生成したエンベディングベクトルと、周囲に存在する他の端末装置から収集したエンベディングベクトルとを順番に並べて集約する。例えば、端末装置10は、20次元以上の多次元のエンベディングベクトルのうち、1要素目~10要素目には端末装置10のエンベディングベクトルを配置し、11要素目~20要素目には他の端末装置のエンベディングベクトルを配置する。
あるいは、端末装置10は、20次元以上の多次元のエンベディングベクトルのうち、1要素目~10要素目には端末装置10が生成した位置情報に基づくエンベディングベクトルを配置し、11要素目~20要素目には端末装置10や他の端末装置のそれぞれの端末ID(又は合計の端末数)をベクトルに変換したエンベディングベクトルを配置する。
また、端末装置10は、エンベディングベクトルに付加情報を付与してもよい。例えば、端末装置10は、エンベディングベクトルにデータタイプ(Data Type)を定義する情報を付与してもよい。例えば、データタイプは、多次元のエンベディングベクトルにおいて、各要素に配置されるデータの種類を定義する。あるいは、データタイプは、集約された個々のエンベディングベクトルのデータ領域(区切り位置等)を示す。
また、端末装置10は、エンベディングベクトルにノイズを付与してもよい。例えば、端末装置10は、エンベディングベクトルから位置情報等の個人情報が特定されることを妨げるために、多次元のエンベディングベクトルの所定の要素(複数の要素でもよい)に、ダミーデータ等のノイズとなるベクトルを配置する。このとき、端末装置10は、多次元のエンベディングベクトルにおいてノイズとなるベクトルが配置される要素を、データタイプとして定義してもよい。なお、サーバ側(情報提供装置100)は、エンベディングベクトルからノイズを除去してもよいし、ノイズを含めたままエンベディングベクトルの処理を実行してもよい。
続いて、ステップS6において、端末装置10は、ネットワークN(図2参照)を介して、集約されたエンベディングベクトルを情報提供装置100に送信する。
なお、端末装置10がエンベディングベクトルを情報提供装置100に送信するタイミングは任意である。例えば、端末装置10から情報提供装置100への位置情報の送信が許可されているタイミングであってもよい。また、アプリケーション(アプリ)の起動時や使用中、所定の時刻、所定の周期(2時間ごと等)等であってもよい。また、情報提供装置100側から端末装置10に対してエンベディングベクトルの送信を要求してもよい。
続いて、ステップS7において、情報提供装置100は、各地域に所在する複数のユーザUの各々が所持する端末装置10のうち、集約されたエンベディングベクトルを送信した端末装置10から、ネットワークNを介して、それぞれのエンベディングベクトルを受信する。
続いて、ステップS8において、情報提供装置100は、集約されたエンベディングベクトルを分離して、分離されたエンベディングベクトルを同じ特定空間に配置する。情報提供装置100は、エンベディングベクトルを特定空間に配置することで、ユーザU自身の行動の類似性や変化、及び/又はユーザUと他のユーザとの行動の類似性や相違性を明確に把握することができる。例えば、端末装置10は、位置情報(緯度経度等)に対してエンベディングを行うので、同じ位置にいる場合は同じ値のエンベディングベクトルを生成する。情報提供装置100は、同じ値のエンベディングベクトルを特定空間上の同じ位置に配置する。
この場合、情報提供装置100は、地図上の位置(緯度経度等)とはマッピング(関連付け)されていないので、具体的な位置の特定はできないが、ユーザUがこの時間帯にA地点からB地点に移動し、その後C地点に移動して再びA地点に戻った等のユーザUの特定の行動を確認することが可能になる。また、情報提供装置100は、位置情報を用いずに、ユーザUの移動の事実を確認することができる。
以上のように、本実施形態では、ユーザの位置情報を送信する際には、端末装置が取得した位置情報をそのまま受信側(代表者側、サーバ側)に送信するのではなく、位置情報をエンベディングしてから受信側に送信する。エンベディングされた情報は、受信側での復元が困難なため、正確な位置情報の特定が困難になり個人情報の問題は解決される。すなわち、単に情報量が少なくなるだけではなく、端末側が検知した生データ(GPSの位置情報そのもの)を代表者側やサーバ側が復元できないので、セキュア(secure:安全)である。また、取得されたエンベディング情報をまとめて送信する事で、電池消費の課題も解決される。
〔1-4.実施例2〕
次に、上記の位置情報をエンベディングして送信する情報処理方法の実施例2について説明する。
上記の実施例1では、ステップS4~S6において、周囲に存在する他の端末装置のエンベディングベクトルをまとめて代表者であるユーザUの端末装置10のみが送信する事例について説明しているが、実際には、周囲に存在する他の端末装置のユーザも含めて全員が代表者としてそれぞれ全員のエンベディングベクトルをまとめて送信してもよい。
さらに、ユーザUの端末装置10や周囲に存在する他の端末装置は、位置情報のみならず、さらに他の情報をベクトルに変換し、エンベディングベクトルを生成してもよい。例えば、各端末装置は、自身に搭載又は接続されたセンサ類を用いて、環境音、加速度、気圧等のセンサデータを取得し、位置情報とセンサデータとに基づくエンベディングベクトルを生成してもよい。また、各端末装置は、自身のユーザに関する情報(ユーザ情報)を取得し、位置情報とユーザ情報とに基づくエンベディングベクトルを生成してもよい。そして、周囲に存在する他の端末装置のエンベディングベクトルをまとめて送信してもよい。
周囲に存在する他の端末装置のエンベディングベクトルをまとめて代表者であるユーザUの端末装置10のみが送信する事例では、周囲に100人いても代表者の1個のベクトルのみが送信される。一方、全員が代表者としてそれぞれ全員のエンベディングベクトルをまとめて送信する事例では、周囲に100人いれば100個のベクトルが送信される。
なお、全員が代表者としてそれぞれ全員のエンベディングベクトルをまとめて送信する事例では、図1に示す例において、例えば周囲に存在する100人のユーザのそれぞれが、自分をユーザU1と見立てた場合、他のユーザはユーザU2、ユーザU3等に該当する。
周囲に存在する他の端末装置のユーザも含めて全員が代表者としてそれぞれ全員のエンベディングベクトルをまとめて送信することで、情報提供装置100(サーバ側)は、個々のユーザから主観的な見た自身と周囲とに関するコンテキストのみならず、周囲から客観的に見た個々のユーザのコンテキストを知ることができる。
〔1-5.実施例3〕
次に、上記の位置情報をエンベディングして送信する情報処理方法の実施例3について説明する。
例えば、ステップS6において、端末装置10は、集約されたエンベディングベクトルと共に、若干の自身の位置情報を情報提供装置100に送信してもよい。すなわち、端末装置10は、集約されたエンベディングベクトルと自身の位置情報との組を、情報提供装置100に送信してもよい。
例えば、位置情報の送信に制約が課せられていなかった時(自由に位置情報が送信できていた時)には、端末側は「常に許可」の場合には1日で平均17点程度の位置情報をサーバ側に送信していたが、最近では制約が厳しくなり、端末側は3点程度の位置情報しかサーバ側に送信しないようになっている。そこで、端末装置10は、例えば17点の位置情報のうち14点の位置情報をベクトル化したエンベディングベクトルを生成し、周囲の他の端末装置のエンベディングベクトルと集約し、残りの3点の位置情報とともにサーバ側に送信するようにしてもよい。すなわち、端末装置10は、一部の位置情報をベクトル化したエンベディング情報を周囲の他の端末装置のエンベディング情報とともに集約したものと、残りの位置情報それ自体とを送信するようにしてもよい。なお、残りの位置情報は、端末側が送信可能な数の位置情報である。
エンベディングベクトルは、ユーザUの行動を示すものであるが、ユーザUの具体的な位置を示すものではない。そのため、情報提供装置100(サーバ側)では、ユーザUの行動がどの辺りの地域で行われたのかは知ることができない。そこで、エンベディングベクトルと、丸めた位置情報とを組み合わせることで、情報提供装置100(サーバ側)で、ユーザUの行動がどの辺りの地域で行われたのか、大体の場所を知ることができる。例えば、エンベディングベクトルは、「ユーザUが昼食(ランチ)をとった」ことを示すことはできるが、ユーザUが「どの辺りの地域で」昼食をとったかは示していない。これに大まかな場所(例えば、○○区△△町)を示す丸めた位置情報が加わることで、ユーザUが昼食をとった大体の場所を知ることができる。
また、上記の実施例1と組み合わせて実施してもよい。例えば、ステップS8において、情報提供装置100は、エンベディングベクトルを特定空間に配置する際に、特定空間と地図とをマッピングするために3点の位置情報を使うことで、上記特定空間の位置と地図上の位置(緯度経度等)とをマッピングすることができる。これにより、情報提供装置100は、完全ではないが、ある程度の場所を推定することが可能である。
また、端末装置10は、位置情報(緯度経度等)に対してエンベディングを行うので、同じ位置にいる場合は同じ値のエンベディングベクトルを生成する。したがって、情報提供装置100は、同じ値のエンベディングベクトルに基づいて、ユーザUが同じ場所に滞在していることを推定することも可能である。これにより、情報提供装置100は、具体的な位置を特定しなくても、ユーザUが日常的に夜間に同じ場所に長時間滞在している場合には「自宅にいる」、日常的に日中に夜間と異なる場所に長時間滞在している場合には「職場にいる」と推定することも可能である。
〔1-6.実施例4〕
次に、上記の位置情報をエンベディングして送信する情報処理方法の実施例4について説明する。
例えば、ステップS3において、端末装置10は、位置情報を時系列に並べたシーケンスデータに基づいて、2以上の位置情報により表されるユーザUの行動(ユーザのコンテキスト)をベクトル値で示したエンベディングベクトルを生成してもよい。
例えば、端末装置10は、例えばRNNやLSTM等を用いた機械学習を経て生成されるベクトル変換モデルにシーケンスデータを入力し、出力としてエンベディングベクトルを取得する。このとき、RNNやLSTMは、同じデータであっても、入れる順番で出力が変わる。例えば、「位置1」→「位置2」→「位置3」の順で移動していたら「出勤した」(往路)と出力し、「位置3」→「位置2」→「位置1」の順で移動していたら「帰宅した」(復路)と出力する。このような情報の時系列に応じた情報を提供するモデルを用いることで、位置情報の変遷が有する特徴に基づいたエンベディングベクトルを生成することができる。
このように、シーケンスデータからLSTMを用いてエンベディングベクトルを生成した場合、シーケンスデータが示すユーザUの行動(ユーザUのコンテキスト)からユーザが所定の行動を行ったか否かを示すエンベディングベクトルを生成することができる。例えば、端末装置10は、ユーザUが自宅のあるエリアから職場のあるエリアまで移動していた旨を、位置情報のシーケンスデータが示す場合は、「出勤した」という行動と対応する要素が所定値を取るエンベディングベクトルを生成することができる。
なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。また、端末装置10は、同様の自然言語処理モデルを用いてもよい。
あるいは、端末装置10は、所定の変換規則(ルール)に従って、シーケンスデータをエンベディングベクトルに変換してもよい。例えば、端末装置10は、最初に取得された位置情報#1がユーザUの自宅から所定の範囲内であり、次に取得された位置情報#2が駅から所定の範囲内であり、最後に取得された位置情報#3が勤務先から所定の範囲内である場合は、「出勤した」という行動と対応する要素が所定値を取るエンベディングベクトルを生成してもよい。
但し、シーケンスデータは一例に過ぎない。実際には、例えば位置情報の生データをそのまま時系列に沿って順番にモデルに入力してもよい。
また、端末装置10は、例えば30分間に取得した位置情報に大きな変化が見られない場合、その30分間に取得した位置情報の平均値や中央値等を求め、これをその30分間の位置情報とし、その位置情報からエンベディングベクトルを生成してもよい。
そして、ステップS8において、情報提供装置100は、集約されたエンベディングベクトルを分離し、分離されたエンベディングベクトルが示す値により、ユーザUが「自宅にいる」、「出勤した」、「買い物に行った」、「電車で移動している」等の行動(すなわち、ユーザのコンテキスト)を判定してもよい。このとき、情報提供装置100は、多次元のエンベディングベクトルのうちの複数の要素が示す値により、時間帯ごとに行動を判定してもよい。例えば、情報提供装置100は、エンベディングベクトルに、「午前中に外出した」ことを示す値と、「出勤した」ことを示す値とが含まれているとき、「午前中に出勤した」と判定してもよい。
ここでは、エンベディングベクトルの各要素の値は、ユーザUの行動と対応している。例えば、3次元ベクトルの場合、1要素目の値が「出勤したか否か」を示し、2要素目の値が「外食したか否か」を示し、3要素目の値が「電車に乗ったか否か」を示すように規定してもよい。この場合、エンベディングベクトルは、One-hotベクトル(One Hot Vector)であってもよい。One-hotベクトルとは、(1,0,0)のように、1つの成分が1で、残りの成分が全て0であるようなベクトルである。但し、実際には、エンベディングベクトルは、One-hotベクトルに限定されない。
また、エンベディングベクトルの各要素の値は、ユーザUの複数の行動と対応していてもよい。例えば、1要素目の値が「職場に行き、かつ、外食したか否か」を示し、2要素目の値が「職場に行かず、かつ、外食したか否か」を示すように規定してもよい。
エンベディングベクトルのある範囲に含まれる複数の要素の値が、ユーザUの行動と対応していてもよい。例えば、3要素目までの値(上位三桁)が、「100」なら「出勤した」ことを示し、「101」なら「職場に電車で行った」ことを示すように規定してもよい。
また、エンベディングベクトルの各要素の値は、評価値でもよい。例えば、3要素目までの値(上位三桁)が「000」なら「移動していない」ことを示し、「100」なら「100キロメートル移動した」ことを示すように規定してもよい。また、エンベディングベクトルのいずれかの要素の値は、移動方向を示す値であってもよい。例えば、4要素目から7要素目までの値が「0000」なら移動方向が「北」であることを示し、「0001」なら移動方向が「北北東」であることを示し、「0010」なら移動方向が「北東」であることを示し、「0011」なら移動方向が「東北東」であることを示し、「0100」なら移動方向が「東」であることを示し、「1000」なら移動方向が「南」であることを示し、「1100」なら移動方向が「西」であることを示すように規定してもよい。また、エンベディングベクトルの各要素の値は、健康的な生活のスコアであってもよい。
なお、エンベディングベクトルの各要素の値は、モデルの学習時もしくは変換規則の作成時に、任意の設定が適用可能であるものとする。例えば、サーバ側が、ユーザU側からどのような行動に関する情報を取得して、ユーザUに提供するサービスに使用したいかといった事情に応じて、適宜任意の設定が可能であるものとする。
具体的には、各端末装置のエンベディングベクトルを結合したエンベディングベクトルを生成した場合、例えば「上位x桁」がユーザU1の行動を示し、「上位x+1桁目~2x目」がユーザU2の行動を示し、「上位2x+1~3x」がユーザU3の行動を示すベクトルとなるように設定する。
また、各端末装置のエンベディングベクトルに基づいて新たなベクトルを生成する場合、複数のユーザのコンテキストの組み合わせを示すベクトルになるように設定する。例えば、上位3桁が「000」である場合には「全員が職場に行ってない」という行動を示すベクトルとして設定する。また、上位3桁が「001」である場合には「ユーザU1のみが出勤した」という行動を示すベクトルとして設定する。また、上位3桁が「010」である場合には「ユーザU2のみが出勤した」という行動を示すベクトルとして設定する。また、上位3桁が「100」である場合には「ユーザU3のみが出勤した」という行動を示すベクトルとして設定する。また、上位3桁が「101」である場合には「ユーザU1とユーザU3が出勤した」という行動を示すベクトルとして設定する。
ここでは、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等は、位置情報のシーケンスデータを、ユーザUが「自宅にいる」、「出勤した」、「買い物に行った」、「電車で移動している」等の特定の行動を示すベクトル値に変換することを目的とする簡潔なモデルや変換規則等である。例えば、情報提供装置100は、特定の行動をユーザUがとったか否かを知りたいときに、当該行動に関する位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等を、ユーザUの端末装置10に提供する。
〔2.情報処理システムの構成例〕
次に、図2を用いて、実施形態に係る情報提供装置100が含まれる情報処理システム1の構成について説明する。図2は、実施形態に係る情報処理システム1の構成例を示す図である。図2に示すように、実施形態に係る情報処理システム1は、端末装置10と情報提供装置100とを含む。これらの各種装置は、ネットワークNを介して、有線又は無線により通信可能に接続される。ネットワークNは、例えば、LAN(Local Area Network)や、インターネット等のWAN(Wide Area Network)である。
また、図2に示す情報処理システム1に含まれる各装置の数は図示したものに限られない。例えば、図2では、図示の簡略化のため、端末装置10を1台のみ示したが、これはあくまでも例示であって限定されるものではなく、2台以上であってもよい。
端末装置10は、ユーザUによって使用される情報処理装置である。例えば、端末装置10は、スマートフォンやタブレット端末等のスマートデバイス、フィーチャーフォン、PC(Personal Computer)、PDA(Personal Digital Assistant)、カーナビゲーションシステム、スマートウォッチやヘッドマウントディスプレイ等のウェアラブルデバイス(Wearable Device)、スマートグラス等である。
また、かかる端末装置10は、LTE(Long Term Evolution)、4G(4th Generation)、5G(5th Generation:第5世代移動通信システム)等の無線通信網や、Bluetooth(登録商標)、無線LAN(Local Area Network)等の近距離無線通信を介してネットワークNに接続し、情報提供装置100と通信することができる。
情報提供装置100は、例えばPCやサーバ装置、あるいはメインフレーム又はワークステーション等である。なお、情報提供装置100は、クラウドコンピューティングにより実現されてもよい。
〔3.端末装置の構成例〕
次に、図3を用いて、端末装置10の構成について説明する。図3は、端末装置10の構成例を示す図である。図3に示すように、端末装置10は、通信部11と、表示部12と、入力部13と、測位部14と、センサ部20と、制御部30(コントローラ)と、記憶部40とを備える。
(通信部11)
通信部11は、ネットワークN(図2参照)と有線又は無線で接続され、ネットワークNを介して、情報提供装置100との間で情報の送受信を行う。例えば、通信部11は、NIC(Network Interface Card)やアンテナ等によって実現される。
(表示部12)
表示部12は、位置情報等の各種情報を表示する表示デバイスである。例えば、表示部12は、液晶ディスプレイ(LCD:Liquid Crystal Display)や有機ELディスプレイ(Organic Electro-Luminescent Display)である。また、表示部12は、タッチパネル式のディスプレイであるが、これに限定されるものではない。
(入力部13)
入力部13は、ユーザUから各種操作を受け付ける入力デバイスである。入力部13は、例えば、文字や数字等を入力するためのボタン等を有する。また、表示部12がタッチパネル式のディスプレイである場合、表示部12の一部が入力部13として機能する。なお、入力部13は、ユーザUから音声入力を受け付けるマイク等であってもよい。マイクはワイヤレスであってもよい。
(測位部14)
測位部14は、GPS(Global Positioning System)の衛星から送出される信号(電波)を受信し、受信した信号に基づいて、自装置である端末装置10の現在位置を示す位置情報(例えば、緯度及び経度)を取得する。すなわち、測位部14は、端末装置10の位置を測位する。なお、GPSは、GNSS(Global Navigation Satellite System)の一例に過ぎない。
また、測位部14は、GPS以外にも、種々の手法により位置を測位することができる。例えば、測位部14は、位置補正等のための補助的な測位手段として、下記のように、端末装置10の様々な通信機能を利用して位置を測位してもよい。
(Wi-Fi測位)
例えば、測位部14は、端末装置10のWi-Fi(登録商標)通信機能や、各通信会社が備える通信網を利用して、端末装置10の位置を測位する。具体的には、測位部14は、Wi-Fi通信等を行い、付近の基地局やアクセスポイントとの距離を測位することにより、端末装置10の位置を測位する。
(ビーコン測位)
また、測位部14は、端末装置10のBluetooth(登録商標)機能を利用して位置を測位してもよい。例えば、測位部14は、Bluetooth(登録商標)機能によって接続されるビーコン(beacon)発信機と接続することにより、端末装置10の位置を測位する。
(地磁気測位)
また、測位部14は、予め測定された構造物の地磁気のパターンと、端末装置10が備える地磁気センサとに基づいて、端末装置10の位置を測位する。
(RFID測位)
また、例えば、端末装置10が駅改札や店舗等で使用される非接触型ICカードと同等のRFID(Radio Frequency Identification)タグの機能を備えている場合、もしくはRFIDタグを読み取る機能を備えている場合、端末装置10によって決済等が行われた情報とともに、使用された位置が記録される。測位部14は、かかる情報を取得することで、端末装置10の位置を測位してもよい。また、位置は、端末装置10が備える光学式センサや、赤外線センサ等によって測位されてもよい。
測位部14は、必要に応じて、上述した測位手段の一つ又は組合せを用いて、端末装置10の位置を測位してもよい。
(センサ部20)
センサ部20は、端末装置10に搭載又は接続される各種のセンサを含む。なお、接続は、有線接続、無線接続を問わない。例えば、センサ部20は、ウェアラブルデバイス等、端末装置10以外の検知装置であってもよい。図3に示す例では、センサ部20は、加速度センサ21と、ジャイロセンサ22と、気圧センサ23と、気温センサ24と、音センサ25と、光センサ26と、磁気センサ27と、画像センサ(カメラ)28とを備える。
なお、上記した各センサ21~28は、あくまでも例示であって限定されるものではない。すなわち、センサ部20は、各センサ21~28のうちの一部を備える構成であってもよいし、各センサ21~28に加えてあるいは代えて、湿度センサ等その他のセンサを備えてもよい。
加速度センサ21は、例えば、3軸加速度センサであり、端末装置10の移動方向、速度、及び、加速度等の端末装置10の物理的な動きを検知する。ジャイロセンサ22は、端末装置10の角速度等に基づいて3軸方向の傾き等の端末装置10の物理的な動きを検知する。気圧センサ23は、例えば端末装置10の周囲の気圧を検知する。
端末装置10は、上記した加速度センサ21やジャイロセンサ22、気圧センサ23等を備えることから、これらの各センサ21~23等を利用した歩行者自律航法(PDR:Pedestrian Dead-Reckoning)等の技術を用いて端末装置10の位置を測位することが可能になる。これにより、GPS等の測位システムでは取得することが困難な屋内での位置情報を取得することが可能になる。
例えば、加速度センサ21を利用した歩数計により、歩数や歩くスピード、歩いた距離を算出することができる。また、ジャイロセンサ22を利用して、ユーザUの進行方向や視線の方向、体の傾きを知ることができる。また、気圧センサ23で検知した気圧から、ユーザUの端末装置10が存在する高度やフロアの階数を知ることもできる。
気温センサ24は、例えば端末装置10の周囲の気温を検知する。音センサ25は、例えば端末装置10の周囲の音を検知する。光センサ26は、端末装置10の周囲の照度を検知する。磁気センサ27は、例えば端末装置10の周囲の地磁気を検知する。画像センサ28は、端末装置10の周囲の画像を撮像する。
上記した気圧センサ23、気温センサ24、音センサ25、光センサ26及び画像センサ28は、それぞれ気圧、気温、音、照度を検知したり、周囲の画像を撮像したりすることで、端末装置10の周囲の環境や状況等を検知することができる。また、端末装置10の周囲の環境や状況等から、端末装置10の位置情報の精度を向上させることが可能になる。
(制御部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とを備える。
(送信部31)
送信部31は、例えば入力部13を用いてユーザUにより入力された各種情報や、処理部33により処理された各種情報等を、通信部11を介して情報提供装置100へ送信することができる。
また、送信部31は、集約部36により集約されたエンベディングベクトルを、通信部11を介して情報提供装置100へ送信する。このとき、送信部31は、エンベディングベクトルと共に、その時点での位置情報を送信してもよい。
(受信部32)
受信部32は、通信部11を介して、情報提供装置100から提供される各種情報を受信する。例えば、受信部32は、通信部11を介して、情報提供装置100から提供されるベクトル変換モデルや所定の変換規則等を受信する。
また、受信部32は、Bluetooth(登録商標)等の近距離無線通信により、端末装置10の周囲に存在する他の端末装置から、その端末装置に関する情報をベクトル化したエンベディングベクトルを受信する。
(処理部33)
処理部33は、表示部12等を含め、端末装置10全体を制御する。例えば、処理部33は、送信部31によって送信される各種情報や、受信部32によって受信された情報提供装置100からの各種情報を表示部12へ出力して表示させることができる。
(取得部34)
取得部34は、常時/周期的に/所定のタイミングで、端末装置10の位置情報を取得する。例えば、取得部34は、測位部14により測位された端末装置10の位置情報を取得する。また、取得部34は、各センサ21~28によって検知された各種情報に基づいて端末装置10の位置情報を推定して取得する。
また、取得部34は、取得した位置情報を記憶部40に記憶(保存)する。例えば、取得部34は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積する。
また、取得部34は、受信部32が端末装置10の周囲に存在する他の端末装置から受信したエンベディングベクトルを取得し、記憶部40に記憶(保存)する。
また、取得部34は、受信部32が情報提供装置100から受信したベクトル変換モデルや所定の変換規則等を取得し、記憶部40に記憶(保存)する。
(変換部35)
変換部35は、位置情報をベクトルに変換(ベクトル化)する。例えば、変換部35は、エンベディングを行い、取得部34により取得された位置情報をベクトルに変換する。
変換部35は、1分ごとに位置情報を取得していた場合、1分ごとの位置情報を時系列に並べて、各時間帯の30分間(例えば8:01~8:30)の位置情報からエンベディングベクトルを生成する。例えば、変換部35は、30分間における1分ごとの位置情報を時系列に並べたシーケンスデータを生成する。あるいは、変換部35は、30分間における最初の1分間の位置情報とその位置情報に対する1分ごとの差分を時系列に並べたシーケンスデータを生成する。そして、変換部35は、シーケンスデータに基づいて、エンベディングベクトルを生成する。
例えば、変換部35は、シーケンスデータをデータセットとし、ニューラルネットワークによる機械学習の手法等を用いて、シーケンスデータを多次元からなる実数値ベクトルへと変換する。すなわち、変換部35は、例えばRNN(Recurrent Neural Network)やLSTM(Long short-term memory)等を用いた機械学習を経て生成されるベクトル変換モデルにシーケンスデータを入力し、出力としてエンベディングベクトルを取得する。変換部35は、情報提供装置100から、ベクトル変換モデルの提供を受けてもよい。
なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。また、変換部35は、同様の自然言語処理モデルを用いてもよい。
あるいは、変換部35は、所定の変換規則に従って(ルールベースで)、シーケンスデータをエンベディングベクトルに変換してもよい。
但し、シーケンスデータは一例に過ぎない。実際には、例えば位置情報の生データをそのまま時系列に沿って順番にモデルに入力してもよい。
さらに、変換部35は、自装置である端末装置10を示す端末ID(識別情報)をベクトルに変換してエンベディングベクトルを生成してもよい。
(集約部36)
集約部36は、自装置である端末装置10において生成されたエンベディングベクトルと、周囲に存在する他の端末装置から収集したエンベディングベクトルとを集約する。ここでは、集約部36は、変換部35により位置情報から変換されたエンベディングベクトルと、受信部32が他の端末装置から受信したエンベディングベクトルとを結合する。
また、集約部36は、エンベディングベクトルに付加情報を付与してもよい。例えば、集約部36は、エンベディングベクトルにデータタイプ(Data Type)を定義する情報を付与してもよい。すなわち、集約部36は、エンベディングベクトルに付加情報を付与する付与部としても機能する。
また、集約部36は、エンベディングベクトルにノイズを付与してもよい。例えば、集約部36は、エンベディングベクトルにダミーデータ等のノイズを付与する。このとき、集約部36は、エンベディングベクトルの要素におけるダミーデータの配置を、データタイプとして定義してもよい。すなわち、集約部36は、エンベディングベクトルにノイズを付与する付与部としても機能する。
(記憶部40)
記憶部40は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置によって実現される。かかる記憶部40には、各種プログラムや各種データ等が記憶される。ここでは、記憶部40は、例えば入力部13を用いてユーザUにより入力された各種情報や、端末装置10に搭載又は接続された各センサ21~28によって検知された各種情報、測位部14によって測位された端末装置10の位置情報等を記憶する。また、処理部33によって処理された各種情報や、受信部32によって受信された各種情報を記憶する。また、記憶部40は、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等を記憶する。
〔4.情報処理装置の構成例〕
次に、図4を用いて、実施形態に係る情報提供装置100の構成について説明する。図4は、実施形態に係る情報提供装置100の構成例を示す図である。図4に示すように、情報提供装置100は、通信部110と、記憶部120と、制御部130とを有する。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。また、通信部110は、ネットワークN(図2参照)と有線又は無線で接続される。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現される。図4に示すように、記憶部120は、変換情報データベース121と、ベクトル情報データベース122とを有する。
(変換情報データベース121)
変換情報データベース121は、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則(ルール)等に関する各種情報を記憶する。図5は、変換情報データベース121の一例を示す図である。図5に示した例では、変換情報データベース121は、「変換ID」、「変換情報」、「提供先」といった項目を有する。
「変換ID」は、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等を識別するための識別情報を示す。
また、「変換情報」は、変換IDにより識別されるベクトル変換モデルや所定の変換規則等をデータ化したファイルを示す。なお、ベクトル変換モデルや所定の変換規則等は、例えば過去に収集された位置情報を蓄積した既存の位置履歴に基づいて生成されたものであってもよい。
また、「提供先」は、変換IDにより識別されるベクトル変換モデルや所定の変換規則等の提供先となる端末装置10を示す。例えば、「提供先」には、端末IDが記憶されてもよい。提供先となる端末装置10は、複数であってもよい。すなわち、「提供先」には、複数の端末IDが記憶されてもよい。なお、提供先となる端末装置10を特定する必要がなければ、「提供先」の項目は無くてもよい。
例えば、図5に示す例において、変換ID「T1」により識別される変換情報「変換情報#1」であるベクトル変換モデルや所定の変換規則等は、提供先「提供先#1」に提供されていることを示す。
なお、変換情報データベース121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、変換情報データベース121は、変換IDにより識別されるベクトル変換モデルや所定の変換規則等の詳細情報を記憶してもよい。
(ベクトル情報データベース122)
ベクトル情報データベース122は、端末装置10から受信したエンベディングベクトルに関する各種情報を記憶する。図6は、ベクトル情報データベース122の一例を示す図である。図6に示した例では、ベクトル情報データベース122は、「端末ID」、「エンベディングベクトル」、「判定結果」といった項目を有する。
「端末ID」は、エンベディングベクトルの出所となる端末装置10を識別するための識別情報を示す。「端末ID」は、サーバ側で割り当てた任意の番号であってもよいし、端末装置10の連絡先情報(電話番号、メールアドレス等)であってもよい。なお、端末装置10を識別する必要がなければ、「端末ID」の項目は無くてもよい。
また、「エンベディングベクトル」は、端末装置10から受信したエンベディングベクトルを示す。なお、「エンベディングベクトル」は、1台の端末装置10に対して、複数存在していてもよい。例えば、端末装置10が30分ごとにエンベディングベクトルを生成している場合には、30分ごとのエンベディングベクトルが記憶される。
また、「判定結果」は、エンベディングベクトルに基づいて判定されるユーザUの行動(所在、振る舞い、移動等)を示す。なお、「判定結果」は、端末装置10のユーザUの行動に限らず、端末装置10と周囲の他の端末装置との各ユーザの行動を示すものであってもよい。
例えば、図6に示す例において、端末ID「端末#1」により識別される端末装置10から受信したエンベディングベクトル「ベクトル#11」は、端末装置10のユーザUの行動(あるいは、端末装置10と周囲の他の端末装置との各ユーザの行動)が判定結果「判定結果#11」により示される行動であることを示す。
なお、ベクトル情報データベース122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、ベクトル情報データベース122は、受信データ単位で、個々のエンベディングベクトルを識別するための識別情報(ベクトルID等)を記憶してもよい。また、ベクトル情報データベース122は、個々のエンベディングベクトルを受信した日時を示す情報を記憶してもよい。また、ベクトル情報データベース122は、エンベディングベクトルを解釈するためのルールに関する情報を記憶してもよい。また、ベクトル情報データベース122は、ベクトル変換モデルや所定の変換規則等の変換情報を記憶してもよい。
(制御部130)
図4に戻り、説明を続ける。制御部130は、コントローラ(Controller)であり、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等によって、情報提供装置100の内部の記憶装置に記憶されている各種プログラム(情報処理プログラムの一例に相当)がRAM等の記憶領域を作業領域として実行されることにより実現される。図4に示す例では、制御部130は、収集部131と、判定部132と、生成部133と、提供部134とを有する。
(収集部131)
収集部131は、個々の端末装置10からエンベディングベクトルを収集する。すなわち、収集部131は、通信部110を介して、端末装置10からエンベディングベクトルを受信する。
(判定部132)
判定部132は、収集されたエンベディングベクトルを解析し、ユーザUの行動(所在、振る舞い、移動等)を判定する。例えば、判定部132は、集約されたエンベディングベクトルを分離し、分離されたエンベディングベクトルのベクトル値に基づいて、ユーザUの行動を判定する。
また、判定部132は、エンベディングベクトルを特定空間に配置し、ユーザU自身の行動の類似性や変化、及び/又はユーザUと他のユーザとの行動の類似性や相違性を判定する。例えば、判定部132は、集約されたエンベディングベクトルを分離し、分離されたエンベディングベクトルを同じ特定空間に配置する。なお、実際には、分離されたエンベディングベクトルをそれぞれ、ユーザ毎に異なる特定空間に配置してもよい。
なお、判定部132は、エンベディングベクトルにノイズが付与されている場合、エンベディングベクトルからノイズを除去してもよいし、ノイズを含めたままエンベディングベクトルの処理を実行してもよい。
(生成部133)
生成部133は、過去に収集された位置情報を蓄積した既存の位置履歴に基づいて、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則(ルール)等を生成する。
例えば、生成部133は、位置情報とエンベディングベクトルとの組を正解データとしてモデルに学習させることで、位置情報を入力した時にエンベディングベクトルを出力するベクトル変換モデルを生成する。
ここでは、生成部133は、RNN(Recurrent Neural Network)やLSTM(Long short-term memory)等を用いた機械学習により、ベクトル変換モデルを生成する。なお、モデルは、任意の種別及び任意の形式のモデルが採用可能である。例えば、生成部133は、SVM(Support Vector Machine)やDNN(Deep Neural Network)をモデルとして採用してもよい。ここで、DNNは、CNN(Convolutional Neural Network)やRNNであってもよい。また、モデルは、例えば、CNNとRNNとを組み合わせたモデル等、複数のモデルを組み合わせることで実現されるモデルであってもよい。
なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。また、生成部133は、同様の自然言語処理モデルを用いてもよい。
学習は、例えばDNNを利用したディープラーニング(深層学習)等である。また、データマイニングやその他の機械学習アルゴリズムを利用してもよい。生成部133は、上述した各種の学習手法により、モデルの学習を行う。
(提供部134)
提供部134は、生成されたベクトル変換モデルや所定の変換規則等をユーザUの端末装置10に提供する。すなわち、提供部134は、通信部110を介して、生成されたベクトル変換モデルや所定の変換規則等をユーザUの端末装置10に送信する。
〔5.処理手順〕
次に、図7を用いて実施形態に係る端末装置10及び情報提供装置100による処理手順について説明する。図7は、実施形態に係る処理手順を示すシーケンス図である。なお、以下に示す処理手順は、端末装置10の制御部30、又は情報提供装置100の制御部130によって繰り返し実行される。
図7に示すように、情報提供装置100の生成部133は、過去に収集された端末装置10の位置情報を蓄積した既存の位置履歴に基づいて、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等を生成する(ステップS101)。例えば、生成部133は、位置情報とエンベディングベクトルとの組を正解データとしてモデルに学習させることで、位置情報を入力した時にエンベディングベクトルを出力するベクトル変換モデルを生成する。
そして、情報提供装置100の提供部134は、生成されたベクトル変換モデルや所定の変換規則等をユーザUの端末装置10に提供する(ステップS102)。すなわち、提供部134は、通信部110を介して、生成されたベクトル変換モデルや所定の変換規則等をユーザUの端末装置10に送信する。
そして、端末装置10の取得部34は、情報提供装置100から提供されたベクトル変換モデルや所定の変換規則等を取得する(ステップS103)。
そして、端末装置10の取得部34は、常時/周期的に/所定のタイミングで、端末装置10の位置情報を取得する(ステップS104)。例えば、取得部34は、測位部14により測位された端末装置10の位置情報を取得する。また、取得部34は、各センサ21~28によって検知された各種情報に基づいて端末装置10の屋内位置情報を推定して取得する。
そして、取得部34は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積する(ステップS105)。例えば、取得部34は、取得した位置情報を記憶部40に記憶(保存)する。
そして、変換部35は、位置情報を時系列に並べたシーケンスデータを生成する(ステップS106)。
そして、変換部35は、シーケンスデータに基づいて、エンベディングベクトルを生成する(ステップS107)。
例えば、変換部35は、例えばRNN(Recurrent Neural Network)やLSTM(Long short-term memory)等を用いた機械学習を経て生成されるベクトル変換モデルにシーケンスデータを入力し、それぞれの出力としてエンベディングベクトルを取得する。なお、RNNやLSTMは、アテンション(Attention)の仕組みに基づくニューラルネットワークであってもよい。また、変換部35は、同様の自然言語処理モデルを用いてもよい。
あるいは、変換部35は、シーケンスデータを解析し、所定の変換規則に従って(ルールベースで)、シーケンスデータをエンベディングベクトルに変換してもよい。
但し、シーケンスデータは一例に過ぎない。実際には、例えば位置情報の生データをそのまま時系列に沿って順番にモデルに入力してもよい。
そして、集約部36は、自装置である端末装置10において生成されたエンベディングベクトルと、周囲に存在する他の端末装置から収集したエンベディングベクトルとを集約する(ステップS108)。
ここでは、集約部36は、変換部35により位置情報から変換されたエンベディングベクトルと、受信部32が他の端末装置から受信したエンベディングベクトルとを結合する。また、集約部36は、エンベディングベクトルに付加情報を付与してもよい。例えば、集約部36は、エンベディングベクトルにデータタイプ(Data Type)を定義する情報を付与してもよい。また、集約部36は、エンベディングベクトルにノイズを付与してもよい。
そして、端末装置10の送信部31は、集約部36により集約されたエンベディングベクトルを、通信部11を介して情報提供装置100へ送信する(ステップS109)。
そして、情報提供装置100の収集部131は、個々の端末装置10からエンベディングベクトルを収集する(ステップS110)。すなわち、収集部131は、通信部110を介して、端末装置10からエンベディングベクトルを受信する。
そして、情報提供装置100の判定部132は、収集されたエンベディングベクトルを解析し、ユーザUの行動(所在、振る舞い、移動等)を判定する(ステップS111)。
例えば、判定部132は、集約されたエンベディングベクトルを分離し、分離されたエンベディングベクトルのベクトル値に基づいて、ユーザUの行動を判定する。
このとき、判定部132は、集約されたエンベディングベクトルを分離し、分離されたエンベディングベクトルを同じ特定空間に配置し、ユーザU自身の行動の類似性や変化、及び/又はユーザUと他のユーザとの行動の類似性や相違性を判定してもよい。
なお、情報提供装置100の判定部132は、エンベディングベクトルにノイズが付与されている場合、エンベディングベクトルからノイズを除去してもよいし、ノイズを含めたままエンベディングベクトルの解析を実行してもよい。
また、情報提供装置100の生成部133は、端末装置10から受信したエンベディングベクトルに基づいて、ベクトル変換モデルや所定の変換規則等を更新してもよい。
〔6.変形例〕
上述した端末装置10及び情報提供装置100は、上記実施形態以外にも種々の異なる形態にて実施されてよい。そこで、以下では、実施形態の変形例について説明する。
上記実施形態において、情報提供装置100は、エンベディングベクトルが示す値により、ユーザUが「山に行った」、「海に行った」、「地方に行った」、「外国に行った」等の行動を判定してもよい。また、ユーザUが「旅行に行った」、「出張した」等の行動を判定してもよい。また、ユーザUが「日帰りした」、「宿泊した」等の行動を判定してもよい。
また、上記実施形態において、端末装置10は、情報提供装置100(サーバ側)に、ユーザUの行動に関する詳細な情報を知らせたくない場合、位置情報を蓄積する際、又はエンベディングに先立って、位置情報の端数処理(丸め処理)を行い、位置情報を丸めて精度の粗い位置情報に変換してもよい。例えば、端末装置10は、位置情報がGPS(Global Positioning System)座標の緯度経度情報である場合、緯度と経度の10進角度での小数点以下(度分秒法での分以下)の値の切り上げ又は切り捨て(四捨五入でも可)を行い、大まかな値の位置情報に変換する。これにより、ユーザUの行動に関する情報について、端末装置10から情報提供装置100(サーバ側)に伝える情報の内容を制限することができる。また、機械学習の学習データとしての位置情報の情報量を削減し、処理の負荷を軽減することができる。
また、上記実施形態において、エンベディングベクトルの要素の値は、便宜上、「0」と「1」とで表現しているが、実際には、「2」以上の数値や、複数桁の数値や、整数部分と小数部分とを有する数値であってもよい。すなわち、実数であればよい。これにより、多次元のエンベディングベクトルの要素において複数の情報や詳細な情報を表現することができる。
また、上記実施形態において、端末装置10は、取得した位置情報を位置履歴(例えば、ロケーション履歴、行動履歴等)として蓄積しているが、位置履歴の蓄積が制限又は禁止されている場合には、ベクトル化した状態で蓄積してもよい。例えば、端末装置10は、個々の位置情報が示す場所に基づいて、位置情報を、「自宅にいる」、「職場にいる」、「店舗にいる」、「屋外にいる」等を示すベクトル値に変換して蓄積してもよい。そして、時系列に沿って同じベクトル値が連続している場合、それらを一括してエンベディングベクトルとしてもよい。
また、上記実施形態において、端末装置10又は情報提供装置100は、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルや所定の変換規則等を、個々のユーザUの性質や状況に応じて個別に調整してもよい。例えば、ベクトル変換モデルや所定の変換規則等をカスタマイズしてもよい。
また、上記実施形態において、フェデレーテッドラーニング(Federated Learning)等を用いて、位置情報をエンベディングベクトルに変換するためのベクトル変換モデルを生成してもよい。例えば、フェデレーテッドラーニングでは、個々の端末装置10は、ベクトル変換モデルに対し、それぞれ位置情報を学習データとして機械学習を行い、元のモデルと学習後のモデルとの差分データを情報提供装置100に送信する。情報提供装置100は、差分データを各端末装置10から受信し、これらを統合して学習し、共通モデルを生成する。そして、情報提供装置100は、生成された共通モデルのパラメータ等を各端末装置10に提供する。このように、フェデレーテッドラーニングを用いることで、学習データである端末の位置情報をサーバ側に提供することなく学習を行うことが可能であるため、ユーザの個人情報やプライバシーに配慮することができる。
〔7.効果〕
上述してきたように、本願に係る情報処理装置(端末装置10)は、位置情報を取得する取得部34と、位置情報をベクトルに変換する変換部35と、周囲の他の端末装置からベクトルを収集して自身のベクトルに集約する集約部36と、集約されたベクトルを送信する送信部31と、を備える。例えば、変換部35は、機械学習により得られたベクトル変換モデルを用いて、位置情報を、ベクトルに変換する。あるいは、変換部35は、所定の変換規則に従って、位置情報を、ベクトルに変換する。また、集約部36は、集約されたベクトルに付加情報(例えばデータタイプ等)を付与してもよい。さらに、集約部36は、集約されたベクトルにノイズを付与してもよい。
これにより、情報処理装置は、位置情報をエンベディングし、周囲に存在する他の端末のエンベディング情報とともに1つに束ねて送信することができる。
〔8.ハードウェア構成〕
また、上述した実施形態に係る端末装置10や情報提供装置100は、例えば図8に示すような構成のコンピュータ1000によって実現される。以下、情報提供装置100を例に挙げて説明する。図8は、ハードウェア構成の一例を示す図である。コンピュータ1000は、出力装置1010、入力装置1020と接続され、演算装置1030、一次記憶装置1040、二次記憶装置1050、出力I/F(Interface)1060、入力I/F1070、ネットワークI/F1080がバス1090により接続された形態を有する。
演算装置1030は、一次記憶装置1040や二次記憶装置1050に格納されたプログラムや入力装置1020から読み出したプログラム等に基づいて動作し、各種の処理を実行する。演算装置1030は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等により実現される。
一次記憶装置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)、ファイルサーバ等であってもよい。
出力I/F1060は、ディスプレイ、プロジェクタ、及びプリンタ等といった各種の情報を出力する出力装置1010に対し、出力対象となる情報を送信するためのインターフェイスであり、例えば、USB(Universal Serial Bus)やDVI(Digital Visual Interface)、HDMI(登録商標)(High Definition Multimedia Interface)といった規格のコネクタにより実現される。また、入力I/F1070は、マウス、キーボード、キーパッド、ボタン、及びスキャナ等といった各種の入力装置1020から情報を受信するためのインターフェイスであり、例えば、USB等により実現される。
また、出力I/F1060及び入力I/F1070はそれぞれ出力装置1010及び入力装置1020と無線で接続してもよい。すなわち、出力装置1010及び入力装置1020は、ワイヤレス機器であってもよい。
また、出力装置1010及び入力装置1020は、タッチパネルのように一体化していてもよい。この場合、出力I/F1060及び入力I/F1070も、入出力I/Fとして一体化していてもよい。
なお、入力装置1020は、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、又は半導体メモリ等から情報を読み出す装置であってもよい。
ネットワークI/F1080は、ネットワークNを介して他の機器からデータを受信して演算装置1030へ送り、また、ネットワークNを介して演算装置1030が生成したデータを他の機器へ送信する。
演算装置1030は、出力I/F1060や入力I/F1070を介して、出力装置1010や入力装置1020の制御を行う。例えば、演算装置1030は、入力装置1020や二次記憶装置1050からプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行する。
例えば、コンピュータ1000が情報提供装置100として機能する場合、コンピュータ1000の演算装置1030は、一次記憶装置1040上にロードされたプログラムを実行することにより、制御部130の機能を実現する。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器から取得したプログラムを一次記憶装置1040上にロードし、ロードしたプログラムを実行してもよい。また、コンピュータ1000の演算装置1030は、ネットワークI/F1080を介して他の機器と連携し、プログラムの機能やデータ等を他の機器の他のプログラムから呼び出して利用してもよい。
〔9.その他〕
以上、本願の実施形態を説明したが、これら実施形態の内容により本発明が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
例えば、上述した情報提供装置100は、複数のサーバコンピュータで実現してもよく、また、機能によっては外部のプラットホーム等をAPI(Application Programming Interface)やネットワークコンピューティング等で呼び出して実現するなど、構成は柔軟に変更できる。
また、上述してきた実施形態及び変形例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。