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
Kaggle Traveling Santa 2018 - 4th Place Solution
Search
Takuya Akiba
January 18, 2019
0
3
Kaggle Traveling Santa 2018 - 4th Place Solution
Takuya Akiba
January 18, 2019
Tweet
Share
More Decks by Takuya Akiba
See All by Takuya Akiba
自然着想型アプローチによる基盤モデルの研究開発 (2025/01/23, 第35回ステアラボ人工知能セミナー)
iwiwi
2
58
Evolutionary Optimization ofModel Merging Recipes (2024/04/17, NLPコロキウム)
iwiwi
11
6.5k
LLMの開発は難しい?簡単?Stability AIの現場から (2023/10/11, W&B Fully Connected)
iwiwi
12
9.7k
Stability AI Japanにおける大規模言語モデルの研究開発
iwiwi
17
11k
Kaggle State Farm Distracted Driver Detection
iwiwi
15
9.8k
Featured
See All Featured
Building Applications with DynamoDB
mza
95
6.5k
Documentation Writing (for coders)
carmenintech
71
4.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Raft: Consensus for Rubyists
vanstee
140
7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Agile that works and the tools we love
rasmusluckow
329
21k
The Invisible Side of Design
smashingmag
299
51k
4 Signs Your Business is Dying
shpigford
184
22k
GitHub's CSS Performance
jonrohan
1031
460k
BBQ
matthewcrist
89
9.7k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Transcript
2019/01/18 @ PFN Teatime Tech Talk Kaggle Traveling Santa 2018
4th Place Solution 秋葉 拓哉
Part 1 はじめに
Kaggle とは? ⚫ 謎の職人が謎の行為に励む謎の空間 ⚫ 機械学習コンテストのプラットフォーム ⚫ 普段は主に企業から出てきた実データに対し 参加者がモデルを作り精度を競う
Kaggle のサンタコンペとは? ⚫ 毎年、冬になると Kaggle で開催される 遊びのコンテスト ⚫ 問題は機械学習ではなく離散最適化とか ⚫
実データではなく人工データ
今日の話は? ⚫ 今冬の Kaggle サンタコンペで 1874 チーム中 4 位・金メダルを獲得した ⚫
特に、PFN で作っている Optuna を使った ⚫ どんなことをしたのか簡単に解説
ちなみに: Kaggle の金メダル ってどのぐらい難しいの? ⚫ だいたい「Top 10 入賞」を意味する ⚫ 金メダルを
1 個取れば Kaggle Master 本当はそれに加えて銀メダル以上が 2 個必要だが、 金メダルを実力で取れるレベルの人にとって銀メダルは参加賞ぐらい。 (※銀メダルも初心者には結構大変、しかし金はそれよりさらに大変) ⚫ 金メダルを 5 個取れば Kaggle Grandmaster 5 個のうち 1個 はチームを組まず一人で獲得する必要あり。 いわゆる「ソロゴールド」。 ちなみに僕は Kaggle Master で、金メダルはこれで 4 個目。
ちなみに ⚫ 岩田陽一 (NII) と一緒に出ました ⚫ 今回の問題は流石に会社と関係なすぎるので 完全にプライベートでやりました
Part 2 問題説明
今年のサンタコンペ Traveling Santa 2018 - Prime Paths ⚫ 大体「巡回セールスマン問題 (TSP)」
⚫ まずは TSP を解説
巡回セールスマン問題 (TSP) ⚫ 全都市を巡る最短の経路を計算する問題 ⚫ NP 困難な古典的な問題で良く研究されている 図: http://mathworld.wolfram.com/TravelingSalesmanProblem.html より
今年のサンタコンペ Traveling Santa 2018 - Prime Paths ⚫ 大体「巡回セールスマン問題 (TSP)」
⚫ ただし、「スコア = 通常の距離 + ペナルティ」 ペナルティ: 10 の倍数回目の移動それぞれに関して ⚫ 頂点番号が素数の頂点から移動する場合 → ペナルティなし ⚫ そうでない場合 → このステップの移動距離 × 0.1 がペナルティ 「謎ペナルティがたまに加わる TSP 亜種なんだな」程度の理解で今日の話 はついてこれるはず
入力 図: https://www.kaggle.com/thexyzt/xyzt-s-visualizations-and-various-tsp-solvers より
出力例 図: https://www.kaggle.com/heisenbad/visualization-and-naive-algorithms より
Part 3 解法概要
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 LKH-2 K-opt Hillclimb 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 LKH-2 K-opt Hillclimb 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick 今日は省略 Part 4 Part 6 Part 5
Part 4 (普通の)TSP ソルバ の仕組み
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 LKH-2 K-opt Hillclimb 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick LKH-2 K-opt Hillclimb
LKH-2 とは? ⚫ TSP の現行最強ヒューリスティックソルバ ⚫ K-opt (Lin-Kernighan Heuristic) を
独自にもりもり改善しまくり効率的に実装 ⚫ Prime TSP の最適化のスタート地点として 優れた経路を得るために使った 上位のほぼ全チームは LKH-2 を同じように使ったのではないか
2-opt この繋ぎ変えで改善できる所を改善していく 図: http://akira.ruc.dk/~keld/research/LKH/LKH-2.0/DOC/LKH_REPORT.pdf より
3-opt この繋ぎ変えで改善できる所を改善していく 図: http://akira.ruc.dk/~keld/research/LKH/LKH-2.0/DOC/LKH_REPORT.pdf より
K-opt (Lin-Kernighan Heuristic) ⚫ 2-opt や 3-opt の一般化 ⚫ 今回我々が使ったのは
K=8 (8-opt) とか ⚫ K に対して指数的に計算量が増加する ⚫ 大きい K についての探索を現実的にする 工夫が色々取り入れられている sequential exchange への限定など
LKH-2 全体 ⚫ 1 Trial = K-opt による局所最適解への到達 ⚫ 1
Run = 複数 Trial (1000 とか 106 とか) ⚫ Trial の間には「Kick」と呼ばれる、 解を壊す操作が入る 局所最適解を抜け出し次は違う局所最適解に到達するため
Part 5 我々の Prime TSP ソルバ の仕組み
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 LKH-2 K-opt Hillclimb 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick
LKH-2 K-opt Hillclimb 入力 頂点座標 疎グラフ 経路 ① 普通の TSP
ペナルティを無視し距離を最適化 ② Prime TSP ペナルティも考慮し最適化 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving α-nearness Merge Solution Kick 自作ソルバ K-opt Hillclimb
Prime TSP ソルバ ⚫ ペナルティを加味した最適化をする ⚫ LKH-2 の出した TSP の良い解からスタート
適当な初期解からの最適化では非現実的なぐらい時間がかかってしまう ⚫ Rust で書いた
Prime TSP ソルバ 基本路線:ペナルティを加味した K-opt 工夫: (今日はついてこれる人少ないと思うので飛ばします) ⚫ LKH と似た枝刈りが使えないので
両側探索を用いて K-opt を効率的に探索 ⚫ セグメント木を用いた効率的な non-sequential 4-opt, 5-opt の探索 ⚫ 深い局所解から脱出するための 解のマージを用いた kick
Part 6 によるチューニング
入力 頂点座標 疎グラフ 経路 ① 普通の TSP ペナルティを無視し距離を最適化 ② Prime
TSP ペナルティも考慮し最適化 LKH-2 K-opt Hillclimb 経路 経路 経路 経路 経路 Optuna Asynchronous Successive Halving 自作ソルバ K-opt Hillclimb α-nearness Merge Solution Kick
自作ソルバ K-opt Hillclimb LKH-2 K-opt Hillclimb 入力 頂点座標 疎グラフ 経路
① 普通の TSP ペナルティを無視し距離を最適化 ② Prime TSP ペナルティも考慮し最適化 経路 経路 経路 経路 経路 α-nearness Merge Solution Kick Optuna Asynchronous Successive Halving
背景 ⚫ LKH-2 には大量のハイパラがある ハイパラのマニュアルの PDF が 8 ページ ⚫
Prime TSP は局所解の脱出が難しい ⚫ スタートする TSP 解が良いと Prime TSP でも良い解になる傾向がある ⚫ 良い解が一杯作れると、混ぜ合わせることで 更に良い解が作れることが分かった (解のマージを用いた kick)
Optuna の使い方 ⚫ ハイパラが多すぎる → 手法の理解と事前の実験であたりをつけた ⚫ LKH-2 の最適化は終わりがない (時間をつぎ込めばつぎ込むほど解が良くなっていくので)
→ ASHA によって枝刈りされた時のみ終了 ⚫ パラメタのエンコーディングの工夫 最終的なパラメータは KICK_TYPE, KICKS, SEED。 ASHA + Random Search で最適化。 SEED は初期解を左右するので結果にそれなりに影響がある。 301 trials やっていた。
ASHA とは?
None
Optuna を使った TSP 解の発見 ⚫ Kaggle Kernel で公開されてる一番良いやつ: 1503092.15 ⚫
我々が手で見つけてたやつ: 1502661.47 ⚫ Optuna で見つかった一番良いやつ: 1502582.97 実際には、距離だけでなくペナルティも良いやつを初期解として選んでいた。
None
Part 7 おわりに
まとめ ⚫ 今年の Kaggle サンタコンペは TSP 亜種だった ⚫ LKH-2 と自作ソルバと
Optuna を使った ⚫ 1874 チーム中 4 位で金メダル獲得 「Optuna を使って Kaggle で金メダルを取る」 という個人的な野望を達成……!