Pythonで利用できるリバーシのライブラリを作りました

現在、技術書典16に向けて、リバーシを強化学習で攻略する内容の本を書いています。自分自身は、普段からゲームAIをC#やC++で実装しているのですが、現在執筆中の本では、人口が多く、比較的行数が少なくなりがちなPythonを利用しています。しかしながら、8x…

C#で自作のディープラーニングフレームワークを作る その3(Softmax層の実装)

Softmax層 Softmax関数を計算する層です。出力層でよく用いられる活性化関数の一種ですが、少し特殊なため前回は実装しませんでした。 今まで実装した活性化関数(sigmoid, tanh, ReLU)は、変数を1つ受け取って1つの値を出力する関数でした。対して、Softmax…

C#で自作のディープラーニングフレームワークを作る その2(活性化層の実装)

活性化層 今回は、活性化関数に相当する活性化層を実装します。ただし、Softmax関数に関しては少し特殊なので次回に。 活性化層のインターフェース 活性化層は、基本的に行列を入力して、入力行列と同じ大きさの行列が出力されます。前回と同様、出力先を呼…

Apple Silicon上でMath.NETを使う(OpenBLASの利用)

はじめに 色々あって、M1チップ搭載のMacBook Airを手に入れました。 自分自身、WIndows上で数値計算にC# + Math.NETを用いているので、Macでも同様にMath.NETを使って書いたコードを動かせるようにしました。 しかしながら、なぜかMath.NETのManagedコード*…

C#で自作のディープラーニングフレームワークを作る その1(算術層の実装)

動機 1年半ほど前に、配属された研究室から、 「ゼロから作るDeep Learning―Pythonで学ぶディープラーニングの理論と実装」を貸与されました。しかしながら、卒業研究ではディープラーニングを使わなかったので特に読んでいませんでした。そこで、ゆっくりと…

技術書典16に申し込みます

技術書典16にサークルで申し込みをします 見出しの通りです。「マジックタンノリターンズ~タンノはオロチを倒せない~」というサークル名で 技術書典16に申し込みます。以下がサークルの公式Twitterアカウントです。 Tweets by magic_tanno_rtn twitter.com …

C#でtemplateっぽいことをしてみたかった話

きっかけ 今、研究でゲームAIをC#で書いているのですが、「相手がパスした後に呼び出されるメソッド」と「相手が通常の着手を行った後に呼び出されるメソッド」が必要になる場面がありました。しかし、これらの2つのメソッドは一部分だけが異なり、残りは概…

技術書典15に申し込みます

技術書典15にサークルで申し込みをします 見出しの通りです。「マジックタンノリターンズ~タンノはもはやユビキタス~」というサークル名で 技術書典15に申し込みます。以下がサークルの公式Twitterアカウントです。 Tweets by magic_tanno_rtn twitter.com …

技術書典14に申し込みます

技術書典14にサークルで申し込みをします 見出しの通りです。「マジックタンノリターンズ~タンノはもうメイドじゃない!!~」というサークル名で 技術書典14に申し込みます。以下がサークルの公式Twitterアカウントです(まだ作ったばかり)。 twitter.com メン…

C#で行列と列ベクトルの加算を実装した話

概要 ブロードキャストとは ブロードキャストの使いどころ Math.NETにブロードキャストが見当たらない 自力で実装 実行速度 測定方法 マシンスペック NumPyの情報 測定結果 まとめ 付録 C#のベンチマークコード Pythonのベンチマークコード 概要 C# + Math.N…

自作リバーシAI Kalmiaの仕組み

目次 目次 はじめに 本記事の構成 モンテカルロ木探索 UCB1方策 UCT 選択フェーズ シミュレーションフェーズ バックアップフェーズ 展開フェーズ パターンの重み付き線形和を用いた評価関数 評価関数の最適化 Kalmiaの仕組みへ KalmiaのMCTS シミュレーショ…