【要約】AHC延長戦の伝説"saitodevel01"の機械学習手法を再現して1位を奪い返した話 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
筆者は、AHC延長戦で1位を獲得したsaitodevel01氏の解法を再現しようとした。しかし、提出コードは高度に圧縮されており、以下の技術的課題に直面した。
- ・学習方針の不明: 模倣学習か強化学習か、学習の枠組みが判別不能。
- ・データ生成の未知性: 教師データの収集方法や、探索の質が不明。
- ・デプロイの制約: 512KiBという厳しい提出サイズ制限内で、NNモデルを動作させる必要がある。
// Approach
筆者は、未知の学習プロセスを補完するために、以下の手法を採用した。
- ・高品質な教師データの生成: 提出時の100倍の計算時間をかけた焼きなまし法で、教師行動列を作成。
- ・Score-weighted loss: 2本の教師に対し、スコアに応じた重み付けを行い、ビームサーチに適した多様性を確保。
- ・C++へのモデル埋め込み: PyTorchのAOTI packageとbase94圧縮を用い、サイズ制限内で高速な推論を実現。
- ・AWSによるスケーリング: AWS BatchとSpot Instanceを活用し、65,536件の膨大なデータを並列生成。
// Result
筆者は、独自の学習・実装プロセスを通じて、以下の成果を得た。
- ・1位の奪還: ビーム幅を縮小し後処理を省いた構成ながら、saitodevel01氏を5,823ポイント上回るスコアを記録。
- ・手法の証明: 「遅いが強い」探索アルゴリズムを、NNを用いることで実行時間制限内で高精度に再現可能であることを示した。
- ・再現性の確立: データ生成からC++提出コード生成までの一連のパイプラインを構築した。
Senior Engineer Insight
> 本件は「計算資源を投下してオフラインで最強の解を作り、それをオンラインの推論モデルへ蒸留する」という、実戦的な最適化の極致である。スケーラビリティの観点では、AWS Batchによる並列化が鍵となるが、コスト管理と再開可能な設計が不可欠だ。単なる精度向上ではなく、実行時間制限というシビアな制約下での「モデルの圧縮とデプロイ」までを設計に含めている点が、極めて実践的である。