Slide 1

Slide 1 text

エチレン(@ethylene_66) AtCoder は Kaggle の役に立つ +α

Slide 2

Slide 2 text

2 Agenda ⚫ 自己紹介 ⚫ AtCoder は Kaggle の役に立つ ⚫ ポエム

Slide 3

Slide 3 text

3 自己紹介 ⚫ 名前:堀江紘己 ⚫ 身分:博士後期課程学生1年目 @東京大学大学院 理学系研究科物理学専攻 ⚫ Kaggle 歴:3年半 ⚫ 計算資源:RTX 4090 + RunPod + GCP ⚫ 三日天下 2024/02/04

Slide 4

Slide 4 text

4 戦績 最適化コンペを中心に入賞

Slide 5

Slide 5 text

5 自己紹介 AtCoder版 ⚫ AtCoder 歴:7年 Algorithm Master? Heuristic Grandmaster?

Slide 6

Slide 6 text

6 AtCoder は Kaggle の役に立つ

Slide 7

Slide 7 text

7 相関図 Kaggle AtCoder 役立たない 役立つ 業務 https://x.com/kakulin_real/st atus/1728691633196286055

Slide 8

Slide 8 text

https://info.atcoder.jp/overview/about/atcoder https://atcoder.jp/contests/ahc001 8 AtCoder とは? Algorithm Contest 与えられた問題を解決するプログラムを、早く正 確に提出し、その正解数と順位を競うコンテスト。 簡単な問題では、ただ指示通り問題を解決するプ ログラムを書けば良いが、難しい問題においては、 アルゴリズムを工夫する必要がある。 Heuristic Contest 最適解を出すのが難しい問題に対し、出来るだけ 良い解を作成するコンテスト。 サンタコンペのような問題が出題される。

Slide 9

Slide 9 text

9 AtCoder Heuristic Contest 問題例 https://info.atcoder.jp/overview/about/atcoder 全ての頂点をできるだけ短い距離で巡る (Travelling Salesman Problem; TSP) 低スコア 中スコア 高スコア

Slide 10

Slide 10 text

10 AtCoder Heuristic Contest vs Kaggle AtCoder Heuristic Contest Kaggle 計算資源 CPU 1スレッド CPU+GPU 実行時間 1テストケースあたり2~3秒 全てストケースに8時間 コンペ期間 4時間 or 10日間 数ヶ月 参加人数 1000人 1000~5000人 チーム 不可 可 Shake ほぼShakeしない 稀に?大きくShakeする 問題の質 良い 概ね良い 手法 大道具は少数 多様

Slide 11

Slide 11 text

11 AtCoder Heuristic Contest 主な手法 ⚫ ルールベース ⚫ 焼きなまし法 ⚫ ILS ⚫ ビームサーチ ⚫ 遺伝的アルゴリズム

Slide 12

Slide 12 text

12 AtCoder Heuristic Contest x サンタコンペ ILS 遺伝的アルゴリズム + ビームサーチ ビームサーチ ルールベース

Slide 13

Slide 13 text

13 AtCoder は サンタコンペで Kaggle の役に立つ

Slide 14

Slide 14 text

14 AtCoder は サンタコンペ以外にも Kaggle の役に立つ

Slide 15

Slide 15 text

15 AtCoder Heuristic Contest 030

Slide 16

Slide 16 text

16 AtCoder Heuristic Contest 030 問題概要 N x N のグリッド上の M 個のポリオミノの位置を推定したい グリッドのサイズやポリオミノの個数、形状、向きは既知 ポリオミノの位置のみ未知 ? ? ? ?

Slide 17

Slide 17 text

17 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る

Slide 18

Slide 18 text

18 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 1 0 2 1 質問するマス

Slide 19

Slide 19 text

19 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 返り値 = 2 1 0 2 1

Slide 20

Slide 20 text

20 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 返り値 = 1 1 0 2 1

Slide 21

Slide 21 text

21 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2

Slide 22

Slide 22 text

22 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 1

Slide 23

