グラフとは何ですか
グラフの概念を説明するには、有名な 7 つの橋の問題から始める必要があります。つまり、人はどのようにして 7 つの橋を繰り返したり省略したりせずに渡り、最後に出発点に戻ることができるかという問題です。偉大な数学者オイラーは、7 つの橋の問題に答えたときにグラフ理論を作成しました。
上の図からわかるように、グラフはノード (Vertices/Nodes) とエッジ (Edge) で構成されます。
G=(V,E)
写真の分類:
同種グラフと異種グラフの例:
左側の同型グラフにはノード タイプが 1 つだけありますが、右側の異種グラフには複数のノード タイプがあり、ノード間に複数のエッジ関係があります。
グラフの次数と近傍:
無向グラフの場合、次数はそれに接続されているノードの数であり、近傍はそれに接続されているノードのセットです。有向グラフの場合、方向の制限により、次数は出力次数と入力次数に分割されます。 -度、および近隣は先行近隣と後続近隣に分割されます。
グラフの表現:
隣接行列
隣接リスト
構造特徴、エッジ特徴、ノード特徴:
深層学習は特徴に基づいており、同様にグラフ学習も特徴に基づいており、グラフには構造特徴に加えて、エッジ特徴と点特徴もあります。グラフ学習の本質は、これらの特徴をマイニングすることです。
たとえば、下の図では、グラフのノードはユーザーと記事です。ユーザー ノードには性別、年齢、職業などの特性を含めることができ、記事ノードにはカテゴリ、単語ベクトルなどの特性を含めることができます。エッジにはクリック頻度や読み取り時間などの特徴を持たせることができ、グラフ学習ではこれらの特徴情報を最大限に活用することができます。
図表の応用
写真は複雑なものを説明するための言語です。では、写真の実際の用途は何でしょうか?私たちの現実の生活には複雑なことがたくさんありますが、これらは図で表すことができます。
例えば、さまざまなソーシャルアプリを通じて形成されるさまざまなソーシャルネットワークを通じて、ソーシャルネットワーク内の人々をグラフノードに抽象化し、人々間の関係をノード間のエッジに抽象化できます。
私たちが毎日サーフィンするインターネットもグラフであり、各 Web ページがグラフのノードであり、Web ページ間のハイパーリンク関係がグラフの端を構成します。
現在私たちが利用しているさまざまなショッピングアプリにはレコメンド機能が備わっていますが、実はこのレコメンドの仕組みには裏があるのです。
ノード: ユーザーと製品、
エッジ: ユーザーと製品の間の購入、クリックなどの関係。
化学を学んだことのある人なら誰でも、化学分子が単一または複数の原子で構成されていることを知っているため、それぞれの化学分子も抽象化して絵にすることができます。
ノード: アトム、
エッジ: 原子間の相互作用力。化学結合とも呼ばれます。
グラフ学習とは
グラフとは何か、そして実生活におけるグラフの応用についてはすでに説明しましたが、次にグラフ学習とは何かを見てみましょう。
従来、深層学習で使用される学習データには音声、テキスト、画像などがあり、テキストは一次元の文字配列、音声は一次元の配列であるなど、整然とした規則的なデータ構造を持つ構造化データが一般的でした。オーディオ信号の配列、画像はピクセルの 2 次元配列です。
ただし、現実には依然として不規則なデータが多数存在するため、直接モデル化することは困難です。
上記のような複雑なデータを考慮すると、従来の深層学習モデルでは処理が困難であるため、グラフ学習が登場しました。グラフ学習も深層学習のカテゴリに属しますが、特にこの複雑なグラフ データ構造を対象としています。
一般的なディープ ラーニング:通常のデータの潜在的なパターンを発見するのは得意ですが、不規則なデータを扱うのは困難です。
グラフ学習: 不規則なデータ (グラフ) を簡単に処理し、グラフ構造情報を最大限に活用できます。
グラフ学習の応用
ディープ ラーニングを使用すると、画像の分類、画像内のオブジェクトの識別とセグメント化、音声の翻訳、および製品の効果的な推奨を行うことができます。下の図を考えると、グラフ学習は何に使用できるでしょうか?
結論から先に話しますと、グラフ学習では上記のグラフ構造に対して3種類のタスクを実行できます。
最初のカテゴリはノードレベルのタスクで、グラフ学習モデルは特定のノードの属性やカテゴリを与えることができます。
2 番目のカテゴリはエッジレベルのタスクで、グラフ学習モデルはエッジの重みやエッジが存在するかどうかを予測できます。
3 番目のカテゴリはグラフ レベルのタスクで、グラフ学習モデルを通じて画像全体のカテゴリを予測したり、2 つの画像の類似性を比較したりできます。
以下に実際のアプリケーションの例をいくつか示します。
ノードレベルのタスク - 金融詐欺の検出:
グラフ内のノードはユーザーと販売者です。ユーザーと販売者にはそれぞれ独自の特性があります。特性に加えて、他者との相互作用、つまりエッジ関係もあります。従来の方法では、ユーザーの特性を通じて分類ネットワークをトレーニングしますグラフを通じて学習することで、ノードの特性を学ぶだけでなく、ノード間のインタラクティブな関係やグラフ構造間の関係も学び、金融詐欺師を分類して発見することができます。
ノードレベルのタスク - ターゲット検出:
自動運転の分野では、物標の検出は非常に重要なタスクです。これまでは、視覚モデルに基づく画像セグメンテーションと点群に基づくセグメンテーションが主流でした。従来の深層学習モデルに加えて、グラフ モデルも 3D 点からの物標検出を実行できます。雲。
まず、点群をグラフ構造に構築する必要があります。点群内の点はグラフ ノードに構築できます。では、エッジを構築するにはどうすればよいでしょうか?点間の距離を計算し、距離のしきい値を設定できます。点間の距離がこのしきい値よりも小さい場合、点間にエッジがあるとみなされ、そうでない場合はエッジは存在しません。
グラフが構築された後、グラフをグラフ学習モデルに入力することができ、モデルは各点が属するターゲット オブジェクトと 3D 境界ボックスを予測します。
エッジレベルのタスク推奨システム:
前述したように、推奨システムはグラフとして表現できるため、推奨プロセスは本質的にエッジ予測のプロセスとなります。
グラフィカル モデルの使用に加えて、推奨システムは、線形代数、確率と統計、およびディープ ニューラル ネットワークを通じて実装することもできます。興味のある学生は、私の以前の記事を読むことができます。
線形代数の本質 (続き 7): レコメンデーション システムにおける線形代数の応用
ニュースレコメンドでは、ユーザーの過去のクリックデータがすでに入手可能であると仮定して、ユーザー B のクリック行動を予測する必要があり、これがエッジ予測タスクです。
ユーザー履歴のクリック データを通じてグラフを構築し、そのグラフをグラフ学習モデルに入力し、ユーザー/コンテンツのベクトル空間を取得し、そのベクトル空間を使用して後続のタスクを実行します。
グラフレベルのタスク - 匂い認識:
2 種類の花があり、鼻で匂いを嗅いで種類を識別する必要があるとします。鼻で識別できない場合は、グラフ学習によって識別できます。
これはどのように行われるのでしょうか?花は空気中に分子を放出します。化学知識によると、異なる分子は異なる匂いを表します。分子はグラフ データ構造にモデル化でき、問題はグラフ分類問題に変換できます。
上記はグラフ学習の応用例の一部を列挙しただけであり、実際の応用例はこれ以外にもあります。
グラフ学習はどのように行われるか
これまでのビジュアル タスクでは、最初に畳み込みニューラル ネットワークを通じて特徴が抽出され、次にその特徴が分類のために全結合層に入力されるか、完全畳み込みネットワークによってターゲット i の検出と画像セグメンテーションが実現されます。グラフ ノード、エッジ、グラフ分類タスク全体?
グラフウォーキングアルゴリズム:
まず歩行の最大長を設定し、ランダムに点を選択してエッジに沿ってランダムに歩行することで複数のノード列が生成され、これらのシーケンスに対してグラフ表現学習が行われ、次の演算が実行されます。
グラフニューラルネットワーク:
グラフ ニューラル ネットワークのアルゴリズムは、通常、隣接ノードの情報を自身に送信し、その情報を集約し、集約された情報に基づいて自身の表現を更新するメッセージ パッシングを通じて実装されます。
上記 2 つの方法以外にもグラフ学習アルゴリズムはありますが、それらについては次回以降の記事で詳しく紹介します。
他の深層学習モデルと比較すると、グラフ学習はまだ比較的難しいですが、学習の難しさを簡素化するために、強力なグラフ学習フレームワークである PGL (Paddle Graph Learning) を紹介します。