TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その7

前回、dlshogiの最新モデルで、自己対局して生成した教師データを、同じモデルで推論した結果に付け替えることで、モデルサイズによらず精度が上がる傾向があることを確かめた。今回は、dlshogiの最新モデルではなく、既存の教師データを使い、そのデータを…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その6

前回、dlshogiのモデルの自己対局で生成した教師データの方策、価値、勝敗を、同一モデルで推論した結果に付け替えた場合、精度が上がることを観測した。 自己対局で探索した教師データより、探索なしで推論した結果の方が精度が上がるのは予想外の結果だっ…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その5

前回、NNUE系のtanuki-で生成した教師データを使用して、dlshogiのモデルで方策と評価値、勝敗を付け替えた場合に、dlshogiの推論結果で付け替えた方が精度が上がることが確認できた。今回は、dlshogiの最新モデルの自己対局で生成したデータに対して、同一…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その4

前回、NNUE系で生成した教師データの方策と評価値に加えて、勝敗もdlshogiのモデルで推論した結果に付け替えた方が精度が上がることを確かめた。前回までは、2020年にNNUE系で生成した教師データを使用したが、nodchip氏が公開している最近のNNUEで生成した…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その3

前回、NNUE系で生成した教師データの方策と評価値をdlshogiのモデルで推論した結果に付け替えることで、方策と評価値ともに精度が上がることを確認した。今回は、学習の損失の勝敗項についても、モデルで推論した価値に付け替えることで、精度が上がるか試し…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える その2

前回、NNUE系で生成した教師データの評価値をdlshogiのモデルで推論した評価値に付け替えることを試した。今回は、方策についてもモデルの推論結果に付け替えることを検討する。 方策の付け替え NNUE系で生成した教師データは、最善手のみが記録されているが…

【dlshogi】軽量価値ネットワーク その2(Stockfishの探索)

前回試した軽量価値ネットワークをStockfishの探索に組み込むことを検討している。 最終的には、dlshogiのMCTSベースの探索とStockfishベースの探索を組み合わせることを構想しているが、まずは、単体で動作するStockfishベースのプログラムを作りたい。 実…

【dlshogi】軽量価値ネットワーク

NNUEとは別のアーキテクチャで軽量の価値ネットワークを学習して、Stockfish系のヒューリスティック探索と組み合わせられないか検討したいと思っている。 軽量の畳み込みニューラルネットワークを使うことで、NNUEに匹敵する軽量モデルを学習することを目指…

【dlshogi】dlshogiモデルでNNUEの評価値を付け替える

nodchip氏が、NNUEで生成した教師データの評価値をDL系モデルで推論した評価値に付け替えると、レーティングが大幅に向上したという実験結果を報告している。tanuki- 2024-12-25 学習データの評価値を DL 水匠で付けなおす - nodchipのコンピューター将棋ブ…

【dlshogi】入玉特徴量 その4(再計測)

前回、入玉特徴量を加えることで、入玉特徴量なしと比較して弱くなると書いたが、入玉特徴量なしのモデルの学習条件が異なっていたいので、計測をやり直した。 前回 強さ計測に使用したモデルが、学習率スケジューラが同じ条件になっていなかった。 再計測結…

【秀丸マクロ】HomeキーでVisual Studio風に行頭移動する

個人的なメモ4Kディスプレイに変えたところ、長年愛用しているxyzzyが高解像度モードに対応していないので、秀丸エディタに乗り換えを検討している。 秀丸エディタには、Homeキーの動作をVisual Studio風にするオプションがないので、マクロで対応する必要が…

【dlshogi】自動生成された定跡を強化学習に活用する

将棋AIの大会では、2年ほど前から定跡により勝敗が高い確率で決まるという状況になっている。相手の準備していない定跡で嵌めたり、相手が準備した定跡に嵌らないようにするという盤外の戦術が必要になっており、AIの技術的な要素とは別の戦いになっている。…

【dlshogi】入玉特徴量 その3

前回、入玉宣言に関する特徴量を加えたモデルの強さを測定したが、入玉宣言勝ちした棋譜がなく入玉の精度が測定できていなかった。NNUE系を相手にして連続対局を行い測定しなおした。 強さ NNUE系を相手に互角局面から連続対局を行った結果は以下の通り。 NN…

【dlshogi】入玉特徴量 その2

前回は、入玉宣言に関する入力特徴量を追加して、入玉宣言した棋譜に対する評価精度が向上することを確認した。今回は、入力特徴量の宣言までの残り点数を前回10点未満にしたところを、20点未満にした場合で比較した。 また、入力特徴量を増やしたことでNPS…

【dlshogi】入玉特徴量

現在のdlshogiの入力特徴量には、入玉宣言に関連する特徴量を含んでいない。 入玉宣言の精度を上げるため、入玉宣言に関する特徴量を加えることを検討する。 現在の入力特徴量 現在の入力特徴量: 盤上の駒 駒の種類ごとの効き 効き数 持ち駒 王手 持ち駒は…

第5回世界将棋AI電竜戦 結果報告

