Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
Search
ethylene
February 15, 2025
Programming
2.7k
7
Share
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
ethylene
February 15, 2025
Other Decks in Programming
See All in Programming
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.3k
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
Claude Code Skill入門
mayahoney
0
460
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.5k
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
OTP を自動で入力する裏技
megabitsenmzq
0
130
KagglerがMixSeekを触ってみた
morim
0
360
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
130
Nuxt Server Components
wattanx
0
230
ロボットのための工場に灯りは要らない
watany
12
3.3k
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
270
PHP 7.4でもOpenTelemetryゼロコード計装がしたい! / PHPerKaigi 2026
arthur1
1
460
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
340
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
We Have a Design System, Now What?
morganepeng
55
8.1k
Leo the Paperboy
mayatellez
5
1.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.8k
Fireside Chat
paigeccino
42
3.9k
Marketing to machines
jonoalderson
1
5.1k
Chasing Engaging Ingredients in Design
codingconduct
0
160
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Transcript
エチレン(@ethylene_66) AtCoder は Kaggle の役に立つ +α
2 自己紹介 ⚫ Kaggle 歴:3年半 ⚫ 計算資源:RTX 4090 + RunPod
+ GCP ⚫ 三日天下 2024/02/04
3 戦績 最適化コンペを中心に入賞
4 自己紹介 AtCoder版 ⚫ AtCoder 歴:7年 Algorithm Master? Heuristic Grandmaster?
5 AtCoder は Kaggle の役に立つ
6 相関図 Kaggle AtCoder 役立たない 役立つ 業務 https://x.com/kakulin_real/st atus/1728691633196286055
https://info.atcoder.jp/overview/about/atcoder https://atcoder.jp/contests/ahc001 7 AtCoder とは? Algorithm Contest 与えられた問題を解決するプログラムを、早く正 確に提出し、その正解数と順位を競うコンテスト。 簡単な問題では、ただ指示通り問題を解決するプ
ログラムを書けば良いが、難しい問題においては、 アルゴリズムを工夫する必要がある。 Heuristic Contest 最適解を出すのが難しい問題に対し、出来るだけ 良い解を作成するコンテスト。 サンタコンペのような問題が出題される。
8 AtCoder Heuristic Contest 問題例 https://info.atcoder.jp/overview/about/atcoder 全ての頂点をできるだけ短い距離で巡る (Travelling Salesman Problem;
TSP) 低スコア 中スコア 高スコア
9 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する 問題の質 良い 概ね良い 手法 大道具は少数 多様
10 AtCoder Heuristic Contest 主な手法 ⚫ ルールベース ⚫ 焼きなまし法 ⚫
ILS ⚫ ビームサーチ ⚫ 遺伝的アルゴリズム
11 AtCoder Heuristic Contest x サンタコンペ ILS 遺伝的アルゴリズム + ビームサーチ
ビームサーチ ルールベース
12 AtCoder は サンタコンペで Kaggle の役に立つ
13 AtCoder は サンタコンペ以外にも Kaggle の役に立つ
14 AtCoder Heuristic Contest 030
15 AtCoder Heuristic Contest 030 問題概要 N x N のグリッド上の
M 個のポリオミノの位置を推定したい グリッドのサイズやポリオミノの個数、形状、向きは既知 ポリオミノの位置のみ未知 ? ? ? ?
16 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る
17 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 1 0 2 1 質問するマス
18 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 返り値 = 2 1 0 2 1
19 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 返り値 = 1 1 0 2 1
20 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2
21 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 1
22 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 2
23 AtCoder Heuristic Contest 030 問題概要 次の質問を何回か聞くことが可能 少ない質問回数で正しい位置を推定すると高得点 ⚫ あるマスと重なっているポリオミノの個数
⚫ 指定した複数のマスに重なっているポリオミノの個数 同一のポリオミノも重複してカウント ただし返り値には誤差が乗る 質問するマス 1 0 3 2 返り値 = 1 (20%), 2 (60%), 3 (20%) ガウシアンノイズ
24 AtCoder Heuristic Contest 030 ポイント ⚫ 確率的な情報をどのように扱うか? ⚫ どのような質問をすれば多くの情報が得られるか?
25 AtCoder Heuristic Contest 030 解説 25% 25% 25% 25%
⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事前分布
26 AtCoder Heuristic Contest 030 解説 50% 0% 0% 50%
返り値 = 1 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布
27 AtCoder Heuristic Contest 030 解説 60% 20% 0% 20%
返り値 = 1 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布
28 AtCoder Heuristic Contest 030 解説 20% 0% 20% 60%
返り値 = 2 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布
29 AtCoder Heuristic Contest 030 解説 50% 0% 0% 50%
⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事前分布
30 AtCoder Heuristic Contest 030 解説 25% 0% 0% 75%
返り値 = 2 ⚫ 位置の確率分布を質問の回答を用いて更新する ⚫ 更新にはベイズの定理を用いる 事後分布
31 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
32 AtCoder Heuristic Contest 030 解説
33
34 LLM 20 Questions 概要 ⚫ ゲームAI x LLM コンペ
⚫ 2 vs 2 のチーム戦 ⚫ 1人がアキネイター役、もう1人が人間役 ⚫ 人間側には事前にキーワードが共有されている ⚫ 人間側はアキネイター側の質問に対して Yes/No でしか回答できない ⚫ アキネイター側が早くキーワードを当てられたチームの勝ち ⚫ Public LB のキーワード数 2000、Private LB ではキーワードが変更される ポイント ⚫ 自然言語で質問する必要がある ⚫ 人間側は LLM を搭載しないと Yes/No を回答できない
35 LLM 20 Questions 対戦例 自然に関係ありますか? Yes 食べ物に関係ありますか? Yes 植物ですか?
No 動物ですか? Yes 水中に暮らしていますか? Yes 魚に分類されますか? Yes sで始まりますか? Yes キーワードは Salmon です 質問回数=7
36 LLM 20 Questions 人間側の解法 以下の組み合わせ ⚫ Llama3 ⚫ DeepSeek-Math
⚫ ルールベースの質問に答えるアルゴリズム 辞書順、最初の文字 etc.
37 LLM 20 Questions アキネイター側 ポイント ⚫ 確率的な情報をどのように扱うか? ⚫ どのような質問をすれば多くの情報が得られるか?
38 LLM 20 Questions アキネイター側の解法 以下の情報を持っていれば、AtCoder Heuristic Contest 030 と同様に
キーワードの分布の更新が可能 ⚫ キーワードの候補リストとキーワードごとの事前確率(1次元テーブル) ⚫ 質問候補のリスト ⚫ 質問とキーワードのペアごとに人間側が Yes と回答する確率(2次元テーブル)
39 apple banana orange mango Q. Is the fruit typically
yellow when ripe? A. Yes apple banana orange mango ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理
40 ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理 apple banana
orange mango Q. Is the color of the fruit typically orange? A. Yes apple banana orange mango
41 ∝ × LLM 20 Questions アキネイター側の解法 ベイズの定理 apple banana
orange mango apple banana orange mango Q. Is the color of the fruit typically orange? A. No
42 LLM 20 Questions アキネイター側の解法 ⚫ エントロピーの期待値を最小化(相互情報量を最大化)する質問を選択 ⚫ キーワードの候補リストとキーワードごとの事前確率(1次元テーブル) 英単語データベースから名詞を抽出
英単語の出現頻度や長さなどの特徴量を用いて事前確率を事前計算 ⚫ 質問の候補 GPT-4o にランダムなキーワードの集合を渡し、それらを判別可能な質問を 答えさせることで事前に生成 or キーワードの辞書順を問う質問 ⚫ 質問とキーワードのペアごとに人間側が Yes と回答する確率(2次元テーブル) gemma-7b-it などの LLM を用いて事前計算 本質は AtCoder Heuristic Contest 030 と全く同じ
43 AtCoder は サンタコンペ以外にも Kaggle の役に立つ
44 AtCoder Heuristic Contest x Kaggle ILS 遺伝的アルゴリズム + ビームサーチ
ビームサーチ ルールベース ガウス過程回帰 二分探索 + ベイズ推定 枝刈りDFS + 整数計画ソルバー
45 おすすめ資料 ⚫ 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/ ありとあらゆる資料がまとまったページ
46 宣伝 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
47