自己紹介
とある大学でAIを主に勉強しているB3です
B2の初めからGCIなどを受講し現在はAIスタートアップの会社さんでインターン兼バイトをしています
以前よりQiitaで自分が学習したものを共有していこうと思っていたのですがなにかと腰が重くGNNまできてやっと重い腰があがり書き始めました
この記事に書いてあることは以下の参考書を参考にしたものです
また私自身は、グラフ理論に関する基礎的な知識はあるものの具体的な研究例などは知らないので誤植が多々みられるかもしれませんがご了承ください
グラフデータについて
昨今の、AI技術の多くはChatGPT,geminiといった自然言語処理データ、画像生成、自動検出、自動認識といった画像データなどの非構造のデータがベースである印象です
またそれらを複合したマルチモーダルなAIも現れており非常に研究は盛んである印象を受けます
グラフは構造/非構造データに対してノードを表す特徴としてもつことができ、エッジはその関係性を表す、強弱、距離とみることができます
例)
※上記の画像はCopilotさんに作らせました
先にも述べたように、フォロワーといった特徴をもつノードを設定した場合、フォロワーの多さはそのノードの大きさともいえるかもしれません
また、ノード(頂点)をSNSのユーザー、エッジ(辺)をフォロー関係、フォロワーといったことを表すものとした場合、個々のデータをその周りのものから表す
その人自身の特徴をいわば、類は友を呼ぶみたいな形式で表すイメージができると思います
もちろん、実際のデータとして計算する際には隣接行列、接続行列、次数などの数値データを扱いますがイメージは上記の例や図だと思います
グラフを用いた機械学習の例
では、こういったグラフ構造をもつデータを応用してどのようなことができるでしょうか
ここでは教科書に載っていた内容/個人的に思った事例の2パターンを紹介します
1.グラフ分類問題
2.グラフ回帰問題
3.接続予測問題
4.グラフ生成問題
1.グラフ分類問題
主に、ノードのクラスを分類する目的の問題です
例をあげるならば、迷惑アカウントの特定かと思います
例)
SNSにおいて迷惑アカウントの種類は多いですが、迷惑なのに変わりありません
例えば、ひたすらbotのようにメッセージを送ってくる、botのフォロワーなどうらみはありませんが好きな人からフォローが返ってきたと思ったらbotかい!というのは悲しいことです
そこで、ノードの特徴もしくはしのノードの周りからそのノードのクラスを特定するといった問題です
特徴の作り方や、ノードの周りに対してどういった計算を行いクラス分類をするのかは現在学んでいる途中なので分かりませんが非常に気になるところです
2.グラフ回帰問題
主に、ノードの連続値を予測する問題です。
例としては毒性の強さなどがあります。
化合物を表すグラフが与えられたときに、その化合物の強さを予想するといった問題です。
ここで、気づいたこととしてはグラフ問題においてグラフを表現するといった点が非常に難しいと考えます。
でもそれ自体を学習するといった目的もあるのでしょうか
これはまた面白い問題だと思います。
おそらくこれはグラフ生成問題に近いものだと思います
他にもグラフ接続問題、グラフ生成問題などがありますが、ここではあくまで数式はおえないのでそれぞれこの記事の後で出てきた際に考えてみようと思いました。
まとめ
総括としては、グラフ問題とは応用として非常に便利ではありますがその分自身の解きたいタスクや、グラフの表現なにをノードとして、なにをエッジにするのかなど問題設計者にゆだねられるところがあるので少し難しいといった印象を現在は持っています
これから、参考書を読み進めていくにあたって少しでも解決できればと思います
もし、記事を読んだ方でアドバイスしていただける方がいらっしゃったらありがたいです!!