11/30、12/1に開催された文部科学大臣杯第5回世界将棋AI電竜戦にdlshogiとして参加しました。 結果 予選を1位で通過し、決勝リーグでは、1位と0.8勝差で準優勝という結果になりました。dlshogiは、第2回から4年連続準優勝です。 今大会の感想 優勝した氷彗が…

Gumbel AlphaZeroの論文を読む その4

前回の続き 探索の内部処理 探索の処理は、searchに書かれている。 引数 params: ルートおよび再帰関数に渡されるパラメータ。 rng_key: 乱数生成器の状態。 root: ルートノードの初期状態で、事前確率、価値、埋め込みを含む。 recurrent_fn: 葉ノードおよ…

Gumbel AlphaZeroの論文を読む その3

前回に続き、examples/visualization_demo.py のソースを解説する。 探索 探索の処理は、gumbel_muzero_policyに書かれている。引数は、以下の通り。 params: ルートおよび再帰関数に渡されるパラメータ。 rng_key: 乱数生成器の状態。 root: (prior_logits,…

Gumbel AlphaZeroの論文を読む その2

前回、Gumbel AlphaZeroの論文の概要と、公式実装の環境構築について記載した。今回は、公式実装のサンプルプログラム examples/visualization_demo.py のソースを調べながらGumbel AlphaZeroのアルゴリズムを理解する。 visualization_demo.pyの概要 visual…

Gumbel AlphaZeroの論文を読む

dlshogiにGumbel AlphaZeroの強化学習を導入したいと思って、Gumbel AlphaZeroの論文を読んでいるが、理論がなかなか難しいため公式実装を確認しながら理解する。 Gumbel AlphaZero AlphaZeroの強化学習は、自己対局でUCTで探索した際の訪問回数を目標の確率…

【dlshogi】方策のみで指した場合のfloodgateでのレーティング

前回、dlshogiの最新モデルで方策のみで連続対局した場合の強さを測定した。 結果、第2回世界将棋AI電竜戦エキシビジョンバージョンと比べて方策がR+395.1だけ強くなっていることわかった。今回は、floodgateに放流して、レーティングを測定した。 測定条件 …

【dlshogi】最新モデルが公開バージョンからどれくらい強くなっているか

前回書いた通り、方策の強さを手軽に測定できるようになったので、公開している第2回世界将棋AI電竜戦エキシビジョンバージョンから最新モデルがどれくらい強くなっているか測定した。以前に、WCSC32版dlshogiと探索ありで比較したときは、互角局面集を使用…

【dlshogi】ラージカーネル+TransformerモデルのPolicy Elo

先日学習したラージカーネル+Transformerモデルの方策のみの強さ(Policy Elo)を測定した。これまで、同一持ち時間や固定ノード数で計測も行ったが、方策のみの連続対局を行うことで、短時間で直接方策の強さを測ることができる。floodgateのテストデータでの…

【読書ノート】Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems

「Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems」を読んだので内容をまとめる。以下の内容は、ほとんどClaude3.5 Sonnet v2を使用して作成している。この書籍は、ソフトウェアやハードウェアの…

【dlshogi】ラージカーネル+Transformerモデルの学習

以前に検証したラージカーネルのモデルにTransformerを組み合わせたモデルの学習を行った。実験段階では20ブロック256フィルタのモデルを使用したが、今回は11月末に行われる電竜戦向けに40ブロック512フィルタのモデルを学習した。 モデル構造 20ブロック25…

Rectified Flowで画像生成する その4(CIFAR-10とFID)

前回まではMNISTデータセットでRectified Flowを学習したが、今回はCIFAR-10データセットで学習する。 後で、Stable Diffusion 3で使われている時刻サンプラーの効果を測りたいため、基準としてFIDを計測する。 CIFAR-10 CIFAR-10は、10クラスの32x32のカラ…

Rectified Flowで画像生成する その3(テキスト条件付け)

前回、Rectified Flowをスクラッチで実装してMNISTデータセットの学習を試した。 画像生成は条件を指定しないで生成していたため、0から9の文字がランダムに出力されていた。今回は、0から9を表す1文字を条件として与えて、条件付けされた画像が生成できるか…

Rectified Flowで画像生成する その2(スクラッチ実装でMNISTを学習)

前回、Rectified Flowの公式実装で、CIFAR10の学習を試した。今回は、公式実装を参考に、基本的な部分のみをスクラッチで実装して、MNISTデータセットの学習を試す。 実装の全体像 実装は、以下の3つパートに分かれる。1. Conditional U-Netの実装 2. Rectif…

Rectified Flowで画像生成する

画像生成モデルは、Stable Diffusionが出てきた頃は、Diffusionモデルが主流であったが、最近のStable Diffusion 3やFlux.1では、Flow Machingのモデルが使用されている。Flow Machingにもいくつかの訓練方法がある。 Rectified Flowは比較的シンプルでスケ…

【Tips】ChatGPT 4oで日本語の数式を含む文書画像をOCRしてMarkdownで出力する

ChatGPTに日本語を含むの画像を添付して、例えば「画像からテキストを抽出し、Markdown形式で出力」のような指示でテキスト化しようとすると、 It seems that the required Japanese language data for optical character recognition (OCR) is not availabl…