数学
ポエム
ゲーム制作

[ポエム][書きかけ] ゲームプログラマーに要る数学とはどれぐらいか?

コンピューター将棋に限って言うと、高校に入学する程度で十分と言われている。
微分とか出てくる数学が必要なのは 機械学習のせい なんで。機械学習を使わないなら

  • (1) 四則演算
  • (2) パーセント
  • (3) プラスマイナス
  • (4) 割った余り
  • (5) AND、OR、XOR論理演算
  • (6) 乱数

だけ使えれば コンピューター将棋は いける気がする。 書いていて、だんだん増えてきた。まだ出てくるかもしれない。

じゃあ、機械学習は数学なんか持ち込んで何てことをしてくれたんだ、というと
パラメーター調整 のひとことに尽きる。

じゃあ むずかしい数学って何なのかというと

  • (A) 微分 ……各駅停車で池袋まで行ける感じ
  • (B) 偏微分 ……練馬で乗り換えて池袋まで行ける感じ
  • (C) 線形/連立一次方程式/行列演算 ……じゃあ俺練馬まで行くんでお前は池袋まで行ってくれ
  • (D) 正規分布 ……野球部の中にサッカー部員がいればそいつの特技はサッカー
  • (E) 関連 ……みんなが傘を差していたのは雨が降っていたからに違いない
  • (F) 誤差逆伝搬法 ……雨が降っているのに傘を差さなくていいんですか
  • (G) 勾配 ……じゃあ、傘を差そうぜ
  • (H) 学習 ……雨が降っていたら、傘を差した

うんぬん 全部 パラーメーターを調整 したいだけ。 面白くなってきた。

パラメーター調整したいわけじゃなければ これら全部要らないんじゃないか。

機械学習以前

逆に 機械学習以前のコンピューター将棋は何やっていたんだ、というと
データの容量圧縮、盤面の採点、詰め検索、読み探索、プログラムの自己生成、稲庭などの作戦のプログラム、対稲庭作戦などのプログラム、など パラメーターを調整すること以外にもやってみれることは山ほどある。 ハードウェアが非力、借りれる800台のマシンとかない だった時代背景もあるだろう。

今だと 最高の評価関数があってその通りに指して勝てるのなら パラメーターだけ考えればいいのでは という発想もある。 あと クラスタ

四則演算

飛車取った1000点、
飛車と王様が近くにいて飛車が取られる危険がある、-100点、

といった具合に 人間が採点を決めていたり、

パーセント

盤面を覚えさせて、ここでは こっちの手を指すことが 30% ぐらい、とか入れておく定跡を用意しておく。

プラスマイナス

自分の点数を 100点 と思っていれば、 相手は -100点 だと思っているはずで、
プラス・マイナスが どっちだっけ、と考えるのはつらいので 手番視点 という考え方がある。

これから指す側から見た点数しか無い、みたいな。 待たされている方には頭に マイナス を付けてやればいい。

割った余り

10を3で割ると、3余り1 なので、割った余りは 1 だ。これをかっこよく言うと 剰余(じょうよ) という。 mod とか % の記号を剰余に当てている。

何に使うのかというと 将棋盤は ヨコ タテ 9×9 の81マスなんだが、

右上のマスを0番として縦書き読みすると、40番目はどこなのか? というとき、

(40÷タテ9) mod タテ9 = 4余り4

4列目の4行……、ここで 0オリジン(=数字が0から始まっている)ので
将棋盤風に言い直すと 5筋の5段目 と出てくる。

AND、OR、XOR論理演算

AND、OR はよく使うから説明省略。

XOR なんか何につかうのか。というと 局面ハッシュ に使う。

盤面を覚えておこうと思うと、81マスに 8種類、成りも含めりゃ15種類の駒があって、持ち駒も手番もあるので データがでかくなる。

これを int型1個で持とうぜ、 という手法がハッシュ。
理屈としては 宝くじの番号を作って渡すんで、めったに被らないからいいだろ という理屈。
XOR を使うとそれができる。ゾブリスト・ハッシュをググってくれ。

//書きかけ