Slide 23 text

23 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 2

Slide 24

Slide 24 text

24 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数 ⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 1 (20%), 2 (60%), 3 (20%) ガウシアンノイズ

Slide 25

Slide 25 text

25 AtCoder Heuristic Contest 030 ポイント ⚫ 確率的な情報をどのように扱うか? ⚫ どのような質問をすれば多くの情報が得られるか?

Slide 26

Slide 26 text

26 AtCoder Heuristic Contest 030 解説 25% 25% 25% 25% ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事前分布

Slide 27

Slide 27 text

27 AtCoder Heuristic Contest 030 解説 50% 0% 0% 50% 返り値 = 1 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布

Slide 28

Slide 28 text

28 AtCoder Heuristic Contest 030 解説 60% 20% 0% 20% 返り値 = 1 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布

Slide 29

Slide 29 text

29 AtCoder Heuristic Contest 030 解説 20% 0% 20% 60% 返り値 = 2 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布

Slide 30

Slide 30 text

30 AtCoder Heuristic Contest 030 解説 50% 0% 0% 50% ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事前分布

Slide 31

Slide 31 text

31 AtCoder Heuristic Contest 030 解説 25% 0% 0% 75% 返り値 = 2 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布

Slide 32

Slide 32 text

32 AtCoder Heuristic Contest 030 解説 ⚫ どのような質問をすると情報を多く得られるか? →質問後のポリオミノの位置の分布を最大限偏らせられそうな質問をしたい →ポリオミノの位置の分布のエントロピーの期待値を最小化する質問をしたい →相互情報量の最大化 H(X1, Y1, X2, Y2) X1, Y1 : 1個目のポリオミノの位置をあらわす確率変数 X2, Y2:2個目のポリオミノの位置をあらわす確率変数 ⚫ 質問するマスの配置を決めると、質問後のエントロピーの期待値が計算可能 ⚫ あとはその期待値を最小化するようなマスを決めるだけ(略) https://qiita.com/thun-c/items/688442aad6a0410545cc https://www.terry-u16.net/entry/ahc030

Slide 33

Slide 33 text

33 AtCoder Heuristic Contest 030 解説

Slide 34

Slide 34 text

34

Slide 35

Slide 35 text

35 LLM 20 Questions 概要 ⚫ ゲームAI x LLM コンペ ⚫ 2 vs 2 のチーム戦 ⚫ 1人がアキネイター役、もう1人が人間役 ⚫ 人間側には事前にキーワードが共有されている ⚫ 人間側はアキネイター側の質問に対して Yes/No でしか回答できない ⚫ アキネイター側が早くキーワードを当てられたチームの勝ち ⚫ Public LB のキーワード数 2000、Private LB ではキーワードが変更される ポイント ⚫ 自然言語で質問する必要がある ⚫ 人間側は LLM を搭載しないと Yes/No を回答できない

Slide 36

Slide 36 text

36 LLM 20 Questions 対戦例 自然に関係ありますか? Yes 食べ物に関係ありますか? Yes 植物ですか? No 動物ですか? Yes 水中に暮らしていますか? Yes 魚に分類されますか? Yes sで始まりますか? Yes キーワードは Salmon です 質問回数=7

Slide 37

Slide 37 text

37 LLM 20 Questions 人間側の解法 以下の組み合わせ ⚫ Llama3 ⚫ DeepSeek-Math ⚫ ルールベースの質問に答えるアルゴリズム 辞書順、最初の文字 etc.

Slide 38

Slide 38 text

38 LLM 20 Questions アキネイター側 ポイント ⚫ 確率的な情報をどのように扱うか? ⚫ どのような質問をすれば多くの情報が得られるか?

Slide 39

Slide 39 text

39 LLM 20 Questions アキネイター側の解法 以下の情報を持っていれば、AtCoder Heuristic Contest 030 と同様に キーワードの分布の更新が可能 ⚫ キーワードの候補リストとキーワードごとの事前確率(1次元テーブル) ⚫ 質問候補のリスト ⚫ 質問とキーワードのペアごとに人間側が Yes と回答する確率(2次元テーブル)

