Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

「C# ドキドキ ライブ コーディング!!」 小島の分

BuriKaigi 2021
https://toyama-eng.connpass.com/event/198500/
2021年1月30日

  • Be the first to comment

  • Be the first to like this

「C# ドキドキ ライブ コーディング!!」 小島の分

  1. 1. C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ BuriKaigi 2021 @ Online 30th January 2021 Fujio Kojima #BuriKaigi
  2. 2. 自己紹介 2
  3. 3. 今回はリバーシ 3
  4. 4. 今回の戦略 4
  5. 5. 普通にアルゴリズム作って AI 作成(); 5 アルファ・ベータ法 - Wikipedia
  6. 6. alpha-beta法 (negamax法) 6
  7. 7. alpha-beta法 (negamax法) 7 static int AlphaBetaEvaluate(Reversi reversi, int depth, int alpha, int beta, Func<Reversi, int> evaluate) { if (reversi.GetPieceCount(Reversi.Piece.None) == 0 || depth <= 0) return evaluate(reversi); var movables = reversi.GetTakePointList(); if (movables.Count == 0) { var localReversi = GetClone(reversi); localReversi.Pass(); return -AlphaBetaEvaluate( localReversi, depth - 1, -beta, -alpha, evaluate); } var scoreMax = int.MinValue; foreach (var move in movables) { var localReversi = GetClone(reversi); localReversi.SetPiece(move); var score = -AlphaBetaEvaluate( localReversi, depth - 1, -beta, -alpha, evaluate); if (score >= beta) return score; if (score > scoreMax) { scoreMax = score; alpha = Math.Max(alpha, scoreMax); } } return scoreMax; }
  8. 8. 係数 • 係数 評価関数 8 static int Evaluate(Reversi reversi) => reversi.GetTakePointList().Count + FixedPieceCount(reversi) * FixedPieceCountRate;
  9. 9. ReversiRunner の作成 9
  10. 10. ReversiRunner 10
  11. 11. ReversiRunner 11
  12. 12. 自作 AI の検証 12
  13. 13. • 5万回対戦 = 約300万局面 局面データの作成 13 1000対戦ごとに CSV ファイルに
  14. 14. Azure Machine Learning 14
  15. 15. Azure Machine Learning 15
  16. 16. Azure Machine Leaning 16
  17. 17. Azure Machine Leaning 17
  18. 18. Azure Machine Leaning 18
  19. 19. Azure Machine Leaning 19
  20. 20. Azure Machine Leaning 20
  21. 21. Azure Machine Leaning 21
  22. 22. Azure Machine Leaning 22
  23. 23. Azure Machine Leaning 23
  24. 24. 自分の AI から呼ぶ 24 ReversiRunner での データ作成に戻って繰り返す
  25. 25. 学習1回目 25 まだまだ弱いが、 何度も繰り返すことで 強くなるはず!
  26. 26. 学習2回目以降… 26
  27. 27. 今回の戦略 27
  28. 28. 今回の戦略と敗因 28 機械学習の API コールが 遅くてデータ作成に時間が かかりすぎた 本番まで繰り返してる 余裕がない…
  29. 29. 今回の Azure 課金 29

×