(57)【要約】【課題】学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる学習プログラム、学習方法および学習装置を提供する。【解決手段】学習プログラムは、学習対象のグラフデータから、グラフデータに含まれる各ノードの値、および、グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する処理をコンピュータに実行させる。学習プログラムは、生成した拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、ニューラルネットワークの深層学習を行うとともに、テンソル分解の方法を学習する処理をコンピュータに実行させる。【選択図】図１
2019128610.tif 000002
【特許請求の範囲】
【請求項１】
グラフデータに対する機械学習処理をコンピュータに実行させる学習プログラムであって、
学習対象のグラフデータから、前記グラフデータに含まれる各ノードの値、および、前記グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成し、
生成した前記拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、前記ニューラルネットワークの深層学習を行うとともに、前記テンソル分解の方法を学習する、
処理を前記コンピュータに実行させることを特徴とする学習プログラム。
【請求項２】
前記生成する処理は、各ノードと他ノードとの接続を表す接続行列を生成し、生成した前記接続行列に基づく距離行列を対角成分とする行列を前記拡張グラフデータとして生成する、
ことを特徴とする請求項１に記載の学習プログラム。
【請求項３】
前記生成する処理は、前記グラフデータに含まれる各ノード間の最長距離を算出し、算出した前記最長距離までの距離数に応じて前記接続行列を冪乗した行列に基づく前記距離行列をそれぞれ生成し、生成したそれぞれの前記距離行列を対角成分とする行列を前記拡張グラフデータとして生成する、
ことを特徴とする請求項２に記載の学習プログラム。
【請求項４】
グラフデータに対する機械学習処理をコンピュータが実行する学習方法であって、
学習対象のグラフデータから、前記グラフデータに含まれる各ノードの値、および、前記グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成し、
生成した前記拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、前記ニューラルネットワークの深層学習を行うとともに、前記テンソル分解の方法を学習する、
処理を前記コンピュータが実行することを特徴とする学習方法。
【請求項５】
グラフデータに対する機械学習を行う学習装置であって、
学習対象のグラフデータから、前記グラフデータに含まれる各ノードの値、および、前記グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する生成部と、
生成した前記拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、前記ニューラルネットワークの深層学習を行うとともに、前記テンソル分解の方法を学習する学習部と、
を有することを特徴とする学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習プログラム、学習方法および学習装置に関する。
【背景技術】
【０００２】
グラフ構造のデータを深層学習することが可能なグラフ構造学習技術（以降、このようなグラフ構造学習を行う装置の一形態を「ディープテンソル」と呼ぶ。）が知られている。ディープテンソルによる学習においては、深層学習を行うニューラルネットワークの学習と共に、判別に寄与する部分構造を自動的に抽出して学習を行う事ができる。
【０００３】
また、機械学習については、自己組織化ニューラルネットワークにおいて、学習結果を安定させるために、入力ベクトルの最近傍および第２近傍ノードとの距離によって入力ベクトルを学習させるかどうかを判定することが提案されている。さらに、入力データについてラプラシアン行列を用いてクラスタに分割することが提案されている。また、異なるクラスに属する処理データ間の測地線距離関係とクラス間の距離とを求め、クラス間の距離に応じたクラス間分離度に基づいて、同じクラスに属する処理データ間の測地線距離を他クラスの処理データとの間よりも小さくすることが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１６４３９６号公報
【特許文献２】特開２０１６−００４５７９号公報
【特許文献３】特開２０１５−０７９３８１号公報
【特許文献４】特開２０１３−０６５３３６号公報
【非特許文献】
【０００５】
【非特許文献１】"Deep  Tensor:  Eliciting  New  Insights  from  Graph  Data  that  Express  Relationships  between  People  and  Things"  Koji  Maruhashi著  Fujitsu  Sci.  Tech.  J.,  Vol.53,  No.5,  pp.26-31  (September  2017）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
グラフ構造のデータを深層学習させる場合、グラフに含まれるノードの各要素、および、リンク（エッジ）の接続状態が学習対象とされている。一方、深層学習の判別モデル（学習モデル）における判別ルールは、単にノードの値やリンクの有無に留まらず、例えば、リンクの連鎖状況に関連するルールも存在し得る。すなわち、判別に寄与する部分グラフ構造におけるノード間の接続について、複数のノードを経由するような接続状態を含むルールも存在し得る。
【０００７】
しかしながら、ディープテンソルでは、判別ルールを部分グラフ構造とするため、リンクの連鎖状況に関連するルールを含めるためには、判別ルールの連鎖を表す部分グラフ構造の全てのバリエーションが訓練データに含まれていることが求められる。ところが、このような連鎖が遠距離ノードを含む場合や、連鎖のノード間距離に関する条件として「幾つ以内」を含む場合に、部分グラフ構造のバリエーションが増大するので、その全バリエーションを訓練する事が困難となり、学習が不完全となる。このため、訓練データに含まれない当該連鎖を表す部分グラフ構造のバリエーションを有する新規データを正しく判別することが難しい。つまり、学習時と異なる連鎖状況のグラフについての機械学習の判別精度が低下する。
【０００８】
一つの側面では、学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる学習プログラム、学習方法および学習装置を提供することにある。
【課題を解決するための手段】
【０００９】
一つの態様では、学習プログラムは、グラフデータに対する機械学習処理をコンピュータに実行させる。すなわち、学習プログラムは、学習対象のグラフデータから、前記グラフデータに含まれる各ノードの値、および、前記グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する処理をコンピュータに実行させる。学習プログラムは、生成した前記拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、前記ニューラルネットワークの深層学習を行うとともに、前記テンソル分解の方法を学習する処理をコンピュータに実行させる。
【発明の効果】
【００１０】
学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例の学習装置の構成の一例を示すブロック図である。
【図２】図２は、グラフ構造とテンソルとの関係の一例を示す図である。
【図３】図３は、部分グラフ構造の抽出の一例を示す図である。
【図４】図４は、ディープテンソルにおける重み付き接続行列の一例を示す図である。
【図５】図５は、条件を満たす部分グラフ構造の一例を示す図である。
【図６】図６は、接続行列の数学的性質を説明する図である。
【図７】図７は、訓練データの一例を示す図である。
【図８】図８は、算出過程の一例を示す図である。
【図９】図９は、拡張グラフデータからの部分グラフ構造の抽出の一例を示す図である。
【図１０】図１０は、学習可能な他の判別ルールの一例を示す図である。
【図１１】図１１は、拡張グラフデータからの他の判別ルールに対応する部分グラフ構造の抽出の一例を示す図である。
【図１２】図１２は、学習可能な他の判別ルールの一例を示す図である。
【図１３】図１３は、学習可能な他の判別ルールの一例を示す図である。
【図１４】図１４は、実施例の学習処理の一例を示すフローチャートである。
【図１５】図１５は、実施例の判別処理の一例を示すフローチャートである。
【図１６】図１６は、学習プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて、本願の開示する学習プログラム、学習方法および学習装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１３】
図１は、実施例の学習装置の構成の一例を示すブロック図である。図１に示す学習装置１００は、グラフ構造のデータを深層学習するディープテンソルによって判別モデルを生成し、判別モデルを用いて新規なグラフ構造のデータを判別する学習装置の一例である。学習装置１００は、学習対象のグラフデータから、グラフデータに含まれる各ノードの値、および、グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する。学習装置１００は、生成した拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、ニューラルネットワークの深層学習を行うとともに、テンソル分解の方法を学習する。テンソル分解の結果得られたコアテンソルには、判別に寄与する部分構造を含み、これにより、学習装置１００は、学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる。
【００１４】
まず、ディープテンソルについて説明する。ディープテンソルとは、テンソル（グラフ情報）を入力とするディープラーニングであり、ニューラルネットワークの学習とともに、判別に寄与する部分グラフ構造を自動的に抽出する。この抽出処理は、ニューラルネットワークの学習とともに、入力テンソルデータのテンソル分解のパラメータを学習することによって実現される。
【００１５】
次に、図２および図３を用いてグラフ構造について説明する。図２は、グラフ構造とテンソルとの関係の一例を示す図である。図２に示すグラフ２０は、４つのノードがノード間の関係性（例えば「相関係数が所定値以上」）を示すエッジで結ばれている。なお、エッジで結ばれていないノード間は、当該関係性がないことを示す。グラフ２０を２階のテンソル、つまり行列で表す場合、例えば、ノードの左側の番号に基づく行列表現は「行列Ａ」で表され、ノードの右側の番号（囲み線で囲んだ数字）に基づく行列表現は「行列Ｂ」で表される。これらの行列の各成分は、ノード間が結ばれている（接続している）場合「１」で表され、ノード間が結ばれていない（接続していない）場合「０」で表される。以下の説明では、この様な行列を接続行列ともいう。ここで、「行列Ｂ」は、「行列Ａ」の２，３行目および２，３列目を同時に置換することで生成できる。ディープテンソルでは、この様な置換処理を用いることで順序の違いを無視して処理を行う。すなわち、「行列Ａ」および「行列Ｂ」は、ディープテンソルでは順序性が無視され、同じグラフとして扱われる。なお、３階以上のテンソルについても同様の処理となる。
【００１６】
図３は、部分グラフ構造の抽出の一例を示す図である。図３に示すグラフ２１は、６つのノードがエッジで結ばれたものである。グラフ２１は、行列（テンソル）で表すと行列２２に示すように表現できる。行列２２に対して、特定の行および列を入れ替える演算、特定の行および列を抽出する演算、ならびに、接続行列における非ゼロ要素をゼロに置換する演算を組み合わせることで、部分グラフ構造を抽出できる。例えば、行列２２の「ノード１，４，５」に対応する行列を抽出すると、行列２３となる。次に、行列２３の「ノード４，５」間の値をゼロに置換すると、行列２４となる。行列２４に対応する部分グラフ構造は、グラフ２５となる。
【００１７】
このような部分グラフ構造の抽出処理は、テンソル分解と呼ばれる数学的演算によって実現される。テンソル分解とは、入力されたｎ階テンソルをｎ階以下のテンソルの積で近似する演算である。例えば、入力されたｎ階テンソルを１つのｎ階テンソル（コアテンソルと呼ばれる。）、および、より低階のｎ個のテンソル（ｎ＞２の場合、通常は２階のテンソル、つまり行列が用いられる。）の積で近似する。この分解は一意ではなく、入力データが表すグラフ構造中の任意の部分グラフ構造をコアテンソルに含める事ができる。
【００１８】
続いて、ディープテンソルにおける重み付き接続行列の扱いについて説明する。重み付き接続行列は、ノード間の接続がない場合を「０」、接続がある場合はその重み（＞０）が記載された行列である。重み付き接続行列は、例えば、計算機ネットワークにおいて、ノードｉとノードｊとの間における単位時間あたりの通信回数を（ｉ，ｊ）成分とする行列が挙げられる。一方、ディープテンソルでは、接続行列の重みはエッジのラベルとして扱われる。このため、例えば、大小関係や演算方法等の元々の数値の持つ性質は、考慮されないことになる。上述の計算機ネットワークの例では、（ｉ，ｊ）成分が「２」である場合、この成分が「１」である場合よりも多くの通信を行っていることを表す。つまり、（ｉ，ｊ）成分は、値の大小性を表している。これに対し、ディープテンソルにおいては、この様な関係は無視され、（ｉ，ｊ）成分が「２」である行列が示すグラフと、「１」である行列が示すグラフとは、異なるグラフとして扱われる。
【００１９】
図４は、ディープテンソルにおける重み付き接続行列の一例を示す図である。図４に示すように、例えば、学習時に、訓練データから判別に寄与する部分グラフ構造として、重み「１」のグラフ２６および行列２７が抽出されたとする。一方、判別時には、重み「２」のグラフ２８および行列２９が判別対象であるとした場合、グラフ２６および行列２７とエッジラベルが異なるので、マッチしないと判別される。つまり、ディープテンソルでは、重み付き接続行列の全てのバリエーションが訓練データに含まれていないと、学習が不完全になる場合がある。この様な場合、判別ルールとして、重み付き接続行列の重みに相当する情報が汎化された判別ルールを学習できることが望まれる。
【００２０】
ここで、具体例を挙げて部分グラフ構造のバリエーションについて説明する。まず、具体的な判別タスクは、「対象者の知人関係グラフを入力として、対象者の依存症リスクを判定したい。」であるとする。ここで、依存症としては、例えば、ギャンブル依存症やアルコール依存症等が挙げられる。これらの依存症では、「知人が依存症患者であると、その人も依存症になりやすい。」という知見があり、知人関係のグラフに依存症患者がいるかどうかで依存症リスクを判定可能であるとする。このとき、真の判別ルールの例としては、「距離３以内に２人の依存症患者が存在すれば高リスク。」であるとする。なお、ここでの距離は、判定対象者と直接接続する人物を距離「１」、１人を介して接続する人物を距離「２」といったように表すものである。
【００２１】
図５は、条件を満たす部分グラフ構造の一例を示す図である。図５に示すように、上述の真の判別ルールの条件を満たす部分グラフ構造は、１３個のバリエーションがあり、適切な学習を実現するには、訓練データがこの１３個を全てカバーすることが求められる。図５では、◎印が判定対象者を示し、○印が非依存症患者を示し、●印が依存症患者を示す。なお、以下の説明においても、グラフおよび接続行列のラベルに同様の印を用いる場合がある。例えば、「●−○−◎−●」は、距離「１」および「２」に依存症患者が１人ずつ存在することを示す。また、距離「２」の依存症患者は、非依存症患者の知人、つまり、非依存症患者を介して判定対象者と接続していることを示す。
【００２２】
上述の真の判別ルールの条件は、１３個であるので、全てのバリエーションを訓練データとして用意可能である場合もある。ところが、さらに複雑な判別ルールの条件では、バリエーションの数が増大するため、全てのバリエーションの訓練データを集められないことがある。これに対し、本実施例では、ノード間における距離ｎの経路数を、接続行列の数学的性質を用いて表現することで、汎化された部分グラフ構造を抽出し、抽出した部分グラフ構造を学習する。
【００２３】
ここで、図６を用いて接続行列の数学的性質を説明する。図６は、接続行列の数学的性質を説明する図である。図６に示すように、グラフ３０は、ノード「１〜３」が、それぞれ接続されたグラフ構造である。グラフ３０の接続行列３１をＡとすると、Ａ＾ｎの（ｉ，ｊ）成分は、ノードｉ，ｊ間における距離ｎの経路数となる。ただし、この値には、途中の往復経路も含む。つまり、接続行列のｎ乗における（ｉ，ｊ）成分は、ノードｉとノードｊとの間の長さｎのパスの数を表す。なお、隣接ノードは、距離「３，５，７，・・・」のノードでもある。
【００２４】
例えば、Ａ＾２を示す接続行列３２は、距離「２」の経路数を表し、Ａ＾３を示す接続行列３３は、距離「３」の経路数を表す。接続行列３２の算出結果の一例としては、Ａ＾２（１，１）＝２の場合、ノード「１−２−１」、ノード「１−３−１」の２パターンとなる。同様に、例えば、Ａ＾２（１，２）＝１の場合、ノード「１−３−２」の１パターンとなる。
【００２５】
また、接続行列３３の算出結果の一例としては、Ａ＾３（１，１）＝２の場合、ノード「１−２−３−１」、ノード「１−３−２−１」の２パターンとなる。同様に、例えば、Ａ＾３（１，２）＝３の場合、ノード「１−２−１−３」、ノード「１−３−１−３」、ノード「１−３−２−３」の３パターンとなる。ここで、距離ｋで到達する経路がある場合には、その中の１本のエッジで往復することで距離ｋ＋２の経路となる。つまり、Ａ＾ｋ（ｉ，ｊ）≦Ａ＾（ｋ＋２）（ｉ，ｊ）が成立する。
【００２６】
次に、学習装置１００の構成について説明する。図１に示すように、学習装置１００は、通信部１１０と、表示部１１１と、操作部１１２と、記憶部１２０と、制御部１３０とを有する。なお、学習装置１００は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
【００２７】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、図示しないネットワークを介して他の情報処理装置と有線または無線で接続され、他の情報処理装置との間で情報の通信を司る通信インタフェースである。通信部１１０は、例えば、管理者などの端末から学習用の訓練データや判別対象の新規データを受信する。また、通信部１１０は、管理者などの端末に、学習結果や判別結果を送信する。
【００２８】
表示部１１１は、各種情報を表示するための表示デバイスである。表示部１１１は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部１１１は、制御部１３０から入力された表示画面等の各種画面を表示する。
【００２９】
操作部１１２は、学習装置１００のユーザから各種操作を受け付ける入力デバイスである。操作部１１２は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部１１２は、ユーザによって入力された操作を操作情報として制御部１３０に出力する。なお、操作部１１２は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部１１１の表示デバイスと、操作部１１２の入力デバイスとは、一体化されるようにしてもよい。
【００３０】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、訓練データ記憶部１２１と、拡張グラフデータ記憶部１２２と、判別モデル記憶部１２３とを有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。
【００３１】
訓練データ記憶部１２１は、例えば、通信部１１０を介して入力された学習対象の訓練データを記憶する。訓練データ記憶部１２１には、例えば、依存症患者に関する判定ルールの一部を表すグラフに対応する学習対象のグラフデータが訓練データとして記憶される。
【００３２】
拡張グラフデータ記憶部１２２は、訓練データに含まれる各ノード間の最長距離までの距離数に応じて訓練データのグラフに対応する接続行列を冪乗した行列に基づく距離行列を対角成分とする行列を、拡張グラフデータとして記憶する。
【００３３】
判別モデル記憶部１２３は、拡張グラフデータを深層学習した判別モデルを記憶する。判別モデルは、学習モデルとも呼ばれ、例えば、ニューラルネットワークの各種パラメータ（重み係数）や、テンソル分解の方法等を記憶する。
【００３４】
制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、取得部１３１と、生成部１３２と、学習部１３３と、判別部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００３５】
取得部１３１は、例えば、通信部１１０を介して、管理者などの端末から学習用の訓練データを受信して取得する。なお、取得部１３１は、訓練データがグラフである場合には、対応する接続行列に変換する。取得部１３１は、取得した行列（接続行列）、または、変換した接続行列を訓練データとして訓練データ記憶部１２１に記憶する。取得部１３１は、訓練データを訓練データ記憶部１２１に記憶すると、生成部１３２に生成指示を出力する。
【００３６】
ここで、図７を用いて訓練データについて説明する。図７は、訓練データの一例を示す図である。図７のグラフ３４は、「●−◎−●」であるので、２人の依存症患者がどちらも判定対象者から距離「１」であることを示す。グラフ３４は、行列で表現すると、接続行列３５に示すようになる。取得部１３１は、例えば、接続行列３５を訓練データとして訓練データ記憶部１２１に記憶する。
【００３７】
図１の説明に戻って、生成部１３２は、取得部１３１から生成指示が入力されると、訓練データ記憶部１２１を参照し、訓練データに基づいて、拡張グラフデータを生成する。生成部１３２は、まず、各訓練データにおける最長距離を算出する。生成部１３２は、算出した各訓練データにおける最長距離のうち、最大値を最長距離ｍとする。例えば、図５に示す１３パターン（１３個のバリエーション）の部分グラフ構造では、最長距離ｍ＝３となる。なお、最長距離ｍは、判定する分野の知識に基づいて、適当な値を決定してもよい。例えば、ある分野において「距離「１０」以上離れている場合は影響がない。」という知見があれば、最長距離ｍ＝９とすることができる。
【００３８】
次に、生成部１３２は、最長距離ｍに基づいて、ｋ＝１，２，・・・，ｍを用いて、距離ｋ以内の経路数を表すＳ＿ｋを算出する。つまり、生成部１３２は、Ｓ＿ｋ＝Ａ＋Ａ＾２＋・・・＋Ａ＾ｋを算出する。ここで、Ａは、接続行列を示す。続いて、生成部１３２は、Ｓ＿ｋに基づいて、次のルールＲ１，Ｒ２で定義されるｎ×ｎの行列Ｂ＿ｋを算出する。なお、以下の説明では、Ｂ＿ｋを距離行列とも表現する。また、Ｓ＿ｋは、図６に示す接続行列の数学的性質を用いて、ｋ＞１の場合に、Ｓ＿ｋ＝Ａ＾（ｋ−１）＋Ａ＾ｋとしてもよい。
【００３９】
Ｓ＿ｋの成分（ｉ，ｊ）について、ルールＲ１は、ｉ＝ｊのとき、Ｂ＿ｋ（ｉ，ｊ）＝１とする。ルールＲ２は、ｉ≠ｊのとき、Ｓ＿ｋ（ｉ，ｊ）＞０ならばＢ＿ｋ（ｉ，ｊ）＝ｋ＋１、Ｓ＿ｋ（ｉ，ｊ）＝０ならばＢ＿ｋ（ｉ，ｊ）＝０とする。つまり、距離行列Ｂ＿ｋは、Ｓ＿ｋから無駄な往復を除いている。
【００４０】
このように算出された距離行列Ｂ＿ｋは、接続行列Ａにおいて距離ｋ以内の経路が存在するノードの組が、重みｋ＋１で接続されているとした重み付き接続行列となる。すなわち、生成部１３２は、Ａ＋Ａ＾２＋・・・＋Ａ＾ｋの非ゼロ要素をｋ＋１、対角成分を１とする重み付き接続行列Ｂ＿ｋを算出する。
【００４１】
ここで、図８を用いて距離行列Ｂ＿ｋの算出過程を説明する。図８は、算出過程の一例を示す図である。図８では、図７に示す接続行列３５をＡとして、Ｓ＿ｋおよびＢ＿ｋ（ｋ＝３）の算出過程を示す。まず、Ａ＾１は、接続行列３５となり、Ｓ＿１＝Ａから、Ｓ＿１は、接続行列３５と同じである接続行列３５ａとなる。また、Ｂ＿１は、上述のルールＲ１，Ｒ２に基づいて、距離行列３５ｂとなる。
【００４２】
Ａ＾２は、接続行列３６となり、Ｓ＿２＝Ａ＋Ａ＾２から、Ｓ＿２は、接続行列３６ａとなる。また、Ｂ＿２は、上述のルールＲ１，Ｒ２に基づいて、距離行列３６ｂとなる。Ａ＾３は、接続行列３７となり、Ｓ＿３＝Ａ＋Ａ＾２＋Ａ＾３から、Ｓ＿３は、接続行列３７ａとなる。また、Ｂ＿３は、上述のルールＲ１，Ｒ２に基づいて、距離行列３７ｂとなる。
【００４３】
次に、生成部１３２は、生成した距離行列Ｂ＿ｋに基づいて、下記の式（１）に示す行列を生成する。ここで、Ｅはｎ×ｎの単位行列である。図８の例では、生成部１３２は、Ｂ＿１，Ｂ＿２，Ｂ＿３を対角成分とする行列Ｙを生成する。つまり、生成部１３２は、Ｂ＿１〜Ｂ＿ｍをノード間関係情報とともに合成した行列Ｙを生成する。
【００４４】
【数１】
2019128610.tif 000003
【００４５】
生成部１３２は、式（１）で示す行列Ｙを、拡張グラフデータとして拡張グラフデータ記憶部１２２に記憶する。生成部１３２は、拡張グラフデータを拡張グラフデータ記憶部１２２に記憶すると、学習部１３３に学習指示を出力する。
【００４６】
言い換えると、生成部１３２は、学習対象のグラフデータから、グラフデータに含まれる各ノードの値、および、グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する。つまり、生成部１３２は、各ノードと他ノードとの接続を表す接続行列（Ａ）を生成し、生成した接続行列に基づく距離行列（Ｂ＿ｋ）を対角成分とする行列（Ｙ）を拡張グラフデータとして生成する。すなわち、生成部１３２は、グラフデータに含まれる各ノード間の最長距離（ｍ）を算出し、算出した最長距離までの距離数に応じて接続行列（Ａ）を冪乗した行列（Ｓ＿ｋ）に基づく距離行列（Ｂ＿ｋ）をそれぞれ生成する。生成部１３２は、生成したそれぞれの距離行列を対角成分とする行列（Ｙ）を拡張グラフデータとして生成する。
【００４７】
学習部１３３は、生成部１３２から学習指示が入力されると、拡張グラフデータ記憶部１２２を参照し、拡張グラフデータを学習して判別モデルを生成または更新する。つまり、学習部１３３は、拡張グラフデータをテンソル分解し、コアテンソル（部分グラフ構造）を生成する。学習部１３３は、生成したコアテンソルをニューラルネットワークに入力して出力を得る。学習部１３３は、出力値の誤差が小さくなるように学習するとともに、判定精度が高くなるようにテンソル分解のパラメータを学習する。テンソル分解においては自由度があり、テンソル分解のパラメータとして、分解モデル、制約、最適化アルゴリズムの組み合わせ等が挙げられる。分解モデルは、例えば、ＣＰ（Canonical  Polyadic  decomposition）やＴｕｃｋｅｒが挙げられる。制約は、例えば、直交制約、スパース制約、スムース制約、非負制約等が挙げられる。最適化アルゴリズムは、例えば、ＡＬＳ（Alternating  Least  Square）、ＨＯＳＶＤ（Higher  Order  Singular  Value  Decomposition）、ＨＯＯＩ（Higher  Order  Orthogonal  Iteration  of  tensors）等が挙げられる。ディープテンソルにおいては、「判定精度が高くなる」という制約下でテンソル分解を行う事になる。
【００４８】
その後、学習部１３３は、所定回数の学習が実行された場合、または、誤差が所定値より小さくなった場合に学習を終了し、各種パラメータやテンソル分解の方法等を判別モデルとして判別モデル記憶部１２３に記憶する。なお、ニューラルネットワークは、ＲＮＮ（再帰型ニューラルネットワーク：Recurrent  Neural  Network）など様々なニューラルネットワークを用いることができる。また、学習方法は、誤差逆伝播法など様々な手法を採用することができる。
【００４９】
ここで、図９を用いて部分グラフ構造の抽出について説明する。図９は、拡張グラフデータからの部分グラフ構造の抽出の一例を示す図である。図９に示すように、行列３９は、拡張グラフデータ（Ｙ）である行列３８を展開した行列であり、対角成分には、例えば、図８のＢ＿１，Ｂ＿２，Ｂ＿３に対応する距離行列３５ｂ，３６ｂ，３７ｂを有する。学習部１３３は、行列３９に対して、特定の行および列を入れ替える演算、特定の行および列を抽出する演算、ならびに、接続行列における非ゼロ要素をゼロに置換する演算を組み合わせることで、部分グラフ構造の行列４０を抽出する。図９の例では、学習部１３３は、Ｂ＿３に対応する距離行列３７ｂの値の一部をゼロに置換する演算により行列４０を生成する。行列４０に対応する部分グラフ構造は、グラフ４１となる。なお、ディープテンソルにおいては、入力の成分における各値の数値的な意味、例えば、値の大小関係は考慮されず、エッジのラベルとして扱われる。ラベルの意味は、ラベル「１」が同一人物であることを表し、ラベル「ｎ（ｎ＞１）」が距離ｎ未満で接続可能であることを表す。
【００５０】
グラフ４１は、判定対象者と２人の依存症患者のそれぞれとを接続するエッジに距離「４」未満を表すラベルが付されている重み付きグラフである。つまり、グラフ４１は、２人の依存症患者がどちらも判定対象者から距離「４」未満に存在することを表す。すなわち、グラフ４１は、上述の真の判別ルールの例として挙げた「距離３以内に２人の依存症患者が存在すれば高リスク。」を表す部分グラフ構造である。このため、図５の例では、１３個のバリエーションの全ての部分グラフ構造を抽出して学習することが求められたが、学習装置１００では、グラフ４１の１個のバリエーションの部分グラフ構造を抽出して学習すればよいことになる。従って、学習装置１００は、訓練データが少なくても、汎化された判別ルールを学習することができる。
【００５１】
言い換えると、学習部１３３は、生成した拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、ニューラルネットワークの深層学習を行うとともに、テンソル分解の方法を学習する。
【００５２】
図１の説明に戻って、判別部１３４は、判別モデルの学習後に、新規データを取得し、判別モデルを用いて判別した判別結果を出力する。判別部１３４は、例えば、通信部１１０を介して、管理者などの端末から判別対象の新規データを受信して取得する。判別部１３４は、学習時の生成部１３２と同様に、取得した新規データに基づいて、拡張グラフデータを生成する。
【００５３】
判別部１３４は、判別モデル記憶部１２３を参照し、判別モデルを用いて、生成した拡張グラフデータを判別する。すなわち、判別部１３４は、判別モデルの各種パラメータを設定したニューラルネットワークを構築し、テンソル分解の方法を設定する。判別部１３４は、生成した拡張グラフデータをテンソル分解し、ニューラルネットワークに入力して、判別結果を取得する。判別部１３４は、取得した判別結果を表示部１１１に出力して表示したり、記憶部１２０に出力して記憶したりする。
【００５４】
ここで、図１０から図１３を用いて他の判別ルールの場合について説明する。図１０は、学習可能な他の判別ルールの一例を示す図である。図１０の例では、判別ルールとして「距離「３」以内に２人の依存症患者が存在し、うち１人は距離「１」である。」であったとする。この判別ルールに対応する部分グラフ構造を示す行列は、行列４２となる。グラフ４３は、行列４２を重み付きグラフで表現した場合のグラフである。図７に示す訓練データのグラフ３４は、この判別ルールにマッチする。グラフ３４に基づいて生成した行列である図９の行列３９は、行列４２を含む。つまり、行列３９は、グラフ４３で示す部分グラフ構造を含む。従って、学習装置１００は、当該判別ルールを学習することができる。
【００５５】
図１１を用いて、行列３９から行列４２を抽出する手順について説明する。図１１は、拡張グラフデータからの他の判別ルールに対応する部分グラフ構造の抽出の一例を示す図である。図１１に示すように、学習装置１００は、行列３９から、１，２，７，９行および列を抽出して、行列４４を生成する。学習装置１００は、行列４４の２，３行および列を入れ替えて、行列４５を生成する。学習装置１００は、行列４５の対角成分をゼロに置換して、行列４２を生成する。このように、行列４２は、部分グラフ構造の抽出に許される演算を用いて行列３９から得ることができるので、行列３９に示す拡張グラフデータは、行列４２に対応する部分グラフ構造であるグラフ４３を含むといえる。
【００５６】
図１２および図１３を用いて、学習可能な汎化された判別ルールの他の例について説明する。図１２は、学習可能な他の判別ルールの一例を示す図である。図１２の例では、判別ルールとして「距離「４」以内に２人の依存症患者が存在し、うち１人は距離「１」である。」であったとする。この判別ルールにマッチする訓練データは、グラフ４７に示す部分グラフ構造を含むことになる。グラフ４７に対応する行列表現は、行列４８となる。つまり、学習装置１００は、行列４８を含む訓練データを学習することで、上述の判別ルールを学習することができる。
【００５７】
図１３は、学習可能な他の判別ルールの一例を示す図である。図１３の例では、判別ルールとして「距離「４」以内に３人の依存症患者が存在し、その依存症患者中の少なくとも２人は距離「２」以内である。」であったとする。この判別ルールにマッチする訓練データは、グラフ４９に示す部分グラフ構造を含むことになる。グラフ４９に対応する行列表現は、行列５０となる。つまり、学習装置１００は、行列５０を含む訓練データを学習することで、上述の判別ルールを学習することができる。学習装置１００は、図１２および図１３に示すような複雑な判別ルールであっても、判別ルールにマッチする全ての訓練データが同一の部分グラフ構造を含むので、判別ルールを容易に学習することができる。
【００５８】
次に、実施例の学習装置１００の動作について説明する。まず、判別モデルを学習する学習処理について説明する。図１４は、実施例の学習処理の一例を示すフローチャートである。
【００５９】
取得部１３１は、例えば、管理者などの端末から学習用の訓練データを受信して取得する（ステップＳ１）。取得部１３１は、取得した訓練データを訓練データ記憶部１２１に記憶する。取得部１３１は、訓練データを訓練データ記憶部１２１に記憶すると、生成部１３２に生成指示を出力する。
【００６０】
生成部１３２は、取得部１３１から生成指示が入力されると、各訓練データにおける最長距離を算出する。生成部１３２は、算出した各訓練データにおける最長距離のうち、最大値を最長距離ｍに設定する（ステップＳ２）。生成部１３２は、訓練データ記憶部１２１を参照し、訓練データおよび最長距離ｍに基づいて、拡張グラフデータを生成する（ステップＳ３）。生成部１３２は、生成した拡張グラフデータを拡張グラフデータ記憶部１２２に記憶する。生成部１３２は、拡張グラフデータを拡張グラフデータ記憶部１２２に記憶すると、学習部１３３に学習指示を出力する。
【００６１】
学習部１３３は、生成部１３２から学習指示が入力されると、拡張グラフデータ記憶部１２２を参照し、拡張グラフデータを学習する（ステップＳ４）。学習部１３３は、所定回数の学習が実行された場合、または、誤差が所定値より小さくなった場合に学習を終了し、各種パラメータやテンソル分解の方法等を判別モデルとして判別モデル記憶部１２３に記憶する（ステップＳ５）。これにより、学習装置１００は、学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる。また、学習装置１００は、拡張グラフデータが遠距離ノード間の接続が隣接ノードとなる部分グラフ構造を含むため、遠距離ノードを含む部分グラフ構造のバリエーションが大きく抑制されるので、少ない訓練データでも判別ルールが学習できる。
【００６２】
続いて、新規データを判別する判別処理について説明する。図１５は、実施例の判別処理の一例を示すフローチャートである。
【００６３】
判別部１３４は、例えば、管理者などの端末から判別対象の新規データを受信して取得する（ステップＳ１１）。判別部１３４は、取得した新規データおよび最長距離ｍに基づいて、拡張グラフデータを生成する（ステップＳ１２）。判別部１３４は、判別モデル記憶部１２３を参照し、判別モデルを用いて、生成した拡張グラフデータを判別する（ステップＳ１３）。判別部１３４は、判別モデルの判別結果を、例えば、表示部１１１に出力して表示させる（ステップＳ１４）。これにより、学習装置１００は、学習時と異なる連鎖状況のグラフであって、訓練データと共通する部分グラフ構造を有するグラフ構造のデータを判別できる。つまり、学習装置１００は、学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる。
【００６４】
このように、学習装置１００は、学習対象のグラフデータから、グラフデータに含まれる各ノードの値、および、グラフデータに含まれる各ノードと他ノードとの距離に対応する値を有する、拡張グラフデータを生成する。また、学習装置１００は、生成した拡張グラフデータを入力テンソルデータとしてテンソル分解し、深層学習する際に、ニューラルネットワークに入力し、ニューラルネットワークの深層学習を行うとともに、テンソル分解の方法を学習する。その結果、学習装置１００は、学習時と異なる連鎖状況のグラフについての機械学習の判別精度を向上できる。
【００６５】
また、学習装置１００は、各ノードと他ノードとの接続を表す接続行列を生成し、生成した接続行列に基づく距離行列を対角成分とする行列を拡張グラフデータとして生成する。その結果、学習装置１００は、遠距離ノードを含む場合や、距離幾つ以内といった条件を含む場合であっても、少ない訓練データで学習することができる。
【００６６】
また、学習装置１００は、グラフデータに含まれる各ノード間の最長距離を算出し、算出した最長距離までの距離数に応じて接続行列を冪乗した行列に基づく距離行列をそれぞれ生成する。また、学習装置１００は、生成したそれぞれの距離行列を対角成分とする行列を拡張グラフデータとして生成する。その結果、学習装置１００は、遠距離ノードを含む場合や、距離幾つ以内といった条件を含む場合であっても、少ない訓練データで学習することができる。
【００６７】
なお、上記実施例では、ニューラルネットワークとして、ＲＮＮを一例として挙げたが、これに限定されない。例えば、ＣＮＮ（Convolutional  Neural  Network）など様々なニューラルネットワークを用いることができる。また、学習の手法も、誤差逆伝播以外にも公知の様々な手法を採用することができる。また、ニューラルネットワークは、例えば入力層、中間層（隠れ層）、出力層から構成される多段構成であり、各層は複数のノードがエッジで結ばれる構造を有する。各層は、「活性化関数」と呼ばれる関数を持ち、エッジは「重み」を持ち、各ノードの値は、前の層のノードの値、接続エッジの重みの値、層が持つ活性化関数から計算される。なお、計算方法については、公知の様々な手法を採用できる。また、機械学習としては、ニューラルネットワーク以外にも、ＳＶＭ（support  vector  machine）等の各種手法を用いてもよい。
【００６８】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、取得部１３１と生成部１３２とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００６９】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００７０】
ところで、上記の各実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１６は、学習プログラムを実行するコンピュータの一例を示す図である。
【００７１】
図１６に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。
【００７２】
ハードディスク装置２０８には、図１に示した取得部１３１、生成部１３２、学習部１３３および判別部１３４の各処理部と同様の機能を有する学習プログラムが記憶される。また、ハードディスク装置２０８には、訓練データ記憶部１２１、拡張グラフデータ記憶部１２２、判別モデル記憶部１２３、および、学習プログラムを実現するための各種データが記憶される。入力装置２０２は、例えば、コンピュータ２００の管理者から操作情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して表示画面等の各種画面を表示する。インタフェース装置２０５は、例えば印刷装置等が接続される。通信装置２０６は、例えば、図１に示した通信部１１０と同様の機能を有し図示しないネットワークと接続され、他の情報処理装置と各種情報をやりとりする。
【００７３】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図１に示した取得部１３１、生成部１３２、学習部１３３および判別部１３４として機能させることができる。
【００７４】
なお、上記の学習プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤ（Digital  Versatile  Disc）、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの学習プログラムを記憶させておき、コンピュータ２００がこれらから学習プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００７５】
１００  学習装置
１１０  通信部
１１１  表示部
１１２  操作部
１２０  記憶部
１２１  訓練データ記憶部
１２２  拡張グラフデータ記憶部
１２３  判別モデル記憶部
１３０  制御部
１３１  取得部
１３２  生成部
１３３  学習部
１３４  判別部
【図１】
2019128610.tif 000004
【図２】
2019128610.tif 000005
【図３】
2019128610.tif 000006
【図４】
2019128610.tif 000007
【図５】
2019128610.tif 000008
【図６】
2019128610.tif 000009
【図７】
2019128610.tif 000010
【図８】
2019128610.tif 000011
【図９】
2019128610.tif 000012
【図１０】
2019128610.tif 000013
【図１１】
2019128610.tif 000014
【図１２】
2019128610.tif 000015
【図１３】
2019128610.tif 000016
【図１４】
2019128610.tif 000017
【図１５】
2019128610.tif 000018
【図１６】
2019128610.tif 000019