Slide 40

Slide 40 text

40 apple banana orange mango Q. Is the fruit typically yellow when ripe? A. Yes apple banana orange mango ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理

Slide 41

Slide 41 text

41 ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理 apple banana orange mango Q. Is the color of the fruit typically orange? A. Yes apple banana orange mango

Slide 42

Slide 42 text

42 ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理 apple banana orange mango apple banana orange mango Q. Is the color of the fruit typically orange? A. No

Slide 43

Slide 43 text

43 LLM 20 Questions アキネイター側の解法 ⚫ エントロピーの期待値を最小化(相互情報量を最大化)する質問を選択 ⚫ キーワードの候補リストとキーワードごとの事前確率(1次元テーブル) 英単語データベースから名詞を抽出 英単語の出現頻度や長さなどの特徴量を用いて事前確率を事前計算 ⚫ 質問の候補 GPT-4o にランダムなキーワードの集合を渡し、それらを判別可能な質問を 答えさせることで事前に生成 or キーワードの辞書順を問う質問 ⚫ 質問とキーワードのペアごとに人間側が Yes と回答する確率(2次元テーブル) gemma-7b-it などの LLM を用いて事前計算 本質は AtCoder Heuristic Contest 030 と全く同じ

Slide 44

Slide 44 text

44 AtCoder は サンタコンペ以外にも Kaggle の役に立つ

Slide 45

Slide 45 text

45 AtCoder Heuristic Contest x Kaggle ILS 遺伝的アルゴリズム + ビームサーチ ビームサーチ ルールベース ガウス過程回帰 二分探索 + ベイズ推定 枝刈りDFS + 整数計画ソルバー

Slide 46

Slide 46 text

46 MLコンペには役に立つのか?

Slide 47

Slide 47 text

47 ポエム

Slide 48

Slide 48 text

48 振り返り ⚫ 2018年 AtCoder をきっかけにプログラミングをはじめる ⚫ 2021年 機械学習を学びたくて Kaggle アカウントを作成 ⚫ 2021年 Coursera や書籍で機械学習に入門 ⚫ 2021/10-2021/12 510位 Sartorius Cell Instance Segmentation ⚫ 2021/11-2022/01 8位 Santa 2021 ⚫ 2021/11-2022/02 1918→15位 Jigsaw Rate Severity of Toxic ⚫ 2024/07 Kaggle Grandmaster @USPTO ⚫ 2024/02/04 Kaggle Rank 1位 @Santa 2024 ⚫ 2024/02/07 Kaggle Rank 2位転落

Slide 49

Slide 49 text

49 いろいろ ⚫ 参加するコンペの選び方 ⚫ AtCoder → Kaggle ⚫ Kaggle → AtCoder ⚫ Kaggle Rank ⚫ MLコンペは出ないの?

Slide 50

Slide 50 text

50 おすすめ資料 ⚫ Introduction to Heuristics Contest https://atcoder.jp/contests/intro-heuristics 入門問題 + admin の wata さんによる詳細な解説 ⚫ メタヒューリスティクスで広がる「解けた!」の世界 https://speakerdeck.com/terryu16/metahiyurisuteikusudeguang- garu-jie-keta-noshi-jie AtCoder Heuristic ランク2位の terry さんによる 典型手法から実社会への応用までがまとまった資料 ⚫ ヒューリスティック問題を解く https://kato-hiro.github.io/AtCoderClans/articles/heuristic/ ありとあらゆる資料がまとまったページ

Slide 51

Slide 51 text

51 宣伝 2/14(金)-2/24(月) AtCoder Heuristic Contest 043 開催中! https://atcoder.jp/contests/ ahc043 3/23日(日) 13:00~ AtCoder Heuristic First-step Vol.1 2/17(月)11時申込締切! https://atcoder.jp/contests/ ahf1 https://x.com/atcoder/statu s/1889872125873524851

Slide 52

Slide 52 text

52