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
6
2.1k
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
ethylene
February 15, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
実践AIチャットボットUI実装入門
syumai
7
2.5k
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
4
670
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
7
1.6k
クラシルを支える技術と組織
rakutek
0
190
メモリ不足との戦い〜大量データを扱うアプリでの実践例〜
kwzr
1
860
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
1.8k
株式会社 Sun terras カンパニーデック
sunterras
0
220
CSC509 Lecture 02
javiergs
PRO
0
400
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
110
明日から始めるリファクタリング
ryounasso
0
110
エンジニアとして高みを目指す、 利益を生み出す設計の考え方 / design-for-profit
minodriven
23
12k
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
390
Featured
See All Featured
Building Adaptive Systems
keathley
43
2.8k
Documentation Writing (for coders)
carmenintech
75
5k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
20k
The Language of Interfaces
destraynor
162
25k
What's in a price? How to price your products and services
michaelherold
246
12k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
How STYLIGHT went responsive
nonsquared
100
5.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
A better future with KSS
kneath
239
17k
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