休み取って、オンライン開催に参加しました。
88888で拍手して欲しいとのこと。はちはちはち=パチパチパチってことね。
Keynote
2017年に機械学習を勉強し始めて、その年に将棋電王トーナメントで準優勝された方。
実験系の出身で、最近は数値流体計算や化学反応のシミュレーションの研究者とのこと。
そういう下地はあるとはいえ、夢ありますよね。
機械学習については、古典的機械学習は飛ばして、ディープラーニングから勉強し始めたそう。
ディープラーニングについても感想も私のようなど素人と同じで、ブラックボックスという印象。
実行するだけで誰でも素晴らしい結果が出せる。
実践してみようということで、前例の無いデータでやろうと言うことで将棋で機械学習をやってみようとされたとのこと。
将棋のデータ構造にもいくつかあり、しかもこれについてもGithubにデータ構造を扱えるPythonのライブラリpython-shogiが用意されている。
多くの開発者が、自己対戦で何百戦と戦うという高負荷な処理をやっていた。これアルファ碁がそうでしたからね。
これに対して、一戦一戦の敗戦をチェックして、小さく局所的最適化の手法を取ったそうです。
相手の持ち時間の時に相手の指し手を仮読みを複数行ったとのこと。
多くの人が自己対戦しかやっていないので、クロスカウンターする攻撃的な作戦を、と。
優勝するだけでなく、黒字というのもすごい。大会ではAWSのハイパフォーマンスハードウェアであるものの、Asus+RyzenのPCとのこと。
クラスタ部をGoで書き換えてノンブロッキングIO化されたということ。
これほどの人でも、まとめとしては
- とりあえず、やってみる
- 出来たものを出してみる
ただし、客観的にデータを集めて、無駄を減らす、とのこと。
今後は2020年の電竜戦。
参加者、スポンサーを募集中。
AWSのハードより、高性能なTR3990Xが欲しいとのこと。
Python 3.10 時代の型安全な Python の極め方
Python 3.9から新しい書き方が出来るようになる。
Python 3.10からはintもしくはfloatを引数に取れるとして以下のような書き方ができるようになる。
とはいえ、3.10は来年なので、まだこれから。
def half(num:int | float) -> float: return num / 2.0
型チェックの方法としてmypyがある。CIで回しているが、バージョンを固定しないと突然動かなくなる。
ただし、ライブラリに型ヒントがないとエラーになってしまう。