(57)【要約】      （修正有）【課題】適切な認証を行う認証装置、認証方法、及び認証プログラムを提供する。【解決手段】認証装置１００は、取得部１３１と、抽出部１３４と、認証部１３５とを有する。取得部１３１は、複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。抽出部１３４は、取得部１３１により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。認証部１３５は、抽出部により抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証する。【選択図】図３
2019128795.tif 000002
【特許請求の範囲】
【請求項１】
複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する取得部と、
前記取得部により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を検索することにより、前記複数の行動パターンのうち、前記一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する抽出部と、
前記抽出部により抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する認証部と、
を備えたことを特徴とする認証装置。
【請求項２】
前記起点ノードの決定に用いるインデックス情報に基づいて、前記起点ノードを決定する決定部、
をさらに備え、
前記抽出部は、
前記決定部により決定された前記起点ノードを起点として、前記類似パターンを抽出する
ことを特徴とする請求項１に記載の認証装置。
【請求項３】
前記決定部は、
木構造型の前記インデックス情報に基づいて、前記起点ノードを決定する
ことを特徴とする請求項２に記載の認証装置。
【請求項４】
前記取得部は、
前記複数の行動パターンの各々に対応する複数のベクトルの類似性に応じて、前記複数のノードが連結されたグラフ情報を取得する
ことを特徴とする請求項１〜３のいずれか１項に記載の認証装置。
【請求項５】
前記取得部は、
前記複数の行動パターンの各々の特徴を示す前記複数のベクトルが類似性に応じて連結された前記グラフ情報を取得する
ことを特徴とする請求項４に記載の認証装置。
【請求項６】
前記取得部は、
所定のモデルを用いて前記複数の行動パターンの各々から抽出された特徴量を要素とする前記複数のベクトルが、類似性に応じて連結された前記グラフ情報を取得する
ことを特徴とする請求項４または請求項５に記載の認証装置。
【請求項７】
前記取得部は、
前記複数の行動パターンに関する情報を所定のモデルに入力することにより、抽出される前記複数の行動パターンの各々の特徴量を要素とする前記複数のベクトルが、類似性に応じて連結された前記グラフ情報を取得する
ことを特徴とする請求項４〜６のいずれか１項に記載の認証装置。
【請求項８】
前記認証部は、
前記抽出部により抽出された前記類似パターンに対応付けられた前記対応ユーザに前記一のユーザが含まれるかどうかに応じて、前記一のユーザを認証する
ことを特徴とする請求項１〜７のいずれか１項に記載の認証装置。
【請求項９】
前記取得部は、
センサにより検知されたセンサ情報を前記一のユーザの行動情報として取得する
ことを特徴とする請求項１〜８のいずれか１項に記載の認証装置。
【請求項１０】
前記取得部は、
前記一のユーザによるキーボードを用いた入力情報を前記一のユーザの行動情報として取得する
ことを特徴とする請求項１〜９のいずれか１項に記載の認証装置。
【請求項１１】
前記取得部は、
キーボードを用いた入力に関する前記複数の行動パターンの各々に対応する複数のノードであって、前記対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結されたグラフ情報を取得する
ことを特徴とする請求項１０に記載の認証装置。
【請求項１２】
前記取得部は、
単語ごとの前記複数の行動パターンの各々に対応する複数のノードであって、前記対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結された複数のグラフ情報を取得する
ことを特徴とする請求項１１に記載の認証装置。
【請求項１３】
前記抽出部は、
前記複数のグラフ情報のうち、前記一のユーザが入力した一の単語に対応する一のグラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記一のグラフ情報を検索することにより、前記類似パターンを抽出する
ことを特徴とする請求項１２に記載の認証装置。
【請求項１４】
前記抽出部は、
前記一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて、前記複数の単語に対応する複数の類似パターンを抽出し、
前記認証部は、
前記抽出部により抽出された前記複数の類似パターンの各々に対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する
ことを特徴とする請求項１３に記載の認証装置。
【請求項１５】
コンピュータが実行する認証方法であって、
複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する取得工程と、
前記取得工程により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を検索することにより、前記複数の行動パターンのうち、前記一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する抽出工程と、
前記抽出工程により抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する認証工程と、
を含んだことを特徴とする認証方法。
【請求項１６】
複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する取得手順と、
前記取得手順により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を検索することにより、前記複数の行動パターンのうち、前記一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する抽出手順と、
前記抽出手順により抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する認証手順と、
をコンピュータに実行させることを特徴とする認証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証装置、認証方法、及び認証プログラムに関する。
【背景技術】
【０００２】
従来、種々の情報を用いてユーザ等を認証する技術が提供されている。例えば、入力センシングモジュールからセンシングされた入力手のひら情報と使用者手のひら情報と比較することにより、認証を行う技術が提供されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１８８０９１号公報
【非特許文献】
【０００４】
【非特許文献１】岩崎雅二郎  "木構造型インデックスを利用した近似k最近傍グラフによる近傍検索",  情報処理学会論文誌,  2011/2,  Vol.  52,  No.  2.  pp.817-828.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、適切な認証を行うことが難しい場合がある。例えば、入力センシングモジュールのセンシング面に使用者（ユーザ）の手のひらを接触させる必要が有る等、ユーザにとって煩雑であり、センシング面への手のひらの接触が不十分であればユーザの認証が行われない場合がある等、適切な認証を行うことが難しい場合がある。
【０００６】
本願は、上記に鑑みてなされたものであって、適切な認証を行う認証装置、認証方法、及び認証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本願に係る認証装置は、複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、前記複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する取得部と、前記取得部により取得された前記グラフ情報の前記複数のノードのうち、所定の基準に基づいて決定された前記グラフ情報の検索の起点となる起点ノードを起点として、前記グラフ情報を検索することにより、前記複数の行動パターンのうち、前記一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する抽出部と、前記抽出部により抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する認証部と、を備えたことを特徴とする。
【発明の効果】
【０００８】
実施形態の一態様によれば、適切な認証を行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係る認証処理の一例を示す図である。
【図２】図２は、実施形態に係る認証システムの構成例を示す図である。
【図３】図３は、実施形態に係る認証装置の構成例を示す図である。
【図４】図４は、実施形態に係る行動パターン情報記憶部の一例を示す図である。
【図５】図５は、実施形態に係るインデックス情報記憶部の一例を示す図である。
【図６】図６は、実施形態に係るグラフ情報記憶部の一例を示す図である。
【図７】図７は、実施形態に係るモデル情報記憶部の一例を示す図である。
【図８】図８は、実施形態に係るユーザ情報記憶部の一例を示す図である。
【図９】図９は、実施形態に係る認証処理の一例を示すフローチャートである。
【図１０】図１０は、実施形態に係る生成処理の一例を示すフローチャートである。
【図１１】図１１は、実施形態に係る特徴量の抽出の一例を示す図である。
【図１２】図１２は、グラフ情報を用いた検索処理の一例を示すフローチャートである。
【図１３】図１３は、実施形態に係る認証処理の一例を示す図である。
【図１４】図１４は、認証装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下に、本願に係る認証装置、認証方法、及び認証プログラムを実施するための形態（以下、「実施形態」と呼ぶ）について図面を参照しつつ詳細に説明する。なお、この実施形態により本願に係る認証装置、認証方法、及び認証プログラムが限定されるものではない。また、以下の各実施形態において同一の部位には同一の符号を付し、重複する説明は省略される。
【００１１】
（実施形態）
〔１．認証処理〕
図１を用いて、実施形態に係る認証処理の一例について説明する。図１は、実施形態に係る認証処理の一例を示す図である。図１では、認証装置１００がＩｏＴ（Internet  of  Things）機器１０であるキーボードへのユーザの入力（以下、「キーボード入力」ともいう）におけるユーザの行動情報を取得する場合を示す。例えば、キーボードであるがＩｏＴ機器１０は、各種センサを有し、ユーザがキーボード入力する際の圧力や時間等を検知可能である。また、図１では、認証装置１００がユーザの過去の行動情報（以下、「行動パターン」ともいう）をグラフ構造化したグラフデータ（グラフ情報）を検索することにより、取得した行動情報に類似する行動パターン（以下、「類似パターン」ともいう）を抽出する場合を示す。図１では、認証装置１００は、各行動パターンに対応するベクトルデータ（「ベクトル情報」や、単に「ベクトル」ともいう）を用いて行動パターンをグラフ構造化したグラフ情報を用いる。また、行動パターンには、その行動パターンに対応する行動を行ったユーザ（対応ユーザ）が関連付けられている。なお、認証装置１００が用いる情報は、ベクトルに限らず、各行動パターンの類似性を表現可能な情報であれば、どのような形式の情報であってもよい。例えば、認証装置１００は、各行動パターンに対応する所定のデータや値を用いて行動パターンをグラフ構造化したグラフ情報を用いてもよい。例えば、認証装置１００は、各行動パターンから生成された所定の数値（例えば２進数の値や１６進数の値）を用いて行動パターンをグラフ構造化したグラフ情報を用いてもよい。また、図１の例では、ユーザのキーボード入力における行動情報を一例として示すが、ユーザの行動はキーボード入力に限らず、種々の行動であってもよい。すなわち、対象とする行動パターン（オブジェクト）は、センサ等により検知し、情報が取得可能であり、各行動パターンの類似性を表現可能であれば、どのような行動（情報）であってもよい。なお、ベクトルに代えて、データ間の距離（類似度）が定義されていれば任意の形態のデータであっても良い。
【００１２】
〔１−１．グラフ情報について〕
また、認証装置１００は、図１中のグラフ情報ＧＲ１１に示すように、各ベクトル（ノード）が有向エッジにより連結されたグラフデータを対象に認証処理を行う。なお、図１中のグラフ情報ＧＲ１１に示すようなグラフ情報は、認証装置１００が生成してもよいし、認証装置１００は、図１中のグラフ情報ＧＲ１１に示すようなグラフ情報を情報提供装置５０（図２参照）等の他の外部装置から取得してもよい。なお、グラフ情報ＧＲ１１は、ユーザがキーボードにより単語「ｔａｌｋ」を入力する際に取得（検知）された行動情報（行動パターン）をグラフ構造化したグラフ情報である。
【００１３】
また、ここでいう、有向エッジとは、一方向にしかデータを辿れないエッジを意味する。以下では、エッジにより辿る元、すなわち始点となるノードを参照元とし、エッジにより辿る先、すなわち終点となるノードを参照先とする。例えば、所定のノード「Ａ」から所定のノード「Ｂ」に連結される有向エッジとは、参照元をノード「Ａ」とし、参照先をノード「Ｂ」とするエッジであることを示す。なお、各ノードを連結するエッジは、有向エッジに限らず、種々のエッジであってもよい。例えば、各ノードを連結するエッジは、ノードを連結する方向のないエッジであってもよい。例えば、各ノードを連結するエッジは、相互に参照可能なエッジであってもよい。例えば、各ノードを連結するエッジは、全て双方向エッジであってもよい。
【００１４】
例えば、このようにノード「Ａ」を参照元とするエッジをノード「Ａ」の出力エッジという。また、例えば、このようにノード「Ｂ」を参照先とするエッジをノード「Ｂ」の入力エッジという。すなわち、ここでいう出力エッジ及び入力エッジとは、一の有向エッジをその有向エッジが連結する２つのノードのうち、いずれのノードを中心として捉えるかの相違であり、一の有向エッジが出力エッジ及び入力エッジになる。すなわち、出力エッジ及び入力エッジは、相対的な概念であって、一の有向エッジについて、参照元となるノードを中心として捉えた場合に出力エッジとなり、参照先となるノードを中心として捉えた場合に入力エッジとなる。なお、本実施形態においては、エッジについては、出力エッジや入力エッジ等の有向エッジを対象とするため、以下では、有向エッジを単に「エッジ」と記載する場合がある。
【００１５】
例えば、認証装置１００は、数百万〜数億単位の行動パターンに対応するノードを対象に処理を行うが、図面においてはその一部のみを図示する。図１の例では、説明を簡単にするために、８個のノードを図示して処理の概要を説明する。例えば、認証装置１００は、図１中のグラフ情報ＧＲ１１に示すように、ノードＮ１、Ｎ２、Ｎ３等に示すような複数のノード（ベクトル）を含むグラフ情報を取得する。また、図１の例では、グラフ情報ＧＲ１１における各ノードは、そのノードとの間の距離が近い方から所定数のノードへのエッジ（出力エッジ）が連結される。例えば、所定数は、目的や用途等に応じて、２や５や１０や１００等の種々の値であってもよい。例えば、所定数が２である場合、ノードＮ１からは、ノードＮ１からの距離が最も近いノード及び２番目に距離が近い２つのノードに出力エッジが連結される。なお、類似度を示す指標としての距離は、ベクトル（Ｎ次元ベクトル）間の距離として適用可能であれば、どのような距離であってもよく、例えば、ユークリッド距離やマハラノビス距離やコサイン距離等の種々の距離が用いられてもよい。
【００１６】
また、このように「ノードＮ＊（＊は任意の数値）」と記載した場合、そのノードはノードＩＤ「Ｎ＊」により識別されるノードであることを示す。例えば、「ノードＮ１」と記載した場合、そのノードはノードＩＤ「Ｎ１」により識別されるノードである。
【００１７】
また、図１中のグラフ情報ＧＲ１１では、ノードＮ１０は、ノードＮ７へ向かう有向エッジであるエッジＥ７が連結される。すなわち、ノードＮ１０は、ノードＮ７とエッジＥ７により連結される。このように「エッジＥ＊（＊は任意の数値）」と記載した場合、そのエッジはエッジＩＤ「Ｅ＊」により識別されるエッジであることを示す。例えば、「エッジＥ１１」と記載した場合、そのエッジはエッジＩＤ「Ｅ１１」により識別されるエッジである。例えば、ノードＮ１０を参照元とし、ノードＮ７を参照先として連結されるエッジＥ７により、ノードＮ１０からノードＮ７に辿ることが可能となる。この場合、有向エッジであるエッジＥ７は、ノードＮ１０を中心として識別される場合、出力エッジとなり、ノードＮ７を中心として識別される場合、入力エッジとなる。また、図１のグラフ情報ＧＲ１１中の双方向矢印は、両方のノードから他方のノードへの有向エッジが連結されることを示す。例えば、グラフ情報ＧＲ１１中のノードＮ２とノードＮ４５１との間の双方向矢印は、ノードＮ２からノードＮ４５１へ向かう有向エッジと、ノードＮ４５１からノードＮ２へ向かう有向エッジとの２つのエッジが連結されることを示す。
【００１８】
また、図１中のグラフ情報ＧＲ１１は、ユークリッド空間であってもよい。また、図１に示すグラフ情報ＧＲ１１は、各ベクトル間の距離等の説明のための概念的な図であり、グラフ情報ＧＲ１１は、多次元空間である。例えば、図１に示すグラフ情報ＧＲ１１は、平面上に図示するため２次元の態様にて図示されるが、例えば１００次元や１０００次元等の多次元空間であるものとする。
【００１９】
ここで、ベクトルデータ間の距離は、行動パターンの類似性を示し、距離が近いほど類似している。本実施形態においては、グラフ情報ＧＲ１１における各ノードの距離を対応する各オブジェクト間の類似度とする。例えば、各ノードに対応する対象（行動パターン）の類似性が、グラフ情報ＧＲ１１内におけるノード間の距離として写像されているものとする。例えば、各ノードに対応する概念間の類似度が各ノード間の距離に写像されているものとする。ここで、図１に示す例においては、グラフ情報ＧＲ１１における各ノード間の距離が短いオブジェクト同士の類似度が高く、グラフ情報ＧＲ１１における各ノード間の距離が長いオブジェクト同士の類似度が低い。例えば、図１中のグラフ情報ＧＲ１１において、ノードＩＤ「Ｎ３５」により識別されるノードと、ノードＩＤ「Ｎ６９３」により識別されるノードとは近接している、すなわち距離が短い。そのため、ノードＩＤ「Ｎ３５」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ６９３」により識別されるノードに対応するオブジェクトとは類似度が高いことを示す。
【００２０】
また、例えば、図１中のグラフ情報ＧＲ１１において、ノードＩＤ「Ｎ７」により識別されるノードと、ノードＩＤ「Ｎ２」により識別されるノードとは遠隔にある、すなわち距離が長い。そのため、ノードＩＤ「Ｎ７」により識別されるノードに対応するオブジェクトと、ノードＩＤ「Ｎ２」により識別されるノードに対応するオブジェクトとは類似度が低いことを示す。
【００２１】
〔１−２．ベクトルの生成例〕
また、ここでいう、各ノード（ベクトル）は、各オブジェクト（行動パターン）に対応する。行動情報や行動パターンが様々なユーザの状態等を示す数値データであれば、それをベクトルデータとして、そのまま扱うことも可能である。しかし、行動情報や行動パターンが、テキスト、画像、または、音声であったりする場合には、ベクトルデータへの変換が必要となる。そこで、図１の例では、各行動の行動データ（行動情報）から抽出された特徴量により生成された多次元（Ｎ次元）のベクトルがオブジェクトであってもよい。
【００２２】
例えば、認証装置１００は、行動データの特徴を抽出するモデルを用いて各行動の行動データからＮ次元ベクトルを生成してもよい。図１の例では、認証装置１００は、モデル情報記憶部１２４（図７参照）に示すように、モデルＩＤ「Ｍ１」により識別されるモデル（モデルＭ１）を用いて、各行動の行動データからベクトルを生成する。上記のように、「モデルＭ＊（＊は任意の数値）」と記載した場合、そのモデルはモデルＩＤ「Ｍ＊」により識別されるモデルであることを示す。例えば、「モデルＭ１」と記載した場合、そのモデルはモデルＩＤ「Ｍ１」により識別されるモデルである。また、モデル情報記憶部１２４に示すように、モデルＭ１は用途「特徴抽出（キーボード入力）」、すなわちキーボード入力における行動のデータからの特徴抽出のために用いられるモデルであり、その具体的なモデルデータが「モデルデータＭＤＴ１」であることを示す。
【００２３】
例えば、認証装置１００は、モデルＭ１にキーボード入力におけるユーザの行動データを入力することにより、モデルＭ１中の各要素（ニューロン）の値を演算し、入力した行動データと同様の情報を出力する。具体的には、認証装置１００は、モデルＭ１に任意の１つの単語のキーボード入力におけるユーザの行動データを入力することにより、モデルＭ１中の各要素（ニューロン）の値を演算し、入力した行動データと同様の情報を出力する。例えば、認証装置１００は、中間層の各要素（ニューロン）の値を特徴量として抽出し、ユーザによる各単語のキーボード入力に対応するＮ次元のベクトルデータを生成してもよい。そして、認証装置１００は、各単語のキーボード入力に対応するＮ次元のベクトルデータに入力を行ったユーザの識別する情報を関連付けてもよい。
【００２４】
ここで、図１１を用いて、ユーザによる各単語のキーボード入力に対応するベクトルデータの生成の一例を示す。図１１は、実施形態に係る特徴量の抽出の一例を示す図である。図１１は、モデルＭ１の概念図である。なお、図１１では、各要素（ニューロン）の各接続関係を示す線の図示を省略する。図１１に示すように、モデルＭ１は、入力層ＩＬと、中間層ＣＬと、出力層ＯＬとを含む。例えば、モデルＭ１の入力層ＩＬは、行動データが入力される層である。また、出力層ＯＬは、入力層ＩＬへの入力に応じて、入力された行動データと同様の情報を出力される層である。
【００２５】
また、例えば、中間層ＣＬの中央部の最も圧縮された圧縮層ＲＰは、入力された行動データの特徴を表現する層である。例えば、モデルＭ１の中間層ＣＬにおいて、入力層ＩＬから圧縮層ＲＰまでの間は、エンコードの処理を行う部分に対応する。モデルＭ１の中間層ＣＬにおいて、入力層ＩＬから圧縮層ＲＰまでの間は、入力された行動データの特徴を圧縮する処理を行う部分に対応する。例えば、モデルＭ１の中間層ＣＬにおいて、圧縮層ＲＰから出力層ＯＬまでの間は、デコードの処理を行う部分に対応する。モデルＭ１の中間層ＣＬにおいて、圧縮層ＲＰから出力層ＯＬまでの間は、圧縮された行動データを復元する処理を行う部分に対応する。
【００２６】
例えば、認証装置１００は、圧縮層ＲＰに含まれるニューロンＮＬ１やニューロンＮＬ２等の情報をベクトルに用いてもよい。例えば、認証装置１００は、ある行動の行動データが入力された場合に、算出されるニューロンＮＬ１に対応する値ＶＥ１やニューロンＮＬ２に対応する値ＶＥ２をベクトルの要素（一の次元の値）として抽出してもよい。例えば、認証装置１００は、ある行動の行動データが入力された場合に、算出されるニューロンＮＬ１に対応する値ＶＥ１をその行動のベクトルの１次元目の要素として抽出してもよい。また、例えば、認証装置１００は、ある行動の行動データが入力された場合に、算出されるニューロンＮＬ２に対応する値ＶＥ２をその行動のベクトルの２次元目の要素として抽出してもよい。例えば、認証装置１００は、ユーザによる各単語のキーボード入力の行動データをモデルＭ１に入力することにより、ユーザによる各単語のキーボード入力に対応するベクトルを生成してもよい。なお、認証装置１００は、ユーザによる各単語のキーボード入力に対応するベクトルを情報提供装置５０等の他の外部装置から取得してもよい。なお、認証装置１００は、ベクトルの各要素として、各ニューロンに対応する値自体を用いてもよいし、各ニューロンに対応する値に所定の係数を乗算した値を用いてもよい。また、図１の例では説明を簡単にするために、ベクトルの各要素（値）が整数である場合を示すが、ベクトルの各要素（値）は、小数点以下の数値を含む実数であってもよい。
【００２７】
なお、認証装置１００は、圧縮層ＲＰの要素（ニューロン）に限らず、中間層ＣＬ中の他の要素（ニューロン）の情報をベクトルに用いてもよい。例えば、認証装置１００は、エンコード部分のニューロンＮＬ３やデコード部分のニューロンＮＬ４等の情報をベクトルに用いてもよい。例えば、認証装置１００は、ある行動の行動データが入力された場合に、算出されるニューロンＮＬ３に対応する値ＶＥ３やニューロンＮＬ４に対応する値ＶＥ４をベクトルの要素（一の次元の値）として抽出してもよい。なお、上記は、一例であり、認証装置１００は、オートエンコーダに限らず、種々のモデルを用いて、行動データからの特徴抽出を行ってもよい。例えば、各行動パターンを識別するように学習させたモデルを生成して、その中間層をベクトルデータとして抽出しても良い。また、例えば、トリプレットロス（triplet  loss）といった類似性を学習する方法によりモデルを生成しても良い。また、認証装置１００は、モデルを用いずに、特徴抽出を行ってもよい。例えば、認証装置１００は、認証装置１００の管理者等が設定して特徴（素性）に対応する情報を行動データから抽出し、ベクトルを生成してもよい。例えば、認証装置１００は、一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等の特徴（素性）に対応する情報を行動データから抽出し、ベクトルを生成してもよい。
【００２８】
また、例えば、認証装置１００は、情報提供装置５０等の他の外部装置からモデルＭ１を取得してもよい。なお、認証装置１００は、行動パターン情報記憶部１２１（図４参照）に記憶された対象単語「ｔａｌｋ」のキーボード入力の行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等を入力として、モデルＭ１を生成してもよい。例えば、認証装置１００は、外部装置から取得した対象単語「ｔａｌｋ」のキーボード入力の行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等を入力として、モデルＭ１を生成してもよい。例えば、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等は、ユーザが対象単語を入力する際に検知（取得）される各種情報を含んでもよい。例えば、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等は、一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含んでもよい。例えば、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等の行動情報は、対象単語「ｔａｌｋ」を入力するまでに要する時間を文字数４で除した時間を、一文字を入力する平均時間として含んでもよい。例えば、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等の行動情報は、対象単語「ｔａｌｋ」を入力するまでに要する時間からキーボードが押下されている時間を減算し、減算し算出した時間を文字数４で除した時間を、各文字間の平均間隔として含んでもよい。例えば、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１等の行動情報は、対象単語「ｔａｌｋ」の各文字を入力する際のユーザのキーボードを押す圧力値の合算を文字数４で除した時間を、キーボードを押す平均圧力として含んでもよい。なお、上記は一例であり、行動情報には、どのような情報が含まれてもよい。また、認証装置１００は、行動情報ＡＣ１、ＡＣ２、ＡＣ４５１に限らず、種々の単語のキーボード入力における行動情報を入力として、モデルＭ１を生成してもよい。
【００２９】
認証装置１００は、行動情報（行動データ）が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第１要素と、第１要素と第１要素の重みとに基づいて値が算出される第２要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第１要素として、第１要素と第１要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルＭ１を生成してもよい。なお、認証装置１００は、ベクトル生成に用いるモデルを情報提供装置５０等の他の外部装置から取得してもよい。
【００３０】
〔１−３．処理例〕
ここから、認証装置１００は、キーボードであるＩｏＴ機器１０（ＴＩＤ１１）から単語「ｔａｌｋ」のキーボード入力における行動情報を取得し、その行動情報に基づいてユーザを認証する場合を一例として説明する。
【００３１】
図１では、ＩＤ「ＴＩＤ１１」により識別されるＩｏＴ機器１０（ＴＩＤ１１）であるキーボードは、パソコンＰＣ１１における入力インターフェイスである。以下では、ＩＤ「ＴＩＤ１１」により識別されるキーボードであるＩｏＴ機器１０（ＴＩＤ１１）を単にＩｏＴ機器１０と記載する場合がある。この場合、キーボードであるＩｏＴ機器１０は、ユーザによるキーボード入力をパソコンＰＣ１１における入力として受け付けつつ、認証装置１００へ送信する。すなわち、ＩｏＴ機器１０を使用するユーザは、パソコンＰＣ１１における入力手段としてＩｏＴ機器１０を使用しつつ、そのキーボード入力により、認証装置１００による認証を受けることができる。以下、具体的な認証の手順を説明する。
【００３２】
図１の例では、ユーザＵ１は、パソコンＰＣ１１を利用しており、パソコンＰＣ１１におけるキーボード入力を行うＩｏＴ機器１０を操作する。すなわち、ユーザＵ１は、パソコンＰＣ１１の入力インターフェイスとしてＩｏＴ機器１０を使用し、キーボード入力を行う。
【００３３】
まず、ユーザＵ１は、ＩｏＴ機器１０により単語「ｔａｌｋ」のキーボード入力を行う（ステップＳ１０）。これにより、ＩｏＴ機器１０は、ユーザＵ１の単語「ｔａｌｋ」のキーボード入力を受け付ける。また、ＩｏＴ機器１０は、ユーザＵ１の単語「ｔａｌｋ」のキーボード入力した際の行動情報ＡＣ１１を取得（検知）する。例えば、行動情報ＡＣ１１は、ユーザＵ１が単語「ｔａｌｋ」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
【００３４】
そして、ユーザＵ１の単語「ｔａｌｋ」のキーボード入力した際の行動情報ＡＣ１１を取得したＩｏＴ機器１０は、行動情報ＡＣ１１を認証用情報として認証装置１００へ送信する。また、図１の例では、ＩｏＴ機器１０は、行動情報ＡＣ１１とともに、自装置（行動情報ＡＣ１１を取得したＩｏＴ機器１０）を識別する情報（ＩｏＴ機器情報）を認証装置１００へ送信する。ＩｏＴ機器１０は、認証装置１００がＩｏＴ機器１０を特定可能であれば、どのような情報を認証装置１００へ送信してもよい。例えば、ＩｏＴ機器１０は、キーボードであるＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を、行動情報ＡＣ１１とともに認証装置１００へ送信する。このように、図１の例では、ＩｏＴ機器１０は、行動情報ＡＣ１１及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を認証用情報として認証装置１００へ送信する。
【００３５】
そして、認証装置１００は、ＩｏＴ機器１０から行動情報ＡＣ１１及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を含む認証用情報を取得する（ステップＳ１１）。また、ＩｏＴ機器１０から認証用情報を取得した認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する処理を行う。まず、認証装置１００は、ＩｏＴ機器１０における単語「ｔａｌｋ」のキーボード入力に対応する行動データ（行動情報ＡＣ１１）からグラフ情報の探索に用いるベクトルを生成する。図１の例では、認証装置１００は、処理群ＰＳ１１に示すような処理により、行動情報ＡＣ１１に対応するベクトルを生成する。認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１をモデルＭ１に入力する（ステップＳ１２）。例えば、認証装置１００は、単語「ｔａｌｋ」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む行動情報ＡＣ１１をモデルＭ１に入力する。そして、認証装置１００は、行動情報ＡＣ１１の入力後のモデルＭ１中の情報を用いて、ベクトルを生成する（ステップＳ１３）。例えば、認証装置１００は、行動情報ＡＣ１１が入力されたモデルＭ１中の各要素を用いて、ベクトルデータを生成する。
【００３６】
図１の例では、認証装置１００は、行動情報ＡＣ１１が入力されたモデルＭ１中の各要素の値を用いて、ベクトルデータＶＤ１１（単に「ベクトルＶＤ１１」ともいう）を生成する。例えば、認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１が入力された場合における、モデルＭ１のニューロンＮＬ１に対応する値ＶＥ１（図１１参照）やニューロンＮＬ２に対応する値ＶＥ２（図１１参照）を用いて、ベクトルを生成する。例えば、認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１が入力された場合に、算出されるニューロンＮＬ１に対応する値ＶＥ１をベクトルＶＤ１１の１次元目の要素として抽出してもよい。また、例えば、認証装置１００は、ある行動の行動データが入力された場合に、算出されるニューロンＮＬ２に対応する値ＶＥ２をベクトルＶＤ１１の２次元目の要素として、ベクトルＶＤ１１を生成する。図１の例では、認証装置１００は、１次元目の要素が「３５」であり、２次元目の要素が「６３」であるようなベクトルＶＤ１１を生成する。
【００３７】
そして、認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１に類似する行動パターン（類似パターン）を検索する（ステップＳ１４）。例えば、認証装置１００は、非特許文献１に開示されるような近傍検索の技術等の種々の従来技術を適宜用いて、行動情報ＡＣ１１の類似パターンを検索してもよい。
【００３８】
図１の例では、認証装置１００は、情報群ＩＮＦ１１に示すように、グラフ情報ＧＲ１１やインデックス情報ＩＮＤ１１を用いて、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを検索する。例えば、認証装置１００は、グラフ情報記憶部１２３（図６参照）から単語「ｔａｌｋ」に関するグラフ情報ＧＲ１１を取得する。また、例えば、認証装置１００は、インデックス情報記憶部１２２（図５参照）から、単語「ｔａｌｋ」に関するインデックス情報ＩＮＤ１１を取得する。例えば、認証装置１００は、インデックス情報記憶部１２２から、グラフ情報ＧＲ１１における検索の起点となるノード（以下、「起点ベクトル」ともいう）の決定に用いるインデックス情報ＩＮＤ１１を取得する。なお、インデックス情報ＩＮＤ１１は、認証装置１００が生成してもよいし、認証装置１００は、インデックス情報ＩＮＤ１１を情報提供装置５０等の他の外部装置から取得してもよい。
【００３９】
そして、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力（クエリ）に対応する起点ベクトルを決定（特定）するために、インデックス情報ＩＮＤ１１を用いる。図１の例では、認証装置１００は、行動情報ＡＣ１１のベクトルＶＤ１１に対応する起点ベクトルを決定（特定）するために、インデックス情報ＩＮＤ１１を用いる。すなわち、認証装置１００は、ベクトルＶＤ１１とインデックス情報ＩＮＤ１１とを用いて、グラフ情報ＧＲ１１における起点ベクトルを決定する。
【００４０】
図１中のインデックス情報ＩＮＤ１１は、図５中のインデックス情報記憶部１２２に示す階層構造を有する。例えば、インデックス情報ＩＮＤ１１は、ルートＲＴの直下に位置する第１階層のノード（ベクトル）が、節点ＶＴ１、ＶＴ２等であることを示す。また、例えば、インデックス情報ＩＮＤ１１は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４（図示せず）であることを示す。また、例えば、インデックス情報ＩＮＤ１１は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３５、ノードＮ４５１、ノードＮ６９３、すなわちグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。
【００４１】
例えば、認証装置１００は、図１中のインデックス情報ＩＮＤ１１に示すような木構造型のインデックス情報を用いて、グラフ情報ＧＲ１１における起点ベクトルを決定する（ステップＳ１５）。図１の例では、認証装置１００は、ベクトルＶＤ１１を生成した後、インデックス情報ＩＮＤ１１を上から下へ辿ることにより、インデックス情報ＩＮＤ１１の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ（ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力）に対応する起点ベクトルを決定することができる。
【００４２】
例えば、認証装置１００は、インデックス情報ＩＮＤ１１をルートＲＴからリーフノード（グラフ情報ＧＲ１１中のノード（ベクトル））まで辿ることにより、ベクトルＶＤ１１に対応する起点ベクトルを決定してもよい。図１の例では、例えば、認証装置１００は、インデックス情報ＩＮＤ１１をルートＲＴからノードＮ４５１まで辿ることにより、ノードＮ４５１を起点ベクトルとして決定する。なお、図１の例では、説明を簡単にするために、起点ベクトルを１つ決定する場合を示すが、認証装置１００は、複数個の起点ベクトルを決定してもよい。例えば、認証装置１００は、ノードＮ４５１、Ｎ３５、Ｎ６９３、Ｎ２等の複数個のベクトル（ノード）を起点ベクトルとして決定してもよい。例えば、抽出装置１００は、木構造に関する種々の従来技術を適宜用いて、インデックス情報ＩＮＤ１１をルートＲＴからリーフノードまで辿ることにより、辿りついたリーフノードを起点ベクトルとして決定してもよい。例えば、抽出装置１００は、ベクトルＶＤ１１との類似度に基づいて、インデックス情報ＩＮＤ１１を下へ辿ることにより、起点ベクトルを決定してもよい。例えば、抽出装置１００は、ルートＲＴから節点ＶＴ１、ＶＴ２等のいずれの節点に辿るかを、ベクトルＶＤ１１と節点ＶＴ１、ＶＴ２との類似度に基づいて決定してもよい。例えば、抽出装置１００は、ルートＲＴから節点ＶＴ１、ＶＴ２等のうち、ベクトルＶＤ１１との類似度が最も高い節点ＶＴ２へ辿ると決定してもよい。また、例えば、抽出装置１００は、節点ＶＴ２から節点ＶＴ２−１〜ＶＴ２−４等のうち、ベクトルＶＤ１１との類似度が最も高い節点ＶＴ２−２へ辿ると決定してもよい。また、例えば、抽出装置１００は、節点ＶＴ２−２からノードＮ３５、Ｎ４５１、Ｎ６９３等のうち、ベクトルＶＤ１１との類似度が最も高い節点ノードＮ４５１へ辿ると決定してもよい。なお、インデックス情報ＩＮＤ１１を用いずに、検索開始時にグラフ情報ＧＲ１１からランダムに１つ以上のノードを選択し、それを起点ベクトルとしてもよいし、または、予め指定された１つ以上のノードを起点ベクトルとしても良い。
【００４３】
そして、認証装置１００は、グラフ情報ＧＲ１１を検索することにより、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する（ステップＳ１６）。例えば、認証装置１００は、ノードＮ４５１の近傍に位置するノードを類似パターンとして抽出する。例えば、認証装置１００は、ノードＮ４５１からの距離が近いノードを類似パターンとして抽出する。例えば、認証装置１００は、ノードＮ４５１を起点として、エッジを辿ることにより、ノードＮ４５１から到達可能なノードを類似パターンとして抽出する。例えば、認証装置１００は、所定数（例えば、２個や１０個等）のノードを類似パターンとして抽出する。例えば、認証装置１００は、図１２に示すような検索処理により、行動情報ＡＣ１１の類似パターンを抽出してもよいが、詳細は後述する。図１の例では、認証装置１００は、ノードＮ４５１を起点として、グラフ情報ＧＲ１１を探索することにより、ノードＮ４５１やノードＮ３５を類似パターンとして抽出する。
【００４４】
そして、認証装置１００は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ（以下、「対応ユーザ」ともいう）を抽出する（ステップＳ１７）。例えば、認証装置１００は、行動パターン情報記憶部１２１（図４参照）に記憶された行動パターンとユーザとの対応付けに基づいて、対応ユーザを抽出する。図１の例では、認証装置１００は、行動パターン情報記憶部１２１のうち、単語「ｔａｌｋ」に対応する行動パターンデータセット１２１−１中のパターンＩＤとユーザとの対応付けに基づいて、対応ユーザを抽出する。なお、図１では、行動パターンデータセット１２１−１に記憶された情報のうち、説明に必要な情報のみを図示する。
【００４５】
例えば、認証装置１００は、ノードＮ４５１に対応するパターンＩＤ「ＰＴ４５１」に関連付けられたユーザＵ１や、ノードＮ３５に対応するパターンＩＤ「ＰＴ３５」に関連付けられたユーザＵ５０（図示せず）を対応ユーザとして抽出する。
【００４６】
そして、認証装置１００は、抽出した対応ユーザに基づいて、ユーザを認証する（ステップＳ１８）。例えば、認証装置１００は、抽出した対応ユーザに基づいて、ＩｏＴ機器１０（ＴＩＤ１１）において単語「ｔａｌｋ」のキーボード入力を行ったユーザを認証する。
【００４７】
例えば、認証装置１００は、ユーザ情報記憶部１２５に記憶されたユーザＩＤと、そのユーザに対応付けられたＩｏＴ機器のＩＤとに基づいて、認証を行う。図１の例では、認証装置１００は、ユーザ情報記憶部１２５に示すような、対応ユーザとして抽出されたユーザＵ１に、単語「ｔａｌｋ」のキーボード入力が行われ行動情報ＡＣ１１が取得されたキーボードであるＩｏＴ機器１０（ＴＩＤ１１）が関連付けられていることを示す情報を取得する。そのため、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であるとして認証する。すなわち、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であり、ＩｏＴ機器１０（ＴＩＤ１１）を利用する正当なユーザと認証する。
【００４８】
そして、認証装置１００は、ＩｏＴ機器１０へ認証結果を送信する（ステップＳ１９）。例えば、認証装置１００は、ＩｏＴ機器１０へ利用しているユーザが正当なユーザであることを示す情報を送信する。例えば、認証装置１００は、ＩｏＴ機器１０へ利用しているユーザがＩｏＴ機器１０の所有者であるユーザＵ１であることを示す情報を送信する。なお、認証装置１００は、認証がＯＫである、すなわち正当にユーザの認証が行われた場合、ＩｏＴ機器１０へ認証結果を送信しなくてもよい。また、例えば、認証装置１００は、認証がＮＧである、すなわちユーザの認証されなかった場合、ＩｏＴ機器１０へ認証結果を送信してもよい。なお、この点については図１３の説明で詳述する。
【００４９】
上述したように、認証装置１００は、グラフ情報ＧＲ１１やインデックス情報ＩＮＤ１１を用いて、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する。例えば、認証装置１００は、インデックス情報ＩＮＤ１１を用いて、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する際のグラフ情報ＧＲ１１における起点ベクトルを決定する。そして、認証装置１００は、決定した起点ベクトルを起点としてグラフ情報ＧＲ１１を探索することにより、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する。そして、認証装置１００は、抽出した類似パターンに基づいて対応ユーザを抽出し、対応ユーザとＩｏＴ機器との対応付けに基づいて、ユーザの認証を行う。これにより、認証装置１００は、適切な認証を行うことができる。例えば、ディープラーニングといった手法で、行動パターンを識別するという方法もあるが、多種多様な行動パターンが存在する場合においては、各行動パターンの事例（行動情報）が少ないので、学習ができずに識別精度を向上させることが難しいという問題がある。例えば、ディープラーニングといった学習手法で生成したモデルを用いて、そのモデルに行動情報を入力し、出力されたスコアから行動パターンを識別するという方法もあるが、多種多様な不具合が存在する場合においては、各不具合の事例が少ないため、モデルの精度を向上させることが難しく、行動パターンの識別精度を向上させることが難しい。一方で、抽出装置１００は、各行動パターンから抽出した特徴を基に生成した複数のベクトルのグラフ構造化したグラフ情報を用いて検索を行うことにより、取得（検知）した行動情報に類似する類似行動パターンを適切に抽出することができる。そのため、抽出装置１００は、取得（検知）した行動情報がどのような行動パターンに該当するかを精度よく識別することができる。そのため、認証装置１００は、適切な認証を行うことができる。
【００５０】
〔１−４．複数の単語の認証〕
〔１−４−１．処理例〕
図１の例では、１つの単語による認証の例を示したが、認証装置１００は、複数の単語のキーボード入力に基づいてユーザを認証してもよい。この点について、図１３を用いて説明する。図１３は、実施形態に係る認証処理の一例を示す図である。なお、図１３における認証処理については、図１で説明した処理は適宜説明を省略する。
【００５１】
図１３では、あるユーザ（以下、「ユーザＸ」とする）がパソコンＰＣ１１のキーボードであるＩｏＴ機器１０（ＴＩＤ１１）を用いてパソコンＰＣ１１の操作を行っている場合を示す。図１３では、認証装置１００は、キーボードであるＩｏＴ機器１０（ＴＩＤ１１）から単語「ｔａｌｋ」、「ｉｓ」、「ｇｏｏｄ」等の複数の単語のキーボード入力における複数の行動情報を取得し、各行動情報に基づいてユーザを認証する場合を一例として説明する。
【００５２】
図１３の例では、ユーザＸ（図示省略）は、パソコンＰＣ１１を利用しており、パソコンＰＣ１１におけるキーボード入力を行うＩｏＴ機器１０を操作する。すなわち、ユーザＸは、パソコンＰＣ１１の入力インターフェイスとしてＩｏＴ機器１０を使用し、キーボード入力を行う。
【００５３】
まず、ユーザＸは、１つ目の単語として、ＩｏＴ機器１０により単語「ｔａｌｋ」のキーボード入力を行う（ステップＳ５１）。これにより、ＩｏＴ機器１０は、ユーザＸの単語「ｔａｌｋ」のキーボード入力を受け付ける。また、ＩｏＴ機器１０は、ユーザＸの単語「ｔａｌｋ」のキーボード入力した際の行動情報ＡＣ５１を取得（検知）する。例えば、行動情報ＡＣ５１は、ユーザＸが単語「ｔａｌｋ」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
【００５４】
そして、ユーザＸの単語「ｔａｌｋ」のキーボード入力した際の行動情報ＡＣ５１を取得したＩｏＴ機器１０は、行動情報ＡＣ５１を認証用情報として認証装置１００へ送信する（ステップＳ５２）。また、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５１とともに、自装置（行動情報ＡＣ５１を取得したＩｏＴ機器１０）を識別する情報（ＩＤ情報）を認証装置１００へ送信する。例えば、ＩｏＴ機器１０は、キーボードであるＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を、行動情報ＡＣ５１とともに認証装置１００へ送信する。このように、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５１及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を認証用情報として認証装置１００へ送信する。
【００５５】
そして、ＩｏＴ機器１０から行動情報ＡＣ５１及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を含む認証用情報を取得した認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ５１の類似パターンを抽出する処理を行う。まず、認証装置１００は、ＩｏＴ機器１０における単語「ｔａｌｋ」のキーボード入力に対応する行動データ（行動情報ＡＣ５１）からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置１００は、単語「ｔａｌｋ」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む行動情報ＡＣ５１をモデルＭ１に入力する。そして、認証装置１００は、行動情報ＡＣ５１の入力後のモデルＭ１中の情報を用いて、ベクトルを生成する（ステップＳ５３）。例えば、認証装置１００は、行動情報ＡＣ５１が入力されたモデルＭ１中の各要素を用いて、ベクトルデータを生成する。
【００５６】
図１３の例では、認証装置１００は、行動情報ＡＣ５１が入力されたモデルＭ１中の各要素の値を用いて、ベクトルデータＶＤ５１を生成する。例えば、認証装置１００は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ５１が入力された場合における、モデルＭ１のニューロンＮＬ１に対応する値ＶＥ１（図１１参照）やニューロンＮＬ２に対応する値ＶＥ２（図１１参照）を用いて、ベクトルを生成する。
【００５７】
そして、認証装置１００は、単語「ｔａｌｋ」に対応するグラフ情報ＧＲ１１やインデックス情報ＩＮＤ１１を含む情報群ＩＮＦ１１やベクトルデータＶＤ５１を用いて、対応ユーザを抽出する（ステップＳ５４）。例えば、認証装置１００は、グラフ情報ＧＲ１１を検索することにより、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ５１の類似パターンとして、ノードＮ４５１やノードＮ３５を抽出する。そして、認証装置１００は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ（対応ユーザ）を抽出する。例えば、認証装置１００は、ノードＮ４５１に対応するパターンＩＤ「ＰＴ４５１」に関連付けられたユーザＵ１や、ノードＮ３５に対応するパターンＩＤ「ＰＴ３５」に関連付けられたユーザＵ５０を対応ユーザとして抽出する。このように、図１３の例では、認証装置１００は、対応ユーザ一覧ＵＬ５１に示すように、ユーザＵ１やユーザＵ５０を対応ユーザとして抽出する。
【００５８】
そして、認証装置１００は、抽出した対応ユーザに基づいて、ユーザＸを認証する（ステップＳ５５）。例えば、認証装置１００は、ユーザ情報記憶部１２５に記憶されたユーザＩＤと、そのユーザに対応付けられたＩｏＴ機器のＩＤとに基づいて、認証を行う。図１３の例では、認証装置１００は、ユーザ情報記憶部１２５に示すような、対応ユーザとして抽出されたユーザＵ１に、単語「ｔａｌｋ」のキーボード入力が行われ行動情報ＡＣ５１が取得されたキーボードであるＩｏＴ機器１０（ＴＩＤ１１）が関連付けられていることを示す情報を取得する。そのため、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザＸがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であるとして認証する。図１３の例では、認証装置１００は、認証がＯＫの場合、ＩｏＴ機器１０へ認証結果を送信しないものとする。また、ＩｏＴ機器は、認証装置１００から認証がＮＧであることを示す情報を受信するまでは、ユーザＸによる操作を受け付けるものとする。
【００５９】
次に、ユーザＸは、２つ目の単語として、ＩｏＴ機器１０により単語「ｉｓ」のキーボード入力を行う（ステップＳ５６）。これにより、ＩｏＴ機器１０は、ユーザＸの単語「ｉｓ」のキーボード入力を受け付ける。また、ＩｏＴ機器１０は、ユーザＸの単語「ｉｓ」のキーボード入力した際の行動情報ＡＣ５２を取得（検知）する。例えば、行動情報ＡＣ５２は、ユーザＸが単語「ｉｓ」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
【００６０】
そして、ユーザＸの単語「ｉｓ」のキーボード入力した際の行動情報ＡＣ５２を取得したＩｏＴ機器１０は、行動情報ＡＣ５２を認証用情報として認証装置１００へ送信する（ステップＳ５７）。また、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５２とともに、自装置（行動情報ＡＣ５２を取得したＩｏＴ機器１０）を識別する情報（ＩＤ情報）を認証装置１００へ送信する。例えば、ＩｏＴ機器１０は、キーボードであるＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を、行動情報ＡＣ５２とともに認証装置１００へ送信する。このように、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５２及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を認証用情報として認証装置１００へ送信する。
【００６１】
そして、ＩｏＴ機器１０から行動情報ＡＣ５２及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を含む認証用情報を取得した認証装置１００は、単語「ｉｓ」のキーボード入力に対応する行動情報ＡＣ５２の類似パターンを抽出する処理を行う。まず、認証装置１００は、ＩｏＴ機器１０における単語「ｉｓ」のキーボード入力に対応する行動データ（行動情報ＡＣ５２）からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置１００は、単語「ｉｓ」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む行動情報ＡＣ５２をモデルＭ１に入力する。そして、認証装置１００は、行動情報ＡＣ５２の入力後のモデルＭ１中の情報を用いて、ベクトルを生成する（ステップＳ５８）。例えば、認証装置１００は、行動情報ＡＣ５２が入力されたモデルＭ１中の各要素を用いて、ベクトルデータを生成する。
【００６２】
図１３の例では、認証装置１００は、行動情報ＡＣ５２が入力されたモデルＭ１中の各要素の値を用いて、ベクトルデータＶＤ５２を生成する。例えば、認証装置１００は、単語「ｉｓ」のキーボード入力に対応する行動情報ＡＣ５２が入力された場合における、モデルＭ１のニューロンＮＬ１に対応する値ＶＥ１（図１１参照）やニューロンＮＬ２に対応する値ＶＥ２（図１１参照）を用いて、ベクトルを生成する。
【００６３】
そして、認証装置１００は、単語「ｉｓ」に対応するグラフ情報ＧＲ１２やインデックス情報ＩＮＤ１２を含む情報群ＩＮＦ１２やベクトルデータＶＤ５２を用いて、対応ユーザを抽出する（ステップＳ５９）。例えば、認証装置１００は、グラフ情報ＧＲ１２を検索することにより、単語「ｉｓ」のキーボード入力に対応する行動情報ＡＣ５２の類似パターンを抽出する。そして、認証装置１００は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ（対応ユーザ）を抽出する。図１３の例では、認証装置１００は、対応ユーザ一覧ＵＬ５２に示すように、ユーザＵ１やユーザＵ７６を対応ユーザとして抽出する。
【００６４】
そして、認証装置１００は、抽出した対応ユーザに基づいて、ユーザＸを認証する（ステップＳ６０）。例えば、認証装置１００は、ユーザ情報記憶部１２５に記憶されたユーザＩＤと、そのユーザに対応付けられたＩｏＴ機器のＩＤとに基づいて、認証を行う。図１３の例では、認証装置１００は、ユーザ情報記憶部１２５に示すような、対応ユーザとして抽出されたユーザＵ１に、単語「ｉｓ」のキーボード入力が行われ行動情報ＡＣ５２が取得されたキーボードであるＩｏＴ機器１０（ＴＩＤ１１）が関連付けられていることを示す情報を取得する。そのため、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザＸがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であるとして認証する。
【００６５】
次に、ユーザＸは、３つ目の単語として、ＩｏＴ機器１０により単語「ｇｏｏｄ」のキーボード入力を行う（ステップＳ６１）。これにより、ＩｏＴ機器１０は、ユーザＸの単語「ｇｏｏｄ」のキーボード入力を受け付ける。また、ＩｏＴ機器１０は、ユーザＸの単語「ｇｏｏｄ」のキーボード入力した際の行動情報ＡＣ５３を取得（検知）する。例えば、行動情報ＡＣ５３は、ユーザＸが単語「ｇｏｏｄ」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含んでもよい。
【００６６】
そして、ユーザＸの単語「ｇｏｏｄ」のキーボード入力した際の行動情報ＡＣ５３を取得したＩｏＴ機器１０は、行動情報ＡＣ５３を認証用情報として認証装置１００へ送信する（ステップＳ６２）。また、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５３とともに、自装置（行動情報ＡＣ５３を取得したＩｏＴ機器１０）を識別する情報（ＩＤ情報）を認証装置１００へ送信する。例えば、ＩｏＴ機器１０は、キーボードであるＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を、行動情報ＡＣ５３とともに認証装置１００へ送信する。このように、図１３の例では、ＩｏＴ機器１０は、行動情報ＡＣ５３及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を認証用情報として認証装置１００へ送信する。
【００６７】
そして、ＩｏＴ機器１０から行動情報ＡＣ５３及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ１１」を含む認証用情報を取得した認証装置１００は、単語「ｇｏｏｄ」のキーボード入力に対応する行動情報ＡＣ５３の類似パターンを抽出する処理を行う。まず、認証装置１００は、ＩｏＴ機器１０における単語「ｇｏｏｄ」のキーボード入力に対応する行動データ（行動情報ＡＣ５３）からグラフ情報の探索に用いるベクトルを生成する。例えば、認証装置１００は、単語「ｇｏｏｄ」をキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む行動情報ＡＣ５３をモデルＭ１に入力する。そして、認証装置１００は、行動情報ＡＣ５３の入力後のモデルＭ１中の情報を用いて、ベクトルを生成する（ステップＳ６３）。例えば、認証装置１００は、行動情報ＡＣ５３が入力されたモデルＭ１中の各要素を用いて、ベクトルデータを生成する。
【００６８】
図１３の例では、認証装置１００は、行動情報ＡＣ５３が入力されたモデルＭ１中の各要素の値を用いて、ベクトルデータＶＤ５３を生成する。例えば、認証装置１００は、単語「ｇｏｏｄ」のキーボード入力に対応する行動情報ＡＣ５３が入力された場合における、モデルＭ１のニューロンＮＬ１に対応する値ＶＥ１（図１１参照）やニューロンＮＬ２に対応する値ＶＥ２（図１１参照）を用いて、ベクトルを生成する。
【００６９】
そして、認証装置１００は、単語「ｇｏｏｄ」に対応するグラフ情報ＧＲ１３やインデックス情報ＩＮＤ１３を含む情報群ＩＮＦ１３やベクトルデータＶＤ５３を用いて、対応ユーザを抽出する（ステップＳ６４）。例えば、認証装置１００は、グラフ情報ＧＲ１３を検索することにより、単語「ｇｏｏｄ」のキーボード入力に対応する行動情報ＡＣ５３の類似パターンを抽出する。そして、認証装置１００は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ（対応ユーザ）を抽出する。図１３の例では、認証装置１００は、対応ユーザ一覧ＵＬ５３に示すように、ユーザＵ２やユーザＵ５１を対応ユーザとして抽出する。
【００７０】
そして、認証装置１００は、抽出した対応ユーザに基づいて、ユーザＸを認証する（ステップＳ６５）。例えば、認証装置１００は、ユーザ情報記憶部１２５に記憶されたユーザＩＤと、そのユーザに対応付けられたＩｏＴ機器のＩＤとに基づいて、認証を行う。図１３の例では、認証装置１００は、ユーザ情報記憶部１２５に示すような、対応ユーザとして抽出されていないユーザＵ１に、単語「ｇｏｏｄ」のキーボード入力が行われ行動情報ＡＣ５３が取得されたキーボードであるＩｏＴ機器１０（ＴＩＤ１１）が関連付けられていることを示す情報を取得する。そのため、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザＸがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１ではないとして認証不可とする。
【００７１】
そして、認証装置１００は、ＩｏＴ機器１０へ認証結果を送信する（ステップＳ６６）。例えば、認証装置１００は、認証がＮＧであることを示す情報をＩｏＴ機器１０へ送信する。例えば、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）を利用しているユーザＸがユーザＵ１ではないことを示す認証結果をＩｏＴ機器１０へ送信してもよい。なお、この点については図１３の説明で詳述する。
【００７２】
そして、ＩｏＴ機器１０は、認証がＮＧであることを示す情報を受信した場合、所定のロック機能をＯＮにする（ステップＳ６７）。例えば、ＩｏＴ機器１０は、所定のロック機能によりユーザによる入力や操作を受付けなくしてもよい。例えば、ＩｏＴ機器１０は、認証がＮＧであることを示す情報を受信した場合、所定の期間（例えば１時間等）に亘って、ロック機能によりユーザによる入力や操作を受付けなくしてもよい。これにより、ＩｏＴ機器１０は、不正なユーザによる利用を抑制にすることができる。
【００７３】
〔１−４−２．他の認証例〕
上述した例では、ＩｏＴ機器１０での１つの単語のキーボード入力の行動情報を基づく対応ユーザに、そのＩｏＴ機器１０に関連付けられたユーザが含まれない場合に、認証がＮＧであるとする場合を示したが、認証装置１００は、他の基準に基づいて認証を行ってもよい。例えば、認証装置１００は、複数の単語がキーボード入力された場合、各単語に対応する認証の成否の割合に応じて、ユーザの認証を行ってもよい。例えば、認証装置１００は、複数の単語に対応する認証のうち、所定の閾値（例えば５０％や８０％等）以上の認証がＯＫである場合、全体としての認証をＯＫ（許可）としてもよい。
【００７４】
例えば、認証装置１００は、閾値が５０％であり、５個の単語がキーボード入力された場合、３個以上の単語の認証がＯＫである場合、全体としての認証をＯＫとしてもよい。例えば、認証装置１００は、閾値が５０％であり、５個の単語がキーボード入力された場合、３個以上の単語のキーボード入力の行動情報を基づく対応ユーザに、そのＩｏＴ機器１０に関連付けられたユーザが含まれる場合に、全体としての認証をＯＫとしてもよい。また、例えば、認証装置１００は、閾値が５０％であり、５個の単語がキーボード入力された場合、３個以上の単語のキーボード入力の行動情報を基づく対応ユーザに、そのＩｏＴ機器１０に関連付けられたユーザが含まれない場合に、全体としての認証をＮＧ（不可）としてもよい。
【００７５】
上述のように、認証装置１００は、複数の単語全体での認証の成否の割合に応じて、全体としての認証の成否を決定することにより、より適切にユーザを認証することができる。
【００７６】
〔１−５．単語ごとのモデル〕
なお、図１の例では、モデルＭ１を用いる場合を示したが、例えば、認証装置１００は、単語ごとに異なるモデルを用いてもよい。
【００７７】
例えば、認証装置１００は、単語ごとに生成されたモデル（以下、「単語別モデル」ともいう）を用いて、類似パターンを抽出してもよい。例えば、認証装置１００は、単語別モデルを生成してもよい。認証装置１００は、各単語別モデルに対応する単語のキーボード入力の行動情報を入力し、その行動情報と同様の情報を出力する単語別モデル（オートエンコーダ）を生成してもよい。例えば、認証装置１００は、入力する行動情報自体を正解情報として、入力した行動情報と同様の情報を出力する単語別モデル（オートエンコーダ）を生成する。例えば、単語別モデルに入力する行動情報は、対応する単語のキーボード入力時における一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む。この場合、例えば、認証装置１００は、単語ごとのモデル、インデックス情報、及びグラフ情報を用いて認証処理を行う。例えば、認証装置１００は、ＩｏＴ機器において入力された単語に対応するモデル、インデックス情報、及びグラフ情報を取得し、取得したモデル、インデックス情報、及びグラフ情報を用いて認証処理を行う。これにより、認証装置１００は、より精度よく認証を行うことができる。
【００７８】
〔１−６．他の行動情報〕
なお、図１の例では、ユーザのキーボード入力を行動情報の一例として説明したが、行動情報は、ユーザの認証に利用可能であれば、どのような行動情報であってもよい。例えば、ＩｏＴ機器１０が電子キー（例えば自動車等の電子鍵）である場合、認証装置１００は、電子キーＴＩＤ２１が取得したユーザの行動情報に基づいて、認証を行ってもよい。例えば、電子キーＴＩＤ２１は、自動車や住宅（居住空間）等の扉に設けられた電子錠（図示せず）等の開閉に用いる鍵であってもよい。例えば、電子キーＴＩＤ２１は、所定の電子錠と所定のネットワークＮを介して通信することにより、所定の電子錠を開閉させる電子キーであってもよい。例えば、認証装置１００は、電子キーＴＩＤ２１（図８参照）が有する音センサ（スピーカ）が検知（取得）したユーザの歩行音を含む行動情報に基づいて、認証を行ってもよい。この場合、認証装置１００は、ユーザの歩行音を含む行動パターンをグラフ構造化したグラフ情報を用いて、認証を行ってもよい。
【００７９】
例えば、認証装置１００は、電子キーＴＩＤ２１が有する音センサ（スピーカ）が検知（取得）したユーザの歩行音を含む行動情報に基づいて、電子キーＴＩＤ２１の所有者であるユーザＵ２が対応ユーザとして抽出されなかった場合、認証がＮＧ、すなわち認証不可としてもよい。この場合、認証装置１００は、電子キーＴＩＤ２１に認証不可であることを示す情報を送信し、電子キーＴＩＤ２１を利用不可にしてもよい。例えば、認証装置１００から認証不可であることを示す情報を受信した電子キーＴＩＤ２１は、所定のロック機能等により、電子キーＴＩＤ２１を用いた鍵の開錠を不可能にしてもよい。
【００８０】
また、認証装置１００は、ユーザの歩行音のみに限らず、ドアの閉開音等の種々の音情報を含む行動情報を用いてもよい。また、認証装置１００は、音情報に限らず、ユーザの自動車等の運転操作に関する情報を含む行動情報を用いてもよい。例えば、認証装置１００は、ハンドルの操作やブレーキの操作等の運転操作に関する情報を含む行動情報を用いてもよい。なお、上記は一例であり、認証装置１００は、ユーザの種々の行動情報を用いて認証を行ってもよい。
【００８１】
〔１−７．インデックス情報〕
図１の例に示すインデックス情報（インデックスデータ）は一例であり、認証装置１００は、種々のインデックス情報を用いて、グラフ情報を検索してもよい。また、例えば、認証装置１００は、検索時に用いるインデックスデータを生成してもよい。例えば、認証装置１００は、高次元ベクトルを検索する検索インデックスをインデックスデータとして生成する。ここでいう高次元ベクトルとは、例えば、数百次元から数千次元のベクトルであってもよいし、それ以上の次元のベクトルであってもよい。
【００８２】
例えば、認証装置１００は、図１に示すようなツリー構造（木構造）に関する検索インデックスをインデックスデータとして生成してもよい。例えば、認証装置１００は、ｋｄ木（k-dimensional  tree）に関する検索インデックスをインデックスデータとして生成してもよい。例えば、認証装置１００は、ＶＰ木（Vantage-Point  tree）に関する検索インデックスをインデックスデータとして生成してもよい。
【００８３】
また、例えば、認証装置１００は、その他の木構造を有するインデックスデータとして生成してもよい。例えば、認証装置１００は、木構造のインデックスデータのリーフがグラフデータに接続する種々のインデックスデータを生成してもよい。例えば、認証装置１００は、木構造のインデックスデータのリーフがグラフデータ中のノードに対応する種々のインデックスデータを生成してもよい。また、認証装置１００は、このようなインデックスデータを用いて検索を行う場合、インデックスデータを辿って到達したリーフ（ノード）からグラフデータを探索してもよい。
【００８４】
なお、上述したようなインデックスデータは一例であり、認証装置１００は、グラフデータ中のクエリを高速に特定することが可能であれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、認証装置１００は、クエリに対応するグラフ情報中のノードを高速に特定することが可能であれば、バイナリ空間分割に関する技術等の種々の従来技術を適宜用いて、インデックスデータを生成してもよい。例えば、認証装置１００は、高次元ベクトルの検索に対応可能なインデックスであれば、どのようなデータ構造のインデックスデータを生成してもよい。例えば、認証装置１００は、非特許文献１に記載されるようなグラフ型の検索インデックスに関する情報をインデックス情報として用いてもよい。認証装置１００は、上述のようなインデックスデータとグラフデータとを用いることにより、所定の対象に関するより効率的な検索を可能にすることができる。
【００８５】
〔２．認証システムの構成〕
図２に示すように、認証システム１は、ＩｏＴ機器１０と、情報提供装置５０と、認証装置１００とが含まれる。ＩｏＴ機器１０と、情報提供装置５０と、認証装置１００とは所定のネットワークＮを介して、有線または無線により通信可能に接続される。図２は、実施形態に係る認証システムの構成例を示す図である。なお、図２に示した認証システム１には、複数台のＩｏＴ機器１０や、複数台の情報提供装置５０や、複数台の認証装置１００が含まれてもよい。
【００８６】
ＩｏＴ機器１０は、ユーザによって利用される情報処理装置である。ＩｏＴ機器１０は、ユーザによる種々の操作を受け付ける。なお、以下では、ＩｏＴ機器１０をユーザと表記する場合がある。すなわち、以下では、ユーザをＩｏＴ機器１０と読み替えることもできる。
【００８７】
ＩｏＴ機器１０は、ユーザによって利用される情報処理機能を有する各種装置である。例えば、ＩｏＴ機器１０は、通信機能を有し、情報提供装置５０や認証装置１００等が提供するサービスを利用可能であればどのような装置であってもよい。例えば、ＩｏＴ機器１０は、キーボード、電子キー等の機器であってもよい。例えば、ＩｏＴ機器１０は、デスクトップＰＣへの入力インターフェイスとして用いられるキーボードであってもよい。また、例えば、ＩｏＴ機器１０は、洗濯機、冷蔵庫等のいわゆる家電製品であってもよいし、自動車等の車両であってもよい。例えば、ＩｏＴ機器１０は、スマートスピーカやロボット等の音声等を検知する装置であってもよい。例えば、ＩｏＴ機器１０は、商品のパッケージであってもよいし、所定の商品を購入するためのボタン等の装置であってもよい。また、ＩｏＴ機器１０は、例えば、スマートフォンや、タブレット型端末や、ノート型ＰＣ（Personal  Computer）や、デスクトップＰＣや、携帯電話機や、ＰＤＡ（Personal  Digital  Assistant）等の情報処理装置であってもよい。また、例えば、ＩｏＴ機器１０は、ユーザが身に着けるウェアラブル端末（Wearable  Device）等であってもよい。例えば、ＩｏＴ機器１０は、腕時計型端末やメガネ型端末等であってもよい。なお、以下では、ＩｏＴ機器１０をユーザと表記する場合がある。すなわち、以下では、ユーザをＩｏＴ機器１０と読み替えることもできる。例えば、ＩｏＴ機器１０は、行動データ（行動情報）を収集し、行動データを認証装置１００へ送信する。
【００８８】
例えば、ＩｏＴ機器１０は、各種センサを有する。例えば、ＩｏＴ機器１０は、圧力センサやＧＰＳ（Global  Positioning  System）センサや画像センサ等の各種センサにより、各種センサ情報を検知してもよい。また、例えば、ＩｏＴ機器１０は、ユーザの行動に関する時間を計時するタイマ機能を有する。また、ＩｏＴ機器１０は、温度センサや気圧センサ等の種々の機能を有し、温度や気圧等のユーザの置かれている環境情報を検知し、取得可能であってもよい。また、ＩｏＴ機器１０は、心拍センサ等の種々の機能を有し、ユーザの生体情報を検知し、取得可能であってもよい。また、ＩｏＴ機器１０は、ジャイロセンサや加速度センサの機能を有し、ユーザのＩｏＴ機器１０の加速度情報（センサ情報）等を検知し、取得する。
【００８９】
認証装置１００は、所定の基準に基づいて決定された起点ベクトルを起点としてグラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する情報処理装置である。また、認証装置１００は、抽出された前記類似パターンに対応付けられた前記対応ユーザに基づいて、前記一のユーザを認証する情報処理装置である。例えば、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力に関する行動情報を取得し、行動情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。
【００９０】
認証装置１００は、ＩｏＴ機器１０（ユーザ）等に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、認証装置１００は、ＩｏＴ機器１０からＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の注文情報を取得すると、一の行動情報（以下、「クエリ情報」や「クエリ」ともいう）に類似する行動パターン（ベクトル情報等）を検索し、検索結果に基づく類似パターンを示す情報をＩｏＴ機器１０に送信する。例えば、認証装置１００は、ＩｏＴ機器１０からＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の行動データを取得すると、クエリに類似する行動パターンを検索し、検索結果に基づく類似パターンを示す推奨情報をＩｏＴ機器１０に提供する。図１の例では、認証装置１００は、ＩｏＴ機器１０からＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の行動データを取得すると、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力に類似する行動パターンを抽出し、抽出した行動パターンに対応付けられた対応ユーザに応じて、認証を行う。また、例えば、認証装置１００は、認証結果とともに、ＵＲＬ（Uniform  Resource  Locator）等の対応するデータを参照するための情報をＩｏＴ機器１０に送信してもよい。
【００９１】
情報提供装置５０は、認証装置１００に種々の情報提供を行うための情報が格納された情報処理装置である。例えば、情報提供装置５０は、グラフ情報やインデックス情報やモデル等の種々の情報を認証装置１００に提供する情報処理装置である。
【００９２】
〔３．認証装置の構成〕
次に、図３を用いて、実施形態に係る認証装置１００の構成について説明する。図３は、実施形態に係る認証装置の構成例を示す図である。図３に示すように、認証装置１００は、通信部１１０と、記憶部１２０と、制御部１３０とを有する。なお、認証装置１００は、認証装置１００の管理者等から各種操作を受け付ける入力部（例えば、キーボードやマウス等）や、各種情報を表示するための表示部（例えば、液晶ディスプレイ等）を有してもよい。
【００９３】
（通信部１１０）
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。そして、通信部１１０は、ネットワーク（例えば図２中のネットワークＮ）と有線または無線で接続され、ＩｏＴ機器１０や情報提供装置５０との間で情報の送受信を行う。
【００９４】
（記憶部１２０）
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。実施形態に係る記憶部１２０は、図３に示すように、行動パターン情報記憶部１２１と、インデックス情報記憶部１２２と、グラフ情報記憶部１２３と、モデル情報記憶部１２４と、ユーザ情報記憶部１２５とを有する。
【００９５】
（行動パターン情報記憶部１２１）
実施形態に係る行動パターン情報記憶部１２１は、行動パターン（オブジェクト）に関する各種情報を記憶する。例えば、行動パターン情報記憶部１２１は、パターンＩＤやベクトルデータを記憶する。図４は、実施形態に係る行動パターン情報記憶部の一例を示す図である。図４の例では、行動パターン情報記憶部１２１は、行動パターンデータセット１２１−１や行動パターンデータセット１２１−２や行動パターンデータセット１２１−３等のように対象単語ごとに情報（テーブル）を記憶する。図４に示す行動パターンデータセット１２１−１〜１２１−３等は、「対象単語」、「パターンＩＤ」、「対応ユーザ」、「行動情報」、「ベクトル情報」といった項目を含む。
【００９６】
図４の例では、行動パターンデータセット１２１−１は、単語ＩＤ「ＷＩＤ１」により識別される単語「ｔａｌｋ」に対応し、行動パターンデータセット１２１−２は、単語ＩＤ「ＷＩＤ２」により識別される単語「ｉｓ」に対応し、行動パターンデータセット１２１−３は、単語ＩＤ「ＷＩＤ３」により識別される単語「ｇｏｏｄ」に対応する。具体的には、行動パターンデータセット１２１−１には、対象単語「ｔａｌｋ」に対応する行動パターンに関する情報が記憶される。また、行動パターンデータセット１２１−２には、対象単語「ｉｓ」に対応する行動パターンに関する情報が記憶され、行動パターンデータセット１２１−３には、対象単語「ｇｏｏｄ」に対応する行動パターンに関する情報が記憶される。
【００９７】
「対象単語」は、対応する行動パターンデータセットが対象とする単語を示す。「パターンＩＤ」は、行動パターン（オブジェクト）を識別するための識別情報を示す。また、「対応ユーザ」は、パターンＩＤにより識別される行動パターンに関連付けられたユーザを示す。例えば、「対応ユーザ」は、パターンＩＤにより識別される行動パターンに対応する行動を行ったユーザを示す。なお、図４の例では、対応ユーザを「ユーザＵ２００」といった抽象的な符号で示すが、各対応ユーザには、ユーザを識別する情報（ユーザＩＤ等）が記憶されてもよい。
【００９８】
「行動情報」は、パターンＩＤにより識別される行動情報を示す。なお、図４の例では、行動情報を「ＡＣ１」といった抽象的な符号で示すが、各行動情報は、一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等の種々の行動に関する情報を含む。「ベクトル情報」とは、パターンＩＤにより識別される行動パターン（オブジェクト）に対応するベクトル情報を示す。すなわち、図４の例では、行動パターン（オブジェクト）を識別するパターンＩＤに対して、行動パターンの対応ユーザやオブジェクトに対応するベクトルデータ（ベクトル情報）が対応付けられて登録されている。
【００９９】
例えば、図４の例では、パターンＩＤ「ＰＴ１」により識別される行動パターン（オブジェクト）は、「１０，２４，５４，２．．．」の多次元（Ｎ次元）のベクトル情報が対応付けられることを示す。例えば、パターンＩＤ「ＰＴ１」により識別される行動パターンについては、モデルＭ１等により、ユーザＵ２００の対象単語「ｔａｌｋ」のキーボード入力の特徴を示す「１０，２４，５４，２．．．」の多次元（Ｎ次元）のベクトル情報が行動情報ＡＣ１から抽出されたことを示す。
【０１００】
なお、行動パターン情報記憶部１２１は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１０１】
（インデックス情報記憶部１２２）
実施形態に係るインデックス情報記憶部１２２は、インデックスに関する各種情報を記憶する。図５は、実施形態に係るインデックス情報記憶部の一例を示す図である。具体的には、図５の例では、インデックス情報記憶部１２２は、ツリー構造のインデックス情報を示す。図５の例では、インデックス情報記憶部１２２は、インデックスデータセット１２２−１やインデックスデータセット１２２−２やインデックスデータセット１２２−３等のように対象単語ごとに情報（テーブル）を記憶する。図５に示すインデックスデータセット１２２−１〜１２２−３等は、「対象単語」、「ルート階層」、「第１階層」、「第２階層」、「第３階層」等といった項目を含む。なお、「第１階層」〜「第３階層」に限らず、インデックスの階層数に応じて、「第４階層」、「第５階層」、「第６階層」等が含まれてもよい。
【０１０２】
図５の例では、インデックスデータセット１２２−１は、単語ＩＤ「ＷＩＤ１」により識別される単語「ｔａｌｋ」に対応し、インデックスデータセット１２２−２は、単語ＩＤ「ＷＩＤ２」により識別される単語「ｉｓ」に対応し、インデックスデータセット１２２−３は、単語ＩＤ「ＷＩＤ３」により識別される単語「ｇｏｏｄ」に対応する。具体的には、インデックスデータセット１２２−１には、対象単語「ｔａｌｋ」に対応するインデックスに関する情報（インデックス情報ＩＮＤ１１）が記憶される。また、インデックスデータセット１２２−２には、対象単語「ｉｓ」に対応するインデックスに関する情報（インデックス情報ＩＮＤ１２）が記憶され、インデックスデータセット１２２−３には、対象単語「ｇｏｏｄ」に対応するインデックスに関する情報（インデックス情報ＩＮＤ１３）が記憶される。
【０１０３】
「対象単語」は、対応するインデックスデータセットが対象とする単語を示す。「ルート階層」は、インデックスを用いた起点ノードの決定の開始点となるルート（最上位）の階層を示す。「第１階層」は、インデックスの第１階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第１階層」に格納されるノードは、インデックスの根（ルート）に直接結ばれる階層に対応するノードとなる。
【０１０４】
「第２階層」は、インデックスの第２階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第２階層」に格納されるノードは、第１階層のノードに結ばれる直下の階層に対応するノードとなる。「第３階層」は、インデックスの第３階層に属するノード（節点またはグラフ情報中のベクトル）を識別（特定）する情報が格納される。「第３階層」に格納されるノードは、第２階層のノードに結ばれる直下の階層に対応するノードとなる。
【０１０５】
例えば、図５に示す例においては、インデックス情報記憶部１２２のうち、インデックスデータセット１２２−１には、図１中のインデックス情報ＩＮＤ１１に対応する情報が記憶される。例えば、インデックスデータセット１２２−１は、第１階層のノードが、節点ＶＴ１〜ＶＴ３等であることを示す。また、各節点の下の括弧内の数値は、各節点に対応するベクトルの値を示す。
【０１０６】
また、例えば、インデックスデータセット１２２−１は、節点ＶＴ２の直下の第２階層のノードが、節点ＶＴ２−１〜ＶＴ２−４であることを示す。また、例えば、インデックスデータセット１２２−１は、節点ＶＴ２−２の直下の第３階層のノードが、ノードＮ３５、ノードＮ４５１、ノードＮ６９３のグラフ情報ＧＲ１１中のノード（ベクトル）であることを示す。
【０１０７】
なお、インデックス情報記憶部１２２は、上記に限らず、目的に応じて種々の情報を記憶してもよい。
【０１０８】
（グラフ情報記憶部１２３）
実施形態に係るグラフ情報記憶部１２３は、グラフ情報に関する各種情報を記憶する。図６は、実施形態に係るグラフ情報記憶部の一例を示す図である。図６の例では、グラフ情報記憶部１２３は、グラフデータセット１２３−１やグラフデータセット１２３−２やグラフデータセット１２３−３等のように対象単語ごとに情報（テーブル）を記憶する。図６に示すグラフデータセット１２３−１〜１２３−３等は、「対象単語」、「ノードＩＤ」、「パターンＩＤ」、および「エッジ情報」といった項目を有する。また、「エッジ情報」には、「エッジＩＤ」や「参照先」といった情報が含まれる。
【０１０９】
図６の例では、グラフデータセット１２３−１は、単語ＩＤ「ＷＩＤ１」により識別される単語「ｔａｌｋ」に対応し、グラフデータセット１２３−２は、単語ＩＤ「ＷＩＤ２」により識別される単語「ｉｓ」に対応し、グラフデータセット１２３−３は、単語ＩＤ「ＷＩＤ３」により識別される単語「ｇｏｏｄ」に対応する。具体的には、グラフデータセット１２３−１には、対象単語「ｔａｌｋ」に対応するグラフに関する情報（グラフ情報ＧＲ１１）が記憶される。また、グラフデータセット１２３−２には、対象単語「ｉｓ」に対応するグラフに関する情報（グラフ情報ＧＲ１２）が記憶され、グラフデータセット１２３−３には、対象単語「ｇｏｏｄ」に対応するグラフに関する情報（グラフ情報ＧＲ１３）が記憶される。
【０１１０】
「対象単語」は、対応するグラフデータセットが対象とする単語を示す。「ノードＩＤ」は、グラフデータにおける各ノード（対象）を識別するための識別情報を示す。また、「パターンＩＤ」は、行動パターン（オブジェクト）を識別するための識別情報を示す。
【０１１１】
また、「エッジ情報」は、対応するノードに接続されるエッジに関する情報を示す。図６の例では、「エッジ情報」は、エッジが有向エッジである場合を示し、対応するノードから出力される出力エッジに関する情報を示す。また、「エッジＩＤ」は、ノード間を連結するエッジを識別するための識別情報を示す。また、「参照先」は、エッジにより連結された参照先（ノード）を示す情報を示す。すなわち、図６の例では、ノードを識別するノードＩＤに対して、そのノードに対応するオブジェクト（対象）を識別する情報やそのノードからの有向エッジ（出力エッジ）が連結される参照先（ノード）が対応付けられて登録されている。
【０１１２】
例えば、図６の例では、グラフ情報記憶部１２３のうち、グラフデータセット１２３−１においては、ノードＩＤ「Ｎ１」により識別されるノード（ベクトル）は、パターンＩＤ「ＰＴ１」により識別される行動パターン（オブジェクト）に対応することを示す。また、グラフデータセット１２３−１においては、ノードＩＤ「Ｎ１」により識別されるノードからは、エッジＩＤ「Ｅ１１」により識別されるエッジが、ノードＩＤ「Ｎ２５」により識別されるノード（ベクトル）に連結されることを示す。すなわち、図６の例では、グラフデータセット１２３−１においては、ノードＩＤ「Ｎ１」により識別されるノード（ベクトル）からはノードＩＤ「Ｎ２５」により識別されるノード（ベクトル）に辿ることができることを示す。
【０１１３】
なお、グラフ情報記憶部１２３は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、グラフ情報記憶部１２３は、各ノード（ベクトル）間を連結するエッジの長さが記憶されてもよい。すなわち、グラフ情報記憶部１２３は、各ノード（ベクトル）間の距離を示す情報が記憶されてもよい。
【０１１４】
（モデル情報記憶部１２４）
実施形態に係るモデル情報記憶部１２４は、モデルに関する情報を記憶する。例えば、モデル情報記憶部１２４は、生成処理により生成されたモデル情報（モデルデータ）を記憶する。図７は、実施形態に係るモデル情報記憶部の一例を示す図である。図７に示すモデル情報記憶部１２４は、「モデルＩＤ」、「用途」、「モデルデータ」といった項目が含まれる。なお、図７では、モデルＭ１、Ｍ２のみを図示するが、Ｍ２１、Ｍ２２等、各用途（予測の対象）に応じて多数のモデル情報が記憶されてもよい。
【０１１５】
「モデルＩＤ」は、モデルを識別するための識別情報を示す。例えば、モデルＩＤ「Ｍ１」により識別されるモデルは、図１の例に示したモデルＭ１に対応する。「用途」は、対応するモデルの用途を示す。また、「モデルデータ」は、対応付けられた対応するモデルのデータを示す。例えば、「モデルデータ」には、各層におけるノードと、各ノードが採用する関数と、ノードの接続関係と、ノード間の接続に対して設定される接続係数とを含む情報が含まれる。
【０１１６】
例えば、図７に示す例において、モデルＩＤ「Ｍ１」により識別されるモデル（モデルＭ１）は、用途が「特徴抽出（キーボード入力）」であり、入力された行動情報からの特徴の抽出に用いられることを示す。また、モデルＭ１のモデルデータは、モデルデータＭＤＴ１であることを示す。
【０１１７】
モデルＭ１（モデルデータＭＤＴ１）は、ユーザの行動情報（行動データ）が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第１要素と、第１要素と第１要素の重みとに基づいて値が算出される第２要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第１要素として、第１要素と第１要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するよう、コンピュータを機能させるためのモデルである。
【０１１８】
また、モデルＭ１、Ｍ２等がＤＮＮ（Deep  Neural  Network）等、１つまたは複数の中間層を有するニューラルネットワークで実現されるとする。この場合、例えば、モデルＭ１、Ｍ２が含む第１要素は、入力層または中間層が有するいずれかのノードに対応する。また、第２要素は、第１要素と対応するノードから値が伝達されるノードである次段のノードに対応する。また、第１要素の重みは、第１要素と対応するノードから第２要素と対応するノードに伝達される値に対して考慮される重みである接続係数に対応する。
【０１１９】
ここで、モデルＭ２１、Ｍ２２等が「ｙ＝ａ１＊ｘ１＋ａ２＊ｘ２＋・・・＋ａｉ＊ｘｉ」で示す回帰モデルで実現されるとする。この場合、例えば、モデルＭ２１、Ｍ２２が含む第１要素は、ｘ１やｘ２等といった入力データ（ｘｉ）に対応する。また、第１要素の重みは、ｘｉに対応する係数ａｉに対応する。ここで、回帰モデルは、入力層と出力層とを有する単純パーセプトロンと見做すことができる。各モデルを単純パーセプトロンと見做した場合、第１要素は、入力層が有するいずれかのノードに対応し、第２要素は、出力層が有するノードと見做すことができる。
【０１２０】
なお、モデル情報記憶部１２４は、上記に限らず、目的に応じて種々のモデル情報を記憶してもよい。
【０１２１】
（ユーザ情報記憶部１２５）
実施形態に係るユーザ情報記憶部１２５は、ユーザに関する情報を記憶する。図８は、実施形態に係るユーザ情報記憶部の一例を示す図である。図８には、ユーザ情報記憶部１２５に記憶されるユーザに関する情報の一例を示す。例えば、ユーザ情報記憶部１２５は、ユーザが利用するＩｏＴ機器に関する情報を記憶する。図８に示すように、ユーザ情報記憶部１２５は、ユーザが利用するＩｏＴ機器に関する情報として、「ユーザＩＤ」、「ＩｏＴ機器１」といった項目が含まれる。なお、図８の例では、説明を簡単にするために、「ＩｏＴ機器１」のみを図示するが、ユーザ情報記憶部１２５は、「ＩｏＴ機器２」、「ＩｏＴ機器３」等、ユーザが利用するＩｏＴ機器の数に応じて、各ＩｏＴ機器の情報を記憶してもよい。
【０１２２】
「ユーザＩＤ」は、ユーザを識別するための識別情報を示す。例えば、ユーザＩＤ「Ｕ１」により識別されるユーザは、図１の例に示すユーザＵ１に対応する。
【０１２３】
また、「ＩｏＴ機器１」には、「種別」や「ＩＤ」といった項目が含まれる。なお、「ＩｏＴ機器１」のみを図示するが、例えば、対応するユーザが利用するＩｏＴ機器が８つである場合、「ＩｏＴ機器１」〜「ＩｏＴ機器８」まで利用するＩｏＴ機器に関する情報が記憶される。すなわち、対応するユーザが利用するＩｏＴ機器が８つである場合、ユーザが利用する８つのＩｏＴ機器に関する情報が記憶される。「ＩｏＴ機器１」の「種別」は、ユーザが利用するＩｏＴ機器の種別を示す。また、「ＩｏＴ機器１」の「ＩＤ」は、対応するＩｏＴ機器を識別するための識別情報を示す。例えば、「ＩｏＴ機器１」の「ＩＤ」は、対応するユーザが利用するＩｏＴ機器を識別するための識別情報を示す。
【０１２４】
例えば、図８に示す例において、ユーザＩＤ「Ｕ１」により識別されるユーザ（ユーザＵ１）は、種別「キーボード」のＩｏＴ機器を利用しており、ユーザＵ１が利用するＩｏＴ機器（キーボード）のＩＤが「ＴＩＤ１１」であることを示す。また、例えば、図８に示す例において、ユーザＩＤ「Ｕ２」により識別されるユーザ（ユーザＵ２）は、種別「電子キー」のＩｏＴ機器を利用しており、ユーザＵ２が利用するＩｏＴ機器（電子キー）のＩＤが「ＴＩＤ２１」であることを示す。
【０１２５】
なお、ユーザ情報記憶部１２５は、上記に限らず、目的に応じて種々の情報を記憶してもよい。例えば、ユーザ情報記憶部１２５は、性別、年齢、自宅、勤務地、興味・関心、氏名、家族構成、収入等の情報を記憶してもよい。例えば、ユーザ情報記憶部１２５は、各ＩｏＴ機器が利用できるサービスが異なる場合、ＩｏＴ機器ごとに利用するサービスに関する情報を関連付けて記憶してもよい。
【０１２６】
（制御部１３０）
図３の説明に戻って、制御部１３０は、コントローラ（controller）であり、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、認証装置１００内部の記憶装置に記憶されている各種プログラム（認証プログラムの一例に相当）がＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、コントローラであり、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現される。制御部１３０は、モデル情報記憶部１２４に記憶されているモデルＭ１、Ｍ２等に従った情報処理により、ユーザの行動情報（行動データ）が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第１要素と、第１要素と第１要素の重みとに基づいて値が算出される第２要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第１要素として、第１要素と第１要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力する。
【０１２７】
図３に示すように、制御部１３０は、取得部１３１と、生成部１３２と、決定部１３３と、抽出部１３４と、認証部１３５と、送信部１３６とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図３に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【０１２８】
（取得部１３１）
取得部１３１は、各種情報を取得する。例えば、取得部１３１は、記憶部１２０から各種情報を取得する。例えば、取得部１３１は、行動パターン情報記憶部１２１や、インデックス情報記憶部１２２や、グラフ情報記憶部１２３や、モデル情報記憶部１２４や、ユーザ情報記憶部１２５等から各種情報を取得する。また、取得部１３１は、各種情報を外部の情報処理装置から取得する。取得部１３１は、ＩｏＴ機器１０や情報提供装置５０から各種情報を取得する。
【０１２９】
取得部１３１は、複数の行動パターンの各々に対応する複数のノードベクトルであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードベクトルが、複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。取得部１３１は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。取得部１３１は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードベクトルであって、対応ユーザが関連付けられた複数のノードベクトルが類似性に応じて連結されたグラフ情報を取得する。取得部１３１は、単語ごとの複数の行動パターンの各々に対応する複数のノードベクトルであって、対応ユーザが関連付けられた複数のノードベクトルが類似性に応じて連結された複数のグラフ情報を取得する。取得部１３１は、複数の行動パターンの各々に対応する複数のベクトルであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。また、取得部１３１は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
【０１３０】
また、取得部１３１は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。また、取得部１３１は、複数の行動パターンに関する情報を所定のモデルに入力することにより、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
【０１３１】
また、取得部１３１は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得する。また、取得部１３１は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得する。また、取得部１３１は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のベクトルであって、対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
【０１３２】
また、取得部１３１は、単語ごとの複数の行動パターンの各々に対応する複数のベクトルであって、対応ユーザが関連付けられた複数のベクトルが類似性に応じて連結された複数のグラフ情報を取得する。
【０１３３】
例えば、取得部１３１は、データ検索の対象となる複数のノード（ベクトル）を取得する。例えば、取得部１３１は、複数のノードと、複数のノードの各々を連結する複数の有向エッジを含む有向エッジ群を取得する。
【０１３４】
例えば、取得部１３１は、外部の情報処理装置からグラフ情報（グラフデータ）を取得する。例えば、取得部１３１は、グラフ情報記憶部１２３からグラフ情報を取得する。例えば、取得部１３１は、グラフ情報を取得する。図１の例では、取得部１３１は、グラフ情報ＧＲ１１を取得する。
【０１３５】
例えば、取得部１３１は、外部の情報処理装置からインデックス情報（インデックスデータ）を取得する。例えば、取得部１３１は、インデックス情報記憶部１２２からインデックス情報を取得する。例えば、取得部１３１は、木構造型のインデックス情報を取得する。図１の例では、取得部１３１は、インデックス情報ＩＮＤ１１を取得する。
【０１３６】
図１の例では、取得部１３１は、ＩｏＴ機器１０から行動情報ＡＣ１１及びＩｏＴ機器１０を識別するＩＤ「ＴＩＤ」を含む認証用情報を取得する。例えば、取得部１３１は、グラフ情報記憶部１２３中のグラフデータセット１２３−１（図６参照）から単語「ｔａｌｋ」に関するグラフ情報ＧＲ１１を取得する。また、例えば、取得部１３１は、インデックス情報記憶部１２２中のインデックスデータセット１２２−１（図５参照）から、単語「ｔａｌｋ」に関するインデックス情報ＩＮＤ１１を取得する。例えば、取得部１３１は、インデックス情報記憶部１２２から、グラフ情報ＧＲ１１における検索の起点となるノード（起点ベクトル）の決定に用いるインデックス情報ＩＮＤ１１を取得する。また、取得部１３１は、ユーザ情報記憶部１２５に示すように、対応ユーザとして抽出されたユーザＵ１に、単語「ｔａｌｋ」のキーボード入力が行われ行動情報ＡＣ１１が取得されたキーボードであるＩｏＴ機器１０（ＴＩＤ１１）が関連付けられていることを示す情報を取得する。
【０１３７】
（生成部１３２）
生成部１３２は、各種情報を生成する。例えば、生成部１３２は、行動パターン情報記憶部１２１に記憶された学習データ（行動情報）を用いて、モデル情報記憶部１２４に示すようなモデルを生成する。例えば、生成部１３２は、取得部１３１により取得された学習データに基づいて、入力した行動情報と同様の情報を出力するモデル（オートエンコーダ）を生成する。例えば、生成部１３２は、入力する行動情報自体を正解情報として、入力した行動情報と同様の情報を出力するモデル（オートエンコーダ）を生成する。
【０１３８】
例えば、生成部１３２は、モデルＭ１等を生成し、生成したモデルＭ１等をモデル情報記憶部１２４に格納する。なお、生成部１３２は、いかなる学習アルゴリズムを用いてモデルＭ１を生成してもよい。例えば、生成部１３２は、ニューラルネットワーク（neural  network）等の学習アルゴリズムを用いてモデルＭ１を生成する。一例として、生成部１３２がニューラルネットワークを用いてモデルＭ１等を生成する場合、モデルＭ１等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
【０１３９】
生成部１３２は、ユーザの行動情報（行動データ）が入力される入力層と、出力層と、入力層から出力層までのいずれかの層であって出力層以外の層に属する第１要素と、第１要素と第１要素の重みとに基づいて値が算出される第２要素と、を含み、入力層に入力された行動情報に対し、出力層以外の各層に属する各要素を第１要素として、第１要素と第１要素の重みとに基づく演算を行うことにより、入力層に入力される情報と同様の情報を出力層から出力するモデルを生成する。
【０１４０】
例えば、生成部１３２は、学習データに基づいてモデルを生成する。例えば、生成部１３２は、学習データに基づいてモデルを生成する。例えば、生成部１３２は、行動パターン情報記憶部１２１中の行動情報ＡＣ１、ＡＣ２等を学習データ（教師データ）として、学習を行なうことにより、モデルを生成する。
【０１４１】
例えば、生成部１３２は、行動情報ＡＣ１が入力された場合に、モデルＭ１が行動情報ＡＣ１と同様の情報を出力するように、学習処理を行う。例えば、生成部１３２は、行動情報ＡＣ２が入力された場合に、モデルＭ１が行動情報ＡＣ２と同様の情報を出力するように、学習処理を行う。生成部１３２は、モデルを生成し、生成したモデルをモデル情報記憶部１２４に格納する。なお、抽出装置１００は、情報提供装置５０等の他の外部装置からモデルを取得する場合、生成部１３２を有しなくてもよい。
【０１４２】
なお、生成部１３２は、オートエンコーダとしてのモデルＭ１に限らず、種々の学習アルゴリズムを用いて各単語に対応するモデルＭ２１（図示省略）等を生成してもよい。例えば、生成部１３２は、ニューラルネットワーク（neural  network）、サポートベクターマシン（ＳＶＭ）、クラスタリング、強化学習等の学習アルゴリズムを用いてモデルＭ２１等を生成する。一例として、生成部１３２がニューラルネットワークを用いてモデルＭ２１等を生成する場合、モデルＭ２１等は、一以上のニューロンを含む入力層と、一以上のニューロンを含む中間層と、一以上のニューロンを含む出力層とを有する。
【０１４３】
図１の例では、生成部１３２は、行動データの特徴を抽出するモデルを用いて各行動の行動データからＮ次元ベクトルを生成する。生成部１３２は、モデル情報記憶部１２４（図７）に示すモデルＭ１を用いて、各行動の行動データからベクトルを生成する。
【０１４４】
また、生成部１３２は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力に対応する行動データからグラフ情報の探索に用いるベクトルを生成する。図１の例では、生成部１３２は、ＩｏＴ機器１０における単語「ｔａｌｋ」のキーボード入力に対応する行動データ（行動情報ＡＣ１１）からグラフ情報の探索に用いるベクトルを生成する。生成部１３２は、処理群ＰＳ１１に示すような処理により、行動情報ＡＣ１１に対応するベクトルを生成する。生成部１３２は、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１をモデルＭ１に入力する。例えば、生成部１３２は、単語「ｔａｌｋ」をキーボード入力した際の一文字を入力する平均時間、各文字間の平均間隔（平均時間）、及びキーボードを押す平均圧力等に関する情報を含む行動情報ＡＣ１１をモデルＭ１に入力する。そして、生成部１３２は、行動情報ＡＣ１１の入力後のモデルＭ１中の情報を用いて、ベクトルを生成する。生成部１３２は、行動情報ＡＣ１１が入力されたモデルＭ１中の各要素を用いて、ベクトルデータを生成する。
【０１４５】
図１の例では、生成部１３２は、行動情報ＡＣ１１が入力されたモデルＭ１中の各要素の値を用いて、ベクトルＶＤ１１を生成する。例えば、生成部１３２は、キーボードであるＩｏＴ機器１０へのキーボード入力の行動情報ＡＣ１１が入力された場合における、モデルＭ１のニューロンＮＬ１に対応する値ＶＥ１（図１１参照）やニューロンＮＬ２に対応する値ＶＥ２（図１１参照）を用いて、ベクトルを生成する。例えば、生成部１３２は、ＩｏＴ機器１０へのキーボード入力の行動情報ＡＣ１１が入力された場合に、算出されるニューロンＮＬ１に対応する値ＶＥ１をベクトルＶＤ１１の１次元目の要素として抽出してもよい。また、例えば、生成部１３２は、ＩｏＴ機器１０へのキーボード入力の行動データが入力された場合に、算出されるニューロンＮＬ２に対応する値ＶＥ２をベクトルＶＤ１１の２次元目の要素として、ベクトルＶＤ１１を生成する。図１の例では、生成部１３２は、１次元目の要素が「３５」であり、２次元目の要素が「６３」であるようなベクトルＶＤ１１を生成する。
【０１４６】
（決定部１３３）
決定部１３３は、各種情報を決定する。決定部１３３は、起点ノードベクトルの決定に用いるインデックス情報に基づいて、起点ノードベクトルを決定する。決定部１３３は、木構造型のインデックス情報に基づいて、起点ノードベクトルを決定する。例えば、決定部１３３は、取得部１３１により取得された行動情報と、グラフ情報の検索の起点となる起点ベクトルに関する情報とに基づいて、起点ベクトルを決定する。例えば、決定部１３３は、行動情報と、グラフ情報の検索の起点ベクトルの決定の基準となる情報とに基づいて、起点ベクトルを決定する。また、決定部１３３は、起点ベクトルの決定に用いるインデックス情報に基づいて、起点ベクトルを決定する。また、決定部１３３は、木構造型のインデックス情報に基づいて、起点ベクトルを決定する。
【０１４７】
図１の例では、決定部１３３は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力（クエリ）に対応する起点ベクトルを決定（特定）するために、インデックス情報ＩＮＤ１１を用いる。例えば、決定部１３３は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の行動情報ＡＣ１１から生成されたベクトルＶＤ１１に対応する起点ベクトルを決定（特定）するために、インデックス情報ＩＮＤ１１を用いる。決定部１３３は、ベクトルＶＤ１１とインデックス情報ＩＮＤ１１とを用いて、グラフ情報ＧＲ１１における起点ベクトルを決定する。
【０１４８】
例えば、決定部１３３は、図１中のインデックス情報ＩＮＤ１１に示すような木構造型のインデックス情報を用いて、グラフ情報ＧＲ１１における起点ベクトルを決定する。図１の例では、決定部１３３は、ベクトルＶＤ１１を生成した後、インデックス情報ＩＮＤ１１を上から下へ辿ることにより、インデックス情報ＩＮＤ１１の近傍候補となる起点ベクトルを特定することにより、効率的に検索クエリ（ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力）に対応する起点ベクトルを決定する。
【０１４９】
例えば、決定部１３３は、インデックス情報ＩＮＤ１１をルートＲＴからリーフノード（グラフ情報ＧＲ１１中のノード（ベクトル））まで辿ることにより、ベクトルＶＤ１１に対応する起点ベクトルを決定する。図１の例では、決定部１３３は、インデックス情報ＩＮＤ１１をルートＲＴからノードＮ４５１まで辿ることにより、ノードＮ４５１を起点ベクトルとして決定する。
【０１５０】
（抽出部１３４）
抽出部１３４は、各種情報を抽出する。抽出部１３４は、取得部１３１により取得されたグラフ情報の複数のノードベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードベクトルを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。抽出部１３４は、取得部１３１により取得されたグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。例えば、抽出部１３４は、グラフ情報記憶部１２３に記憶された各ノード（ベクトル）間を連結するエッジの長さ（距離）の情報を用いてもよいし、各ノードのベクトル情報から各ノード（ベクトル）間を連結するエッジの長さ（距離）の情報を算出し、算出した長さ（距離）の情報を用いてもよい。抽出部１３４は、決定部１３３により決定された起点ベクトルを起点として、類似パターンを抽出する。抽出部１３４は、決定部１３３により決定された起点ノードベクトルを起点として、類似パターンを抽出する。抽出部１３４は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードベクトルを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。
【０１５１】
また、抽出部１３４は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のベクトルのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ベクトルを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。また、抽出部１３４は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて、複数の単語に対応する複数の類似パターンを抽出する。認証部１３５は、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証する。
【０１５２】
図１の例では、抽出部１３４は、グラフ情報ＧＲ１１を検索することにより、単語「ｔａｌｋ」のキーボード入力に対応する行動情報ＡＣ１１の類似パターンを抽出する。例えば、抽出部１３４は、ノードＮ４５１の近傍に位置するノードを類似パターンとして抽出する。例えば、抽出部１３４は、ノードＮ４５１からの距離が近いノードを類似パターンとして抽出する。例えば、抽出部１３４は、ノードＮ４５１を起点として、エッジを辿ることにより、ノードＮ４５１から到達可能なノードを類似パターンとして抽出する。例えば、抽出部１３４は、所定数（例えば、２個や１０個等）のノードを類似パターンとして抽出する。例えば、抽出部１３４は、図１２に示すような検索処理により、行動情報ＡＣ１１の類似パターンを抽出する。図１の例では、抽出部１３４は、ノードＮ４５１を起点として、グラフ情報ＧＲ１１を探索することにより、ノードＮ４５１やノードＮ３５を類似パターンとして抽出する。
【０１５３】
図１の例では、抽出部１３４は、抽出した類似パターンに基づいて、類似パターンに対応するユーザ（対応ユーザ）を抽出する。例えば、抽出部１３４は、行動パターン情報記憶部１２１（図４参照）に記憶された行動パターンとユーザとの対応付けに基づいて、対応ユーザを抽出する。抽出部１３４は、行動パターン情報記憶部１２１のうち、単語「ｔａｌｋ」に対応する行動パターンデータセット１２１−１中のパターンＩＤとユーザとの対応付けに基づいて、対応ユーザを抽出する。
【０１５４】
例えば、抽出部１３４は、ノードＮ４５１に対応するパターンＩＤ「ＰＴ４５１」に関連付けられたユーザＵ１や、ノードＮ３５に対応するパターンＩＤ「ＰＴ３５」に関連付けられたユーザＵ５０（図示せず）を対応ユーザとして抽出する。
【０１５５】
（認証部１３５）
認証部１３５は、各種情報を認証する。例えば、認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられたユーザの情報に基づいて、ユーザを認証する。
認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証する。また、認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証する。認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証するかどうかを判定する。
【０１５６】
図１の例では、認証部１３５は、抽出した対応ユーザに基づいて、ユーザを認証する。例えば、認証部１３５は、抽出した対応ユーザに基づいて、ＩｏＴ機器１０（ＴＩＤ１１）において単語「ｔａｌｋ」のキーボード入力を行ったユーザを認証する。
【０１５７】
例えば、認証部１３５は、ユーザ情報記憶部１２５（図８参照）に記憶されたユーザＩＤと、そのユーザに対応付けられたＩｏＴ機器のＩＤとに基づいて、認証を行う。認証部１３５は、ＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であるとして認証する。
【０１５８】
（送信部１３６）
送信部１３６は、各種情報を送信する。例えば、送信部１３６は、ＩｏＴ機器１０や情報提供装置５０に各種情報を送信する。例えば、送信部１３６は、ＩｏＴ機器１０や情報提供装置５０に各種情報を配信する。送信部１３６は、抽出部１３４により抽出された類似パターンに基づいて、所定のサービスを提供する。また、送信部１３６は、類似パターンに関する情報提供サービスを提供する。送信部１３６は、ＩｏＴ機器１０に類似パターンに関する情報を送信する。
【０１５９】
送信部１３６は、認証部１３５による認証結果をＩｏＴ機器１０へ送信する。例えば、送信部１３６は、抽出部１３４により抽出された類似パターンに関連付けられたユーザに関する情報をＩｏＴ機器１０へ送信してもよい。例えば、送信部１３６は、クエリに対応するオブジェクトＩＤを検索結果として送信する。例えば、送信部１３６は、抽出部１３４により選択されたオブジェクトＩＤを情報提供装置５０へ送信する。送信部１３６は、抽出部１３４により選択されたオブジェクトＩＤをクエリに対応するベクトルを示す情報として情報提供装置５０に送信する。また、送信部１３６は、生成部１３２により生成されたモデルを外部の情報処理装置へ送信してもよい。
【０１６０】
図１の例では、送信部１３６は、ＩｏＴ機器１０へ認証結果を送信する。例えば、送信部１３６は、ＩｏＴ機器１０へ利用しているユーザが正当なユーザであることを示す情報を送信する。例えば、送信部１３６は、ＩｏＴ機器１０へ利用しているユーザがＩｏＴ機器１０の所有者であるユーザＵ１であることを示す情報を送信する。なお、送信部１３６は、認証がＯＫである、すなわち正当にユーザの認証が行われた場合、ＩｏＴ機器１０へ認証結果を送信しなくてもよい。また、例えば、送信部１３６は、認証がＮＧである、すなわちユーザの認証されなかった場合、ＩｏＴ機器１０へ認証結果を送信してもよい。
【０１６１】
〔４．認証処理のフロー〕
次に、図９を用いて、実施形態に係る認証システム１による認証処理の手順について説明する。図９は、実施形態に係る認証処理の一例を示すフローチャートである。
【０１６２】
図９に示すように、認証装置１００は、ＩｏＴ機器から一のユーザの行動情報を取得する（ステップＳ１０１）。図１の例では、認証装置１００は、ユーザＵ１が利用するキーボードであるＩｏＴ機器１０（ＴＩＤ１１）から単語「ｔａｌｋ」のキーボード入力の行動情報ＡＣ１１を取得する。
【０１６３】
認証装置１００は、一のユーザの行動情報に対応する行動パターンのグラフ情報を取得する（ステップＳ１０２）。例えば、認証装置１００は、グラフ情報記憶部１２３のうち、対象単語「ｔａｌｋ」に対応するグラフデータセット１２３−１から、対象単語「ｔａｌｋ」に関するグラフ情報ＧＲ１１を取得する。
【０１６４】
そして、認証装置１００は、モデルを用いて一のユーザの行動情報からベクトルを生成する（ステップＳ１０３）。図１の例では、認証装置１００は、モデル情報記憶部１２４に記憶されたモデルＭ１を用いて、行動情報ＡＣ１１からベクトルＶＤ１１を生成する。
【０１６５】
そして、認証装置１００は、生成したベクトルとインデックス情報を用いて起点ベクトルを決定する（ステップＳ１０４）。図１の例では、認証装置１００は、ベクトルＶＤ１１と、インデックス情報記憶部１２２に記憶されたインデックス情報ＩＮＤ１１とを用いて、起点ベクトルをノードＮ４５１に決定する。
【０１６６】
そして、認証装置１００は、グラフ情報を検索することにより、一のユーザの行動情報の類似パターンを抽出する（ステップＳ１０５）。図１の例では、認証装置１００は、ノードＮ４５１を起点として、グラフ情報ＧＲ１１を探索することにより、ノードＮ４５１やノードＮ３５を類似パターンとして抽出する。
【０１６７】
そして、認証装置１００は、抽出した類似パターンに関連付けられたユーザに基づいて、一のユーザを認証する（ステップＳ１０６）。図１の例では、認証装置１００は、行動パターンセット１２１−１に記憶されたパターンとユーザの関連付けを示す情報と、ユーザ情報記憶部１２５に記憶されたユーザとＩｏＴ機器の関連付け情報とに基づいて、認証を行う。例えば、認証装置１００は、類似パターンとして抽出されたノードＮ４５１に関連付けられた対応ユーザにユーザＵ１が含まれるため、キーボードであるＩｏＴ機器１０（ＴＩＤ１１）を利用するユーザがＩｏＴ機器１０（ＴＩＤ１１）に対応付けられたユーザＵ１であるとして認証する。
【０１６８】
また、認証装置１００は、ＩｏＴ機器へ認証結果を送信してもよい。なお、認証装置１００は、認証がＯＫである、すなわち正当にユーザの認証が行われた場合、ＩｏＴ機器１０へ認証結果を送信しなくてもよい。例えば、認証装置１００は、認証がＮＧである、すなわちユーザの認証されなかった場合、ＩｏＴ機器１０へ認証結果を送信してもよい。そして、ＩｏＴ機器１０は、認証がＮＧであることを示す情報を受信した場合、所定のロック機能によりユーザによる入力や操作を受付けなくしてもよい。例えば、ＩｏＴ機器１０は、認証がＮＧであることを示す情報を受信した場合、所定の期間（例えば１時間等）に亘って、ロック機能によりユーザによる入力や操作を受付けなくしてもよい。
【０１６９】
〔５．生成処理のフロー〕
次に、図１０を用いて、実施形態に係る認証システム１による生成処理の手順について説明する。図１０は、実施形態に係る生成処理の一例を示すフローチャートである。
【０１７０】
図１０に示すように、認証装置１００は、学習データを取得する（ステップＳ２０１）。例えば、認証装置１００は、行動パターン情報記憶部１２１から学習データを取得する。例えば、認証装置１００は、行動パターン情報記憶部１２１から行動情報ＡＣ１、ＡＣ２等を学習データとして取得する。
【０１７１】
その後、認証装置１００は、学習データに基づきモデルを生成する（ステップＳ２０２）。例えば、認証装置１００は、行動パターン情報記憶部１２１から学習データを用いてモデルＭ１を生成する。例えば、認証装置１００は、入力層に入力される情報（行動データ）と同様の情報（行動データ）を出力層から出力するようにモデルＭ１を生成する。例えば、認証装置１００は、行動の行動データを入力とするオートエンコーダとしてのモデルＭ１を生成する。
【０１７２】
〔６．検索例〕
ここで、上述したグラフ情報を用いた検索の一例を示す。なお、グラフ情報（グラフデータ）を用いた検索は下記に限らず、種々の手順により行われてもよい。この点について、図１２を一例として説明する。図１２は、グラフデータ（グラフ情報）を用いた検索処理の一例を示すフローチャートである。また、以下でいうオブジェクトは、ベクトルやノードと読み替えてもよい。なお、以下では、認証装置１００が検索処理を行うものとして説明するが、検索処理は他の装置により行われてもよい。例えば、認証装置１００は、検索クエリとして、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の行動データから生成されたベクトルデータを用いる。例えば、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力の行動データから生成されたベクトルデータとインデックス情報とに基づいて決定された起点ベクトルを起点としてグラフデータを検索する。図１の例では、認証装置１００は、ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力のベクトルＶＤ１１とインデックス情報ＩＮＤ１１とに基づいて決定された起点ベクトルであるノードＮ４５１を起点としてグラフ情報ＧＲ１１を検索する。
【０１７３】
ここでは、近傍オブジェクト集合Ｎ（Ｇ，ｙ）は、ノードｙに付与されているエッジにより関連付けられている近傍のオブジェクトの集合である。「Ｇ」は、所定のグラフデータ（例えば、グラフ情報ＧＲ１１等）であってもよい。例えば、認証装置１００は、ｋ近傍検索処理を実行する。
【０１７４】
例えば、認証装置１００は、超球の半径ｒを∞（無限大）に設定し（ステップＳ３００）、既存のオブジェクト集合から部分集合Ｓを抽出する（ステップＳ３０１）。例えば、認証装置１００は、ルートノード（起点ベクトル）として選択されたオブジェクト（ノード）を部分集合Ｓとして抽出してもよい。図１の例では、認証装置１００は、起点ベクトルであるノードＮ４５１等を部分集合Ｓとして抽出してもよい。また、例えば、超球とは、検索範囲を示す仮想的な球である。なお、ステップＳ３０１において抽出されたオブジェクト集合Ｓに含まれるオブジェクトは、同時に検索結果のオブジェクト集合Ｒの初期集合にも含められる。
【０１７５】
次に、認証装置１００は、オブジェクト集合Ｓに含まれるオブジェクトの中で、検索クエリオブジェクトをｙとするとオブジェクトｙとの距離が最も短いオブジェクトを抽出し、オブジェクトｓとする（ステップＳ３０２）。図１の例では、認証装置１００は、オブジェクト集合Ｓに含まれるオブジェクトの中で、検索クエリオブジェクトであるベクトルＶＤ１１との距離が最も短いオブジェクトを抽出し、オブジェクトｓとする。例えば、認証装置１００は、オブジェクト集合Ｓに含まれるオブジェクトの中で、ベクトルＶＤ１１との距離が最も短いノードＮ４５１を抽出し、オブジェクトｓとする。例えば、認証装置１００は、ルートノード（起点ベクトル）として選択されたオブジェクト（ノード）のみがオブジェクト集合Ｓの要素の場合には、結果的にルートノード（起点ベクトル）がオブジェクトｓとして抽出される。次に、認証装置１００は、オブジェクトｓをオブジェクト集合Ｓから除外する（ステップＳ３０３）。
【０１７６】
次に、認証装置１００は、オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えるか否かを判定する（ステップＳ３０４）。ここで、εは拡張要素であり、ｒ（１＋ε）は、探索範囲（この範囲内のノードのみを探索する。検索範囲よりも大きくすることで精度を高めることができる）の半径を示す値である。オブジェクトｓとオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超える場合（ステップＳ３０４：Ｙｅｓ）、認証装置１００は、オブジェクト集合Ｒをオブジェクトｙの近傍オブジェクト集合として出力し（ステップＳ３０５）、処理を終了する。
【０１７７】
オブジェクトｓと検索クエリオブジェクトｙとの距離ｄ（ｓ，ｙ）がｒ（１＋ε）を超えない場合（ステップＳ３０４：Ｎｏ）、認証装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトの中からオブジェクト集合Ｃに含まれないオブジェクトを一つ選択し、選択したオブジェクトｕを、オブジェクト集合Ｃに格納する（ステップＳ３０６）。オブジェクト集合Ｃは、重複検索を回避するために便宜上設けられるものであり、処理開始時には空集合に設定される。
【０１７８】
次に、認証装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下であるか否かを判定する（ステップＳ３０７）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ（１＋ε）以下である場合（ステップＳ３０７：Ｙｅｓ）、認証装置１００は、オブジェクトｕをオブジェクト集合Ｓに追加する（ステップＳ３０８）。
【０１７９】
次に、認証装置１００は、オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下であるか否かを判定する（ステップＳ３０９）。オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒを超える場合（ステップＳ３０９：Ｎｏ）、認証装置１００は、ステップＳ３１５の判定（処理）を行う。
【０１８０】
オブジェクトｕとオブジェクトｙとの距離ｄ（ｕ，ｙ）がｒ以下である場合（ステップＳ３０９：Ｙｅｓ）、認証装置１００は、オブジェクトｕをオブジェクト集合Ｒに追加する（ステップＳ３１０）。そして、認証装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超えるか否かを判定する（ステップＳ３１１）。所定数ｋｓは、任意に定められる自然数である。例えば、ｋｓ＝２やｋｓ＝１０等の種々の設定であってもよい。
【０１８１】
オブジェクト集合Ｒに含まれるオブジェクト数がｋｓを超える場合（ステップＳ３１１：Ｙｅｓ）、認証装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトを、オブジェクト集合Ｒから除外する（ステップＳ３１２）。
【０１８２】
次に、認証装置１００は、オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致するか否かを判定する（ステップＳ３１３）。オブジェクト集合Ｒに含まれるオブジェクト数がｋｓと一致する場合（ステップＳ３１３：Ｙｅｓ）、認証装置１００は、オブジェクト集合Ｒに含まれるオブジェクトの中でオブジェクトｙとの距離が最も長い（遠い）オブジェクトと、オブジェクトｙとの距離を、新たなｒに設定する（ステップＳ３１４）。
【０１８３】
そして、認証装置１００は、オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えたか否かを判定する（ステップＳ３１５）。オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えていない場合（ステップＳ３１５：Ｎｏ）、認証装置１００は、ステップＳ３０６に戻って処理を繰り返す。
【０１８４】
オブジェクトｓの近傍オブジェクト集合Ｎ（Ｇ，ｓ）の要素であるオブジェクトから全てのオブジェクトを選択してオブジェクト集合Ｃに格納し終えた場合（ステップＳ３１５：Ｙｅｓ）、認証装置１００は、オブジェクト集合Ｓが空集合であるか否かを判定する（ステップＳ３１６）。オブジェクト集合Ｓが空集合でない場合（ステップＳ３１６：Ｎｏ）、認証装置１００は、ステップＳ３０２に戻って処理を繰り返す。また、オブジェクト集合Ｓが空集合である場合（ステップＳ３１６：Ｙｅｓ）、認証装置１００は、オブジェクト集合Ｒを出力し、処理を終了する（ステップＳ３１７）。例えば、認証装置１００は、オブジェクト集合Ｒに含まれるオブジェクト（ノード）を検索クエリ（入力オブジェクトｙ）に対応する検索結果として、認証を行う。図１の例では、認証装置１００は、オブジェクト集合Ｒに含まれるノードＮ４５１やノードＮ３５を検索クエリ（ＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力のベクトルＶＤ１１）に対応する検索結果として、認証を行う。例えば、認証装置１００は、ノードＮ４５１に関連付けられたユーザＵ１や、ノードＮ３５に関連付けられたユーザＵ５０（図示せず）をＩｏＴ機器１０（ＴＩＤ１１）における単語「ｔａｌｋ」のキーボード入力を行った可能性があるユーザとして認証を行う。
【０１８５】
〔７．効果〕
上述してきたように、実施形態に係る認証装置１００は、取得部１３１と、抽出部１３４と、認証部１３５とを有する。取得部１３１は、複数の行動パターンの各々に対応する複数のノードであって、各行動パターンに対応する行動を行った対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結されたグラフ情報と、一のユーザの行動情報を取得する。抽出部１３４は、取得部１３１により取得されたグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、グラフ情報を検索することにより、複数の行動パターンのうち、一のユーザの行動情報に類似する行動パターンである類似パターンを抽出する。認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証する。
【０１８６】
このように、実施形態に係る認証装置１００は、起点ノードを起点としてグラフ情報を検索し、抽出された類似パターンに対応付けられた対応ユーザに基づいて、一のユーザを認証することにより、適切な認証を行うことができる。
【０１８７】
また、実施形態に係る認証装置１００は、決定部１３３を有する。決定部１３３は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定する。抽出部１３４は、決定部１３３により決定された起点ノードを起点として、類似パターンを抽出する。
【０１８８】
このように、実施形態に係る認証装置１００は、起点ノードの決定に用いるインデックス情報に基づいて、起点ノードを決定し、類似パターンを抽出することにより、適切な認証を行うことができる。
【０１８９】
また、実施形態に係る認証装置１００において、決定部１３３は、木構造型のインデックス情報に基づいて、起点ノードを決定する。
【０１９０】
このように、実施形態に係る認証装置１００は、木構造型のインデックス情報に基づいて、起点ノードを決定することにより、適切な認証を行うことができる。
【０１９１】
また、実施形態に係る抽出装置１００において、取得部１３１は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
【０１９２】
このように、実施形態に係る抽出装置１００は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得することにより、類似の行動パターンを適切に抽出し、適切な認証を行うことができる。
【０１９３】
また、実施形態に係る認証装置１００において、取得部１３１は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得する。
【０１９４】
このように、実施形態に係る認証装置１００は、複数の行動パターンの各々の特徴を示す複数のベクトルが類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
【０１９５】
また、実施形態に係る認証装置１００において、取得部１３１は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
【０１９６】
このように、実施形態に係る認証装置１００は、所定のモデルを用いて複数の行動パターンの各々から抽出された特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
【０１９７】
また、実施形態に係る認証装置１００において、取得部１３１は、複数の行動パターンに関する情報を所定のモデルに入力することにより、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得する。
【０１９８】
このように、実施形態に係る認証装置１００は、複数の行動パターンに関する情報を所定のモデルに入力し、抽出される複数の行動パターンの各々の特徴量を要素とする複数のベクトルが、類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
【０１９９】
また、実施形態に係る認証装置１００において、認証部１３５は、抽出部１３４により抽出された類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証する。
【０２００】
このように、実施形態に係る認証装置１００は、類似パターンに対応付けられた対応ユーザに一のユーザが含まれるかどうかに応じて、一のユーザを認証することにより、適切な認証を行うことができる。
【０２０１】
また、実施形態に係る認証装置１００において、取得部１３１は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得する。
【０２０２】
このように、実施形態に係る認証装置１００は、センサにより検知されたセンサ情報を一のユーザの行動情報として取得することにより、適切な認証を行うことができる。
【０２０３】
また、実施形態に係る認証装置１００において、取得部１３１は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得する。
【０２０４】
このように、実施形態に係る認証装置１００は、一のユーザによるキーボードを用いた入力情報を一のユーザの行動情報として取得することにより、適切な認証を行うことができる。
【０２０５】
また、実施形態に係る認証装置１００において、取得部１３１は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが類似性に応じて連結されたグラフ情報を取得する。
【０２０６】
このように、実施形態に係る認証装置１００は、キーボードを用いた入力に関する複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結されたグラフ情報を取得することにより、適切な認証を行うことができる。
【０２０７】
また、実施形態に係る認証装置１００において、取得部１３１は、単語ごとの複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが類似性に応じて連結された複数のグラフ情報を取得する。
【０２０８】
このように、実施形態に係る認証装置１００は、単語ごとの複数の行動パターンの各々に対応する複数のノードであって、対応ユーザが関連付けられた複数のノードが、複数の行動パターンの類似性に応じて連結された複数のグラフ情報を取得することにより、適切な認証を行うことができる。
【０２０９】
また、実施形態に係る認証装置１００において、抽出部１３４は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、一のグラフ情報を検索することにより、類似パターンを抽出する。
【０２１０】
このように、実施形態に係る認証装置１００は、複数のグラフ情報のうち、一のユーザが入力した一の単語に対応する一のグラフ情報の複数のノードのうち、所定の基準に基づいて決定されたグラフ情報の検索の起点となる起点ノードを起点として、一のグラフ情報を検索し、類似パターンを抽出することにより、適切な認証を行うことができる。
【０２１１】
また、実施形態に係る認証装置１００において、抽出部１３４は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて、複数の単語に対応する複数の類似パターンを抽出する。認証部１３５は、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証する。
【０２１２】
このように、実施形態に係る認証装置１００は、一のユーザが入力した複数の単語の各々に対応するグラフ情報を用いて抽出した複数の単語に対応する複数の類似パターンを用いて、複数の類似パターンの各々に対応付けられた対応ユーザに基づいて、一のユーザを認証することにより、適切な認証を行うことができる。
【０２１３】
〔８．ハードウェア構成〕
上述してきた実施形態に係る認証装置１００は、例えば図１４に示すような構成のコンピュータ１０００によって実現される。図１４は、認証装置の機能を実現するコンピュータの一例を示すハードウェア構成図である。コンピュータ１０００は、ＣＰＵ１１００、ＲＡＭ１２００、ＲＯＭ（Read  Only  Memory）１３００、ＨＤＤ（Hard  Disk  Drive）１４００、通信インターフェイス（Ｉ／Ｆ）１５００、入出力インターフェイス（Ｉ／Ｆ）１６００、及びメディアインターフェイス（Ｉ／Ｆ）１７００を有する。
【０２１４】
ＣＰＵ１１００は、ＲＯＭ１３００またはＨＤＤ１４００に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ１３００は、コンピュータ１０００の起動時にＣＰＵ１１００によって実行されるブートプログラムや、コンピュータ１０００のハードウェアに依存するプログラム等を格納する。
【０２１５】
ＨＤＤ１４００は、ＣＰＵ１１００によって実行されるプログラム、及び、かかるプログラムによって使用されるデータ等を格納する。通信インターフェイス１５００は、ネットワークＮを介して他の機器からデータを受信してＣＰＵ１１００へ送り、ＣＰＵ１１００が生成したデータをネットワークＮを介して他の機器へ送信する。
【０２１６】
ＣＰＵ１１００は、入出力インターフェイス１６００を介して、ディスプレイやプリンタ等の出力装置、及び、キーボードやマウス等の入力装置を制御する。ＣＰＵ１１００は、入出力インターフェイス１６００を介して、入力装置からデータを取得する。また、ＣＰＵ１１００は、生成したデータを入出力インターフェイス１６００を介して出力装置へ出力する。
【０２１７】
メディアインターフェイス１７００は、記録媒体１８００に格納されたプログラムまたはデータを読み取り、ＲＡＭ１２００を介してＣＰＵ１１００に提供する。ＣＰＵ１１００は、かかるプログラムを、メディアインターフェイス１７００を介して記録媒体１８００からＲＡＭ１２００上にロードし、ロードしたプログラムを実行する。記録媒体１８００は、例えばＤＶＤ（Digital  Versatile  Disc）、ＰＤ（Phase  change  rewritable  Disk）等の光学記録媒体、ＭＯ（Magneto-Optical  disk）等の光磁気記録媒体、テープ媒体、磁気記録媒体、または半導体メモリ等である。
【０２１８】
例えば、コンピュータ１０００が実施形態に係る認証装置１００として機能する場合、コンピュータ１０００のＣＰＵ１１００は、ＲＡＭ１２００上にロードされたプログラムまたはデータ（例えば、モデルＭ１（モデルデータＭＤＴ１））を実行することにより、制御部１３０の機能を実現する。コンピュータ１０００のＣＰＵ１１００は、これらのプログラムまたはデータ（例えば、モデルＭ１（モデルデータＭＤＴ１））を記録媒体１８００から読み取って実行するが、他の例として、他の装置からネットワークＮを介してこれらのプログラムを取得してもよい。
【０２１９】
以上、本願の実施形態のいくつかを図面に基づいて詳細に説明したが、これらは例示であり、発明の開示の行に記載の態様を始めとして、当業者の知識に基づいて種々の変形、改良を施した他の形態で本発明を実施することが可能である。
【０２２０】
〔９．その他〕
また、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、各図に示した各種情報は、図示した情報に限られない。
【０２２１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０２２２】
また、上述してきた各実施形態に記載された各処理は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【０２２３】
また、上述してきた「部（section、module、unit）」は、「手段」や「回路」などに読み替えることができる。例えば、取得部は、取得手段や取得回路に読み替えることができる。
【符号の説明】
【０２２４】
１  認証システム
１００  認証装置
１２１  行動パターン情報記憶部
１２２  インデックス情報記憶部
１２３  グラフ情報記憶部
１２４  モデル情報記憶部
１２５  ユーザ情報記憶部
１３０  制御部
１３１  取得部
１３２  生成部
１３３  決定部
１３４  抽出部
１３５  認証部
１３６  送信部
１０  ＩｏＴ機器
５０  情報提供装置
Ｎ  ネットワーク
【図１】
2019128795.tif 000003
【図２】
2019128795.tif 000004
【図３】
2019128795.tif 000005
【図４】
2019128795.tif 000006
【図５】
2019128795.tif 000007
【図６】
2019128795.tif 000008
【図７】
2019128795.tif 000009
【図８】
2019128795.tif 000010
【図９】
2019128795.tif 000011
【図１０】
2019128795.tif 000012
【図１１】
2019128795.tif 000013
【図１２】
2019128795.tif 000014
【図１３】
2019128795.tif 000015
【図１４】
2019128795.tif 000016