(57)【要約】【課題】グラフ全体の隠れベクトルを予測する。【解決手段】グラフのデータを入力すると前記グラフの特徴を予測するネットワークを訓練する訓練装置は、グラフを構成する第１ノードの第１隠れベクトル、第１ノード間の接続情報、及び、第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、第１隠れベクトルと第２隠れベクトルとをマージする、マージ部、を各層に備え、マージ結果に基づいて、第１隠れベクトル及び第２ベクトルを更新する、第１ネットワークと、第１ネットワークが出力した第１隠れベクトル及び第２隠れベクトルに基づいて、グラフの特徴を抽出する、第２ネットワークと、第２ネットワークが出力したグラフの特徴の損失を算出する、算出部と、損失に基づいて、少なくとも第１ネットワーク及び第２ネットワークのいずれか一方を更新する、ネットワーク更新部と、を備える。【選択図】図１
2020068000.tif 000002
【特許請求の範囲】
【請求項１】
グラフのデータを入力すると、前記グラフの特徴を予測するネットワークを訓練する訓練装置であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージする、マージ部、
を各層に備え、前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新する、第１ネットワークと、
前記第１ネットワークが出力した前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、第２ネットワークと、
前記第２ネットワークが出力した前記グラフの特徴の損失を算出する、算出部と、
前記損失に基づいて、少なくとも前記第１ネットワーク及び前記第２ネットワークのいずれか一方を更新する、ネットワーク更新部と、
を備える訓練装置。
【請求項２】
前記マージ部は、前記第１隠れベクトルに対する重み及び前記第２隠れベクトルに対する重みを算出し、算出された重みに基づいて前記第１隠れベクトルと前記第２隠れベクトルとをマージして、第１更新隠れベクトル及び第２更新隠れベクトルを生成し、
前記第１ネットワークは、前記第１更新隠れベクトルに基づいて前記第１隠れベクトルを更新し、前記第２更新隠れベクトルに基づいて前記第２隠れベクトルを更新する、
請求項１に記載訓練装置。
【請求項３】
前記ネットワーク更新部は、前記マージ部における前記第１隠れベクトルと、前記第２隠れベクトルとをマージする比率を適応的に更新する、請求項１又は請求項２に記載の訓練装置。
【請求項４】
前記マージ部は、ゲートとして動作する、請求項１乃至請求項３のいずれかに記載の訓練装置。
【請求項５】
前の層で更新された前記第１ノードそれぞれから、接続される前記第１ノードへと伝達するパラメータである第１メッセージと、
前の層で更新された前記第１ノードそれぞれから、前記第２ノードへと伝達する第２メッセージと、
前の層で更新された前記第２ノードから、前記第１ノードへと伝達する第３メッセージと、
前の層で更新された前記第２ノードから、前記第２ノードへと伝達する第４メッセージと、
を生成する、メッセージング部をさらに備え、
前記マージ部は、前記第１メッセージ及び前記第３メッセージに基づいて、及び、前記第２メッセージ及び前記第４メッセージに基づいて、前記第１隠れベクトル及び前記第２隠れベクトルをマージする、
請求項１乃至請求項４のいずれかに記載の訓練装置。
【請求項６】
前記メッセージング部は、互いに接続されている前記第１ノード間を接続するエッジの種類に基づいて、前記第１メッセージを生成する、請求項５に記載の訓練装置。
【請求項７】
前記メッセージング部は、互いに接続されている前記第１ノードについてゲート関数を用いて前記第１メッセージを生成する、請求項５に記載の訓練装置。
【請求項８】
前記メッセージング部は、自ノードを含む互いに接続されている前記第１ノードについてパラメータ行列を乗じて前記第１メッセージを生成する、請求項５に記載の訓練装置。
【請求項９】
前の層で更新された前記第１隠れベクトル、及び、前記マージ結果に基づいて、前記第１隠れベクトルを更新し、
前の層で更新された前記第２隠れベクトル、及び、前記マージ結果に基づいて、前記第２隠れベクトルを更新する、
リカレント部を備える請求項１乃至請求項８のいずれかに記載の訓練装置。
【請求項１０】
前記リカレント部は、ゲートとして動作する、請求項９に記載の訓練装置。
【請求項１１】
前記第１ノードの特徴量から前記第１隠れベクトルを算出し、前記グラフから前記第１ノード間の接続情報を抽出し、前記第２ノードの特徴量から前記第２隠れベクトルを算出する、前処理部、を備える請求項１乃至請求項１０のいずれかに記載の訓練装置。
【請求項１２】
前記前処理部は、前記グラフに関する観測情報を前記第２ノードの特徴量として抽出して前記第２隠れベクトルを初期化する、請求項１１に記載の訓練装置。
【請求項１３】
前記前処理部は、前記グラフを構成する前記第１ノードの数、前記第１ノードの種類数、前記第１ノードを相互に接続するエッジの種類数、前記グラフの直径のうち、少なくとも１つを前記第２ノードの特徴量として抽出する、請求項１２に記載の訓練装置。
【請求項１４】
グラフのデータを入力すると、前記グラフの特徴を予測する予測装置であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージし、前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新する、第１ネットワークと、
前記第１ネットワークが出力した前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、第２ネットワークと、
を備える予測装置。
【請求項１５】
前記第１ノードの特徴量から前記第１隠れベクトルを算出し、前記グラフから前記第１ノード間の接続情報を抽出し、前記第２ノードの特徴量から前記第２隠れベクトルを算出する、前処理部、を備える請求項１４に記載の予測装置。
【請求項１６】
前記前処理部は、前記グラフに関する観測情報を前記第２ノードの特徴量として抽出して前記第２隠れベクトルを初期化する、請求項１５に記載の予測装置。
【請求項１７】
前記前処理部は、前記グラフを構成する前記第１ノードの数、前記第１ノードの種類数、前記第１ノードを相互に接続するエッジの種類数、前記グラフの直径のうち、少なくとも１つを前記第２ノードの特徴量として抽出する、請求項１６記載の予測装置。
【請求項１８】
グラフのデータを入力すると、前記グラフの特徴を予測するネットワークを訓練する訓練方法であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージし、
前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新し、
更新された前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出し、
抽出された前記グラフの特徴の損失を算出し、
前記損失に基づいて、少なくとも前記ネットワークの一部を更新する、
訓練方法。
【請求項１９】
コンピュータに、
グラフのデータを入力すると、前記グラフの特徴を予測するネットワークを訓練する手段であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージする、マージ手段、
前記マージ手段を各層に備え、前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新する、第１ネットワーク、
前記第１ネットワークが出力した前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、第２ネットワーク、
前記第２ネットワークが出力した前記グラフの特徴の損失を算出する、算出手段、
前記損失に基づいて、少なくとも前記第１ネットワーク及び前記第２ネットワークのいずれか一方を更新する、ネットワーク更新手段、
として機能させるプログラム。
【請求項２０】
グラフのデータを入力すると、前記グラフの特徴を予測する予測方法であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージし、
前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新し、
更新された前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、
予測方法。
【請求項２１】
コンピュータに、
グラフのデータを入力すると、前記グラフの特徴を予測する手段であって、
前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージする、マージ手段、
前記マージ手段を各層に備え、前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２隠れベクトルを更新する、第１ネットワーク、
前記第１ネットワークが出力した前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、第２ネットワーク、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、訓練装置、訓練方法、予測装置、予測方法及びプログラムに関する。
【背景技術】
【０００２】
分子、化合物データのモデリング等に広く応用されている機械学習の技術として、グラフデータを入力するとグラフ内の各ノードあるいはエッジの隠れベクトル表現を推定するＧＣＮ（Graph Convolution Networks）と呼ばれるものがある。ＧＣＮを用いると、離散的なグラフデータを連続値の隠れベクトルの集合に変換することが可能であるため、グラフの特性予測や化合物グラフの毒性識別等、多彩なタスクを表現することができ、その応用分野も広い。ＧＣＮモデルは、グラフ内の隣接ノードにおいてメッセージパッシングを開始、近傍ノードの情報を参照して各ノードの隠れベクトルを修正していく。レイヤを重ねるごとに遠くのノードの情報が緩やかに伝播していくことで、最上位のレイヤにおいて得られる各ノードの隠れベクトルは、グラフ全体の情報をある程度考慮したものとして取得することが可能となる。
【０００３】
しかしながら、近接ノードからの緩やかな情報伝播モデルであるため、現実的に利用されるレイヤ数において離れたノード間での情報伝達が十分に達成される可能性は低い。グラフ全体の隠れベクトルの表現を計算するノードを想定していても、グラフ直径やノード数のようなグラフ全体に関する情報量を観測量としてモデルに取り込むことがされず、また、実ノードとこのような仮想ノードとの間のメッセージのバランスを取る手段がないため、最適な隠れベクトル表現には直接的には影響を及ぼしているとは言えない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国出願公開第２０１６／０１９６６７２号明細書
【非特許文献】
【０００５】
【非特許文献１】P. Velickovic, et.al., "Graph Attention Networks," Proceedings of the ICLR, 2018
【非特許文献２】Anonymous, "Related Graph Attention Networks," https://openreview.net/pdf?id=Bklzkh0qFm, [インターネット](2018.12.3確認)
【非特許文献３】Y. Li, et.al., "Gated Graph Sequence Neural Networks," Proceedings of the ICLR, 2016
【非特許文献４】T. N. Kipt, et.al., "Semi-supervised Classification with graph Convolutional Networks," Proceedings of the ICLR, 2017
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、グラフ全体の特徴量を予測するネットワークの訓練装置、訓練方法及びプログラム、並びに、当該訓練装置により取得される予測装置、予測方法を提供する。
【課題を解決するための手段】
【０００７】
一実施形態による訓練装置は、グラフのデータを入力すると、前記グラフの特徴を予測するネットワークを訓練する訓練装置であって、前記グラフを構成する第１ノードの第１隠れベクトル、前記第１ノード間の接続情報、及び、前記第１ノードのそれぞれと接続される第２ノードの第２隠れベクトルに基づいて、前記第１隠れベクトルと前記第２隠れベクトルとをマージする、マージ部、を各層に備え、前記マージ結果に基づいて、前記第１隠れベクトル及び前記第２ベクトルを更新する、第１ネットワークと、前記第１ネットワークが出力した前記第１隠れベクトル及び前記第２隠れベクトルに基づいて、前記グラフの特徴を抽出する、第２ネットワークと、前記第２ネットワークが出力した前記グラフの特徴の損失を算出する、算出部と、前記損失に基づいて、少なくとも前記第１ネットワーク及び前記第２ネットワークのいずれか一方を更新する、ネットワーク更新部と、を備える。
【図面の簡単な説明】
【０００８】
【図１】一実施形態に係る予測装置を示す概略図
【図２】一実施形態に係る訓練装置の機能を示すブロック図。
【図３】一実施形態に係る前処理部の機能を示すブロック図。
【図４】一実施形態に係る訓練モードにおける演算ネットワークの機能を示すブロック図。
【図５】一実施形態に係る第１ネットワークの機能を示すブロック図。
【図６】一実施形態に係る訓練における処理を示すフローチャート。
【図７】一実施形態に係る第１ネットワークのデータフローを示す図。
【図８】一実施形態に係る予測モードにおける演算ネットワークの機能を示すブロック図。
【図９】一実施形態に係る装置のハードウェア実装例を示す図。
【発明を実施するための形態】
【０００９】
図１は、一実施形態に係る予測装置の機能を示す概略図である。予測装置は、グラフのデータを入力すると、入力されたグラフの特徴を予測して出力する。例えば、化合物の化学式（構造式）が入力されると、当該化合物の毒性等の特徴を示す量を出力する。グラフの他の例としては、回路図、間取り図、種々の設計図、又は、文章（言語）の構成等が挙げられるがこれに限られるものではなく、特徴を抽出したいグラフであればどのようなものであってもよい。
【００１０】
入力されたグラフは、グラフを構成するノード（第１ノード）ごとに、それぞれの第１ノードが有する特徴、及び、各第１ノード間の接続情報が抽出される。例えばグラフが化学式である場合、第１ノードの特徴としては、各第１ノードを表す分子又は原子をインデクスで表したもの、第１ノードに接続されるエッジの数等から第１ノード特徴量が抽出される。
【００１１】
接続情報として、例えば、隣接行列が抽出される。隣接行列は、多重結合の結合数ごとに別の行列として抽出されてもよいし、結合数を行列の要素として示すものであってもよい。さらに、結合の種類ごとに別の行列として抽出してもよい。例えば、グラフが化合物を示す場合、π結合、σ結合等の結合の種類ごとに別の行列として抽出してもよい。また、有向グラフである場合には、一方向のみに接続状態を示す隣接行列を生成してもよい。上記には限られず、接続情報として第１ノード間の接続を適切に表現する他のテンソルを抽出してもよい。以下において、隣接行列を用いるものとして説明するが、このテンソルを用いて言い換えられることに理解されたい。
【００１２】
上記の特徴に加え、全ての第１ノードと接続するスーパーノード（第２ノード）を仮想的に生成し、この第２ノードの特徴量が抽出される。第２ノードの特徴量は、例えばグラフが化学式である場合、グラフのノード数、グラフ直径、原子間の結合種類の数といった量が抽出される。
【００１３】
以下、説明のため、第１ノードをローカルノードと、第２ノードをスーパーノードと、さらに、第１ノードと第２ノードの双方を示すものとして単にノードと記載することがある。
【００１４】
抽出されたローカルノードの特徴量は、ローカルノードの隠れベクトル（第１隠れベクトル）へと変換され、スーパーノードの特徴量は、スーパーノードの隠れベクトル（第２隠れベクトル）と変換され、第１ネットワークへと入力される。第１ネットワークは、Ｌ（≧１）層のネットワークを備えて構成される。各層はそれぞれ、メッセージ部と、マージ部と、リカレント部と、を備える。
【００１５】
メッセージ部は、あるノードに接続されるそれぞれのノードの前の層における隠れベクトル及び当該ノードの前の層における隠れベクトルに基づいて、現在の層におけるノードの隠れベクトルを更新するためのメッセージを生成する。ノードの接続関係は、上記の隣接行列を参照する。
【００１６】
メッセージは、ローカルノードからローカルノードへの第１メッセージ、ローカルノードからスーパーノードへの第２メッセージ、スーパーノードからローカルノードへの第３メッセージ、スーパーノードからスーパーノードへの第４メッセージのそれぞれが生成される。メッセージ部は、各層において、それぞれローカルノード数分の第１メッセージと第３メッセージを生成し、それぞれ１つの第２メッセージと第４メッセージを生成する。
【００１７】
マージ部は、メッセージ部が生成した各メッセージに基づいて、各ローカルノードとスーパーノードの隠れベクトルを更新するための更新隠れベクトルを生成する。より具体的には、第１メッセージ及び第３メッセージを用いてローカル更新隠れベクトル（第１更新隠れベクトル）を生成し、第２メッセージ及び第４メッセージを用いてスーパー更新隠れベクトル（第２更新隠れベクトル）を生成する。
【００１８】
第１メッセージと第３メッセージのマージにおける重み付け、及び、第２メッセージと第４メッセージのマージにおける重み付けは、訓練中に適応的に更新される。この重みの更新により、マージ部は、その性質が異なるローカルノードの隠れベクトルと、スーパーノードの隠れベクトルとを適応的に混合するゲートとして動作する。
【００１９】
リカレント部は、マージ部が生成した第１更新隠れベクトルと、前の層においてリカレント部から出力された第１隠れベクトルとを自己回帰的にゲーティングさせて第１隠れベクトルを更新し、同様に、第２更新隠れベクトルと、前の層において出力された第２隠れベクトルとをゲーティングさせて第２隠れベクトルを更新する。
【００２０】
リカレント部が出力した第１隠れベクトル及び第２隠れベクトルは、それぞれ、次の層のメッセージ部へと出力される。そして、メッセージ部、マージ部、リカレント部において処理を行って、さらに次の層へと出力する。
【００２１】
第１ネットワークは、最終層におけるリカレント部において更新された第１隠れベクトル及び第２隠れベクトルを第２ネットワークへと出力する。第２ネットワークは、第１ネットワークが出力した第１隠れベクトル及び第２隠れベクトルに基づいて、グラフが有する特徴を示す特徴ベクトルを出力する。
【００２２】
なお、第１ネットワークは、メッセージ部、マージ部、リカレント部を備えるとしたが、これには限られず、メッセージ部及びリカレント部の少なくとも１つが備えられない構成であってもよい。例えば、メッセージ部を省略し、マージ部がローカルノード、スーパーノード間の何らかの特徴を示すテンソル同士をマージして出力して各ノードの更新隠れベクトルを出力し、リカレント部が隠れベクトルを更新するネットワークを形成してもよい。別の例として、リカレント部を省略し、マージ部がマージした結果を隠れベクトルとして出力するネットワークを形成してもよい。
【００２３】
以下、各構成要素について、具体例を示しながら詳しく説明する。
【００２４】
図２は、本実施形態に係る予測装置、及び、予測装置に備えられるネットワークを訓練する訓練装置の機能を示すブロック図である。
【００２５】
訓練装置１は、予測装置におけるネットワークの訓練を行う。前処理部１０は、演算ネットワーク１１に入力されるデータを生成する前処理を行う。訓練装置１は、この前処理部１０を利用して演算ネットワーク１１の訓練を行う装置であり、訓練制御部１２と、訓練データ記憶部１３と、損失算出部１４と、勾配算出部１５と、を備える。
【００２６】
訓練制御部１２は、訓練データ記憶部１３からグラフデータを取得し、前処理部１０においてグラフデータをネットワークの入力データへと変換する。前処理部１０は、演算ネットワークに変換したデータを入力し、演算ネットワーク１１を順伝播させる。演算ネットワーク１１は、演算されたグラフの特徴ベクトルを損失算出部１４へと出力し、正解データと比較を行い、損失を算出する。勾配算出部１５は、損失算出部１４が算出した損失に基づいて勾配を算出し、演算ネットワーク１１を更新する。損失算出部１４と勾配算出部１５は、合わせてネットワーク更新部として機能してもよい。
【００２７】
予測装置２は、前処理部１０と、訓練装置１により訓練された演算ネットワーク１１と、予測制御部２２と、予測データ記憶部２３と、予測部２４と、を備え、グラフデータが入力されると、当該グラフが有する特徴を出力する。
【００２８】
予測制御部２２は、予測データ記憶部２３に記憶されているグラフデータを、前処理部１０を介して演算ネットワーク１１へ入力する。予測部２４は、演算ネットワーク１１が出力した特徴ベクトルから、入力されたグラフの特徴を予測して出力する。
【００２９】
予測装置２は、１つのタスクを処理する演算ネットワーク１１を備えていてもよいし、複数のタスクを処理する演算ネットワーク１１をそれぞれ備えていてもよい。複数のタスクに対するそれぞれの演算ネットワーク１１が備えられている場合、予測制御部２２は、ユーザが入力したタスクに応じて、演算ネットワーク１１を切り替えてもよい。この場合、ユーザがタスクを指定してもよいし、入力されたグラフを自動的に予測制御部２２が判断して、適した演算ネットワーク１１を用いるようにしてもよい。
【００３０】
また、訓練装置１と予測装置２は、別個に存在している必要は無く、同一の装置内に備えられていてもよい。装置は、訓練装置１を用いる訓練モードと、予測装置２を用いる予測モードと、を切り替えることにより、訓練及び予測を行う。このような場合、予測装置２が予測した結果をユーザが確認した後に、訓練装置１の訓練データとして訓練データ記憶部１３に記憶し、さらにネットワークを更新できるようにしてもよい。
【００３１】
訓練装置１と予測装置２の各構成の動作について説明する。
【００３２】
訓練制御部１２は、ユーザから指定された訓練データ、学習方法、又は各種設定を受信し、所望の学習を実行する。訓練に必要となる訓練データは、訓練データ記憶部１３に記憶される。格納されている訓練データは、必要なタイミングにおいて訓練制御部１２、あるいは、損失算出部１４により参照される。訓練制御部１２は、前処理部１０を介してグラフに関するデータを演算ネットワーク１１へと入力した後、演算ネットワーク１１の出力に基づき、損失算出部１４及び勾配算出部１５を制御し、演算ネットワーク１１を構成する各種パラメータを更新し、適宜演算ネットワーク１１に更新されたパラメータを記憶させる。また、学習が完了した場合には、学習が完了した旨をユーザに通知してもよい。
【００３３】
訓練データ記憶部１３は、ユーザが指定するタスクに基づいた訓練データを格納する。訓練データとは、例えば、グラフそのもののデータと、当該グラフが有する特徴に関するデータである。タスクとは、例えば、グラフで示される物質の毒性を識別する識別器、グラフがあるターゲットに対してどの程度親和性があるかを回帰する回帰装置、といった機能のことを示す。訓練データ記憶部１３は、訓練制御部１２の要求に応じて、１又は複数の学習データを取り出して、前処理部１０、演算ネットワーク１１、損失算出部１４、勾配算出部１５等に送信する。
【００３４】
前処理部１０は、各記憶部に格納された値を受信し、それらを演算ネットワーク１１の設計に合わせた表現へと変換する。図３は、前処理部１０の機能を示すブロック図である。前処理部１０は、ローカルノード特徴量取得部１００と、隣接行列取得部１０１と、スーパーノード特徴量取得部１０２と、を備える。
【００３５】
ローカルノード特徴量取得部１００は、入力されたグラフのデータからローカルノード及びグラフ全体としての特徴量を抽出する。例えば、化合物の構造式がグラフとして入力されると、上述したように、各第１ノードの特徴量として、分子又は原子をインデクスで表したもの、第１ノードに接続されるエッジの数等からローカルノード特徴量が抽出される。
【００３６】
隣接行列取得部１０１は、一例として、グラフにおけるローカルノードの接続情報として、グラフの隣接行列を取得する。例えば、上述したように、各ノード間に存在するエッジの情報を抽出し、当該エッジの情報から、隣接行列を取得する。隣接行列は、１つであるとは限られず、上述したように、各エッジの種類、ノード間の接続状況に基づいて、複数生成されてもよい。
【００３７】
スーパーノード特徴量取得部１０２は、グラフ全体の特徴量を表すスーパーノード特徴量を抽出する。例えば、化合物グラフの場合、上述したように、グラフのノード数、グラフ直径、原子間の結合種類の数等の量を利用できる。
【００３８】
前処理部１０は、各構成要素が取得した特徴量を演算ネットワーク１１へと出力する。各特徴量が入力された演算ネットワーク１１は、訓練制御部１２により学習が行われ、ネットワークを形成する各パラメータが決定される。
【００３９】
図４は、訓練制御部１２により制御される、すなわち、学習時における演算ネットワーク１１の機能を示すブロック図である。演算ネットワーク１１は、定数記憶部１１０と、モデルパラメータ記憶部１１１と、隠れベクトル初期化部１１２と、第１ネットワーク１１３と、第２ネットワーク１１４と、を備える。
【００４０】
定数記憶部１１０は、ネットワーク全体の構成及び定数を記憶する。例えば、ローカルノード及びスーパーノードの隠れベクトル（第１隠れベクトル及び第２隠れベクトル）の字数、第１ネットワーク、第２ネットワークのレイヤ数、その他ハイパーパラメータといった、学習の最適化の対象とならない定数の情報を記憶する。定数記憶部１１０は、モデルの種類等に対応して、これらの定数を複数種類記憶してもよい。
【００４１】
モデルパラメータ記憶部１１１は、隠れベクトル初期化部１１２、第１ネットワーク１１３、第２ネットワーク１１４における内部の各関数、ニューラルネットワークのパラメータ等の学習最適化の対象となる情報を記憶する。学習において、順伝播のフェーズにおいては、モデルパラメータ記憶部１１１に記憶されているパラメータに基づいて各構成のパラメータを設定して隠れベクトルの計算を行う。逆伝播のフェーズにおいては、各構成において更新されたパラメータをモデルパラメータ記憶部１１１が記憶する。
【００４２】
隠れベクトル初期化部１１２は、前処理部１０で取得された各特徴量を第１ネットワーク１１３及び第２ネットワーク１１４における計算に適したベクトルへと変換し、変換された各ベクトルを仮想的に第０層の隠れベクトルとして出力する。以下、ローカルノードの数をｎ、第１ネットワーク１１３のレイヤ数をＬとする。
【００４３】
例えば、ローカルノードｉのローカルノード特徴量として原子のインデクスを用いる場合には、当該インデクスを利用したワンホットベクトル及びこれらに対する任意の関数による変換結果をローカルノードｉの隠れベクトルｈ（０，ｉ）として定義できる。ここで、ｈ（ｌ，ｉ）は、第ｌレイヤにおけるｉ番目のローカルノードの隠れベクトル（第１隠れベクトル）を表す。全てのノードｉについて、隠れベクトル初期化部１１２は、ｈ（０，ｉ）を初期化する。同様に、隣接行列も任意に変換されて利用される。なお、隣接行列は、変換せずにネットワークに入力されてもよい。
【００４４】
スーパーノード特徴量も同様に変換される。スーパーノードの第ｌレイヤにおける隠れベクトル（第２隠れベクトル）は、ｇ（ｌ）と表され、隠れベクトル初期化部１１２により、スーパーノード特徴量から任意の変換により生成される。このようにスーパーノードの隠れベクトルの初期値として、乱数を代入するのではなく、グラフ全体の特徴量を利用することにより、学習の効率化を図ることが可能となる。例えば、ローカルノードの数とエッジの数とを並べた２次元の特徴量をスーパーノード特徴量として用いることができ、この２次元ベクトルを線形、又は、非線形変換方式により変換したベクトルをｇ（０）として用いてもよい。
【００４５】
隠れベクトル初期化部１１２により初期化された特徴量は、第１ネットワーク１１３へと入力され、各層において隠れベクトルが更新される。図５は、第１ネットワーク１１３の機能を示すブロック図である。
【００４６】
第１ネットワーク１１３は、第１更新レイヤ１１３Ａ、・・・、第Ｌ更新レイヤ１１３ＬのＬ層からなるネットワークを備える。各更新レイヤは、メッセージ部１１５と、マージ部１１６と、リカレント部１１７と、を備える。メッセージ部１１５には、前のレイヤの出力が入力される。第１更新レイヤ１１３Ａにおいては、隠れベクトル初期化部１１２により初期化された第１隠れベクトル及び第２隠れベクトルが入力される。
【００４７】
メッセージ部１１５は、入力された隠れベクトルに基づいて、接続されている互いのノード同士に対するメッセージを生成し、マージ部１１６へと出力する。ノード間の接続は、例えば、隠れベクトル初期化部１１２が出力した隣接行列又はこれに類する量に基づいて参照される。
【００４８】
マージ部１１６は、メッセージ部１１５から入力されたメッセージに基づいて、各隠れベクトルを更新するためのベクトルを、各レイヤにおいて入力された隠れベクトルに基づいた重みを算出し、按分してマージすることにより生成する。すなわち、マージ部１１６は、第１隠れベクトルと、第２隠れベクトルと、に基づいて、第１隠れベクトルに対する重みと第２隠れベクトルに対する重みとを算出し、算出された重みにしたがってマージして、第１隠れベクトル及び第２隠れベクトルを更新するための第１更新隠れベクトル及び第２更新隠れベクトルを生成する。生成された更新隠れベクトルは、リカレント部１１７へと出力される。
【００４９】
リカレント部１１７は、各層における第１隠れベクトルと、第２隠れベクトル、そして、マージ部１１６が出力した第１更新隠れベクトルと、第２更新隠れベクトルとに基づいて、次の更新レイヤの入力となる隠れベクトルを出力する。次のレイヤにおいては、リカレント部１１７が出力した隠れベクトルがメッセージ部１１５へと入力され、同様の隠れベクトルの更新が第Ｌレイヤまで繰り返される。最終層（第Ｌレイヤ）においては、リカレント部１１７は、第２ネットワーク１１４へと隠れベクトルを出力する。
【００５０】
このように、第１ネットワーク１１３は、入力された第１隠れベクトル及び第２隠れベクトルからそれぞれの隠れベクトルを更新するための更新隠れベクトルを按分することにより算出し、当該更新隠れベクトルに基づいて、それぞれの隠れベクトルを更新する。
【００５１】
図４に戻り、第２ネットワーク１１４は、第１ネットワーク１１３により更新された第１隠れベクトル及び第２隠れベクトルと、隣接行列とに基づいて、グラフ全体の表現ベクトルを生成する。第２ネットワーク１１４は、生成されたｎ個の第１隠れベクトルｈ（Ｌ，０：ｎ）に基づいてマージされたベクトルｈ（ｍｅｒｇｅｄ）を算出し、ｈ（ｍｅｒｇｅｄ）と、ｇ（Ｌ）を任意の関数により変換し、最終的な読み出しベクトルｒを出力する。
【００５２】
損失算出部１４は、第２ネットワーク１１４により求められたｒと、訓練データとして与えられている出力とを博して、ロス（損失）を算出する。ロス関数は、ユーザのタスクの目的に合わせて任意の関数とすることもできる。例えば、識別問題であれば、クロスエントロピー、回帰問題であれば２乗誤差を用いることができる。さらには、ロス関数としては既存の多くのＤＮＮ学習フレームワークに備え付けの関数等を流用してもよい。
【００５３】
勾配算出部１５は、損失算出部１４が出力した結果に基づいて、モデルパラメータ記憶部１１１に記憶されている変数の更新に必要な勾配を算出する。算出された勾配を用いて、モデルパラメータ記憶部１１１内の各パラメータの値を更新する。勾配は、ロス関数を各パラメータで微分した値を用いることが一般的である。勾配の計算方法、及び、計算された勾配をスケールさせる学習率等の実装は、既存のＤＮＮ学習フレームワークの関数、設定等を流用してもよい。
【００５４】
このように、訓練制御部１２は、各々の構成、主に、前処理部１０、モデルパラメータ記憶部１１１、損失算出部１４、勾配算出部１５を制御することにより、第１ネットワーク１１３及び第２ネットワーク１１４を訓練する。
【００５５】
図６は、上述した訓練の流れを示すフローチャートである。
【００５６】
まず、グラフのデータを入力する（Ｓ１００）。グラフデータの入力は、例えば、１つ１つのグラフを入力するものではなく、上述したように、訓練データ記憶部１３にグラフデータを蓄積し、訓練制御部１２により随時入力する。
【００５７】
次に、前処理部１０は、データの前処理を行う（Ｓ１０２）。上述したように、入力されたグラフデータから各特徴量を抽出し、データの前処理を行う。
【００５８】
次に、隠れベクトル初期化部１１２は、前処理部１０が前処理したデータを用いて第１隠れベクトル及び第２隠れベクトルを初期化する（Ｓ１０４）。隣接行列に対して変換を行う場合も、隠れベクトル初期化部１１２が処理を行ってもよい。
【００５９】
次に、第１ネットワーク１１３及び第２ネットワーク１１４へと初期化された隠れベクトルを入力し、ネットワークを順伝播させる（Ｓ１０６）。この処理は、訓練制御部１２により行ってもよいし、別途隠れベクトル計算部及びレイヤ更新計算部を備え、これらの計算部により行ってもよい。
【００６０】
次に、損失算出部１４は、第２ネットワーク１１４から出力された結果と、訓練データ記憶部１３に格納されている結果のデータとを比較して損失を算出する（Ｓ１０８）。
【００６１】
次に、訓練制御部１２は、算出された損失に基づいて、学習を終了するか否かを判断する（Ｓ１１０）。学習を終了する場合（Ｓ１１０：ＹＥＳ）、処理を終了する。学習の終了は、損失算出部１４により算出された損失値に基づいてもよいが、これには限られない。他の判断手法で判断する場合、Ｓ１１０は、Ｓ１０８の前に処理されてもよい。他の判断手法とは、例えば、所定のエポック数分の処理が終了、又は、交差検証値が所定のしきい値より低くなった等、一般的に用いられている手法である。
【００６２】
学習を終了しない場合（Ｓ１１０：ＮＯ）、学習を続行する。勾配算出部１５は、損失算出部１４が算出した損失の各パラメータに対する微分値を求めて各パラメータに対する勾配を算出する（Ｓ１１０）。勾配の算出は、単純な微分を用いるだけではなく、種々に考案されている一般的な手法を用いてもよい。
【００６３】
次に、訓練制御部１２は、算出された勾配を逆伝播させ、ネットワークのパラメータを更新する（Ｓ１１４）。更新されたパラメータは、モデルパラメータ記憶部１１１に記憶される。そして、この更新されたパラメータを用いて順伝播からの作業を繰り返し、学習の終了条件を満たすまで訓練が行われる。このように、訓練制御部１２は、ネットワークを更新するネットワーク更新部として機能してもよいし、訓練装置１は、ネットワーク更新部を別途備えていてもよい。これらの学習は、ミニバッチ等により効率化されていてもよい。以下においては、ネットワーク更新部は、第１ネットワーク１１３及び第２ネットワーク１１４の双方を更新するものとして説明するが、これには限られず、いずれか一方だけを更新できるものであってもよい。すなわち、第２ネットワーク１１４のパラメータを更新せずに、第１ネットワーク１１３のネットワークのパラメータを更新するものであってもよいし、第１ネットワーク１１３のパラメータを更新せずに、第２ネットワーク１１４のパラメータを更新するものであってもよい。
【００６４】
次に、第１ネットワーク１１３の内部における処理について詳しく説明する。図７は、第ｌレイヤにおけるデータの流れを示す図である。以下の説明における数式等は、一例として示しているものであり、この他の数式が本実施形態のフレームワーク内で用いられることがないということを意味しているわけではない。
【００６５】
メッセージ部１１５は、まず、第ｌ−１レイヤの出力した第１隠れベクトルと、第２隠れベクトルとを取得する。第１レイヤである場合には、隠れベクトル初期化部１１２が初期化した各隠れベクトルを取得する。
【００６６】
メッセージ部１１５は、接続されているノード間において、各隠れベクトルがどの程度更新に影響を与えるかを示すパラメータであるメッセージを生成する。すなわち、ローカルノードからローカルノードへのｎ個の第１メッセージ、ローカルノードからスーパーノードへの第２メッセージ、スーパーノードからローカルノードへのｎ個の第３メッセージ、スーパーノードからスーパーノードへの第４メッセージの４種類のメッセージをメッセージ部１１５が生成する。
【００６７】
第１メッセージは、各ローカルノードに対して、接続されるローカルノードからの影響度を数値化するものである。なお、ここで、接続されるノードとは、自ノードをも含む概念である。まず、ｋ＝１，・・・，Ｋとし、Ｋ種類のヘッドを準備する。このヘッドごとにローカルノードのメッセージを生成する。ヘッドとは、それぞれ異なる種類の情報を取得するものである。このヘッドを複数用いることにより、１つの隠れベクトルに対して複数種類の影響度を算出することが可能となり、特徴量の抽出の性能を向上させる。各ヘッドｋにおいて、例えば、異なるパラメータ、異なる関数を用いて計算が行われる。
【００６８】
まず、ｈ（ｌ−１，ｉ）と、他のローカルノードとの関連の強さを表す重み（アテンションウェイト）を計算する。第ｌレイヤ、ローカルノードｉ、ヘッドｋにおけるローカルノードｊからローカルノードｉにむけてのアテンションウェイトは、ｈ（ｌ−１，ｉ）とｈ（ｌ−１，ｊ）とを入力とする線形又は非線形の任意の関数により計算される。この計算においては、ローカルノードｉとローカルノードｊ間の接続を隣接行列から抽出し、当該接続（エッジ）の種類により異なる演算を行う。第１メッセージを生成するタイミングにおいて、各ノード間の接続状況を抽出して計算するのではなく、エッジが存在しない場合には、このアテンションウェイトを０とすることにより計算してもよい。
【００６９】
第ｌレイヤ、ヘッドｋにおけるローカルノードｊからローカルノードｉへのアテンションウェイトは、０以上の実数値であり、例えば、以下の式により計算される。ただし、softmax()は、ソフトマックス関数であり、ベクトル又は行列の右上のＴは転置を表す。
【数１】
2020068000.tif 000003
ここで、Ａは、学習により更新されるパラメータである。
【００７０】
全てのｊについてαを求めた後、正規化してノードｉに対するアテンションウェイトの和が１となるように正規化する。求められたアテンションウェイトを用いて、以下に示すように、ノードｉに接続される全てのノードｊの隠れベクトルｈ（ｌ−１，ｊ）の重み付き和を計算する。この計算は、任意の関数を利用する。
【数２】
2020068000.tif 000004
ここで、ＵとＶは、学習により更新されるパラメータである。またＮｉは、ノードｉに接続されるノードを示す。接続されていないノード間のアテンションウェイトαを０とする場合には、Ｎｉは必ずしも設定しなくともよく、全てのノード間について計算を行ってもよい。メモリの使用量と、計算機のコストに鑑みて、自由に設計することが可能である。
【００７１】
全てのｋについて［数２］に示すｈ〜ｉ，ｊ，ｋを計算した後、これらを統合したベクトルを計算して第１メッセージを生成する。統合方法は、単純にＫ個の重み付き和を結合してもよいし、さらには任意の関数で変換してもよい。メッセージ部１１５は、例えば、以下の式に基づいて統合したベクトルｈ〜ｌ，ｉを計算し、第１メッセージとして出力する。
【数３】
2020068000.tif 000005
ここで、tanh()は、ハイパボリックタンジェントを、concatkは、ｋごとに求められたベクトルの結合を意味する。また、Ｗは、学習により更新されるパラメータである。第１メッセージは、ノードｉごとに、計ｎ個のメッセージが生成される。
【００７２】
第２メッセージは、各ローカルノードからスーパーノードへと渡されるパラメータである。例えば、第ｌ−１レイヤにおける全てのローカルノードの隠れベクトルに基づいて、スーパーノードに対する第２メッセージが生成される。第２メッセージも同様に、Ｋ種類のヘッドにおいて、ヘッドごとに異なるパラメータ、関数を用いて求められる。
【００７３】
まず、ｇ（ｌ−１）とそれぞれのｈ（ｌ−１，ｉ）との間の関連の強さを示すアテンションウェイトβを計算する。上記のαと同様に、βは、線形又は非線形の任意の関数により求められる実数値である。αと同様に、βもｉに対する和が１となるように正規化される。メッセージ部１１５は、例えば、以下の式に基づいてアテンションウェイトβを計算する。
【数４】
2020068000.tif 000006
ここで、Ｂは、学習により更新されるパラメータである。
【００７４】
全てのｉについてβを求めた後、全てのｉに対して隠れベクトルｈ（ｌ−１，ｉ）の重み付き和を計算する。
【数５】
2020068000.tif 000007
ここで、Ｖ（Ｓ）は、学習により更新されるパラメータである。
【００７５】
全てのｋについて［数５］に示すｈ〜ｌ，ｓｕｐｅｒ，ｋを計算した後、これらを統合したベクトルを計算して第２メッセージを生成する。統合方法は、上述と同様である。メッセージ部１１５は、例えば、以下の式に基づいて統合したベクトルｈ〜ｌ，ｓｕｐｅｒを計算し、第２メッセージとして出力する。
【数６】
2020068000.tif 000008
ここで、Ｗ（Ｓ）は、学習により更新されるパラメータである。
【００７６】
第３メッセージは、スーパーノードから各ローカルノードへと渡されるパラメータである。例えば、第ｌ−１レイヤにおけるスーパーノードの隠れベクトルに基づいて、各ローカルノードに対する第３メッセージが生成される。メッセージ部１１５は、ローカルノードｉに対して、ｇ（ｌ−１）を線形又は非線形の任意の関数で変換して第３メッセージを生成する。
【００７７】
メッセージ部１１５は、例えば、以下の式に基づいてｎ個のｇ〜ｌ，ｉを計算し、第３メッセージとして出力する。
【数７】
2020068000.tif 000009
ここで、Ｆは、学習により更新されるパラメータである。
【００７８】
第４メッセージは、スーパーノードからスーパーノードへと渡されるパラメータである。例えば、第ｌ−１レイヤにおけるスーパーノードの隠れベクトルに基づいて第４メッセージが生成される。メッセージ部１１５は、ｇ（ｌ−１）を線形又は非線形の任意の関数で変換して第４メッセージを生成する。
【００７９】
メッセージ部１１５は、例えば、以下の式に基づいてｇ〜ｌ，ｓｕｐｅｒを計算し、第４メッセメッセージ出力する。
【数８】
2020068000.tif 000010
ここで、Ｆ（Ｓ）は、学習により更新されるパラメータである。
【００８０】
このように、メッセージ部１１５は、第１隠れベクトルと第２隠れベクトルとから、それぞれ接続されているノード同士でどの程度影響を与えるかのパラメータを算出する。
【００８１】
メッセージ部１１５が生成した第１から第４の各メッセージは、マージ部１１６へと入力される。マージ部１１６は、各メッセージを統合して、第１隠れベクトル及び第２隠れベクトルの更新案となるベクトルである、第１更新隠れベクトル及び第２更新隠れベクトルを生成して出力する。
【００８２】
マージ部１１６は、第１メッセージ及び第３メッセージから書くローカルノードｉの隠れベクトルの更新案となるベクトルを出力する。すなわち、各ローカルノードに対応するｎ個の第１隠れベクトルの更新案となるｎ個の第１更新隠れベクトルを出力する。各ローカルノードｉに対して、同様の処理が行われる。
【００８３】
まず、第１メッセージと、第３メッセージとの按分の重みであるゲートウェイトを計算する。マージ部１１６は、第ｌレイヤにおけるローカルノードｉのゲートウェイトを、第１メッセージと第３メッセージを線形又は非線形の任意の関数で変換して生成する。ゲートウェイトは、各要素が０以上１以下の実数値を取るベクトルとして表される。マージ部１１６は、例えば、以下のようにゲートウェイトを計算する。
【数９】
2020068000.tif 000011
ここで、σは、例えば、シグモイド関数である。Ｇは、学習により更新されるパラメータである。
【００８４】
このゲートウェイトは、第１メッセージ及び第３メッセージから生成されるものであり、自動的かつ適応的にメッセージ同士をマージすることを可能とする。計算されたゲートウェイトを按分比として、マージ部１１６は、ローカルノードｉに対する第１更新隠れベクトルを生成する。なお、この按分は、各要素の単純な線形重み付き和でもよいし、さらに複雑な任意の関数を利用して求めるものであってもよい。マージ部１１６は、例えば、以下のようにマージして第１更新隠れベクトルを生成する。
【数１０】
2020068000.tif 000012
【００８５】
同様に、第２メッセージと、第４メッセージとの按分の重みであるゲートウェイトを計算し、第２更新隠れベクトルを生成する。
【数１１】
2020068000.tif 000013
【数１２】
2020068000.tif 000014
【００８６】
このように、マージ部１１６は、互いに性質の異なる種類のデータを按分して統合するゲートとして機能する。マージ部１１６により生成された第１更新隠れベクトルｈ＾ｌ，ｉと、第２更新隠れベクトルｇ＾ｌは、リカレント部１１７へと入力される。
【００８７】
リカレント部１１７は、第ｌレイヤにおける全ての第１隠れベクトル、第２隠れベクトル、全ての第１更新隠れベクトル、及び、第２更新隠れベクトルを用いて、第ｌレイヤの出力である第１隠れベクトルと第２隠れベクトルとを生成して出力する。
【００８８】
第１隠れベクトルは、各ローカルノードｉにおいて計算され、その全てが第ｌレイヤの第１隠れベクトルとして出力される。この計算には、一般的なＬＳＴＭ（Long-Short Term Memory）、ＧＲＵ（Grated Recurrent Unit）等のゲーティング機能を有するリカレントネットワークが利用される。例えば、リカレント部１１７は、以下のように第ｌ−１レイヤの第１隠れベクトル及び生成された第１更新隠れベクトルを用いて、ＧＲＵにより第ｌレイヤの第１隠れベクトルを生成する。
【数１３】
2020068000.tif 000015
【００８９】
同様に、リカレント部１１７は、第２隠れベクトルと第２更新隠れベクトルとを用いて第２隠れベクトルを更新する。例えば、リカレント部１１７は、以下のように第ｌ−１レイヤの第２隠れベクトル及び生成された第２更新隠れベクトルを用いて、ＧＲＵにより第ｌレイヤの第２隠れベクトルを生成する。
【数１４】
2020068000.tif 000016
【００９０】
リカレント部１１７の出力した第ｌレイヤの第１隠れベクトル及び第２隠れベクトルは、第ｌ＋１レイヤの入力となり、第Ｌレイヤまで隠れベクトルの更新が繰り返される。第Ｌレイヤにおいて出力された隠れベクトルは、第１ネットワーク１１３の出力となる。
【００９１】
第１ネットワーク１１３が出力した第１隠れベクトル及び第２隠れベクトルは、第２ネットワークへと入力される。第２ネットワーク１１４は、計算、更新された第１隠れベクトル、第２隠れベクトル、及び、隣接行列を用いて、グラフ全体の表現ベクトルを計算する。
【００９２】
まず、グラフデータごとにベクトルの数、すなわち、ローカルノードの数ｎが異なるので、これらのｎ個のベクトルを１つの固定長ベクトルに縮約する。第１ネットワーク１１３から出力されたｎ個の第１隠れベクトルは、任意の縮約関数、例えば、単純平均、ＤＮＮ（Deep Neural Network）、Ｓｅｔｏｕｔ関数等の関数に入力され、固定長の単一ベクトルｈ（ｍｅｒｇｅｄ）に変換される。
【００９３】
次に、第２ネットワーク１１４は、ｈ（ｍｅｒｇｅｄ）とｇ（Ｌ）とを任意の関数に入力し、読み出しベクトルｒを出力する。例えば、以下のようにＤＮＮにより計算される。
【数１５】
2020068000.tif 000017
【００９４】
損失算出部１４は、算出されたｒを用いて損失を計算する。損失の計算は、上述したように、一般的に用いられているロス関数を用いてもよいし、適切に損失の計算ができるものであれば、新規な線形又は非線形の任意の関数を用いてもよい。
【００９５】
勾配算出部１５は、損失算出部１４が算出した損失に基づいて、各パラメータに対する勾配を求める。訓練制御部１２は、この勾配を第１ネットワーク及び第２ネットワークについて逆伝播させることにより、各ネットワークを構成するパラメータを更新する。
【００９６】
メッセージ部１１５、マージ部１１６、リカレント部１１７における内部のパラメータは、レイヤごとに異なるものである。すなわち、各レイヤにおいてそれぞれが適切な按分比率でマージを行い、第１隠れベクトルと第２隠れベクトルとが更新される。訓練においても同様であり、勾配算出部１５は、それぞれのレイヤにおけるパラメータに対する勾配を算出する。このそれぞれのレイヤにおいて算出された各パラメータの勾配に基づいて、訓練制御部１２は、逆伝播させてパラメータの更新を行う。
【００９７】
なお、シグモイド関数等は、適切に０と１との間で値を取り、微分できるものであれば、どのような関数であってもよい。また、微分できない関数であっても、勾配算出部１５により適切に勾配が求められるような関数であってもよい。
【００９８】
図８は、予測モードにおける演算ネットワークの機能を示すブロック図である。予測モード、又は、予測装置２は、前述された訓練装置１により最適化されたパラメータを用いた演算ネットワーク１１を備える。予測モードにおいては、ユーザが指定したグラフの種類に基づいて、定数記憶部１１０及びモデルパラメータ記憶部１１１から予測制御部２２が適切なパラメータを選択し、第１ネットワーク１１３及び第２ネットワーク１１４を形成する。これには限られず、入力されたグラフデータを自動的にどのような種類のデータであるかを判別し、予測装置２の予測制御部２２が自動的にモデルパラメータ等を取得してネットワークを形成するようにしてもよい。
【００９９】
予測制御部２２は、予測データ記憶部２３に格納されているデータ、又は、ユーザが入力した予測対象となるデータを前処理部１０が処理したデータを演算ネットワーク１１へと入力する。入力されたデータは、隠れベクトル初期化部１１２において第１隠れベクトル及び第２隠れベクトルへと変換され、第１ネットワーク１１３及び第２ネットワーク１１４へと入力される。
【０１００】
第１ネットワークは、各ローカルノードにおける第１隠れベクトル及び第２隠れベクトルを算出し、第２ネットワークへと出力する。各隠れベクトルが入力された第２ネットワーク１１４は、読み出しベクトルｒを生成し、予測部２４へと出力する。
【０１０１】
予測部２４は、入力された読み出しベクトルｒを適切に処理して、ユーザに理解できる形として出力、又は、適切なデータベース等に出力する。
【０１０２】
以上のように、本実施形態によれば、グラフデータが入力されるとグラフ全体の特徴を出力するネットワークを学習する訓練装置１及び当該訓練装置１により生成されたネットワークを有する予測装置２を実現することが可能である。このグラフの処理は、グラフのノードの全てと接続されるスーパーノードを設定し、かつ、このスーパーノードの隠れベクトルを定義し、グラフのノードと、スーパーノードとのそれぞれの隠れベクトルを適応的にマージすることにより、ノード又はエッジの持つ個々の特徴と、グラフ全体が有する特徴とを適切に統合することが可能である。
【０１０３】
また、スーパーノードはその初期値として観測値が入力されるため、グラフ全体としての特徴をネットワークに対して反映させることができる。このように、個々のノードと、グラフ全体の特徴という異なる性質の隠れベクトルを適応的に統合することにより、グラフ全体の特徴を高精度に出力することが可能となる。また、アテンションウェイトの導入により、柔軟なネットワークの生成を可能としている。
【０１０４】
なお、前述した実施形態に限られず、種々の変形例が考えられることを理解されたい。例えば、メッセージ部１１５は、アテンションウェイトの計算を簡略化することが可能である。第１メッセージのアテンションウェイトの演算においては、各ローカルノード間のエッジの種類によらず同じ関数又は同じパラメータを用いて計算してもよい。アテンションウェイトを計算する関数を、入力がない関数として、全てのローカルノードにおいて事前に固定したルールにより重みを与えてもよい。
【０１０５】
メッセージ部１１５はまた、ヘッドを考慮しなくてもよい。すなわち、Ｋ＝１として、ヘッドが１つしかないものとしてローカルノードからのメッセージを生成してもよい。
【０１０６】
メッセージ部１１５は、一部又は全ての関数又はパラメータをレイヤごとに共有してもよい。すなわち、レイヤによらず、共有した関数、パラメータは、同じ形、同じ値を有するものであってもよい。
【０１０７】
マージ部１１６は、ゲートウェイトを逐次的に計算する代わりに、入力によらない固定のパラメータを有する行列により、線形結合や単純な算術平均によるメッセージの統合を行ってもよい。また、マージ部１１６についてもメッセージ部１１５と同様に、レイヤによらず共有した関数又はパラメータを有するものであってもよい。
【０１０８】
リカレント部１１７として、ゲーティング機能を持たないリカレントユニットを利用してもよい。例えば、第１隠れベクトルと第１更新隠れベクトル、第２隠れベクトルと第２更新隠れベクトルとを、それぞれ線形結合の関数等を用いて結合してもよい。
【０１０９】
前述した実施形態における訓練装置１及び予測装置２において、各機能は、アナログ回路、デジタル回路又はアナログ・デジタル混合回路で構成された回路であってもよい。また、各機能の制御を行う制御回路を備えていてもよい。各回路の実装は、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）等によるものであってもよい。
【０１１０】
上記の全ての記載において、訓練装置１及び予測装置２の少なくとも一部はハードウェアで構成されていてもよいし、ソフトウェアで構成され、ソフトウェアの情報処理によりＣＰＵ（Central Processing Unit）等が実施をしてもよい。ソフトウェアで構成される場合には、訓練装置１、予測装置２及びその少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記憶媒体に収納し、コンピュータに読み込ませて実行させるものであってもよい。記憶媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記憶媒体であってもよい。すなわち、ソフトウェアによる情報処理がハードウェア資源を用いて具体的に実装されるものであってもよい。さらに、ソフトウェアによる処理は、ＦＰＧＡ等の回路に実装され、ハードウェアが実行するものであってもよい。ジョブの実行は、例えば、ＧＰＵ（Graphics Processing Unit）等のアクセラレータを使用して行ってもよい。
【０１１１】
例えば、コンピュータが読み取り可能な記憶媒体に記憶された専用のソフトウェアをコンピュータが読み出すことにより、コンピュータを上記の実施形態の装置とすることができる。記憶媒体の種類は特に限定されるものではない。また、通信ネットワークを介してダウンロードされた専用のソフトウェアをコンピュータがインストールすることにより、コンピュータを上記の実施形態の装置とすることができる。こうして、ソフトウェアによる情報処理が、ハードウェア資源を用いて、具体的に実装される。
【０１１２】
図８は、本発明の一実施形態におけるハードウェア構成の一例を示すブロック図である。訓練装置１及び予測装置２は、プロセッサ７１と、主記憶装置７２と、補助記憶装置７３と、ネットワークインタフェース７４と、デバイスインタフェース７５と、を備え、これらがバス７６を介して接続されたコンピュータ装置７として実現できる。
【０１１３】
なお、図８のコンピュータ装置７は、各構成要素を一つ備えているが、同じ構成要素を複数備えていてもよい。また、１台のコンピュータ装置７が示されているが、ソフトウェアが複数のコンピュータ装置にインストールされて、当該複数のコンピュータ装置それぞれがソフトウェアの異なる一部の処理を実行してもよい。
【０１１４】
プロセッサ７１は、コンピュータの制御装置および演算装置を含む電子回路（処理回路、Processing circuit、Processing circuitry）である。プロセッサ７１は、コンピュータ装置７の内部構成の各装置などから入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を各装置などに出力する。具体的には、プロセッサ７１は、コンピュータ装置７のＯＳ（Operating System）や、アプリケーションなどを実行することにより、コンピュータ装置７を構成する各構成要素を制御する。プロセッサ７１は、上記の処理を行うことができれば特に限られるものではない。訓練装置１、予測装置２及びそれらの各構成要素は、プロセッサ７１により実現される。ここで、処理回路とは、１チップ上に配置された１又は複数の電気回路を指してもよいし、２つ以上のチップあるいはデバイス上に配置された１又は複数の電気回路を指してもよい。
【０１１５】
主記憶装置７２は、プロセッサ７１が実行する命令および各種データなどを記憶する記憶装置であり、主記憶装置７２に記憶された情報がプロセッサ７１により直接読み出される。補助記憶装置７３は、主記憶装置７２以外の記憶装置である。なお、これらの記憶装置は、電子情報を格納可能な任意の電子部品を意味するものとし、メモリでもストレージでもよい。また、メモリには、揮発性メモリと、不揮発性メモリがあるが、いずれでもよい。訓練装置１及び予測装置２内において各種データを保存するためのメモリは、主記憶装置７２または補助記憶装置７３により実現されてもよい。例えば、前述した各記憶部の少なくとも一部は、この主記憶装置７２又は補助記憶装置７３に実装されていてもよい。別の例として、アクセラレータが備えられている場合には、前述した各記憶部の少なくとも一部は、当該アクセラレータに備えられているメモリ内に実装されていてもよい。
【０１１６】
ネットワークインタフェース７４は、無線または有線により、通信ネットワーク８に接続するためのインタフェースである。ネットワークインタフェース７４は、既存の通信規格に適合したものを用いればよい。ネットワークインタフェース７４により、通信ネットワーク８を介して通信接続された外部装置９Ａと情報のやり取りが行われてもよい。
【０１１７】
外部装置９Ａは、例えば、カメラ、モーションキャプチャ、出力先デバイス、外部のセンサ、入力元デバイスなどが含まれる。また、外部装置９Ａは、訓練装置１及び予測装置２の構成要素の一部の機能を有する装置でもよい。そして、コンピュータ装置７は、訓練装置１及び予測装置２の処理結果の一部を、クラウドサービスのように通信ネットワーク８を介して受け取ってもよい。
【０１１８】
デバイスインタフェース７５は、外部装置９Ｂと直接接続するＵＳＢ（Universal Serial Bus）などのインタフェースである。外部装置９Ｂは、外部記憶媒体でもよいし、ストレージ装置でもよい。各記憶部は、外部装置９Ｂにより実現されてもよい。
【０１１９】
外部装置９Ｂは出力装置でもよい。出力装置は、例えば、画像を表示するための表示装置でもよいし、音声などを出力する装置などでもよい。例えば、ＬＣＤ（Liquid Crystal Display）、ＣＲＴ（Cathode Ray Tube）、ＰＤＰ（Plasma Display Panel）、スピーカなどがあるが、これらに限られるものではない。
【０１２０】
なお、外部装置９Ｂは入力装置でもよい。入力装置は、キーボード、マウス、タッチパネルなどのデバイスを備え、これらのデバイスにより入力された情報をコンピュータ装置７に与える。入力装置からの信号はプロセッサ７１に出力される。
【０１２１】
上記の全ての記載に基づいて、本発明の追加、効果又は種々の変形を当業者であれば想到できるかもしれないが、本発明の態様は、上記した個々の実施形態に限定されるものではない。特許請求の範囲に規定された内容及びその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲において種々の追加、変更及び部分的削除が可能である。例えば、前述した全ての実施形態において、説明に用いた数値は、一例として示したものであり、これらに限られるものではない。
【０１２２】
前述した実施形態において、各実施形態における計算は、ローカルノード数に相当した隠れベクトル列を入力とし、それぞれのベクトルに対応したメッセージベクトルに相当する量を出力する、ＧＣＮあるいは任意の計算モデルに利用できるものである。例えば、前述した説明において用いているＧＡＴ(Graph Attention Networks)、ＲＧＡＴ（Relational Graph Attention Networks）のようにアテンション技術を用いるものにはそのまま適用することが可能である。この他にも、ＧＧＮＮ（Gated Graph Sequence Neural Network）のようにゲート関数を用いるもの、ＲＳＧＣＮ（Renormalized Spectral Graph Convolutional Network）のようにそのいずれも利用しないものにも適用することができる。
【０１２３】
アテンションを利用しない場合、例えば、ＧＧＮＮを利用する場合におけるゲート関数を用いた例について説明する。まず、前層の第ｌ−１レイヤの出力と隣接行列の情報を参照して、第ｌレイヤにおけるローカルノードｉの一時変数ベクトルａｌ、ｉを計算する。
【数１６】
2020068000.tif 000018
【０１２４】
ここで、行列Ａｉは、ローカルノード数をｎ、ローカルノードの隠れベクトルをＤとすると２Ｄ×ｎＤ次元となる。第ｉ番目のローカルノードに対して、隣接行列の情報を参照して第ｊ番目のローカルノードとの間にエッジが存在しない場合、Ａｉの第Ｄ×（ｊ−１）＋１列からＤ×ｊ列の値は、ゼロとする。上式右辺のＨｌ−１は、Ｎ個のローカルノード隠れベクトルを連結したｎＤ次元のベクトルであり、ａｌ，ｉは、２Ｄ次元のベクトルである。また、ｂは、バイアスを表す２Ｄ次元のベクトルである。
【０１２５】
出力において、更新量に相当するベクトルを計算する。この計算におけるゲートｒと更新ベクトルｈ＾ｌ，ｉは、以下のように計算する。
【数１７】
2020068000.tif 000019
【数１８】
2020068000.tif 000020
最終的な出力にもゲートを用いる。ここで、odotはベクトルの要素ごとの積を表す。
【数１９】
2020068000.tif 000021
【０１２６】
メッセージ部１１５は、例えば、以下の式に基づいてゲートで結合したベクトルｈ〜ｌ，ｉを計算し、第１メッセージとして出力する。
【数２０】
2020068000.tif 000022
この第１メッセージを用いて、上記の処理を行うことにより、アテンションを用いずにゲート関数を用いた場合に対応することが可能となる。
【０１２７】
メッセージ部１１５は、ゲート関数を用いる場合には、一時変数ベクトルの計算は、線形計算だけではなく、非線形関数を重畳してもよい。また、ゲート関数は、例えば、シグモイド関数であるが、これには限られず別の非線形関数としてもよい。
【０１２８】
別の例として、アテンションもゲート関数も用いない例について説明する。この例では、第ｌレイヤのローカルノードの隠れベクトルを並べた行列をＸｌと記載する。Ｘｌの次元は、ｎ×Ｄとなる。
【数２１】
2020068000.tif 000023
Ａは、隣接行列に対角項の単位行列を加算したものを表す。Θは、Ｘｌと同じサイズのパラメータ行列である。Ｄは、対角行列であり、以下のように示される。
【数２２】
2020068000.tif 000024
【０１２９】
この場合、出力するベクトルｈ〜ｌ，ｉは、Ｘｌの第ｉ行目のベクトルを利用する。このようなメッセージを用いることにより、ＲＳＧＣＮのようにアテンションもゲート関数も用いない場合に対応することが可能となる。
【０１３０】
メッセージ部１１５は、このようにアテンションもゲート関数も用いない場合には、さらに、非線形変換を重畳してもよい。
【０１３１】
以上のように、第１メッセージの計算には、既存のＧＣＮ、あるいは、より一般のＤＮＮを対象とするネットワークにしたがい適切に入れ替えて利用することができる。どのような計算モデルを用いた場合においても、スーパーノード及びマージ部１１６、リカレント部１１７の処理により、グラフデータの解析性能の向上を図ることが可能である。
【符号の説明】
【０１３２】
１：訓練装置、１０：前処理部、１００：ローカルノード特徴量取得部、１０１：隣接行列取得部、１０２：スーパーノード特徴量取得部、１１：演算ネットワーク、１１０：定数記憶部、１１１：モデルパラメータ記憶部、１１２：隠れベクトル初期化部、１１３：第１ネットワーク、１１４：第２ネットワーク、１１５：メッセージ部、１１６：マージ部、１１７：リカレント部、１２：訓練制御部、１３：訓練データ記憶部、１４：損失算出部、１５：勾配算出部、２：予測装置、２２：予測制御部、２３：予測データ記憶部、２４：予測部
【図１】
2020068000.tif 000025
【図２】
2020068000.tif 000026
【図３】
2020068000.tif 000027
【図４】
2020068000.tif 000028
【図５】
2020068000.tif 000029
【図６】
2020068000.tif 000030
【図７】
2020068000.tif 000031
【図８】
2020068000.tif 000032
【図９】
2020068000.tif 000033