グラフニューラルネットワークのわかりやすい紹介(1/3)

入門/解説

1.グラフニューラルネットワークのわかりやすい紹介(1/3)まとめ

・グラフニューラルネットワークでは、入力データは「各ノードの元の状態」
・ハイパーパラメータとして定義された特定の更新を実行した後、隠れ状態から出力を解析
・GNNの更新は2ステップで「隣接ノードの状態を集約」と「ノードの状態を更新」を繰り返す

2.グラフニューラルネットワークとは?

以下、www.kdnuggets.comより「A Friendly Introduction to Graph Neural Networks」の意訳です。元記事の投稿は2020年11月、Kevin Vuさんによる投稿です。

AI、機械学習、データサイエンス、ディープラーニングの2020年の進展と2021年の予測リサーチ編(2/3)」でも注目技術とされていたグラフニューラルネットワーク(GNNs:Graph Neural Networks)ですが、学習開始前にGNNの概念を大まかに把握するための入門用の良い記事と思ったので意訳しました。本文中にも書いてありますが「細部を知ろうとして泥沼にハマるのは簡単」なので、わからない単語はスルーして全体をざっと読み通す事を推奨です。

グラフデータを機械学習で扱いやすくするための革新」も目を通しておくと良いかもしれません。

アイキャッチ画像のクレジットはPhoto by NASA on Unsplash

グラフニューラルネットワークの説明
グラフニューラルネットワーク(GNNs:Graph Neural Networks)は、グラフとして構造化されたデータを自然に操作するニューラルネットワークのカテゴリに属します。ややこしい話になりがちですが、グラフニューラルネットワークはほんの一握りの単純な概念に洗練することができます。

リカレントニューラルネットワークから出発
よく知られている出発点として、リカレントニューラルネットワーク(RNNs:Recurrent Neural Networks)を選択します。覚えているかもしれませんが、リカレントニューラルネットワークは、時系列データや文章など、順番に配置されたデータを扱う際に良く使われます。

リカレントニューラルネットワークの特徴は、RNNsの状態が現在の入力だけでなく、ネットワークの以前の隠れ状態にも依存することです。

RNNsには何年にもわたって多くの改善が行われており、現在はLSTMスタイルのRNNsが一般的です。

これは、モデルの現在の状態と以前の隠れ状態の間に乗法ゲーティング関数(multiplicative gating function)を備えたRNNであり、LSTMを使った様々なRNNについては「5 Types of LSTM Recurrent Neural Networks and What to Do With Them」で解説しています。


RNNの展開図

リカレントニューラルネットワークは、自然言語処理用の大規模なtransformerモデルにいくらか取って代わられていますが、それでも、順次の意思決定と記憶を必要とするさまざまな分野(例えば、強化学習が思い浮かびます)で広く利用されています。

ここで、RNNを有向線形グラフと見なしてみましょう。ただし、「入力」と「重み付き接続」を削除します。これらはノード(頂点)の状態とエッジ(辺)になります。事実上、「出力」も削除します。

グラフニューラルネットワークでは、入力データは「各ノードの元の状態」であり、ハイパーパラメーターとして定義された特定の数の更新を実行した後、出力は「隠れ状態から解析」されます。

リカレントニューラルネットワーク(RNN)をグラフニューラルネットワーク(GNN)として再考

まず、各ノードは隣接ノードの状態を集約します。これは、エッジ間で重みを共有してニューラルネットワークを順方向に動かすか、隣接する全ノードの状態ベクトルを単純に平均化することで実現できます。

ノード自体の以前の隠れ状態もこの近隣集約(neighborhood aggregation)に含まれますが、多くの場合、特別な扱いを受けます。

ノードの自己状態は、それ自体の隠れ層を介して、または「全ての隣接ノードの状態の平均から集約された状態ベクトル」に自身の状態を追加することによって解析できます。

一般化されたGNNには時間の概念はありません。各ノードは、有向グラフまたは複数の種類の接続を持つグラフではありますが、「前」か「後ろ」かに関係なく、隣接ノードからデータを取得します。異なるエッジには、独自の集約ポリシーが存在する場合があります。

近隣集約は、ニューラルメッセージパッシング(neural message passing)とも呼ばれます。GNNには多様性があるので、細部を知ろうとして泥沼にハマるのは簡単です。

一般に、GNNの更新は2つの簡単なステップに分けることができます。

(1)隣接ノードの状態を集約または解析。これは「メッセージパッシング」とも呼ばれます。

(2)ノードの状態を更新

RNNをグラフニューラルネットワークの特殊なケースとして定式化できたので、少し振り返って、全ての人が関連用語に精通していることを確認しましょう。

グラフとは、ノード(nodes、頂点)のネットワークを表現および分析するための数学的な抽象化です。各ノードは、エッジ(edges、辺)と呼ばれる関係性(relationships)によって接続されています。

グラフには、操作と分析のために、グラフ理論(graph theory)と呼ばれる独自の豊富な数学の分野があります。4つのノードを持つ単純なグラフを以下に示します。


単純な4つのノードを持つグラフ

上記のグラフのノードは、リスト[0,1,2,3]として簡単に表現できます。
その一方、エッジは隣接行列として表現できます。各エッジは1で表現され、ノード間に接続がない場合は0のままです。

Node a b c d
a 0 1 0 0
b 1 0 1 1
c 0 1 0 1
d 0 1 1 0

3.グラフニューラルネットワークのわかりやすい紹介(1/3)関連リンク

1)www.kdnuggets.com
A Friendly Introduction to Graph Neural Networks

2)blog.exxactcorp.com
5 Types of LSTM Recurrent Neural Networks and What to Do With Them

タイトルとURLをコピーしました