以下に、本願に係る認証装置、認証方法、及び認証プログラムを実施するための形態(以下、「実施形態」と呼ぶ)について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る認証装置、認証方法、及び認証プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
(実施形態)
〔1.認証処理〕
図1を用いて、実施形態に係る認証処理の一例について説明する。図1は、実施形態に係る認証処理の一例を示す図である。図1では、認証装置100がIoT(Internet of Things)機器10であるキーボードへのユーザの入力(以下、「キーボード入力」ともいう)におけるユーザの行動情報を取得する場合を示す。例えば、キーボードであるがIoT機器10は、各種センサを有し、ユーザがキーボード入力する際の圧力や時間等を検知可能である。また、図1では、認証装置100がユーザの過去の行動情報(以下、「行動パターン」ともいう)をグラフ構造化したグラフデータ(グラフ情報)を検索することにより、取得した行動情報に類似する行動パターン(以下、「類似パターン」ともいう)を抽出する場合を示す。図1では、認証装置100は、各行動パターンに対応するベクトルデータ(「ベクトル情報」や、単に「ベクトル」ともいう)を用いて行動パターンをグラフ構造化したグラフ情報を用いる。また、行動パターンには、その行動パターンに対応する行動を行ったユーザ(対応ユーザ)が関連付けられている。なお、認証装置100が用いる情報は、ベクトルに限らず、各行動パターンの類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、認証装置100は、各行動パターンに対応する所定のデータや値を用いて行動パターンをグラフ構造化したグラフ情報を用いてもよい。例えば、認証装置100は、各行動パターンから生成された所定の数値(例えば2進数の値や16進数の値)を用いて行動パターンをグラフ構造化したグラフ情報を用いてもよい。また、図1の例では、ユーザのキーボード入力における行動情報を一例として示すが、ユーザの行動はキーボード入力に限らず、種々の行動であってもよい。すなわち、対象とする行動パターン(オブジェクト)は、センサ等により検知し、情報が取得可能であり、各行動パターンの類似性を表現可能であれば、どのような行動(情報)であってもよい。なお、ベクトルに代えて、データ間の距離(類似度)が定義されていれば任意の形態のデータであっても良い。
〔1−1.グラフ情報について〕
また、認証装置100は、図1中のグラフ情報GR11に示すように、各ベクトル(ノード)が有向エッジにより連結されたグラフデータを対象に認証処理を行う。なお、図1中のグラフ情報GR11に示すようなグラフ情報は、認証装置100が生成してもよいし、認証装置100は、図1中のグラフ情報GR11に示すようなグラフ情報を情報提供装置50(図2参照)等の他の外部装置から取得してもよい。なお、グラフ情報GR11は、ユーザがキーボードにより単語「talk」を入力する際に取得(検知)された行動情報(行動パターン)をグラフ構造化したグラフ情報である。
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「A」から所定のノード「B」に連結される有向エッジとは、参照元をノード「A」とし、参照先をノード「B」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。
例えば、このようにノード「A」を参照元とするエッジをノード「A」の出力エッジという。また、例えば、このようにノード「B」を参照先とするエッジをノード「B」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する2つのノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
例えば、認証装置100は、数百万〜数億単位の行動パターンに対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。図1の例では、説明を簡単にするために、8個のノードを図示して処理の概要を説明する。例えば、認証装置100は、図1中のグラフ情報GR11に示すように、ノードN1、N2、N3等に示すような複数のノード(ベクトル)を含むグラフ情報を取得する。また、図1の例では、グラフ情報GR11における各ノードは、そのノードとの間の距離が近い方から所定数のノードへのエッジ(出力エッジ)が連結される。例えば、所定数は、目的や用途等に応じて、2や5や10や100等の種々の値であってもよい。例えば、所定数が2である場合、ノードN1からは、ノードN1からの距離が最も近いノード及び2番目に距離が近い2つのノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル(N次元ベクトル)間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
また、このように「ノードN*(*は任意の数値)」と記載した場合、そのノードはノードID「N*」により識別されるノードであることを示す。例えば、「ノードN1」と記載した場合、そのノードはノードID「N1」により識別されるノードである。
また、図1中のグラフ情報GR11では、ノードN10は、ノードN7へ向かう有向エッジであるエッジE7が連結される。すなわち、ノードN10は、ノードN7とエッジE7により連結される。このように「エッジE*(*は任意の数値)」と記載した場合、そのエッジはエッジID「E*」により識別されるエッジであることを示す。例えば、「エッジE11」と記載した場合、そのエッジはエッジID「E11」により識別されるエッジである。例えば、ノードN10を参照元とし、ノードN7を参照先として連結されるエッジE7により、ノードN10からノードN7に辿ることが可能となる。この場合、有向エッジであるエッジE7は、ノードN10を中心として識別される場合、出力エッジとなり、ノードN7を中心として識別される場合、入力エッジとなる。また、図1のグラフ情報GR11中の双方向矢印は、両方のノードから他方のノードへの有向エッジが連結されることを示す。例えば、グラフ情報GR11中のノードN2とノードN451との間の双方向矢印は、ノードN2からノードN451へ向かう有向エッジと、ノードN451からノードN2へ向かう有向エッジとの2つのエッジが連結されることを示す。
また、図1中のグラフ情報GR11は、ユークリッド空間であってもよい。また、図1に示すグラフ情報GR11は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報GR11は、多次元空間である。例えば、図1に示すグラフ情報GR11は、平面上に図示するため2次元の態様にて図示されるが、例えば100次元や1000次元等の多次元空間であるものとする。
ここで、ベクトルデータ間の距離は、行動パターンの類似性を示し、距離が近いほど類似している。本実施形態においては、グラフ情報GR11における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象(行動パターン)の類似性が、グラフ情報GR11内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図1に示す例においては、グラフ情報GR11における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報GR11における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図1中のグラフ情報GR11において、ノードID「N35」により識別されるノードと、ノードID「N693」により識別されるノードとは近接している、すなわち距離が短い。そのため、ノードID「N35」により識別されるノードに対応するオブジェクトと、ノードID「N693」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
また、例えば、図1中のグラフ情報GR11において、ノードID「N7」により識別されるノードと、ノードID「N2」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードID「N7」により識別されるノードに対応するオブジェクトと、ノードID「N2」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。
〔1−2.ベクトルの生成例〕
また、ここでいう、各ノード(ベクトル)は、各オブジェクト(行動パターン)に対応する。行動情報や行動パターンが様々なユーザの状態等を示す数値データであれば、それをベクトルデータとして、そのまま扱うことも可能である。しかし、行動情報や行動パターンが、テキスト、画像、または、音声であったりする場合には、ベクトルデータへの変換が必要となる。そこで、図1の例では、各行動の行動データ(行動情報)から抽出された特徴量により生成された多次元(N次元)のベクトルがオブジェクトであってもよい。
例えば、認証装置100は、行動データの特徴を抽出するモデルを用いて各行動の行動データからN次元ベクトルを生成してもよい。図1の例では、認証装置100は、モデル情報記憶部124(図7参照)に示すように、モデルID「M1」により識別されるモデル(モデルM1)を用いて、各行動の行動データからベクトルを生成する。上記のように、「モデルM*(*は任意の数値)」と記載した場合、そのモデルはモデルID「M*」により識別されるモデルであることを示す。例えば、「モデルM1」と記載した場合、そのモデルはモデルID「M1」により識別されるモデルである。また、モデル情報記憶部124に示すように、モデルM1は用途「特徴抽出(キーボード入力)」、すなわちキーボード入力における行動のデータからの特徴抽出のために用いられるモデルであり、その具体的なモデルデータが「モデルデータMDT1」であることを示す。
例えば、認証装置100は、モデルM1にキーボード入力におけるユーザの行動データを入力することにより、モデルM1中の各要素(ニューロン)の値を演算し、入力した行動データと同様の情報を出力する。具体的には、認証装置100は、モデルM1に任意の1つの単語のキーボード入力におけるユーザの行動データを入力することにより、モデルM1中の各要素(ニューロン)の値を演算し、入力した行動データと同様の情報を出力する。例えば、認証装置100は、中間層の各要素(ニューロン)の値を特徴量として抽出し、ユーザによる各単語のキーボード入力に対応するN次元のベクトルデータを生成してもよい。そして、認証装置100は、各単語のキーボード入力に対応するN次元のベクトルデータに入力を行ったユーザの識別する情報を関連付けてもよい。
ここで、図11を用いて、ユーザによる各単語のキーボード入力に対応するベクトルデータの生成の一例を示す。図11は、実施形態に係る特徴量の抽出の一例を示す図である。図11は、モデルM1の概念図である。なお、図11では、各要素(ニューロン)の各接続関係を示す線の図示を省略する。図11に示すように、モデルM1は、入力層ILと、中間層CLと、出力層OLとを含む。例えば、モデルM1の入力層ILは、行動データが入力される層である。また、出力層OLは、入力層ILへの入力に応じて、入力された行動データと同様の情報を出力される層である。
また、例えば、中間層CLの中央部の最も圧縮された圧縮層RPは、入力された行動データの特徴を表現する層である。例えば、モデルM1の中間層CLにおいて、入力層ILから圧縮層RPまでの間は、エンコードの処理を行う部分に対応する。モデルM1の中間層CLにおいて、入力層ILから圧縮層RPまでの間は、入力された行動データの特徴を圧縮する処理を行う部分に対応する。例えば、モデルM1の中間層CLにおいて、圧縮層RPから出力層OLまでの間は、デコードの処理を行う部分に対応する。モデルM1の中間層CLにおいて、圧縮層RPから出力層OLまでの間は、圧縮された行動データを復元する処理を行う部分に対応する。
例えば、認証装置100は、圧縮層RPに含まれるニューロンNL1やニューロンNL2等の情報をベクトルに用いてもよい。例えば、認証装置100は、ある行動の行動データが入力された場合に、算出されるニューロンNL1に対応する値VE1やニューロンNL2に対応する値VE2をベクトルの要素(一の次元の値)として抽出してもよい。例えば、認証装置100は、ある行動の行動データが入力された場合に、算出されるニューロンNL1に対応する値VE1をその行動のベクトルの1次元目の要素として抽出してもよい。また、例えば、認証装置100は、ある行動の行動データが入力された場合に、算出されるニューロンNL2に対応する値VE2をその行動のベクトルの2次元目の要素として抽出してもよい。例えば、認証装置100は、ユーザによる各単語のキーボード入力の行動データをモデルM1に入力することにより、ユーザによる各単語のキーボード入力に対応するベクトルを生成してもよい。なお、認証装置100は、ユーザによる各単語のキーボード入力に対応するベクトルを情報提供装置50等の他の外部装置から取得してもよい。なお、認証装置100は、ベクトルの各要素として、各ニューロンに対応する値自体を用いてもよいし、各ニューロンに対応する値に所定の係数を乗算した値を用いてもよい。また、図1の例では説明を簡単にするために、ベクトルの各要素(値)が整数である場合を示すが、ベクトルの各要素(値)は、小数点以下の数値を含む実数であってもよい。
なお、認証装置100は、圧縮層RPの要素(ニューロン)に限らず、中間層CL中の他の要素(ニューロン)の情報をベクトルに用いてもよい。例えば、認証装置100は、エンコード部分のニューロンNL3やデコード部分のニューロンNL4等の情報をベクトルに用いてもよい。例えば、認証装置100は、ある行動の行動データが入力された場合に、算出されるニューロンNL3に対応する値VE3やニューロンNL4に対応する値VE4をベクトルの要素(一の次元の値)として抽出してもよい。なお、上記は、一例であり、認証装置100は、オートエンコーダに限らず、種々のモデルを用いて、行動データからの特徴抽出を行ってもよい。例えば、各行動パターンを識別するように学習させたモデルを生成して、その中間層をベクトルデータとして抽出しても良い。また、例えば、トリプレットロス(triplet loss)といった類似性を学習する方法によりモデルを生成しても良い。また、認証装置100は、モデルを用いずに、特徴抽出を行ってもよい。例えば、認証装置100は、認証装置100の管理者等が設定して特徴(素性)に対応する情報を行動データから抽出し、ベクトルを生成してもよい。例えば、認証装置100は、一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等の特徴(素性)に対応する情報を行動データから抽出し、ベクトルを生成してもよい。
また、例えば、認証装置100は、情報提供装置50等の他の外部装置からモデルM1を取得してもよい。なお、認証装置100は、行動パターン情報記憶部121(図4参照)に記憶された対象単語「talk」のキーボード入力の行動情報AC1、AC2、AC451等を入力として、モデルM1を生成してもよい。例えば、認証装置100は、外部装置から取得した対象単語「talk」のキーボード入力の行動情報AC1、AC2、AC451等を入力として、モデルM1を生成してもよい。例えば、行動情報AC1、AC2、AC451等は、ユーザが対象単語を入力する際に検知(取得)される各種情報を含んでもよい。例えば、行動情報AC1、AC2、AC451等は、一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含んでもよい。例えば、行動情報AC1、AC2、AC451等の行動情報は、対象単語「talk」を入力するまでに要する時間を文字数4で除した時間を、一文字を入力する平均時間として含んでもよい。例えば、行動情報AC1、AC2、AC451等の行動情報は、対象単語「talk」を入力するまでに要する時間からキーボードが押下されている時間を減算し、減算し算出した時間を文字数4で除した時間を、各文字間の平均間隔として含んでもよい。例えば、行動情報AC1、AC2、AC451等の行動情報は、対象単語「talk」の各文字を入力する際のユーザのキーボードを押す圧力値の合算を文字数4で除した時間を、キーボードを押す平均圧力として含んでもよい。なお、上記は一例であり、行動情報には、どのような情報が含まれてもよい。また、認証装置100は、行動情報AC1、AC2、AC451に限らず、種々の単語のキーボード入力における行動情報を入力として、モデルM1を生成してもよい。
認証装置100は、行動情報(行動データ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルM1を生成してもよい。なお、認証装置100は、ベクトル生成に用いるモデルを情報提供装置50等の他の外部装置から取得してもよい。
〔1−3.処理例〕
ここから、認証装置100は、キーボードであるIoT機器10(TID11)から単語「talk」のキーボード入力における行動情報を取得し、その行動情報に基づいてユーザを認証する場合を一例として説明する。
図1では、ID「TID11」により識別されるIoT機器10(TID11)であるキーボードは、パソコンPC11における入力インターフェイスである。以下では、ID「TID11」により識別されるキーボードであるIoT機器10(TID11)を単にIoT機器10と記載する場合がある。この場合、キーボードであるIoT機器10は、ユーザによるキーボード入力をパソコンPC11における入力として受け付けつつ、認証装置100へ送信する。すなわち、IoT機器10を使用するユーザは、パソコンPC11における入力手段としてIoT機器10を使用しつつ、そのキーボード入力により、認証装置100による認証を受けることができる。以下、具体的な認証の手順を説明する。
図1の例では、ユーザU1は、パソコンPC11を利用しており、パソコンPC11におけるキーボード入力を行うIoT機器10を操作する。すなわち、ユーザU1は、パソコンPC11の入力インターフェイスとしてIoT機器10を使用し、キーボード入力を行う。
まず、ユーザU1は、IoT機器10により単語「talk」のキーボード入力を行う(ステップS10)。これにより、IoT機器10は、ユーザU1の単語「talk」のキーボード入力を受け付ける。また、IoT機器10は、ユーザU1の単語「talk」のキーボード入力した際の行動情報AC11を取得(検知)する。例えば、行動情報AC11は、ユーザU1が単語「talk」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
そして、ユーザU1の単語「talk」のキーボード入力した際の行動情報AC11を取得したIoT機器10は、行動情報AC11を認証用情報として認証装置100へ送信する。また、図1の例では、IoT機器10は、行動情報AC11とともに、自装置(行動情報AC11を取得したIoT機器10)を識別する情報(IoT機器情報)を認証装置100へ送信する。IoT機器10は、認証装置100がIoT機器10を特定可能であれば、どのような情報を認証装置100へ送信してもよい。例えば、IoT機器10は、キーボードであるIoT機器10を識別するID「TID11」を、行動情報AC11とともに認証装置100へ送信する。このように、図1の例では、IoT機器10は、行動情報AC11及びIoT機器10を識別するID「TID11」を認証用情報として認証装置100へ送信する。
そして、認証装置100は、IoT機器10から行動情報AC11及びIoT機器10を識別するID「TID11」を含む認証用情報を取得する(ステップS11)。また、IoT機器10から認証用情報を取得した認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する処理を行う。まず、認証装置100は、IoT機器10における単語「talk」のキーボード入力に対応する行動データ(行動情報AC11)からグラフ情報の探索に用いるベクトルを生成する。図1の例では、認証装置100は、処理群PS11に示すような処理により、行動情報AC11に対応するベクトルを生成する。認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC11をモデルM1に入力する(ステップS12)。例えば、認証装置100は、単語「talk」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む行動情報AC11をモデルM1に入力する。そして、認証装置100は、行動情報AC11の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS13)。例えば、認証装置100は、行動情報AC11が入力されたモデルM1中の各要素を用いて、ベクトルデータを生成する。
図1の例では、認証装置100は、行動情報AC11が入力されたモデルM1中の各要素の値を用いて、ベクトルデータVD11(単に「ベクトルVD11」ともいう)を生成する。例えば、認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC11が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。例えば、認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC11が入力された場合に、算出されるニューロンNL1に対応する値VE1をベクトルVD11の1次元目の要素として抽出してもよい。また、例えば、認証装置100は、ある行動の行動データが入力された場合に、算出されるニューロンNL2に対応する値VE2をベクトルVD11の2次元目の要素として、ベクトルVD11を生成する。図1の例では、認証装置100は、1次元目の要素が「35」であり、2次元目の要素が「63」であるようなベクトルVD11を生成する。
そして、認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC11に類似する行動パターン(類似パターン)を検索する(ステップS14)。例えば、認証装置100は、非特許文献1に開示されるような近傍検索の技術等の種々の従来技術を適宜用いて、行動情報AC11の類似パターンを検索してもよい。
図1の例では、認証装置100は、情報群INF11に示すように、グラフ情報GR11やインデックス情報IND11を用いて、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを検索する。例えば、認証装置100は、グラフ情報記憶部123(図6参照)から単語「talk」に関するグラフ情報GR11を取得する。また、例えば、認証装置100は、インデックス情報記憶部122(図5参照)から、単語「talk」に関するインデックス情報IND11を取得する。例えば、認証装置100は、インデックス情報記憶部122から、グラフ情報GR11における検索の起点となるノード(以下、「起点ベクトル」ともいう)の決定に用いるインデックス情報IND11を取得する。なお、インデックス情報IND11は、認証装置100が生成してもよいし、認証装置100は、インデックス情報IND11を情報提供装置50等の他の外部装置から取得してもよい。
そして、認証装置100は、IoT機器10(TID11)における単語「talk」のキーボード入力(クエリ)に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。図1の例では、認証装置100は、行動情報AC11のベクトルVD11に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。すなわち、認証装置100は、ベクトルVD11とインデックス情報IND11とを用いて、グラフ情報GR11における起点ベクトルを決定する。
図1中のインデックス情報IND11は、図5中のインデックス情報記憶部122に示す階層構造を有する。例えば、インデックス情報IND11は、ルートRTの直下に位置する第1階層のノード(ベクトル)が、節点VT1、VT2等であることを示す。また、例えば、インデックス情報IND11は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4(図示せず)であることを示す。また、例えば、インデックス情報IND11は、節点VT2−2の直下の第3階層のノードが、ノードN35、ノードN451、ノードN693、すなわちグラフ情報GR11中のノード(ベクトル)であることを示す。
例えば、認証装置100は、図1中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ベクトルを決定する(ステップS15)。図1の例では、認証装置100は、ベクトルVD11を生成した後、インデックス情報IND11を上から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ(IoT機器10(TID11)における単語「talk」のキーボード入力)に対応する起点ベクトルを決定することができる。
例えば、認証装置100は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード(ベクトル))まで辿ることにより、ベクトルVD11に対応する起点ベクトルを決定してもよい。図1の例では、例えば、認証装置100は、インデックス情報IND11をルートRTからノードN451まで辿ることにより、ノードN451を起点ベクトルとして決定する。なお、図1の例では、説明を簡単にするために、起点ベクトルを1つ決定する場合を示すが、認証装置100は、複数個の起点ベクトルを決定してもよい。例えば、認証装置100は、ノードN451、N35、N693、N2等の複数個のベクトル(ノード)を起点ベクトルとして決定してもよい。例えば、抽出装置100は、木構造に関する種々の従来技術を適宜用いて、インデックス情報IND11をルートRTからリーフノードまで辿ることにより、辿りついたリーフノードを起点ベクトルとして決定してもよい。例えば、抽出装置100は、ベクトルVD11との類似度に基づいて、インデックス情報IND11を下へ辿ることにより、起点ベクトルを決定してもよい。例えば、抽出装置100は、ルートRTから節点VT1、VT2等のいずれの節点に辿るかを、ベクトルVD11と節点VT1、VT2との類似度に基づいて決定してもよい。例えば、抽出装置100は、ルートRTから節点VT1、VT2等のうち、ベクトルVD11との類似度が最も高い節点VT2へ辿ると決定してもよい。また、例えば、抽出装置100は、節点VT2から節点VT2−1〜VT2−4等のうち、ベクトルVD11との類似度が最も高い節点VT2−2へ辿ると決定してもよい。また、例えば、抽出装置100は、節点VT2−2からノードN35、N451、N693等のうち、ベクトルVD11との類似度が最も高い節点ノードN451へ辿ると決定してもよい。なお、インデックス情報IND11を用いずに、検索開始時にグラフ情報GR11からランダムに1つ以上のノードを選択し、それを起点ベクトルとしてもよいし、または、予め指定された1つ以上のノードを起点ベクトルとしても良い。
そして、認証装置100は、グラフ情報GR11を検索することにより、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する(ステップS16)。例えば、認証装置100は、ノードN451の近傍に位置するノードを類似パターンとして抽出する。例えば、認証装置100は、ノードN451からの距離が近いノードを類似パターンとして抽出する。例えば、認証装置100は、ノードN451を起点として、エッジを辿ることにより、ノードN451から到達可能なノードを類似パターンとして抽出する。例えば、認証装置100は、所定数(例えば、2個や10個等)のノードを類似パターンとして抽出する。例えば、認証装置100は、図12に示すような検索処理により、行動情報AC11の類似パターンを抽出してもよいが、詳細は後述する。図1の例では、認証装置100は、ノードN451を起点として、グラフ情報GR11を探索することにより、ノードN451やノードN35を類似パターンとして抽出する。
そして、認証装置100は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ(以下、「対応ユーザ」ともいう)を抽出する(ステップS17)。例えば、認証装置100は、行動パターン情報記憶部121(図4参照)に記憶された行動パターンとユーザとの対応付けに基づいて、対応ユーザを抽出する。図1の例では、認証装置100は、行動パターン情報記憶部121のうち、単語「talk」に対応する行動パターンデータセット121−1中のパターンIDとユーザとの対応付けに基づいて、対応ユーザを抽出する。なお、図1では、行動パターンデータセット121−1に記憶された情報のうち、説明に必要な情報のみを図示する。
例えば、認証装置100は、ノードN451に対応するパターンID「PT451」に関連付けられたユーザU1や、ノードN35に対応するパターンID「PT35」に関連付けられたユーザU50(図示せず)を対応ユーザとして抽出する。
そして、認証装置100は、抽出した対応ユーザに基づいて、ユーザを認証する(ステップS18)。例えば、認証装置100は、抽出した対応ユーザに基づいて、IoT機器10(TID11)において単語「talk」のキーボード入力を行ったユーザを認証する。
例えば、認証装置100は、ユーザ情報記憶部125に記憶されたユーザIDと、そのユーザに対応付けられたIoT機器のIDとに基づいて、認証を行う。図1の例では、認証装置100は、ユーザ情報記憶部125に示すような、対応ユーザとして抽出されたユーザU1に、単語「talk」のキーボード入力が行われ行動情報AC11が取得されたキーボードであるIoT機器10(TID11)が関連付けられていることを示す情報を取得する。そのため、認証装置100は、IoT機器10(TID11)を利用するユーザがIoT機器10(TID11)に対応付けられたユーザU1であるとして認証する。すなわち、認証装置100は、IoT機器10(TID11)を利用するユーザがIoT機器10(TID11)に対応付けられたユーザU1であり、IoT機器10(TID11)を利用する正当なユーザと認証する。
そして、認証装置100は、IoT機器10へ認証結果を送信する(ステップS19)。例えば、認証装置100は、IoT機器10へ利用しているユーザが正当なユーザであることを示す情報を送信する。例えば、認証装置100は、IoT機器10へ利用しているユーザがIoT機器10の所有者であるユーザU1であることを示す情報を送信する。なお、認証装置100は、認証がOKである、すなわち正当にユーザの認証が行われた場合、IoT機器10へ認証結果を送信しなくてもよい。また、例えば、認証装置100は、認証がNGである、すなわちユーザの認証されなかった場合、IoT機器10へ認証結果を送信してもよい。なお、この点については図13の説明で詳述する。
上述したように、認証装置100は、グラフ情報GR11やインデックス情報IND11を用いて、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する。例えば、認証装置100は、インデックス情報IND11を用いて、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する際のグラフ情報GR11における起点ベクトルを決定する。そして、認証装置100は、決定した起点ベクトルを起点としてグラフ情報GR11を探索することにより、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する。そして、認証装置100は、抽出した類似パターンに基づいて対応ユーザを抽出し、対応ユーザとIoT機器との対応付けに基づいて、ユーザの認証を行う。これにより、認証装置100は、適切な認証を行うことができる。例えば、ディープラーニングといった手法で、行動パターンを識別するという方法もあるが、多種多様な行動パターンが存在する場合においては、各行動パターンの事例(行動情報)が少ないので、学習ができずに識別精度を向上させることが難しいという問題がある。例えば、ディープラーニングといった学習手法で生成したモデルを用いて、そのモデルに行動情報を入力し、出力されたスコアから行動パターンを識別するという方法もあるが、多種多様な不具合が存在する場合においては、各不具合の事例が少ないため、モデルの精度を向上させることが難しく、行動パターンの識別精度を向上させることが難しい。一方で、抽出装置100は、各行動パターンから抽出した特徴を基に生成した複数のベクトルのグラフ構造化したグラフ情報を用いて検索を行うことにより、取得(検知)した行動情報に類似する類似行動パターンを適切に抽出することができる。そのため、抽出装置100は、取得(検知)した行動情報がどのような行動パターンに該当するかを精度よく識別することができる。そのため、認証装置100は、適切な認証を行うことができる。
〔1−4.複数の単語の認証〕
〔1−4−1.処理例〕
図1の例では、1つの単語による認証の例を示したが、認証装置100は、複数の単語のキーボード入力に基づいてユーザを認証してもよい。この点について、図13を用いて説明する。図13は、実施形態に係る認証処理の一例を示す図である。なお、図13における認証処理については、図1で説明した処理は適宜説明を省略する。
図13では、あるユーザ(以下、「ユーザX」とする)がパソコンPC11のキーボードであるIoT機器10(TID11)を用いてパソコンPC11の操作を行っている場合を示す。図13では、認証装置100は、キーボードであるIoT機器10(TID11)から単語「talk」、「is」、「good」等の複数の単語のキーボード入力における複数の行動情報を取得し、各行動情報に基づいてユーザを認証する場合を一例として説明する。
図13の例では、ユーザX(図示省略)は、パソコンPC11を利用しており、パソコンPC11におけるキーボード入力を行うIoT機器10を操作する。すなわち、ユーザXは、パソコンPC11の入力インターフェイスとしてIoT機器10を使用し、キーボード入力を行う。
まず、ユーザXは、1つ目の単語として、IoT機器10により単語「talk」のキーボード入力を行う(ステップS51)。これにより、IoT機器10は、ユーザXの単語「talk」のキーボード入力を受け付ける。また、IoT機器10は、ユーザXの単語「talk」のキーボード入力した際の行動情報AC51を取得(検知)する。例えば、行動情報AC51は、ユーザXが単語「talk」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
そして、ユーザXの単語「talk」のキーボード入力した際の行動情報AC51を取得したIoT機器10は、行動情報AC51を認証用情報として認証装置100へ送信する(ステップS52)。また、図13の例では、IoT機器10は、行動情報AC51とともに、自装置(行動情報AC51を取得したIoT機器10)を識別する情報(ID情報)を認証装置100へ送信する。例えば、IoT機器10は、キーボードであるIoT機器10を識別するID「TID11」を、行動情報AC51とともに認証装置100へ送信する。このように、図13の例では、IoT機器10は、行動情報AC51及びIoT機器10を識別するID「TID11」を認証用情報として認証装置100へ送信する。
そして、IoT機器10から行動情報AC51及びIoT機器10を識別するID「TID11」を含む認証用情報を取得した認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC51の類似パターンを抽出する処理を行う。まず、認証装置100は、IoT機器10における単語「talk」のキーボード入力に対応する行動データ(行動情報AC51)からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置100は、単語「talk」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む行動情報AC51をモデルM1に入力する。そして、認証装置100は、行動情報AC51の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS53)。例えば、認証装置100は、行動情報AC51が入力されたモデルM1中の各要素を用いて、ベクトルデータを生成する。
図13の例では、認証装置100は、行動情報AC51が入力されたモデルM1中の各要素の値を用いて、ベクトルデータVD51を生成する。例えば、認証装置100は、単語「talk」のキーボード入力に対応する行動情報AC51が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。
そして、認証装置100は、単語「talk」に対応するグラフ情報GR11やインデックス情報IND11を含む情報群INF11やベクトルデータVD51を用いて、対応ユーザを抽出する(ステップS54)。例えば、認証装置100は、グラフ情報GR11を検索することにより、単語「talk」のキーボード入力に対応する行動情報AC51の類似パターンとして、ノードN451やノードN35を抽出する。そして、認証装置100は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ(対応ユーザ)を抽出する。例えば、認証装置100は、ノードN451に対応するパターンID「PT451」に関連付けられたユーザU1や、ノードN35に対応するパターンID「PT35」に関連付けられたユーザU50を対応ユーザとして抽出する。このように、図13の例では、認証装置100は、対応ユーザ一覧UL51に示すように、ユーザU1やユーザU50を対応ユーザとして抽出する。
そして、認証装置100は、抽出した対応ユーザに基づいて、ユーザXを認証する(ステップS55)。例えば、認証装置100は、ユーザ情報記憶部125に記憶されたユーザIDと、そのユーザに対応付けられたIoT機器のIDとに基づいて、認証を行う。図13の例では、認証装置100は、ユーザ情報記憶部125に示すような、対応ユーザとして抽出されたユーザU1に、単語「talk」のキーボード入力が行われ行動情報AC51が取得されたキーボードであるIoT機器10(TID11)が関連付けられていることを示す情報を取得する。そのため、認証装置100は、IoT機器10(TID11)を利用するユーザXがIoT機器10(TID11)に対応付けられたユーザU1であるとして認証する。図13の例では、認証装置100は、認証がOKの場合、IoT機器10へ認証結果を送信しないものとする。また、IoT機器は、認証装置100から認証がNGであることを示す情報を受信するまでは、ユーザXによる操作を受け付けるものとする。
次に、ユーザXは、2つ目の単語として、IoT機器10により単語「is」のキーボード入力を行う(ステップS56)。これにより、IoT機器10は、ユーザXの単語「is」のキーボード入力を受け付ける。また、IoT機器10は、ユーザXの単語「is」のキーボード入力した際の行動情報AC52を取得(検知)する。例えば、行動情報AC52は、ユーザXが単語「is」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
そして、ユーザXの単語「is」のキーボード入力した際の行動情報AC52を取得したIoT機器10は、行動情報AC52を認証用情報として認証装置100へ送信する(ステップS57)。また、図13の例では、IoT機器10は、行動情報AC52とともに、自装置(行動情報AC52を取得したIoT機器10)を識別する情報(ID情報)を認証装置100へ送信する。例えば、IoT機器10は、キーボードであるIoT機器10を識別するID「TID11」を、行動情報AC52とともに認証装置100へ送信する。このように、図13の例では、IoT機器10は、行動情報AC52及びIoT機器10を識別するID「TID11」を認証用情報として認証装置100へ送信する。
そして、IoT機器10から行動情報AC52及びIoT機器10を識別するID「TID11」を含む認証用情報を取得した認証装置100は、単語「is」のキーボード入力に対応する行動情報AC52の類似パターンを抽出する処理を行う。まず、認証装置100は、IoT機器10における単語「is」のキーボード入力に対応する行動データ(行動情報AC52)からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置100は、単語「is」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む行動情報AC52をモデルM1に入力する。そして、認証装置100は、行動情報AC52の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS58)。例えば、認証装置100は、行動情報AC52が入力されたモデルM1中の各要素を用いて、ベクトルデータを生成する。
図13の例では、認証装置100は、行動情報AC52が入力されたモデルM1中の各要素の値を用いて、ベクトルデータVD52を生成する。例えば、認証装置100は、単語「is」のキーボード入力に対応する行動情報AC52が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。
そして、認証装置100は、単語「is」に対応するグラフ情報GR12やインデックス情報IND12を含む情報群INF12やベクトルデータVD52を用いて、対応ユーザを抽出する(ステップS59)。例えば、認証装置100は、グラフ情報GR12を検索することにより、単語「is」のキーボード入力に対応する行動情報AC52の類似パターンを抽出する。そして、認証装置100は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ(対応ユーザ)を抽出する。図13の例では、認証装置100は、対応ユーザ一覧UL52に示すように、ユーザU1やユーザU76を対応ユーザとして抽出する。
そして、認証装置100は、抽出した対応ユーザに基づいて、ユーザXを認証する(ステップS60)。例えば、認証装置100は、ユーザ情報記憶部125に記憶されたユーザIDと、そのユーザに対応付けられたIoT機器のIDとに基づいて、認証を行う。図13の例では、認証装置100は、ユーザ情報記憶部125に示すような、対応ユーザとして抽出されたユーザU1に、単語「is」のキーボード入力が行われ行動情報AC52が取得されたキーボードであるIoT機器10(TID11)が関連付けられていることを示す情報を取得する。そのため、認証装置100は、IoT機器10(TID11)を利用するユーザXがIoT機器10(TID11)に対応付けられたユーザU1であるとして認証する。
次に、ユーザXは、3つ目の単語として、IoT機器10により単語「good」のキーボード入力を行う(ステップS61)。これにより、IoT機器10は、ユーザXの単語「good」のキーボード入力を受け付ける。また、IoT機器10は、ユーザXの単語「good」のキーボード入力した際の行動情報AC53を取得(検知)する。例えば、行動情報AC53は、ユーザXが単語「good」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
そして、ユーザXの単語「good」のキーボード入力した際の行動情報AC53を取得したIoT機器10は、行動情報AC53を認証用情報として認証装置100へ送信する(ステップS62)。また、図13の例では、IoT機器10は、行動情報AC53とともに、自装置(行動情報AC53を取得したIoT機器10)を識別する情報(ID情報)を認証装置100へ送信する。例えば、IoT機器10は、キーボードであるIoT機器10を識別するID「TID11」を、行動情報AC53とともに認証装置100へ送信する。このように、図13の例では、IoT機器10は、行動情報AC53及びIoT機器10を識別するID「TID11」を認証用情報として認証装置100へ送信する。
そして、IoT機器10から行動情報AC53及びIoT機器10を識別するID「TID11」を含む認証用情報を取得した認証装置100は、単語「good」のキーボード入力に対応する行動情報AC53の類似パターンを抽出する処理を行う。まず、認証装置100は、IoT機器10における単語「good」のキーボード入力に対応する行動データ(行動情報AC53)からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置100は、単語「good」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む行動情報AC53をモデルM1に入力する。そして、認証装置100は、行動情報AC53の入力後のモデルM1中の情報を用いて、ベクトルを生成する(ステップS63)。例えば、認証装置100は、行動情報AC53が入力されたモデルM1中の各要素を用いて、ベクトルデータを生成する。
図13の例では、認証装置100は、行動情報AC53が入力されたモデルM1中の各要素の値を用いて、ベクトルデータVD53を生成する。例えば、認証装置100は、単語「good」のキーボード入力に対応する行動情報AC53が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。
そして、認証装置100は、単語「good」に対応するグラフ情報GR13やインデックス情報IND13を含む情報群INF13やベクトルデータVD53を用いて、対応ユーザを抽出する(ステップS64)。例えば、認証装置100は、グラフ情報GR13を検索することにより、単語「good」のキーボード入力に対応する行動情報AC53の類似パターンを抽出する。そして、認証装置100は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ(対応ユーザ)を抽出する。図13の例では、認証装置100は、対応ユーザ一覧UL53に示すように、ユーザU2やユーザU51を対応ユーザとして抽出する。
そして、認証装置100は、抽出した対応ユーザに基づいて、ユーザXを認証する(ステップS65)。例えば、認証装置100は、ユーザ情報記憶部125に記憶されたユーザIDと、そのユーザに対応付けられたIoT機器のIDとに基づいて、認証を行う。図13の例では、認証装置100は、ユーザ情報記憶部125に示すような、対応ユーザとして抽出されていないユーザU1に、単語「good」のキーボード入力が行われ行動情報AC53が取得されたキーボードであるIoT機器10(TID11)が関連付けられていることを示す情報を取得する。そのため、認証装置100は、IoT機器10(TID11)を利用するユーザXがIoT機器10(TID11)に対応付けられたユーザU1ではないとして認証不可とする。
そして、認証装置100は、IoT機器10へ認証結果を送信する(ステップS66)。例えば、認証装置100は、認証がNGであることを示す情報をIoT機器10へ送信する。例えば、認証装置100は、IoT機器10(TID11)を利用しているユーザXがユーザU1ではないことを示す認証結果をIoT機器10へ送信してもよい。なお、この点については図13の説明で詳述する。
そして、IoT機器10は、認証がNGであることを示す情報を受信した場合、所定のロック機能をONにする(ステップS67)。例えば、IoT機器10は、所定のロック機能によりユーザによる入力や操作を受付けなくしてもよい。例えば、IoT機器10は、認証がNGであることを示す情報を受信した場合、所定の期間(例えば1時間等)に亘って、ロック機能によりユーザによる入力や操作を受付けなくしてもよい。これにより、IoT機器10は、不正なユーザによる利用を抑制にすることができる。
〔1−4−2.他の認証例〕
上述した例では、IoT機器10での1つの単語のキーボード入力の行動情報を基づく対応ユーザに、そのIoT機器10に関連付けられたユーザが含まれない場合に、認証がNGであるとする場合を示したが、認証装置100は、他の基準に基づいて認証を行ってもよい。例えば、認証装置100は、複数の単語がキーボード入力された場合、各単語に対応する認証の成否の割合に応じて、ユーザの認証を行ってもよい。例えば、認証装置100は、複数の単語に対応する認証のうち、所定の閾値(例えば50%や80%等)以上の認証がOKである場合、全体としての認証をOK(許可)としてもよい。
例えば、認証装置100は、閾値が50%であり、5個の単語がキーボード入力された場合、3個以上の単語の認証がOKである場合、全体としての認証をOKとしてもよい。例えば、認証装置100は、閾値が50%であり、5個の単語がキーボード入力された場合、3個以上の単語のキーボード入力の行動情報を基づく対応ユーザに、そのIoT機器10に関連付けられたユーザが含まれる場合に、全体としての認証をOKとしてもよい。また、例えば、認証装置100は、閾値が50%であり、5個の単語がキーボード入力された場合、3個以上の単語のキーボード入力の行動情報を基づく対応ユーザに、そのIoT機器10に関連付けられたユーザが含まれない場合に、全体としての認証をNG(不可)としてもよい。
上述のように、認証装置100は、複数の単語全体での認証の成否の割合に応じて、全体としての認証の成否を決定することにより、より適切にユーザを認証することができる。
〔1−5.単語ごとのモデル〕
なお、図1の例では、モデルM1を用いる場合を示したが、例えば、認証装置100は、単語ごとに異なるモデルを用いてもよい。
例えば、認証装置100は、単語ごとに生成されたモデル(以下、「単語別モデル」ともいう)を用いて、類似パターンを抽出してもよい。例えば、認証装置100は、単語別モデルを生成してもよい。認証装置100は、各単語別モデルに対応する単語のキーボード入力の行動情報を入力し、その行動情報と同様の情報を出力する単語別モデル(オートエンコーダ)を生成してもよい。例えば、認証装置100は、入力する行動情報自体を正解情報として、入力した行動情報と同様の情報を出力する単語別モデル(オートエンコーダ)を生成する。例えば、単語別モデルに入力する行動情報は、対応する単語のキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む。この場合、例えば、認証装置100は、単語ごとのモデル、インデックス情報、及びグラフ情報を用いて認証処理を行う。例えば、認証装置100は、IoT機器において入力された単語に対応するモデル、インデックス情報、及びグラフ情報を取得し、取得したモデル、インデックス情報、及びグラフ情報を用いて認証処理を行う。これにより、認証装置100は、より精度よく認証を行うことができる。
〔1−6.他の行動情報〕
なお、図1の例では、ユーザのキーボード入力を行動情報の一例として説明したが、行動情報は、ユーザの認証に利用可能であれば、どのような行動情報であってもよい。例えば、IoT機器10が電子キー(例えば自動車等の電子鍵)である場合、認証装置100は、電子キーTID21が取得したユーザの行動情報に基づいて、認証を行ってもよい。例えば、電子キーTID21は、自動車や住宅(居住空間)等の扉に設けられた電子錠(図示せず)等の開閉に用いる鍵であってもよい。例えば、電子キーTID21は、所定の電子錠と所定のネットワークNを介して通信することにより、所定の電子錠を開閉させる電子キーであってもよい。例えば、認証装置100は、電子キーTID21(図8参照)が有する音センサ(スピーカ)が検知(取得)したユーザの歩行音を含む行動情報に基づいて、認証を行ってもよい。この場合、認証装置100は、ユーザの歩行音を含む行動パターンをグラフ構造化したグラフ情報を用いて、認証を行ってもよい。
例えば、認証装置100は、電子キーTID21が有する音センサ(スピーカ)が検知(取得)したユーザの歩行音を含む行動情報に基づいて、電子キーTID21の所有者であるユーザU2が対応ユーザとして抽出されなかった場合、認証がNG、すなわち認証不可としてもよい。この場合、認証装置100は、電子キーTID21に認証不可であることを示す情報を送信し、電子キーTID21を利用不可にしてもよい。例えば、認証装置100から認証不可であることを示す情報を受信した電子キーTID21は、所定のロック機能等により、電子キーTID21を用いた鍵の開錠を不可能にしてもよい。
また、認証装置100は、ユーザの歩行音のみに限らず、ドアの閉開音等の種々の音情報を含む行動情報を用いてもよい。また、認証装置100は、音情報に限らず、ユーザの自動車等の運転操作に関する情報を含む行動情報を用いてもよい。例えば、認証装置100は、ハンドルの操作やブレーキの操作等の運転操作に関する情報を含む行動情報を用いてもよい。なお、上記は一例であり、認証装置100は、ユーザの種々の行動情報を用いて認証を行ってもよい。
〔1−7.インデックス情報〕
図1の例に示すインデックス情報(インデックスデータ)は一例であり、認証装置100は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。また、例えば、認証装置100は、検索時に用いるインデックスデータを生成してもよい。例えば、認証装置100は、高次元ベクトルを検索する検索インデックスをインデックスデータとして生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
例えば、認証装置100は、図1に示すようなツリー構造(木構造)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、認証装置100は、kd木(k-dimensional tree)に関する検索インデックスをインデックスデータとして生成してもよい。例えば、認証装置100は、VP木(Vantage-Point tree)に関する検索インデックスをインデックスデータとして生成してもよい。
また、例えば、認証装置100は、その他の木構造を有するインデックスデータとして生成してもよい。例えば、認証装置100は、木構造のインデックスデータのリーフがグラフデータに接続する種々のインデックスデータを生成してもよい。例えば、認証装置100は、木構造のインデックスデータのリーフがグラフデータ中のノードに対応する種々のインデックスデータを生成してもよい。また、認証装置100は、このようなインデックスデータを用いて検索を行う場合、インデックスデータを辿って到達したリーフ(ノード)からグラフデータを探索してもよい。
なお、上述したようなインデックスデータは一例であり、認証装置100は、グラフデータ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、認証装置100は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスデータを生成してもよい。例えば、認証装置100は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、認証装置100は、非特許文献1に記載されるようなグラフ型の検索インデックスに関する情報をインデックス情報として用いてもよい。認証装置100は、上述のようなインデックスデータとグラフデータとを用いることにより、所定の対象に関するより効率的な検索を可能にすることができる。
〔2.認証システムの構成〕
図2に示すように、認証システム1は、IoT機器10と、情報提供装置50と、認証装置100とが含まれる。IoT機器10と、情報提供装置50と、認証装置100とは所定のネットワークNを介して、有線または無線により通信可能に接続される。図2は、実施形態に係る認証システムの構成例を示す図である。なお、図2に示した認証システム1には、複数台のIoT機器10や、複数台の情報提供装置50や、複数台の認証装置100が含まれてもよい。
IoT機器10は、ユーザによって利用される情報処理装置である。IoT機器10は、ユーザによる種々の操作を受け付ける。なお、以下では、IoT機器10をユーザと表記する場合がある。すなわち、以下では、ユーザをIoT機器10と読み替えることもできる。
IoT機器10は、ユーザによって利用される情報処理機能を有する各種装置である。例えば、IoT機器10は、通信機能を有し、情報提供装置50や認証装置100等が提供するサービスを利用可能であればどのような装置であってもよい。例えば、IoT機器10は、キーボード、電子キー等の機器であってもよい。例えば、IoT機器10は、デスクトップPCへの入力インターフェイスとして用いられるキーボードであってもよい。また、例えば、IoT機器10は、洗濯機、冷蔵庫等のいわゆる家電製品であってもよいし、自動車等の車両であってもよい。例えば、IoT機器10は、スマートスピーカやロボット等の音声等を検知する装置であってもよい。例えば、IoT機器10は、商品のパッケージであってもよいし、所定の商品を購入するためのボタン等の装置であってもよい。また、IoT機器10は、例えば、スマートフォンや、タブレット型端末や、ノート型PC(Personal Computer)や、デスクトップPCや、携帯電話機や、PDA(Personal Digital Assistant)等の情報処理装置であってもよい。また、例えば、IoT機器10は、ユーザが身に着けるウェアラブル端末(Wearable Device)等であってもよい。例えば、IoT機器10は、腕時計型端末やメガネ型端末等であってもよい。なお、以下では、IoT機器10をユーザと表記する場合がある。すなわち、以下では、ユーザをIoT機器10と読み替えることもできる。例えば、IoT機器10は、行動データ(行動情報)を収集し、行動データを認証装置100へ送信する。
例えば、IoT機器10は、各種センサを有する。例えば、IoT機器10は、圧力センサやGPS(Global Positioning System)センサや画像センサ等の各種センサにより、各種センサ情報を検知してもよい。また、例えば、IoT機器10は、ユーザの行動に関する時間を計時するタイマ機能を有する。また、IoT機器10は、温度センサや気圧センサ等の種々の機能を有し、温度や気圧等のユーザの置かれている環境情報を検知し、取得可能であってもよい。また、IoT機器10は、心拍センサ等の種々の機能を有し、ユーザの生体情報を検知し、取得可能であってもよい。また、IoT機器10は、ジャイロセンサや加速度センサの機能を有し、ユーザのIoT機器10の加速度情報(センサ情報)等を検知し、取得する。
認証装置100は、所定の基準に基づいて決定された起点ベクトルを起点としてグラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する情報処理装置である。また、認証装置100は、抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する情報処理装置である。例えば、認証装置100は、IoT機器10(TID11)における単語「talk」のキーボード入力に関する行動情報を取得し、行動情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。
認証装置100は、IoT機器10(ユーザ)等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、認証装置100は、IoT機器10からIoT機器10(TID11)における単語「talk」のキーボード入力の注文情報を取得すると、一の行動情報(以下、「クエリ情報」や「クエリ」ともいう)に類似する行動パターン(ベクトル情報等)を検索し、検索結果に基づく類似パターンを示す情報をIoT機器10に送信する。例えば、認証装置100は、IoT機器10からIoT機器10(TID11)における単語「talk」のキーボード入力の行動データを取得すると、クエリに類似する行動パターンを検索し、検索結果に基づく類似パターンを示す推奨情報をIoT機器10に提供する。図1の例では、認証装置100は、IoT機器10からIoT機器10(TID11)における単語「talk」のキーボード入力の行動データを取得すると、IoT機器10(TID11)における単語「talk」のキーボード入力に類似する行動パターンを抽出し、抽出した行動パターンに対応付けられた対応ユーザに応じて、認証を行う。また、例えば、認証装置100は、認証結果とともに、URL(Uniform Resource Locator)等の対応するデータを参照するための情報をIoT機器10に送信してもよい。
情報提供装置50は、認証装置100に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置50は、グラフ情報やインデックス情報やモデル等の種々の情報を認証装置100に提供する情報処理装置である。
〔3.認証装置の構成〕
次に、図3を用いて、実施形態に係る認証装置100の構成について説明する。図3は、実施形態に係る認証装置の構成例を示す図である。図3に示すように、認証装置100は、通信部110と、記憶部120と、制御部130とを有する。なお、認証装置100は、認証装置100の管理者等から各種操作を受け付ける入力部(例えば、キーボードやマウス等)や、各種情報を表示するための表示部(例えば、液晶ディスプレイ等)を有してもよい。
(通信部110)
通信部110は、例えば、NIC(Network Interface Card)等によって実現される。そして、通信部110は、ネットワーク(例えば図2中のネットワークN)と有線または無線で接続され、IoT機器10や情報提供装置50との間で情報の送受信を行う。
(記憶部120)
記憶部120は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部120は、図3に示すように、行動パターン情報記憶部121と、インデックス情報記憶部122と、グラフ情報記憶部123と、モデル情報記憶部124と、ユーザ情報記憶部125とを有する。
(行動パターン情報記憶部121)
実施形態に係る行動パターン情報記憶部121は、行動パターン(オブジェクト)に関する各種情報を記憶する。例えば、行動パターン情報記憶部121は、パターンIDやベクトルデータを記憶する。図4は、実施形態に係る行動パターン情報記憶部の一例を示す図である。図4の例では、行動パターン情報記憶部121は、行動パターンデータセット121−1や行動パターンデータセット121−2や行動パターンデータセット121−3等のように対象単語ごとに情報(テーブル)を記憶する。図4に示す行動パターンデータセット121−1〜121−3等は、「対象単語」、「パターンID」、「対応ユーザ」、「行動情報」、「ベクトル情報」といった項目を含む。
図4の例では、行動パターンデータセット121−1は、単語ID「WID1」により識別される単語「talk」に対応し、行動パターンデータセット121−2は、単語ID「WID2」により識別される単語「is」に対応し、行動パターンデータセット121−3は、単語ID「WID3」により識別される単語「good」に対応する。具体的には、行動パターンデータセット121−1には、対象単語「talk」に対応する行動パターンに関する情報が記憶される。また、行動パターンデータセット121−2には、対象単語「is」に対応する行動パターンに関する情報が記憶され、行動パターンデータセット121−3には、対象単語「good」に対応する行動パターンに関する情報が記憶される。
「対象単語」は、対応する行動パターンデータセットが対象とする単語を示す。「パターンID」は、行動パターン(オブジェクト)を識別するための識別情報を示す。また、「対応ユーザ」は、パターンIDにより識別される行動パターンに関連付けられたユーザを示す。例えば、「対応ユーザ」は、パターンIDにより識別される行動パターンに対応する行動を行ったユーザを示す。なお、図4の例では、対応ユーザを「ユーザU200」といった抽象的な符号で示すが、各対応ユーザには、ユーザを識別する情報(ユーザID等)が記憶されてもよい。
「行動情報」は、パターンIDにより識別される行動情報を示す。なお、図4の例では、行動情報を「AC1」といった抽象的な符号で示すが、各行動情報は、一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等の種々の行動に関する情報を含む。「ベクトル情報」とは、パターンIDにより識別される行動パターン(オブジェクト)に対応するベクトル情報を示す。すなわち、図4の例では、行動パターン(オブジェクト)を識別するパターンIDに対して、行動パターンの対応ユーザやオブジェクトに対応するベクトルデータ(ベクトル情報)が対応付けられて登録されている。
例えば、図4の例では、パターンID「PT1」により識別される行動パターン(オブジェクト)は、「10,24,54,2...」の多次元(N次元)のベクトル情報が対応付けられることを示す。例えば、パターンID「PT1」により識別される行動パターンについては、モデルM1等により、ユーザU200の対象単語「talk」のキーボード入力の特徴を示す「10,24,54,2...」の多次元(N次元)のベクトル情報が行動情報AC1から抽出されたことを示す。
なお、行動パターン情報記憶部121は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(インデックス情報記憶部122)
実施形態に係るインデックス情報記憶部122は、インデックスに関する各種情報を記憶する。図5は、実施形態に係るインデックス情報記憶部の一例を示す図である。具体的には、図5の例では、インデックス情報記憶部122は、ツリー構造のインデックス情報を示す。図5の例では、インデックス情報記憶部122は、インデックスデータセット122−1やインデックスデータセット122−2やインデックスデータセット122−3等のように対象単語ごとに情報(テーブル)を記憶する。図5に示すインデックスデータセット122−1〜122−3等は、「対象単語」、「ルート階層」、「第1階層」、「第2階層」、「第3階層」等といった項目を含む。なお、「第1階層」〜「第3階層」に限らず、インデックスの階層数に応じて、「第4階層」、「第5階層」、「第6階層」等が含まれてもよい。
図5の例では、インデックスデータセット122−1は、単語ID「WID1」により識別される単語「talk」に対応し、インデックスデータセット122−2は、単語ID「WID2」により識別される単語「is」に対応し、インデックスデータセット122−3は、単語ID「WID3」により識別される単語「good」に対応する。具体的には、インデックスデータセット122−1には、対象単語「talk」に対応するインデックスに関する情報(インデックス情報IND11)が記憶される。また、インデックスデータセット122−2には、対象単語「is」に対応するインデックスに関する情報(インデックス情報IND12)が記憶され、インデックスデータセット122−3には、対象単語「good」に対応するインデックスに関する情報(インデックス情報IND13)が記憶される。
「対象単語」は、対応するインデックスデータセットが対象とする単語を示す。「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート(最上位)の階層を示す。「第1階層」は、インデックスの第1階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第1階層」に格納されるノードは、インデックスの根(ルート)に直接結ばれる階層に対応するノードとなる。
「第2階層」は、インデックスの第2階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第2階層」に格納されるノードは、第1階層のノードに結ばれる直下の階層に対応するノードとなる。「第3階層」は、インデックスの第3階層に属するノード(節点またはグラフ情報中のベクトル)を識別(特定)する情報が格納される。「第3階層」に格納されるノードは、第2階層のノードに結ばれる直下の階層に対応するノードとなる。
例えば、図5に示す例においては、インデックス情報記憶部122のうち、インデックスデータセット122−1には、図1中のインデックス情報IND11に対応する情報が記憶される。例えば、インデックスデータセット122−1は、第1階層のノードが、節点VT1〜VT3等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
また、例えば、インデックスデータセット122−1は、節点VT2の直下の第2階層のノードが、節点VT2−1〜VT2−4であることを示す。また、例えば、インデックスデータセット122−1は、節点VT2−2の直下の第3階層のノードが、ノードN35、ノードN451、ノードN693のグラフ情報GR11中のノード(ベクトル)であることを示す。
なお、インデックス情報記憶部122は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
(グラフ情報記憶部123)
実施形態に係るグラフ情報記憶部123は、グラフ情報に関する各種情報を記憶する。図6は、実施形態に係るグラフ情報記憶部の一例を示す図である。図6の例では、グラフ情報記憶部123は、グラフデータセット123−1やグラフデータセット123−2やグラフデータセット123−3等のように対象単語ごとに情報(テーブル)を記憶する。図6に示すグラフデータセット123−1〜123−3等は、「対象単語」、「ノードID」、「パターンID」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジID」や「参照先」といった情報が含まれる。
図6の例では、グラフデータセット123−1は、単語ID「WID1」により識別される単語「talk」に対応し、グラフデータセット123−2は、単語ID「WID2」により識別される単語「is」に対応し、グラフデータセット123−3は、単語ID「WID3」により識別される単語「good」に対応する。具体的には、グラフデータセット123−1には、対象単語「talk」に対応するグラフに関する情報(グラフ情報GR11)が記憶される。また、グラフデータセット123−2には、対象単語「is」に対応するグラフに関する情報(グラフ情報GR12)が記憶され、グラフデータセット123−3には、対象単語「good」に対応するグラフに関する情報(グラフ情報GR13)が記憶される。
「対象単語」は、対応するグラフデータセットが対象とする単語を示す。「ノードID」は、グラフデータにおける各ノード(対象)を識別するための識別情報を示す。また、「パターンID」は、行動パターン(オブジェクト)を識別するための識別情報を示す。
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図6の例では、「エッジ情報」は、エッジが有向エッジである場合を示し、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジID」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先(ノード)を示す情報を示す。すなわち、図6の例では、ノードを識別するノードIDに対して、そのノードに対応するオブジェクト(対象)を識別する情報やそのノードからの有向エッジ(出力エッジ)が連結される参照先(ノード)が対応付けられて登録されている。
例えば、図6の例では、グラフ情報記憶部123のうち、グラフデータセット123−1においては、ノードID「N1」により識別されるノード(ベクトル)は、パターンID「PT1」により識別される行動パターン(オブジェクト)に対応することを示す。また、グラフデータセット123−1においては、ノードID「N1」により識別されるノードからは、エッジID「E11」により識別されるエッジが、ノードID「N25」により識別されるノード(ベクトル)に連結されることを示す。すなわち、図6の例では、グラフデータセット123−1においては、ノードID「N1」により識別されるノード(ベクトル)からはノードID「N25」により識別されるノード(ベクトル)に辿ることができることを示す。
なお、グラフ情報記憶部123は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部123は、各ノード(ベクトル)間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部123は、各ノード(ベクトル)間の距離を示す情報が記憶されてもよい。
(モデル情報記憶部124)
実施形態に係るモデル情報記憶部124は、モデルに関する情報を記憶する。例えば、モデル情報記憶部124は、生成処理により生成されたモデル情報(モデルデータ)を記憶する。図7は、実施形態に係るモデル情報記憶部の一例を示す図である。図7に示すモデル情報記憶部124は、「モデルID」、「用途」、「モデルデータ」といった項目が含まれる。なお、図7では、モデルM1、M2のみを図示するが、M21、M22等、各用途(予測の対象)に応じて多数のモデル情報が記憶されてもよい。
「モデルID」は、モデルを識別するための識別情報を示す。例えば、モデルID「M1」により識別されるモデルは、図1の例に示したモデルM1に対応する。「用途」は、対応するモデルの用途を示す。また、「モデルデータ」は、対応付けられた対応するモデルのデータを示す。例えば、「モデルデータ」には、各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれる。
例えば、図7に示す例において、モデルID「M1」により識別されるモデル(モデルM1)は、用途が「特徴抽出(キーボード入力)」であり、入力された行動情報からの特徴の抽出に用いられることを示す。また、モデルM1のモデルデータは、モデルデータMDT1であることを示す。
モデルM1(モデルデータMDT1)は、ユーザの行動情報(行動データ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するよう、コンピュータを機能させるためのモデルである。
また、モデルM1、M2等がDNN(Deep Neural Network)等、1つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、例えば、モデルM1、M2が含む第1要素は、入力層または中間層が有するいずれかのノードに対応する。また、第2要素は、第1要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第1要素の重みは、第1要素と対応するノードから第2要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
ここで、モデルM21、M22等が「y=a1*x1+a2*x2+・・・+ai*xi」で示す回帰モデルで実現されるとする。この場合、例えば、モデルM21、M22が含む第1要素は、x1やx2等といった入力データ(xi)に対応する。また、第1要素の重みは、xiに対応する係数aiに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第1要素は、入力層が有するいずれかのノードに対応し、第2要素は、出力層が有するノードと見做すことができる。
なお、モデル情報記憶部124は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
(ユーザ情報記憶部125)
実施形態に係るユーザ情報記憶部125は、ユーザに関する情報を記憶する。図8は、実施形態に係るユーザ情報記憶部の一例を示す図である。図8には、ユーザ情報記憶部125に記憶されるユーザに関する情報の一例を示す。例えば、ユーザ情報記憶部125は、ユーザが利用するIoT機器に関する情報を記憶する。図8に示すように、ユーザ情報記憶部125は、ユーザが利用するIoT機器に関する情報として、「ユーザID」、「IoT機器1」といった項目が含まれる。なお、図8の例では、説明を簡単にするために、「IoT機器1」のみを図示するが、ユーザ情報記憶部125は、「IoT機器2」、「IoT機器3」等、ユーザが利用するIoT機器の数に応じて、各IoT機器の情報を記憶してもよい。
「ユーザID」は、ユーザを識別するための識別情報を示す。例えば、ユーザID「U1」により識別されるユーザは、図1の例に示すユーザU1に対応する。
また、「IoT機器1」には、「種別」や「ID」といった項目が含まれる。なお、「IoT機器1」のみを図示するが、例えば、対応するユーザが利用するIoT機器が8つである場合、「IoT機器1」〜「IoT機器8」まで利用するIoT機器に関する情報が記憶される。すなわち、対応するユーザが利用するIoT機器が8つである場合、ユーザが利用する8つのIoT機器に関する情報が記憶される。「IoT機器1」の「種別」は、ユーザが利用するIoT機器の種別を示す。また、「IoT機器1」の「ID」は、対応するIoT機器を識別するための識別情報を示す。例えば、「IoT機器1」の「ID」は、対応するユーザが利用するIoT機器を識別するための識別情報を示す。
例えば、図8に示す例において、ユーザID「U1」により識別されるユーザ(ユーザU1)は、種別「キーボード」のIoT機器を利用しており、ユーザU1が利用するIoT機器(キーボード)のIDが「TID11」であることを示す。また、例えば、図8に示す例において、ユーザID「U2」により識別されるユーザ(ユーザU2)は、種別「電子キー」のIoT機器を利用しており、ユーザU2が利用するIoT機器(電子キー)のIDが「TID21」であることを示す。
なお、ユーザ情報記憶部125は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、ユーザ情報記憶部125は、性別、年齢、自宅、勤務地、興味・関心、氏名、家族構成、収入等の情報を記憶してもよい。例えば、ユーザ情報記憶部125は、各IoT機器が利用できるサービスが異なる場合、IoT機器ごとに利用するサービスに関する情報を関連付けて記憶してもよい。
(制御部130)
図3の説明に戻って、制御部130は、コントローラ(controller)であり、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等によって、認証装置100内部の記憶装置に記憶されている各種プログラム(認証プログラムの一例に相当)がRAMを作業領域として実行されることにより実現される。また、制御部130は、コントローラであり、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実現される。制御部130は、モデル情報記憶部124に記憶されているモデルM1、M2等に従った情報処理により、ユーザの行動情報(行動データ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力する。
図3に示すように、制御部130は、取得部131と、生成部132と、決定部133と、抽出部134と、認証部135と、送信部136とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部130の内部構成は、図3に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
(取得部131)
取得部131は、各種情報を取得する。例えば、取得部131は、記憶部120から各種情報を取得する。例えば、取得部131は、行動パターン情報記憶部121や、インデックス情報記憶部122や、グラフ情報記憶部123や、モデル情報記憶部124や、ユーザ情報記憶部125等から各種情報を取得する。また、取得部131は、各種情報を外部の情報処理装置から取得する。取得部131は、IoT機器10や情報提供装置50から各種情報を取得する。
取得部131は、複数の行動パターンの各々に対応する複数のノードベクトルであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードベクトルが、複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。取得部131は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。取得部131は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードベクトルであって、対応ユーザが関連付けられた複数のノードベクトルが類似性に応じて連結されたグラフ情報を取得する。取得部131は、単語ごとの複数の行動パターンの各々に対応する複数のノードベクトルであって、対応ユーザが関連付けられた複数のノードベクトルが類似性に応じて連結された複数のグラフ情報を取得する。取得部131は、複数の行動パターンの各々に対応する複数のベクトルであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。また、取得部131は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
また、取得部131は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。また、取得部131は、複数の行動パターンに関する情報を所定のモデルに入力することにより、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
また、取得部131は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得する。また、取得部131は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得する。また、取得部131は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のベクトルであって、対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
また、取得部131は、単語ごとの複数の行動パターンの各々に対応する複数のベクトルであって、対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結された複数のグラフ情報を取得する。
例えば、取得部131は、データ検索の対象となる複数のノード(ベクトル)を取得する。例えば、取得部131は、複数のノードと、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得する。
例えば、取得部131は、外部の情報処理装置からグラフ情報(グラフデータ)を取得する。例えば、取得部131は、グラフ情報記憶部123からグラフ情報を取得する。例えば、取得部131は、グラフ情報を取得する。図1の例では、取得部131は、グラフ情報GR11を取得する。
例えば、取得部131は、外部の情報処理装置からインデックス情報(インデックスデータ)を取得する。例えば、取得部131は、インデックス情報記憶部122からインデックス情報を取得する。例えば、取得部131は、木構造型のインデックス情報を取得する。図1の例では、取得部131は、インデックス情報IND11を取得する。
図1の例では、取得部131は、IoT機器10から行動情報AC11及びIoT機器10を識別するID「TID」を含む認証用情報を取得する。例えば、取得部131は、グラフ情報記憶部123中のグラフデータセット123−1(図6参照)から単語「talk」に関するグラフ情報GR11を取得する。また、例えば、取得部131は、インデックス情報記憶部122中のインデックスデータセット122−1(図5参照)から、単語「talk」に関するインデックス情報IND11を取得する。例えば、取得部131は、インデックス情報記憶部122から、グラフ情報GR11における検索の起点となるノード(起点ベクトル)の決定に用いるインデックス情報IND11を取得する。また、取得部131は、ユーザ情報記憶部125に示すように、対応ユーザとして抽出されたユーザU1に、単語「talk」のキーボード入力が行われ行動情報AC11が取得されたキーボードであるIoT機器10(TID11)が関連付けられていることを示す情報を取得する。
(生成部132)
生成部132は、各種情報を生成する。例えば、生成部132は、行動パターン情報記憶部121に記憶された学習データ(行動情報)を用いて、モデル情報記憶部124に示すようなモデルを生成する。例えば、生成部132は、取得部131により取得された学習データに基づいて、入力した行動情報と同様の情報を出力するモデル(オートエンコーダ)を生成する。例えば、生成部132は、入力する行動情報自体を正解情報として、入力した行動情報と同様の情報を出力するモデル(オートエンコーダ)を生成する。
例えば、生成部132は、モデルM1等を生成し、生成したモデルM1等をモデル情報記憶部124に格納する。なお、生成部132は、いかなる学習アルゴリズムを用いてモデルM1を生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)等の学習アルゴリズムを用いてモデルM1を生成する。一例として、生成部132がニューラルネットワークを用いてモデルM1等を生成する場合、モデルM1等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
生成部132は、ユーザの行動情報(行動データ)が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第1要素と、第1要素と第1要素の重みとに基づいて値が算出される第2要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第1要素として、第1要素と第1要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルを生成する。
例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、学習データに基づいてモデルを生成する。例えば、生成部132は、行動パターン情報記憶部121中の行動情報AC1、AC2等を学習データ(教師データ)として、学習を行なうことにより、モデルを生成する。
例えば、生成部132は、行動情報AC1が入力された場合に、モデルM1が行動情報AC1と同様の情報を出力するように、学習処理を行う。例えば、生成部132は、行動情報AC2が入力された場合に、モデルM1が行動情報AC2と同様の情報を出力するように、学習処理を行う。生成部132は、モデルを生成し、生成したモデルをモデル情報記憶部124に格納する。なお、抽出装置100は、情報提供装置50等の他の外部装置からモデルを取得する場合、生成部132を有しなくてもよい。
なお、生成部132は、オートエンコーダとしてのモデルM1に限らず、種々の学習アルゴリズムを用いて各単語に対応するモデルM21(図示省略)等を生成してもよい。例えば、生成部132は、ニューラルネットワーク(neural network)、サポートベクターマシン(SVM)、クラスタリング、強化学習等の学習アルゴリズムを用いてモデルM21等を生成する。一例として、生成部132がニューラルネットワークを用いてモデルM21等を生成する場合、モデルM21等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
図1の例では、生成部132は、行動データの特徴を抽出するモデルを用いて各行動の行動データからN次元ベクトルを生成する。生成部132は、モデル情報記憶部124(図7)に示すモデルM1を用いて、各行動の行動データからベクトルを生成する。
また、生成部132は、IoT機器10(TID11)における単語「talk」のキーボード入力に対応する行動データからグラフ情報の探索に用いるベクトルを生成する。図1の例では、生成部132は、IoT機器10における単語「talk」のキーボード入力に対応する行動データ(行動情報AC11)からグラフ情報の探索に用いるベクトルを生成する。生成部132は、処理群PS11に示すような処理により、行動情報AC11に対応するベクトルを生成する。生成部132は、単語「talk」のキーボード入力に対応する行動情報AC11をモデルM1に入力する。例えば、生成部132は、単語「talk」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔(平均時間)、及びキーボードを押す平均圧力等に関する情報を含む行動情報AC11をモデルM1に入力する。そして、生成部132は、行動情報AC11の入力後のモデルM1中の情報を用いて、ベクトルを生成する。生成部132は、行動情報AC11が入力されたモデルM1中の各要素を用いて、ベクトルデータを生成する。
図1の例では、生成部132は、行動情報AC11が入力されたモデルM1中の各要素の値を用いて、ベクトルVD11を生成する。例えば、生成部132は、キーボードであるIoT機器10へのキーボード入力の行動情報AC11が入力された場合における、モデルM1のニューロンNL1に対応する値VE1(図11参照)やニューロンNL2に対応する値VE2(図11参照)を用いて、ベクトルを生成する。例えば、生成部132は、IoT機器10へのキーボード入力の行動情報AC11が入力された場合に、算出されるニューロンNL1に対応する値VE1をベクトルVD11の1次元目の要素として抽出してもよい。また、例えば、生成部132は、IoT機器10へのキーボード入力の行動データが入力された場合に、算出されるニューロンNL2に対応する値VE2をベクトルVD11の2次元目の要素として、ベクトルVD11を生成する。図1の例では、生成部132は、1次元目の要素が「35」であり、2次元目の要素が「63」であるようなベクトルVD11を生成する。
(決定部133)
決定部133は、各種情報を決定する。決定部133は、起点ノードベクトルの決定に用いるインデックス情報に基づいて、起点ノードベクトルを決定する。決定部133は、木構造型のインデックス情報に基づいて、起点ノードベクトルを決定する。例えば、決定部133は、取得部131により取得された行動情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。例えば、決定部133は、行動情報と、グラフ情報の検索の起点ベクトルの決定の基準となる情報とに基づいて、起点ベクトルを決定する。また、決定部133は、起点ベクトルの決定に用いるインデックス情報に基づいて、起点ベクトルを決定する。また、決定部133は、木構造型のインデックス情報に基づいて、起点ベクトルを決定する。
図1の例では、決定部133は、IoT機器10(TID11)における単語「talk」のキーボード入力(クエリ)に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。例えば、決定部133は、IoT機器10(TID11)における単語「talk」のキーボード入力の行動情報AC11から生成されたベクトルVD11に対応する起点ベクトルを決定(特定)するために、インデックス情報IND11を用いる。決定部133は、ベクトルVD11とインデックス情報IND11とを用いて、グラフ情報GR11における起点ベクトルを決定する。
例えば、決定部133は、図1中のインデックス情報IND11に示すような木構造型のインデックス情報を用いて、グラフ情報GR11における起点ベクトルを決定する。図1の例では、決定部133は、ベクトルVD11を生成した後、インデックス情報IND11を上から下へ辿ることにより、インデックス情報IND11の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ(IoT機器10(TID11)における単語「talk」のキーボード入力)に対応する起点ベクトルを決定する。
例えば、決定部133は、インデックス情報IND11をルートRTからリーフノード(グラフ情報GR11中のノード(ベクトル))まで辿ることにより、ベクトルVD11に対応する起点ベクトルを決定する。図1の例では、決定部133は、インデックス情報IND11をルートRTからノードN451まで辿ることにより、ノードN451を起点ベクトルとして決定する。
(抽出部134)
抽出部134は、各種情報を抽出する。抽出部134は、取得部131により取得されたグラフ情報の複数のノードベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードベクトルを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。抽出部134は、取得部131により取得されたグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。例えば、抽出部134は、グラフ情報記憶部123に記憶された各ノード(ベクトル)間を連結するエッジの長さ(距離)の情報を用いてもよいし、各ノードのベクトル情報から各ノード(ベクトル)間を連結するエッジの長さ(距離)の情報を算出し、算出した長さ(距離)の情報を用いてもよい。抽出部134は、決定部133により決定された起点ベクトルを起点として、類似パターンを抽出する。抽出部134は、決定部133により決定された起点ノードベクトルを起点として、類似パターンを抽出する。抽出部134は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードベクトルを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。
また、抽出部134は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。また、抽出部134は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて、複数の単語に対応する複数の類似パターンを抽出する。認証部135は、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証する。
図1の例では、抽出部134は、グラフ情報GR11を検索することにより、単語「talk」のキーボード入力に対応する行動情報AC11の類似パターンを抽出する。例えば、抽出部134は、ノードN451の近傍に位置するノードを類似パターンとして抽出する。例えば、抽出部134は、ノードN451からの距離が近いノードを類似パターンとして抽出する。例えば、抽出部134は、ノードN451を起点として、エッジを辿ることにより、ノードN451から到達可能なノードを類似パターンとして抽出する。例えば、抽出部134は、所定数(例えば、2個や10個等)のノードを類似パターンとして抽出する。例えば、抽出部134は、図12に示すような検索処理により、行動情報AC11の類似パターンを抽出する。図1の例では、抽出部134は、ノードN451を起点として、グラフ情報GR11を探索することにより、ノードN451やノードN35を類似パターンとして抽出する。
図1の例では、抽出部134は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ(対応ユーザ)を抽出する。例えば、抽出部134は、行動パターン情報記憶部121(図4参照)に記憶された行動パターンとユーザとの対応付けに基づいて、対応ユーザを抽出する。抽出部134は、行動パターン情報記憶部121のうち、単語「talk」に対応する行動パターンデータセット121−1中のパターンIDとユーザとの対応付けに基づいて、対応ユーザを抽出する。
例えば、抽出部134は、ノードN451に対応するパターンID「PT451」に関連付けられたユーザU1や、ノードN35に対応するパターンID「PT35」に関連付けられたユーザU50(図示せず)を対応ユーザとして抽出する。
(認証部135)
認証部135は、各種情報を認証する。例えば、認証部135は、抽出部134により抽出された類似パターンに対応付けられたユーザの情報に基づいて、ユーザを認証する。
認証部135は、抽出部134により抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証する。また、認証部135は、抽出部134により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証する。認証部135は、抽出部134により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証するかどうかを判定する。
図1の例では、認証部135は、抽出した対応ユーザに基づいて、ユーザを認証する。例えば、認証部135は、抽出した対応ユーザに基づいて、IoT機器10(TID11)において単語「talk」のキーボード入力を行ったユーザを認証する。
例えば、認証部135は、ユーザ情報記憶部125(図8参照)に記憶されたユーザIDと、そのユーザに対応付けられたIoT機器のIDとに基づいて、認証を行う。認証部135は、IoT機器10(TID11)を利用するユーザがIoT機器10(TID11)に対応付けられたユーザU1であるとして認証する。
(送信部136)
送信部136は、各種情報を送信する。例えば、送信部136は、IoT機器10や情報提供装置50に各種情報を送信する。例えば、送信部136は、IoT機器10や情報提供装置50に各種情報を配信する。送信部136は、抽出部134により抽出された類似パターンに基づいて、所定のサービスを提供する。また、送信部136は、類似パターンに関する情報提供サービスを提供する。送信部136は、IoT機器10に類似パターンに関する情報を送信する。
送信部136は、認証部135による認証結果をIoT機器10へ送信する。例えば、送信部136は、抽出部134により抽出された類似パターンに関連付けられたユーザに関する情報をIoT機器10へ送信してもよい。例えば、送信部136は、クエリに対応するオブジェクトIDを検索結果として送信する。例えば、送信部136は、抽出部134により選択されたオブジェクトIDを情報提供装置50へ送信する。送信部136は、抽出部134により選択されたオブジェクトIDをクエリに対応するベクトルを示す情報として情報提供装置50に送信する。また、送信部136は、生成部132により生成されたモデルを外部の情報処理装置へ送信してもよい。
図1の例では、送信部136は、IoT機器10へ認証結果を送信する。例えば、送信部136は、IoT機器10へ利用しているユーザが正当なユーザであることを示す情報を送信する。例えば、送信部136は、IoT機器10へ利用しているユーザがIoT機器10の所有者であるユーザU1であることを示す情報を送信する。なお、送信部136は、認証がOKである、すなわち正当にユーザの認証が行われた場合、IoT機器10へ認証結果を送信しなくてもよい。また、例えば、送信部136は、認証がNGである、すなわちユーザの認証されなかった場合、IoT機器10へ認証結果を送信してもよい。
〔4.認証処理のフロー〕
次に、図9を用いて、実施形態に係る認証システム1による認証処理の手順について説明する。図9は、実施形態に係る認証処理の一例を示すフローチャートである。
図9に示すように、認証装置100は、IoT機器から一のユーザの行動情報を取得する(ステップS101)。図1の例では、認証装置100は、ユーザU1が利用するキーボードであるIoT機器10(TID11)から単語「talk」のキーボード入力の行動情報AC11を取得する。
認証装置100は、一のユーザの行動情報に対応する行動パターンのグラフ情報を取得する(ステップS102)。例えば、認証装置100は、グラフ情報記憶部123のうち、対象単語「talk」に対応するグラフデータセット123−1から、対象単語「talk」に関するグラフ情報GR11を取得する。
そして、認証装置100は、モデルを用いて一のユーザの行動情報からベクトルを生成する(ステップS103)。図1の例では、認証装置100は、モデル情報記憶部124に記憶されたモデルM1を用いて、行動情報AC11からベクトルVD11を生成する。
そして、認証装置100は、生成したベクトルとインデックス情報を用いて起点ベクトルを決定する(ステップS104)。図1の例では、認証装置100は、ベクトルVD11と、インデックス情報記憶部122に記憶されたインデックス情報IND11とを用いて、起点ベクトルをノードN451に決定する。
そして、認証装置100は、グラフ情報を検索することにより、一のユーザの行動情報の類似パターンを抽出する(ステップS105)。図1の例では、認証装置100は、ノードN451を起点として、グラフ情報GR11を探索することにより、ノードN451やノードN35を類似パターンとして抽出する。
そして、認証装置100は、抽出した類似パターンに関連付けられたユーザに基づいて、一のユーザを認証する(ステップS106)。図1の例では、認証装置100は、行動パターンセット121−1に記憶されたパターンとユーザの関連付けを示す情報と、ユーザ情報記憶部125に記憶されたユーザとIoT機器の関連付け情報とに基づいて、認証を行う。例えば、認証装置100は、類似パターンとして抽出されたノードN451に関連付けられた対応ユーザにユーザU1が含まれるため、キーボードであるIoT機器10(TID11)を利用するユーザがIoT機器10(TID11)に対応付けられたユーザU1であるとして認証する。
また、認証装置100は、IoT機器へ認証結果を送信してもよい。なお、認証装置100は、認証がOKである、すなわち正当にユーザの認証が行われた場合、IoT機器10へ認証結果を送信しなくてもよい。例えば、認証装置100は、認証がNGである、すなわちユーザの認証されなかった場合、IoT機器10へ認証結果を送信してもよい。そして、IoT機器10は、認証がNGであることを示す情報を受信した場合、所定のロック機能によりユーザによる入力や操作を受付けなくしてもよい。例えば、IoT機器10は、認証がNGであることを示す情報を受信した場合、所定の期間(例えば1時間等)に亘って、ロック機能によりユーザによる入力や操作を受付けなくしてもよい。
〔5.生成処理のフロー〕
次に、図10を用いて、実施形態に係る認証システム1による生成処理の手順について説明する。図10は、実施形態に係る生成処理の一例を示すフローチャートである。
図10に示すように、認証装置100は、学習データを取得する(ステップS201)。例えば、認証装置100は、行動パターン情報記憶部121から学習データを取得する。例えば、認証装置100は、行動パターン情報記憶部121から行動情報AC1、AC2等を学習データとして取得する。
その後、認証装置100は、学習データに基づきモデルを生成する(ステップS202)。例えば、認証装置100は、行動パターン情報記憶部121から学習データを用いてモデルM1を生成する。例えば、認証装置100は、入力層に入力される情報(行動データ)と同様の情報(行動データ)を出力層から出力するようにモデルM1を生成する。例えば、認証装置100は、行動の行動データを入力とするオートエンコーダとしてのモデルM1を生成する。
〔6.検索例〕
ここで、上述したグラフ情報を用いた検索の一例を示す。なお、グラフ情報(グラフデータ)を用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図12を一例として説明する。図12は、グラフデータ(グラフ情報)を用いた検索処理の一例を示すフローチャートである。また、以下でいうオブジェクトは、ベクトルやノードと読み替えてもよい。なお、以下では、認証装置100が検索処理を行うものとして説明するが、検索処理は他の装置により行われてもよい。例えば、認証装置100は、検索クエリとして、IoT機器10(TID11)における単語「talk」のキーボード入力の行動データから生成されたベクトルデータを用いる。例えば、認証装置100は、IoT機器10(TID11)における単語「talk」のキーボード入力の行動データから生成されたベクトルデータとインデックス情報とに基づいて決定された起点ベクトルを起点としてグラフデータを検索する。図1の例では、認証装置100は、IoT機器10(TID11)における単語「talk」のキーボード入力のベクトルVD11とインデックス情報IND11とに基づいて決定された起点ベクトルであるノードN451を起点としてグラフ情報GR11を検索する。
ここでは、近傍オブジェクト集合N(G,y)は、ノードyに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「G」は、所定のグラフデータ(例えば、グラフ情報GR11等)であってもよい。例えば、認証装置100は、k近傍検索処理を実行する。
例えば、認証装置100は、超球の半径rを∞(無限大)に設定し(ステップS300)、既存のオブジェクト集合から部分集合Sを抽出する(ステップS301)。例えば、認証装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)を部分集合Sとして抽出してもよい。図1の例では、認証装置100は、起点ベクトルであるノードN451等を部分集合Sとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップS301において抽出されたオブジェクト集合Sに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Rの初期集合にも含められる。
次に、認証装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトをyとするとオブジェクトyとの距離が最も短いオブジェクトを抽出し、オブジェクトsとする(ステップS302)。図1の例では、認証装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、検索クエリオブジェクトであるベクトルVD11との距離が最も短いオブジェクトを抽出し、オブジェクトsとする。例えば、認証装置100は、オブジェクト集合Sに含まれるオブジェクトの中で、ベクトルVD11との距離が最も短いノードN451を抽出し、オブジェクトsとする。例えば、認証装置100は、ルートノード(起点ベクトル)として選択されたオブジェクト(ノード)のみがオブジェクト集合Sの要素の場合には、結果的にルートノード(起点ベクトル)がオブジェクトsとして抽出される。次に、認証装置100は、オブジェクトsをオブジェクト集合Sから除外する(ステップS303)。
次に、認証装置100は、オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超えるか否かを判定する(ステップS304)。ここで、εは拡張要素であり、r(1+ε)は、探索範囲(この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる)の半径を示す値である。オブジェクトsとオブジェクトyとの距離d(s,y)がr(1+ε)を超える場合(ステップS304:Yes)、認証装置100は、オブジェクト集合Rをオブジェクトyの近傍オブジェクト集合として出力し(ステップS305)、処理を終了する。
オブジェクトsと検索クエリオブジェクトyとの距離d(s,y)がr(1+ε)を超えない場合(ステップS304:No)、認証装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトの中からオブジェクト集合Cに含まれないオブジェクトを一つ選択し、選択したオブジェクトuを、オブジェクト集合Cに格納する(ステップS306)。オブジェクト集合Cは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
次に、認証装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下であるか否かを判定する(ステップS307)。オブジェクトuとオブジェクトyとの距離d(u,y)がr(1+ε)以下である場合(ステップS307:Yes)、認証装置100は、オブジェクトuをオブジェクト集合Sに追加する(ステップS308)。
次に、認証装置100は、オブジェクトuとオブジェクトyとの距離d(u,y)がr以下であるか否かを判定する(ステップS309)。オブジェクトuとオブジェクトyとの距離d(u,y)がrを超える場合(ステップS309:No)、認証装置100は、ステップS315の判定(処理)を行う。
オブジェクトuとオブジェクトyとの距離d(u,y)がr以下である場合(ステップS309:Yes)、認証装置100は、オブジェクトuをオブジェクト集合Rに追加する(ステップS310)。そして、認証装置100は、オブジェクト集合Rに含まれるオブジェクト数がksを超えるか否かを判定する(ステップS311)。所定数ksは、任意に定められる自然数である。例えば、ks=2やks=10等の種々の設定であってもよい。
オブジェクト集合Rに含まれるオブジェクト数がksを超える場合(ステップS311:Yes)、認証装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトを、オブジェクト集合Rから除外する(ステップS312)。
次に、認証装置100は、オブジェクト集合Rに含まれるオブジェクト数がksと一致するか否かを判定する(ステップS313)。オブジェクト集合Rに含まれるオブジェクト数がksと一致する場合(ステップS313:Yes)、認証装置100は、オブジェクト集合Rに含まれるオブジェクトの中でオブジェクトyとの距離が最も長い(遠い)オブジェクトと、オブジェクトyとの距離を、新たなrに設定する(ステップS314)。
そして、認証装置100は、オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えたか否かを判定する(ステップS315)。オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えていない場合(ステップS315:No)、認証装置100は、ステップS306に戻って処理を繰り返す。
オブジェクトsの近傍オブジェクト集合N(G,s)の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Cに格納し終えた場合(ステップS315:Yes)、認証装置100は、オブジェクト集合Sが空集合であるか否かを判定する(ステップS316)。オブジェクト集合Sが空集合でない場合(ステップS316:No)、認証装置100は、ステップS302に戻って処理を繰り返す。また、オブジェクト集合Sが空集合である場合(ステップS316:Yes)、認証装置100は、オブジェクト集合Rを出力し、処理を終了する(ステップS317)。例えば、認証装置100は、オブジェクト集合Rに含まれるオブジェクト(ノード)を検索クエリ(入力オブジェクトy)に対応する検索結果として、認証を行う。図1の例では、認証装置100は、オブジェクト集合Rに含まれるノードN451やノードN35を検索クエリ(IoT機器10(TID11)における単語「talk」のキーボード入力のベクトルVD11)に対応する検索結果として、認証を行う。例えば、認証装置100は、ノードN451に関連付けられたユーザU1や、ノードN35に関連付けられたユーザU50(図示せず)をIoT機器10(TID11)における単語「talk」のキーボード入力を行った可能性があるユーザとして認証を行う。
〔7.効果〕
上述してきたように、実施形態に係る認証装置100は、取得部131と、抽出部134と、認証部135とを有する。取得部131は、複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。抽出部134は、取得部131により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。認証部135は、抽出部134により抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証する。
このように、実施形態に係る認証装置100は、起点ノードを起点としてグラフ情報を検索し、抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100は、決定部133を有する。決定部133は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定する。抽出部134は、決定部133により決定された起点ノードを起点として、類似パターンを抽出する。
このように、実施形態に係る認証装置100は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定し、類似パターンを抽出することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、決定部133は、木構造型のインデックス情報に基づいて、起点ノードを決定する。
このように、実施形態に係る認証装置100は、木構造型のインデックス情報に基づいて、起点ノードを決定することにより、適切な認証を行うことができる。
また、実施形態に係る抽出装置100において、取得部131は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
このように、実施形態に係る抽出装置100は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得することにより、類似の行動パターンを適切に抽出し、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
このように、実施形態に係る認証装置100は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
このように、実施形態に係る認証装置100は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、複数の行動パターンに関する情報を所定のモデルに入力することにより、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
このように、実施形態に係る認証装置100は、複数の行動パターンに関する情報を所定のモデルに入力し、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、認証部135は、抽出部134により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証する。
このように、実施形態に係る認証装置100は、類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得する。
このように、実施形態に係る認証装置100は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得する。
このように、実施形態に係る認証装置100は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが類似性に応じて連結されたグラフ情報を取得する。
このように、実施形態に係る認証装置100は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、取得部131は、単語ごとの複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが類似性に応じて連結された複数のグラフ情報を取得する。
このように、実施形態に係る認証装置100は、単語ごとの複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結された複数のグラフ情報を取得することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、抽出部134は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。
このように、実施形態に係る認証装置100は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、一のグラフ情報を検索し、類似パターンを抽出することにより、適切な認証を行うことができる。
また、実施形態に係る認証装置100において、抽出部134は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて、複数の単語に対応する複数の類似パターンを抽出する。認証部135は、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証する。
このように、実施形態に係る認証装置100は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて抽出した複数の単語に対応する複数の類似パターンを用いて、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証することにより、適切な認証を行うことができる。
〔8.ハードウェア構成〕
上述してきた実施形態に係る認証装置100は、例えば図14に示すような構成のコンピュータ1000によって実現される。図14は、認証装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ1000は、CPU1100、RAM1200、ROM(Read Only Memory)1300、HDD(Hard Disk Drive)1400、通信インターフェイス(I/F)1500、入出力インターフェイス(I/F)1600、及びメディアインターフェイス(I/F)1700を有する。
CPU1100は、ROM1300またはHDD1400に格納されたプログラムに基づいて動作し、各部の制御を行う。ROM1300は、コンピュータ1000の起動時にCPU1100によって実行されるブートプログラムや、コンピュータ1000のハードウェアに依存するプログラム等を格納する。
HDD1400は、CPU1100によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス1500は、ネットワークNを介して他の機器からデータを受信してCPU1100へ送り、CPU1100が生成したデータをネットワークNを介して他の機器へ送信する。
CPU1100は、入出力インターフェイス1600を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。CPU1100は、入出力インターフェイス1600を介して、入力装置からデータを取得する。また、CPU1100は、生成したデータを入出力インターフェイス1600を介して出力装置へ出力する。
メディアインターフェイス1700は、記録媒体1800に格納されたプログラムまたはデータを読み取り、RAM1200を介してCPU1100に提供する。CPU1100は、かかるプログラムを、メディアインターフェイス1700を介して記録媒体1800からRAM1200上にロードし、ロードしたプログラムを実行する。記録媒体1800は、例えばDVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto-Optical disk)等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
例えば、コンピュータ1000が実施形態に係る認証装置100として機能する場合、コンピュータ1000のCPU1100は、RAM1200上にロードされたプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を実行することにより、制御部130の機能を実現する。コンピュータ1000のCPU1100は、これらのプログラムまたはデータ(例えば、モデルM1(モデルデータMDT1))を記録媒体1800から読み取って実行するが、他の例として、他の装置からネットワークNを介してこれらのプログラムを取得してもよい。
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
〔9.その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
また、上述してきた「部(section、module、unit)」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。