$30 off During Our Annual Pro Sale. View Details »

グラフアルゴリズム実践活用術

 グラフアルゴリズム実践活用術

情報オリンピック夏季セミナー 2023: https://jcioi-summer-seminar-2023.peatix.com/ での講演スライドです。

講義概要: アルゴリズムを勉強していると,グラフアルゴリズムにたくさん出会います.しかし,グラフアルゴリズムが現実世界でどのように活躍しているのかについては目に触れる機会はあまりありません.本講演では,実社会で登場するグラフデータについての問題と,どのようなグラフアルゴリズムがそれらの問題を解決しているかについてご紹介します.

ノイズ除去のソースコード: https://colab.research.google.com/drive/1Mdr3KGrwuX9jAWHk5pVGH2HaUmLmR-jB?usp=sharing
背景除去のソースコード: https://colab.research.google.com/drive/1vm6BHg1rsujEOLAANfT29vMwGkTIOoeV?usp=sharing

連絡先: @joisino_ (Twitter) / https://joisino.net/

joisino

August 20, 2023
Tweet

More Decks by joisino

Other Decks in Programming

Transcript

  1. 1 KYOTO UNIVERSITY
    KYOTO UNIVERSITY
    グラフアルゴリズム実践活用術
    佐藤竜馬

    View Slide

  2. 2 / 100 KYOTO UNIVERSITY
    京大で機械学習を研究しています
    佐藤 竜馬(さとう りょうま)
    京都大学で機械学習の研究をしています。
    Twitter: @joisino_
    専門はグラフニューラルネットワーク
    最適輸送・推薦システム
    高校 2 年生のときに競技プログラミングをはじめる
    JOI 2014 金メダル
    IOI 2014 日本代表 銅メダル
    JOI 2014 夏季セミナー参加
    AtCoder: 2818
    Follow Me

    View Slide

  3. 3 / 100 KYOTO UNIVERSITY
    本日の目標:アルゴリズムが実際に役立つことを知る
     アルゴリズムを学んで何が出来る?

    View Slide

  4. 4 / 100 KYOTO UNIVERSITY
    本日の目標:アルゴリズムが実際に役立つことを知る
     アルゴリズムを学んで何が出来る?
     競プロの問題が解ける!楽しい!
    ↑ わかる。めっちゃいいこと。これはこれで素晴らしい。

    View Slide

  5. 5 / 100 KYOTO UNIVERSITY
    本日の目標:アルゴリズムが実際に役立つことを知る
     アルゴリズムを学んで何が出来る?
     競プロの問題が解ける!楽しい!
    ↑ わかる。めっちゃいいこと。これはこれで素晴らしい。
     他には? #月間競技プログラミングは役に立たない ?

    View Slide

  6. 6 / 100 KYOTO UNIVERSITY
    本日の目標:アルゴリズムが実際に役立つことを知る
     アルゴリズムを学んで何が出来る?
     競プロの問題が解ける!楽しい!
    ↑ わかる。めっちゃいいこと。これはこれで素晴らしい。
     他には? #月間競技プログラミングは役に立たない ?
     アルゴリズムは実際に役立ちます!!!
    生活に役立つ、お金になる、... etc.
     競プロっぽい設定でかつ今日から使える(本当に今日から使える)
    アルゴリズムと問題を学んでモチベーションを付けることを目指します。

    View Slide

  7. 7 / 100 KYOTO UNIVERSITY
    グラフとは

    View Slide

  8. 8 / 100 KYOTO UNIVERSITY
    グラフは物事の関係を表す
     グラフは関係を表す抽象的なデータ構造
     頂点と呼ばれる要素と、2 つのノード間を結ぶ辺が存在する
    頂点

    View Slide

  9. 9 / 100 KYOTO UNIVERSITY
    ソーシャルネットワークは人と人の関係を表す
     グラフは解釈次第でさまざまな物事を表すことができる
     頂点 = 人間、辺 = 友達関係のソーシャルネットワーク

    View Slide

  10. 10 / 100 KYOTO UNIVERSITY
    交通ネットワークは地理関係を表す
     頂点 = 都市(or 街区)、辺 = 道路の交通ネットワーク

    View Slide

  11. 11 / 100 KYOTO UNIVERSITY
    化合物もグラフで表現できる
     頂点 = 原子、辺 = 結合の化合物グラフ
    H
    C
    O
    H
    N
    O
    N

    View Slide

  12. 12 / 100 KYOTO UNIVERSITY
    現実世界に登場するグラフ1: 路線図
     頂点 = 駅、辺 = 路線の路線図
    https://subway.osakametro.co.jp/guide/routemap.php

    View Slide

  13. 13 / 100 KYOTO UNIVERSITY
    現実世界に登場するグラフ2: 家系図
     頂点 = 人、辺 = 親子関係の家系図

    View Slide

  14. 14 / 100 KYOTO UNIVERSITY
    現実世界に登場するグラフ3: 構文木
     頂点 = 単語や節、辺 = 包含関係の構文木
    https://twitter.com/nakamurakihiro/status/1230798247989366784

    View Slide

  15. 15 / 100 KYOTO UNIVERSITY
    現実世界に登場するグラフ4: 画像
     頂点 = ピクセル、辺 = 隣接関係の画像

    View Slide

  16. 16 / 100 KYOTO UNIVERSITY
    グラフは様々な物事を統一的に表現できる
     グラフのスゴいところ:
    一つのデータ構造で人間関係から分子まで統一的に扱える
    → グラフの処理技術さえ身につければあらゆる状況に対応できる
     まとまりのないごちゃごちゃしたデータでもグラフを使えば
    統一的に扱える!
    グラフはあらゆるデータに対応できるオールラウンダー選手
    グラフアルゴリズムをマスターすればどんな状況にも対応できる
    Take Home Message

    View Slide

  17. 17 / 100 KYOTO UNIVERSITY
    最短経路問題

    View Slide

  18. 18 / 100 KYOTO UNIVERSITY
    最短経路問題:頂点間の最適な移り方を求める
     最短経路問題
    入力:グラフ、頂点 s、頂点 t
    出力:s から t への最短経路
     ここで、経路の長さは含まれる辺の本数とする。
    s
    t

    View Slide

  19. 19 / 100 KYOTO UNIVERSITY
    最短経路問題:頂点間の最適な移り方を求める
     最短経路問題
    入力:グラフ、頂点 s、頂点 t
    出力:s から t への最短経路
     ここで、経路の長さは含まれる辺の本数とする。
    s
    t

    View Slide

  20. 20 / 100 KYOTO UNIVERSITY
    辺に長さがある変種もある
     重み付き最短経路問題
    入力:グラフ、各辺の長さ、頂点 s、頂点 t
    出力:s から t への最短経路
     ここで、経路の長さは含まれる辺の長さの合計とする。
    s
    t
    8
    8
    6
    12
    8
    8
    2 2
    3 2
    12
    14
    3

    View Slide

  21. 21 / 100 KYOTO UNIVERSITY
    応用例 1: マップアプリ

    View Slide

  22. 22 / 100 KYOTO UNIVERSITY
    解き方:幅優先探索
     最短経路問題の解き方
    s
    t

    View Slide

  23. 23 / 100 KYOTO UNIVERSITY
    解き方:幅優先探索
     最短経路問題の解き方
     頂点 s に 0 を書き込む
    s
    t
    0

    View Slide

  24. 24 / 100 KYOTO UNIVERSITY
    解き方:幅優先探索
     最短経路問題の解き方
     0 と辺で繋がっている頂点に 1 と書き込む
    辺に向きを付けておく
    s
    t
    0
    1
    1

    View Slide

  25. 25 / 100 KYOTO UNIVERSITY
    解き方:幅優先探索
     最短経路問題の解き方
     1 と辺で繋がっている頂点に 2 と書き込む
    既に値が書き込まれている頂点はスキップ
    辺に向きを付けておく
    s
    t
    0
    1
    1
    2
    2
    2
    2
    既に 0 と書かれているの
    でここには 2 と書かない

    View Slide

  26. 26 / 100 KYOTO UNIVERSITY
    解き方:幅優先探索
     最短経路問題の解き方
     t に値が書き込まれたので終了
    矢印を s までたどると最短経路が得られる
    s
    t
    0
    1
    1
    2
    2
    2
    2
    値 2 は経路の長さを表す

    View Slide

  27. 27 / 100 KYOTO UNIVERSITY
    応用例 2: 地下鉄の移動コスト
    0
    1
    2
    3
    4
    1
    1
    1
    2
    2
    2
    2
    2
    2
    4
    4
    4
    3
    3 3
    4
    3
    3 3 3
    3
    ゴール
    スタート
    4 ホップで到達可能 → 1 ホップ 2 分とすると 8 分で到達可能(簡単のため乗り換え時間は無視)

    View Slide

  28. 28 / 100 KYOTO UNIVERSITY
    応用例 3: コネを得る
     推薦入試のために、憧れの T 教授にアポを取りたい
    できるだけ少ない紹介者を間に入れて連絡したい
    T 教授
    あなた
    友達の A ちゃん

    View Slide

  29. 29 / 100 KYOTO UNIVERSITY
    応用例 3: コネを得る
     入力:交友関係を表すグラフ
    出力:コネを得る方法
    T 教授
    あなた

    View Slide

  30. 30 / 100 KYOTO UNIVERSITY
    応用例 3: コネを得る
     解法:あなたを頂点 s とし、T 教授を頂点 t として
    最短経路問題を解く
    頂点 t
    頂点 s
    間に 2 人 の紹介で
    T 教授にたどり着ける

    View Slide

  31. 31 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     推しキャラの缶バッジが欲しいが当たらない
    どうすればいいか

    View Slide

  32. 32 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     入力:他の人々の取引希望情報
    出力:推しキャラのグッズを得る方法

    View Slide

  33. 33 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:他の人の取引情報を元にグラフを作る
    有向辺
    (一方通行)
    Aさん

    View Slide

  34. 34 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:他の人の取引情報を元にグラフを作る
    Aさん
    Bさん

    View Slide

  35. 35 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:他の人の取引情報を元にグラフを作る
    Aさん
    Bさん
    Cさん

    View Slide

  36. 36 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:他の人の取引情報を元にグラフを作る
    Aさん
    Bさん
    Cさん
    Eさん
    Dさん
    Fさん
    Iさん
    Gさん
    Hさん
    Jさん
    Kさん

    View Slide

  37. 37 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:譲りたい赤を始点 s に、欲しい黃を終点 t にして
    最短経路を求める
    Aさん
    Bさん
    Cさん
    Eさん
    Dさん
    Fさん
    Iさん
    Gさん
    Jさん
    Kさん
    Hさん
    頂点 t
    頂点 s

    View Slide

  38. 38 / 100 KYOTO UNIVERSITY
    応用例 4: 推しキャラのグッズを得る
     解法:譲りたい赤を始点 s に、欲しい黃を終点 t にして
    最短経路を求める
    Aさん
    Bさん
    Cさん
    Eさん
    Dさん
    Fさん
    Iさん
    Gさん
    Jさん
    Kさん
    Hさん
    頂点 t
    頂点 s
    C さんに頼んで赤を緑に
    E さんに頼んで緑を橙に
    I さんに頼んで橙を黄に
    すればよい

    View Slide

  39. 39 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
     手元に現金 10 万円がある。
    これをアメリカドルに両替したい。どうすればよいか。
     入力:外貨の両替手数料
    出力:最適な両替の仕方

    View Slide

  40. 40 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
     解法:手数料の情報を元にグラフを作る

    View Slide

  41. 41 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
    手数料: 800 円
     解法:手数料の情報を元にグラフを作る

    View Slide

  42. 42 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
    手数料: 800 円
    3000 円
     解法:手数料の情報を元にグラフを作る

    View Slide

  43. 43 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
    手数料: 800 円
    3000 円
    200 円
    500 円
     解法:手数料の情報を元にグラフを作る

    View Slide

  44. 44 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
    手数料: 800 円
    3000 円
    200 円
    500 円
     解法:日本円を始点 s にドルを終点 t にして最短経路
    頂点 t
    頂点 s

    View Slide

  45. 45 / 100 KYOTO UNIVERSITY
    応用例 5: 外貨を得る
    手数料: 2000 円
    手数料: 800 円
    3000 円
    200 円
    500 円
     解法:日本円を始点 s にドルを終点 t にして最短経路
    頂点 t
    頂点 s
    合計 1500 円で両替できる!
    直接両替するより安い!
    手数料 1700 円で円 → ドル両替サービスを始めると儲かる
    外貨取引に限らず他の交易でも同じアイデアが使える

    View Slide

  46. 46 / 100 KYOTO UNIVERSITY
    応用例 6: 映画推薦
     映画の推薦サービスを作りたい
     入力:人々の映画視聴履歴
    出力:各人へおすすめ映画を推薦

    View Slide

  47. 47 / 100 KYOTO UNIVERSITY
    応用例 6: 映画推薦
     視聴履歴はグラフで表現できる
    この映画を見た

    View Slide

  48. 48 / 100 KYOTO UNIVERSITY
    応用例 6: 映画推薦
     解法: 人と映画の距離を計算する
    最短経路長 3:
    S さんが前に見た映画を見た
    別の人がこの映画を見ている
    → 関連した良い映画かも
    頂点 s 頂点 t
    0
    1
    2
    3

    View Slide

  49. 49 / 100 KYOTO UNIVERSITY
    応用例 6: 映画推薦
     解法: 人と映画の距離を計算する
    頂点 s
    頂点 t
    最短経路長 5:
    S さんの映画の好みからは
    遠い映画かもしれない
    0
    1
    2
    3
    4
    5

    View Slide

  50. 50 / 100 KYOTO UNIVERSITY
    応用例 6: 映画推薦
     解法: 全映画の距離を計算して、距離の近い映画を推薦する
    距離 5
    距離 3
    視聴済(スキップ)
    :
    :
    推薦

    View Slide

  51. 51 / 100 KYOTO UNIVERSITY
    最短経路アルゴリズムだけで様々な問題を解決
     最短経路問題が解けるようになると、推しグッズが手に入るし、
    外貨が安く手に入る
     ポイント:様々な問題を同じアルゴリズムで解くことができる
    (ほとんど)同じプログラムでこれら全ての問題を解ける
    同じアルゴリズムでも工夫すると種々多様な問題を
    解くことができる
    Take Home Message
    グラフを受け取って最短経路を出力するプログラム

    View Slide

  52. 52 / 100 KYOTO UNIVERSITY
    アルゴリズムだけでなくデータにも気を使おう
     データの準備の仕方が重要
     たくさんの取引情報を使ってグラフを作ると、それだけ掘り出し物が見つ
    かりやすくなる
     たくさんの人々の映画視聴履歴を使ってグラフを作ると、それだけ
    正確に距離を捉えられるようになる
     全く同じプログラムを使っても、入力データを改良すると良い結果になる
    アルゴリズムを改良するだけでなく、入力データを工夫する
    ことも重要
    Take Home Message

    View Slide

  53. 53 / 100 KYOTO UNIVERSITY
    グラフカット問題

    View Slide

  54. 54 / 100 KYOTO UNIVERSITY
    グラフカット問題は辺を跨がないように頂点をニ分割する
     グラフカット問題
    入力:グラフ
    出力:頂点集合の 2 分割であって、間の辺の数が最小のもの

    View Slide

  55. 55 / 100 KYOTO UNIVERSITY
    グラフカット問題は辺を跨がないように頂点をニ分割する
     グラフカット問題
    入力:グラフ
    出力:頂点集合の 2 分割であって、間の辺の数が最小のもの
    間の辺の本数は 2 本

    View Slide

  56. 56 / 100 KYOTO UNIVERSITY
    始点と終点を指定するバージョンもある
     s-t グラフカット問題
    入力:グラフ、頂点 s, 頂点 t
    出力:頂点集合の 2 分割のうち、
    s が一方に含まれ、t がもう一方に含まれるもののうち、
    間の辺の数が最小のもの
    s
    t

    View Slide

  57. 57 / 100 KYOTO UNIVERSITY
    始点と終点を指定するバージョンもある
     s-t グラフカット問題
    入力:グラフ、頂点 s, 頂点 t
     出力:頂点集合の 2 分割のうち、
    s が一方に含まれ、t がもう一方に含まれるもののうち、
    間の辺の数が最小のもの
    s
    t
    間の辺の本数は 2 本

    View Slide

  58. 58 / 100 KYOTO UNIVERSITY
    重み付きバージョンも考えられる
    重み付き s-t グラフカット問題
     入力:グラフ、辺の太さ、頂点 s, 頂点 t
     出力:頂点集合の 2 分割のうち、
    s が一方に含まれ、t がもう一方に含まれるもののうち、
    間の辺の太さの合計が最小のもの

    View Slide

  59. 59 / 100 KYOTO UNIVERSITY
    解き方:全探索
     グラフカット問題の解き方:
     頂点の部分集合を全て調べる
    部分集合は 2n - 2 通り(どちらか空集合はスキップ)
    s-t カットのときは 2n-2 通り(s, t 以外の全部分集合)
     最も間の辺が少なかったものを出力
     指数時間だが一応解ける

    View Slide

  60. 60 / 100 KYOTO UNIVERSITY
    実は多項式時間でも解ける
     グラフカット問題の解き方:
     頂点の部分集合を全て調べる
    部分集合は 2n - 2 通り(どちらか空集合はスキップ)
    s-t カットのときは 2n-2 通り(s, t 以外の全部分集合)
     最も間の辺が少なかったものを出力
     指数時間だが一応解ける
     実は多項式時間でも解けます(複雑なので省略)
     最大流最小カット定理や、Ford-Fulkerson などで検索

    View Slide

  61. 61 / 100 KYOTO UNIVERSITY
    応用例1: クラスタ検出
     人間関係の情報からどういうグループがあるかを検出したい
     入力:人間関係の情報
    出力:グループ情報
     グループの例:
    アニメクラスタ、ヒップホップクラスタ、アイドルクラスタ、...

    View Slide

  62. 62 / 100 KYOTO UNIVERSITY
    応用例1: クラスタ検出
     解法:人間関係の情報を基にグラフを構築する
    友達

    View Slide

  63. 63 / 100 KYOTO UNIVERSITY
    応用例1: クラスタ検出
     解法:グラフカットを求める

    View Slide

  64. 64 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     ノイズのある画像からノイズを除去したい
     入力:ノイズ入りモノクロ画像      出力:ノイズ除去後の画像

    View Slide

  65. 65 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:画像を格子状のグラフとみなす

    View Slide

  66. 66 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:新しい頂点 s, t を作り、
    黒頂点を s に、白頂点を t につなぐ
    s t

    View Slide

  67. 67 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:新しい頂点 s, t を作り、
    黒頂点を s に、白頂点を t につなぐ
    s t

    View Slide

  68. 68 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:s-t 最小カットを求める
    s t

    View Slide

  69. 69 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:s-t 最小カットを求める
    s t
    元々白色で t と繋がっているが、
    左右下が黒頂点なので、
    これを青側にすると左右下の辺
    が生じて間の辺の本数が
    多くなってなってしまう
    なので赤側にいく

    View Slide

  70. 70 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     解法:白黒に戻す

    View Slide

  71. 71 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     実際に s-t カットでノイズ除去した結果
     入力:ノイズ入りモノクロ画像
    コード: https://colab.research.google.com/drive/1Mdr3KGrwuX9jAWHk5pVGH2HaUmLmR-jB?usp=sharing

    View Slide

  72. 72 / 100 KYOTO UNIVERSITY
    応用例2: 画像のノイズ除去
     実際に s-t カットでノイズ除去した結果
     入力:ノイズ入りモノクロ画像      出力:ノイズ除去後の画像
    コード: https://colab.research.google.com/drive/1Mdr3KGrwuX9jAWHk5pVGH2HaUmLmR-jB?usp=sharing

    View Slide

  73. 73 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     画像から人物をトリミングしたい
     入力:背景付き画像       出力:人物のトリミング
    どこが人物でどこが背景かを
    色で雑に指示している

    View Slide

  74. 74 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     解法:画像を格子状のグラフとみなす

    View Slide

  75. 75 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     解法:色差が小さい辺を太く、色差が大きい辺を細くする

    View Slide

  76. 76 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     解法:前景指示がある頂点は s に、
    背景指示がある頂点は t に太くつなぐ
    s t

    View Slide

  77. 77 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     解法:最小カット(一番細く切れる分け方)を求める
    s t

    View Slide

  78. 78 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     解法:最小カット(一番細く切れる分け方)を求める

    View Slide

  79. 79 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     実際に s-t カットでトリミングした結果
     入力:背景付き画像
    コード: https://colab.research.google.com/drive/1vm6BHg1rsujEOLAANfT29vMwGkTIOoeV?usp=sharing

    View Slide

  80. 80 / 100 KYOTO UNIVERSITY
    応用例3: 画像のトリミング
     実際に s-t カットでトリミングした結果
     入力:背景付き画像       出力:人物のトリミング
    コード: https://colab.research.google.com/drive/1vm6BHg1rsujEOLAANfT29vMwGkTIOoeV?usp=sharing

    View Slide

  81. 81 / 100 KYOTO UNIVERSITY
    グラフカットアルゴリズムだけで様々な問題を解決
     ポイント:様々な問題を同じアルゴリズムで解くことができる
    (ほとんど)同じプログラムでこれら全ての問題を解ける
    同じアルゴリズムでも工夫すると種々多様な問題を
    解くことができる
    Take Home Message
    グラフを受け取ってグラフカットを出力するプログラム

    View Slide

  82. 82 / 100 KYOTO UNIVERSITY
    グラフ機械学習

    View Slide

  83. 83 / 100 KYOTO UNIVERSITY
    In: ラベル付きデータとテストデータ、Out: テストのラベル
     機械学習:教師ラベル付きデータから、未知のデータのラベルを推定




    例を学習

    View Slide

  84. 84 / 100 KYOTO UNIVERSITY
    In: グラフ全体、Out: グラフのラベル
     グラフ分類:グラフが表現する化合物に薬効があるかを判別する
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    O
    H
    O
    H
    H
    薬効あり
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    H
    H
    N
    H
    H
    薬効なし
    O
    C
    O
    H
    O
    H
    H

    H
    例を学習

    View Slide

  85. 85 / 100 KYOTO UNIVERSITY
    グラフ分類も他の機械学習とほとんど同じようにできる
     グラフ分類でも、画像分類とほとんど同じアプローチが使える
     画像分類における畳み込みニューラルネットワークを
    グラフニューラルネットワークに置き換えるだけでオーケー
     原理はほぼ同じ

    View Slide

  86. 86 / 100 KYOTO UNIVERSITY
    グラフ分類も他の機械学習とほとんど同じようにできる
     グラフ分類でも、画像分類とほとんど同じアプローチが使える
     画像分類における畳み込みニューラルネットワークを
    グラフニューラルネットワークに置き換えるだけでオーケー
     原理はほぼ同じ
     グラフニューラルネットワークを説明している時間はないのでここでは
    単純な 1-近傍分類法を紹介

    View Slide

  87. 87 / 100 KYOTO UNIVERSITY
    グラフの類似度を計算する関数を定義
     ステップ 1: グラフどうしの類似度を計算する関数を作る
    def sim(G1, G2):
    point = 0
    if G1 と G2 の頂点数が同じ:
    point += 1
    if G1 と G2 の炭素原子の数が同じ:
    point += 3
    if G1 と G2 の水素原子の数が同じ:
    point += 2
    if G1 と G2 の両方にベンゼン環がある:
    point += 5
    return point
    類似度関数の
    定義に正解はない。
    どういうものを書くかはセンス

    View Slide

  88. 88 / 100 KYOTO UNIVERSITY
    作った関数を使って、各訓練データとの類似度を計算
     ステップ2: 各訓練データとの類似度を計算
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    O
    H
    O
    H
    H
    薬効あり
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    H
    H
    N
    H
    H
    薬効なし
    O
    C
    O
    H
    O
    H
    H

    H
    point = 2
    point = 5
    point = 2

    View Slide

  89. 89 / 100 KYOTO UNIVERSITY
    定義した類似度の意味で最も似ている訓練データを発見
     ステップ3: 一番似ている訓練データを見つける
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    O
    H
    O
    H
    H
    薬効あり
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    H
    H
    N
    H
    H
    薬効なし
    O
    C
    O
    H
    O
    H
    H

    H
    point = 2
    point = 5
    point = 2
    一番似ている

    View Slide

  90. 90 / 100 KYOTO UNIVERSITY
    最も似ているデータのラベルと同じラベルで予測する
     ステップ4: 一番似ている訓練データと同じラベルを出力
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    O
    H
    O
    H
    H
    薬効あり
    H
    C
    O
    H
    N
    O
    N
    薬効あり
    H
    C
    H
    H
    N
    H
    H
    薬効なし
    O
    C
    O
    H
    O
    H
    H
    予測:薬効あり
    H
    point = 2
    point = 5
    point = 2
    一番似ている

    View Slide

  91. 91 / 100 KYOTO UNIVERSITY
    近傍分類は単純だが実はかなり強力
     かなり単純だが、一応「例をもとに新しいデータの予測をする」という
    目的はこれで達せられている
     教師ラベル付きデータの質・量と類似度の定義次第では
    かなり良い精度を達成できる
     ニューラルネットワークやカーネル法などのファンシーな手法も
    根本の考え方は同じ
    いろんな要素が増えて、数理的な裏付けが付いただけ

    View Slide

  92. 92 / 100 KYOTO UNIVERSITY
    生成モデルが流行している
     タグ(呪文)を入れて画像を生成する手法が流行っている 賛否両論ありますが
    ((best quality)), ((masterpiece)),
    ((ultra-detailed)), (illustration),
    (detailed light), 1girl, blonde
    hair, blue eyes, smiling, bob cut

    View Slide

  93. 93 / 100 KYOTO UNIVERSITY
    生成モデルが流行している
     タグ(呪文)を入れて画像を生成する手法が流行っている
     これが分子でできると便利そう
    ((best quality)), ((masterpiece)),
    ((ultra-detailed)), (illustration),
    (detailed light), 1girl, blonde
    hair, blue eyes, smiling, bob cut
    有機、水溶性、軽量、安価、
    無毒、薬効、...

    View Slide

  94. 94 / 100 KYOTO UNIVERSITY
    グラフ生成モデルも盛んに研究されている
     構成要素を少し変えると(例:CNN を GNN に変える)
    VAE, GAN, 拡散モデルなど同じ技法がグラフ生成にも使える
     Score-based Generative Modeling of Graphs via the System
    of Stochastic Differential Equations (ICML 2022)
     デノイジング拡散モデルの枠組みを用いる
    ノイズ推定モデルに GNN を用いる

    View Slide

  95. 95 / 100 KYOTO UNIVERSITY
    まとめ

    View Slide

  96. 96 / 100 KYOTO UNIVERSITY
    まとめ:グラフは様々な物事を統一的に表現できる
     友達関係から化合物まで何でも表現できる!
     推しグッズの獲得から推薦システムの作成まで、幅広い問題を
    同じ最短経路のアルゴリズムを使って解くことができる!
    グラフはあらゆるデータに対応できるオールラウンダー選手
    グラフアルゴリズムをマスターすればどんな状況にも対応できる
    Take Home Message
    同じアルゴリズムでも工夫すると種々多様な問題を
    解くことができる
    Take Home Message

    View Slide

  97. 97 / 100 KYOTO UNIVERSITY
    さらに勉強したい人へ:その他の応用例
     現実的な最適化問題の例が多数掲載されています。

    View Slide

  98. 98 / 100 KYOTO UNIVERSITY
    さらに勉強したい人へ:機械学習
     機械学習に興味を持った方はこちら。
     機械学習の良い入門書です。

    View Slide

  99. 99 / 100 KYOTO UNIVERSITY
    さらに勉強したい人へ:グラフ全般について
     現実世界に登場するグラフについて詳しく書かれています。
     英語で分厚いですが、基礎の基礎から丁寧に書かれています。

    View Slide

  100. 100 / 100 KYOTO UNIVERSITY
    まとめ:グラフは様々な物事を統一的に表現できる
     友達関係から化合物まで何でも表現できる!
     推しグッズの獲得から推薦システムの作成まで、幅広い問題を
    同じ最短経路のアルゴリズムを使って解くことができる!
    グラフはあらゆるデータに対応できるオールラウンダー選手
    グラフアルゴリズムをマスターすればどんな状況にも対応できる
    Take Home Message
    同じアルゴリズムでも工夫すると種々多様な問題を
    解くことができる
    Take Home Message

    View Slide