Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SantaとAHCと遺伝的アルゴリズム

nagiss
February 21, 2023

 SantaとAHCと遺伝的アルゴリズム

DeNAの2023/2/21のDS輪講の発表資料です。

nagiss

February 21, 2023
Tweet

More Decks by nagiss

Other Decks in Technology

Transcript

  1. © DeNA Co., Ltd. 1 Santa と AHC と 遺伝的アルゴリズム

    nagiss データ本部AI技術開発部 株式会社ディー・エヌ・エー
  2. © DeNA Co., Ltd. 2 目次 Santa 2022 の結果 Kaggler

    は AHC に参加しないでください。強過ぎて、ほぼ 100% その場で優勝してしまいます。 遺伝的アルゴリズム 1 2 3
  3. © DeNA Co., Ltd. 5 2 • 4 チームが最適解に到達 (最適の証明はされていないので、もしかすると最適解でないけど偶然スコアが並んだという可能性はある)

    (AHCer ばっかり) Santa 2022 の結果 AtCoder Algo黄/Heuristic青 Santa 2020 2nd (solo) Santa 2021 3rd AtCoder Algo橙/Heuristic橙 Santa 2021 8th (solo) 数学研究者 Santa 2018 6th (solo) AtCoder Algo橙/Heuristic赤 Santa 2019 3rd (solo) AtCoder Algo黄/Heuristic橙 Santa 2020 1st (solo) Santa 2021 3rd
  4. © DeNA Co., Ltd. 6 2. Kaggler は AHC に参加しないでください。

    強過ぎて、ほぼ 100% その場で優勝してしまいます。
  5. © DeNA Co., Ltd. 11 5 • 取り組み方が同じ ◦ 実験して、スコアが上がったり下がったりして、考察して、を繰り返す

    • 基本的なアルゴリズムは使いこなせると良い ◦ 幅優先探索、深さ優先探索、ダイクストラ法、A* 探索、最小費用流、動的計画法 ◦ 高度なものはあまり必要ない ▪ 途中でググれるし Kaggler は AHC も絶対強い
  6. © DeNA Co., Ltd. 12 6 • 実際に両方やってる人たち ◦ nagiss

    (GM/橙) ◦ Shun_PI さん (Master/橙) ◦ Komaki さん (GM/橙) ◦ threecourse さん (Master/黄) ◦ penguin46 さん (Master/黄) ◦ colun さん (GM/黄) ◦ (最近の人はよくわからない) Kaggler は AHC も絶対強い Expert? Master? GM?
  7. © DeNA Co., Ltd. 13 Topcoder MM と AHC •

    Topcoder Marathon Match ◦ 2006 年くらいからある老舗 ◦ 各回の参加人数は 50 人程度 (ガチ勢は残っているので争いは熾烈) ◦ 期間は 1 週間程度 • AtCoder Heuristic Contest ◦ 開始から 2 年 ◦ 各回の参加人数は 800 人程度 (日本人が多い) ◦ 長期コンテスト (1 ~ 2 週間) と短期コンテスト (4 ~ 8 時間) がある 7
  8. © DeNA Co., Ltd. 14 メタヒューリスティクス • メタヒューリスティクス …… 組合せ最適化問題で近似解を得るための汎用的な枠組み

    • ヒューリスティックコンテストで使われるのは「焼きなまし法 (Simulated Annealing, SA)」か「ビームサーチ」がほとんど (山登り法は焼きなまし法に含まれるとする) (chokudai サーチはビームサーチに含まれるとする) ◦ この 2 つは棲み分けができている ◦ 大体は SA が有効 ◦ 先の選択が後の選択に大きな影響を与えて SA が使いにくい場合、ビームサーチ ▪ 積み木 • 遺伝的アルゴリズム (GA)、蟻コロニー最適化 (ACO)、タブーサーチ、粒子群最適化、 etc … は全く使われない ◦ ヒューリスティック er の共通認識 8
  9. © DeNA Co., Ltd. 15 焼きなまし法とは • ※ あくまで一例 •

    state := 初期解, n := 総イテレーション回数 • for i in 1..n: ◦ state’ ← neighbour(state) # state にランダムな変更を加えた解 ◦ gain ← score(state’) - score(state) # 改善量 (最小化の場合は前後逆) ◦ t ← temperature(i / n) # 遷移しやすさ: 正の値で、終盤ほど小さい ◦ if rand() < exp(gain / t): # スコアが改善または僅かに悪化した場合 ▪ state ← state’ # 解を更新する (遷移する) • return state 9
  10. © DeNA Co., Ltd. 16 ヒューリスティックコンテストで焼きなまし法が使われる理由 • 実装が簡単 • 高速に動作する

    ◦ 少しだけ解を変えたなら、スコアの変化の計算も変えた分だけで済む場合が多い • 温度調整が必要というデメリットがあるが、実行時間が数秒なので幾分か楽 • → 強い 10
  11. © DeNA Co., Ltd. 17 遺伝的アルゴリズム (GA) とは • ※

    あくまで一例 (GA は色々なバリエーションが考えられる) • states := 初期解の集合, n := 総イテレーション回数 • for i in 1..n: ◦ state_a, state_b ← pop_two_randomly(states) # 解の集合から 2 つ取り出す ◦ state_a’ ← crossover(state_a, state_b) # 交叉によって新しい解を作る ◦ if score(state_a) < score(state_a’): # 解が改善した場合 ▪ state_a ← state_a’ # 解を更新する ◦ states ← states ∪ {state_a, state_b} # 集合に加える • return best(states) # 集合内の最も良い解 11
  12. © DeNA Co., Ltd. 18 ヒューリスティックコンテストで GA が使われない理由 • 実装がやや面倒

    ◦ 交叉の方法を考えるのは、焼きなましで近傍を考えるより難しい • 動作が遅い ◦ 0.5 : 0.5 な感じの交叉では新しい解のスコアを高速に計算するのが難しい ◦ 焼きなましは 1 つの解を改善していくが、GA は複数の解を改善していく • 集合内の解の多様性が重要だが、保つのが難しい ◦ 交叉を繰り返すうちに集合に含まれる解がどれも似たようなものになってしまう ◦ 交叉に加えて「突然変異」と呼ばれる操作を行って多様性を補償することが多い • → クソザコ 12
  13. © DeNA Co., Ltd. 19 おすすめ資料 • Introduction to Heuristics

    Contest - AtCoder ◦ https://atcoder.jp/contests/intro-heuristics ◦ 入門向けの問題と、admin の wata さんによる 12 ページの解説資料 最適化問題などを題材にスコアを伸ばしていくタイプのコンテスト (マラソンコンテストとよく呼ばれています) の開催を今後 AtCoder で増やしていくにあたって アンケートを取ったところ、取り組み方が分からないという声が多くありました。そこで、新規の参加者の方々が入門しやすいように、シンプルなスケジューリン グ問題を題材として、このタイプの問題に対する取り組み方と典型的な手法を紹介します。 • Psyho さん (Topcoder MM 最強の人) のツイート ◦ https://twitter.com/FakePsyho/status/1605570944537280512 ◦ 「1 いいねごとに heuristic/bot コンテスト の tips 書く」→ 1000 いいね 13
  14. © DeNA Co., Ltd. 20 おすすめコンテスト • 「RECRUIT 日本橋ハーフマラソン 2023冬(AtCoder

    Heuristic Contest 018)」開催 中!!!!!!!!!! ◦ 2/18(土) 〜 2/26(日) ◦ https://atcoder.jp/contests/ahc018 14
  15. © DeNA Co., Ltd. 22 1 Santa 2022 上位解法 •

    1 位 • 2 位 • 3 位 • 4 位 … We worked on the former part by solving TSP with additional constraints using “genetic algorithm using edge assembly crossover (GA-EAX)”, … … The final push was obtained by using all the (mostly unconstrained) tours I had gathered in the first weeks of the challenge. I used merging with IPT and some limited genetic algorithm to reach the final score of 74075.706541 … … For finding a good tour satisfying the constraints, I used GA-EAX-restart, modified with a penalty function that would enforce the constraints. Depending on the population size and luck, this method gives tours with scores in the 74076.x range. I was quite surprised, this is the first time that I see a genetic algorithm being useful. … … My solution is to solve the constrained TSP using Concorde and a genetic algorithm, then convert the resulting tour to configurations. … https://www.kaggle.com/competitions/santa-2022/discussion/379080 https://www.kaggle.com/competitions/santa-2022/discussion/379214 https://www.kaggle.com/competitions/santa-2022/discussion/379086 https://www.kaggle.com/competitions/santa-2022/discussion/379167
  16. © DeNA Co., Ltd. 23 2 Santa 2022 上位解法 •

    最適解に到達した 4 チーム全てが 遺伝的アルゴリズムを使っている 異常事態 • しかも、逆が成り立つ
  17. © DeNA Co., Ltd. 24 3 なぜ遺伝的アルゴリズムが使われたか • 元々 Santa

    では焼きなましはあまり有力ではない ◦ 実行時間の違い: 数秒 vs 数ヶ月 ▪ 温度調整が難しい • (反復局所探索法 (ILS, 競プロ方言では「山登り+ Kick」) などは温度調 整が必要無く有力ではある) ◦ 最適解との近さの違い ▪ 焼きなましは深い局所解から抜け出しにくい • 巡回セールスマン問題では辺組立交叉 (EAX) と呼ばれる有力な交叉が知られていた ◦ 実装によっては計算量もある程度抑えられる
  18. © DeNA Co., Ltd. 25 4 いつ遺伝的アルゴリズムが強いか(想像) • 実行時間がかかっても最適解に近いことが重要な場合 ◦

    Adam と SGD の関係みたいな • 上手い交叉の方法がある場合 • 最適解が出ないように良く設計された AHC で活躍することは今後も無い気がする