nodchipのコンピューター将棋ブログ

コンピューター将棋ソフト「tanuki-」シリーズの実験結果を掲載しています。

将棋AI tanuki- 2026-09-11 13:55 日本標準時 共通の駒特徴を追加した継続学習 追加学習前後の比較(長時間対局試験・採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの評価モデル、候補 (candidate) は今回評価するモデルです。追加学習とは、既存モデルの学習済みの重み (学習で調整された内部の数値) を出発点にして、さらに学習を続けることです。入玉局面とは王が相手陣へ入った局面、通常局面とはそれ以外の局面です。教師AIとは、学習時の答えとなる評価値を作るために使った別の将棋AIです。教師信号とは、その教師AIが各局面に付け、学習時の正解として使う評価値です。

要約

  • 今回評価した変更に関する実験前の予想: 採用中のモデルの重みを引き継ぎ、玉の位置が異なる入力の間で共通の駒特徴を共有して追加学習すると、追加学習前より強くなると予想しました。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補採用でした。
  • 測定段階: 長時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 既存の重みを引き継ぐ追加学習でも、共通の駒特徴を使う学習方式は改善につながるでしょうか。
  • 実験前の予想: 特徴の因子分解を明示的に有効にして追加学習した候補は、追加学習前の採用モデルより強くなると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 特徴の因子分解は、玉の位置ごとの入力に加えて共通の駒情報にも重みを持たせる学習方法です。補助重みをゼロで追加して初期評価を保ち、書き出し時は通常の重みへ足し合わせます。学習プログラムTataraの既存機能を、明示指定した継続学習でも利用できるようにしました。
  • 用語補足: 学習局面の構成とは、学習データにどのような局面がどの程度含まれるかという傾向です。これは教師AIが付けた評価値の数値分布とは異なります。
  • 事前成功条件: 2局の動作確認を完了し、短時間対局と長時間対局の両方で事前に固定した合格境界へ到達することです。

今回の変更

次の表は、今回の実験で行った変更です。 今回の候補の学習では、40,003,174,400局面を処理し、重みを2,441,600回更新しました。初期重みの選び方と対戦相手との関係は、考察の観測事実・解釈で説明します。学習を行ったという記録だけから、現在の比較基準への追加学習とは判断しません。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 52b4fdd1354073545bb19aac0ecd8e088e177b4f 8b40493ccc5b0f22afea1fa6b951d183b87b3ea5 既存の共通特徴を利用する学習方式を継続学習でも明示指定できるようにし、同じ対局エンジンで追加学習前後のモデルを比較しました。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 運用者が既存の学習設定一覧に登録した入力を継続使用しました。今回新しく局面を選別したデータではありません。設定と入力の同一性は運用側の記録で照合しています。
  • 前処理: 将棋局面と教師評価値を格納する固定形式で読み込む
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 8,000,049,489 / 40,003,174,400
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 1段階の学習。初期重みと変更内容は考察の観測事実・解釈を参照
  • 学習段階数: 1 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): NVIDIA GeForce RTX 4090
  • 実際に学習へ使った局面数 / 重みを更新した回数: 40,003,174,400 / 2,441,600
  • 実行時間: 2026-09-10 16:46:09 日本標準時 → 2026-09-10 21:20:16 日本標準時 (約4時間34分7秒)
  • 学習状態の用語: 最適化手法 (optimizer) は、誤差を小さくするようにモデル内部の数値を更新する計算方法です。Rangerのlookaheadは、その更新を安定させるためにoptimizer内部で保持する状態であり、将棋の指し手を読む深さではありません。累計更新回数 (global step) は学習開始から重みを更新した総回数、学習率の変更規則 (LR schedule) は更新幅を学習中にどう変えるかを定めた規則です。

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ128 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 採用
  • 判定理由: 長時間対局試験のLLR 2.92749 が、事前に定めた通過上限 2.89037 に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 通過 31936 15466 1431 15039 現在値 2.97657 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 通過 11832 5547 1039 5246 現在値 2.92749 / 不採用境界 -2.25129 / 合格境界 2.89037 131072

追加の統計値

指標 値または掲載しない理由
推定Elo この逐次判定は0 Eloと+4 Eloのどちらが結果に合うかだけを判定し、Eloを一つの推定値として計算しないため掲載なし
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

学習誤差 (loss)

学習誤差 (loss) は、AIの予測と教師データに記録された答えのずれを表す値です。同じ定義と条件で比べる場合は、小さいほど教師データへよく合っています。

学習損失・ステップ別

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 84184553507b16b1e504aba50bdf14aace530066785d2efc1e627b870589e06b

考察

観測事実

  • 採用中だった評価モデルの重みを引き継ぎ、学習時だけ共通の駒特徴を追加する方式を明示的に有効にして、一段階の追加学習を完了しました。重みは局面の評価を調整するモデル内部の数値です。ここでの共通の駒特徴は、玉の位置が異なる入力の間でも同じ駒の情報を共有して学ぶための補助的な項目です。この方式を特徴の因子分解と呼びます。 tanuki- は末尾のハイフンまで含む将棋AIの固有名で、思考エンジンと評価モデルを組み合わせた全体を指します。Tataraは評価モデルを作る学習プログラムです。この記事では追加学習と継続学習を同じ意味で使い、新規学習は既存モデルの重みを継承せずに始める学習を指します。 — 根拠: 実験計画、使用ソースコードの記録、学習完了記録
  • 学習プログラムTataraには、新規学習向けに特徴の因子分解が既にありました。今回は、対局用に保存された重みを読み込む継続学習でも、明示指定した場合に使えるよう変更しました。追加する補助重みはゼロから始め、学習開始時点の評価を保ちます。対局用モデルを書き出す際は補助重みを通常の重みに足し合わせるため、対局エンジンのモデル形式は変えません。既定の継続学習動作は従来どおりです。 通常の特徴は、たとえば玉の位置と盤上の銀の位置・所属側との組み合わせを区別します。共通の駒特徴は、玉の位置が違っても同じ銀の位置・所属側について共有できる補助情報です。書き出しとは学習後の重みを対局用ファイルへ保存する処理で、補助重みを通常の重みに足し合わせることで、ファイル内の数値の並び方や読み取り規則を変えずに済みます。この特徴共有と重みの合成は既存手法であり、StockfishのNNUE学習資料(参照先URL: https://official-stockfish.github.io/docs/nnue-pytorch-wiki/docs/features.html )にも説明があります。 — 根拠: 実験計画、使用ソースコードの記録
  • 既存の同じ学習データを使用し、今回は教師評価値を新しく生成していません。教師評価値とは学習で目標とする局面の評価値です。データの由来について運用者から複数の教師評価値の相加平均と説明されていますが、今回その生成処理を再実行して検証したわけではありません。相加平均は値の合計を個数で割る計算です。 一般説明の「教師AI」は役割の呼び名です。運用者の説明は複数の教師評価値を平均したデータを指しますが、今回の記事では教師の個数を独立に確認した数値として記載していません。 — 根拠: 実験計画、学習完了記録
  • 初期学習率は0.00004375とし、400の学習区間、計2,441,600回の重み更新を完了しました。学習率は一回の更新で重みを動かす幅に関わる設定です。各区間で学習率を0.992倍にする規則を維持しました。重みだけを継承し、最適化手法の内部状態、更新を安定させるlookaheadの状態、累計更新回数、学習率変更の進行位置は初期化しました。学習損失は400点記録されています。 GPUは多数の数値計算を並行して行う装置で、今回は重みと誤差の計算に使いました。Rangerは最適化手法の名前で、そのlookaheadは更新後の重みと別に保持する重みを一定間隔で近づけ、更新を安定させる仕組みです。400の学習区間はそれぞれ6,104回の重み更新をまとめた単位で、区間ごとに学習率を変更し、損失を1点記録したため400点あります。処理した延べ局面数は入力レコード数の約5倍で、同じデータを繰り返し利用しています。異なる局面が400億個あるという意味ではありません。学習乱数は、局面を読む順序など学習中のランダムな選択に使う数値です。教師生成時の探索量とは、教師AIが答えを作る際にどれだけ先の局面を調べたかを指します。 — 根拠: 実験計画、学習完了記録
  • 短時間対局は15,466勝・1,431引き分け・15,039敗、計31,936局で合格しました。統計的な判定値であるLLRは2.97657となり、事前に固定した合格境界2.89037を超えました。 — 根拠: 短時間対局試験の結果
  • 長時間対局も5,547勝・1,039引き分け・5,246敗、計11,832局で合格しました。LLRは2.92749となり、同じ合格境界2.89037を超えました。 — 根拠: 長時間対局試験の結果
  • 短時間・長時間の両試験で採用条件を満たしたため、追加学習後のモデルを新しい採用モデルにしました。両試験の対戦相手は追加学習前の採用モデルで、対局エンジンの探索処理は両側で同じです。 — 根拠: 短時間対局試験の結果、長時間対局試験の結果、採用判定記録
  • 比較相手は実験開始時の採用モデル、候補はその重みから追加学習したモデルです。異なるのは評価モデルの重みと、それを学習するためのTataraの版です。対局中の探索処理は両側とも同じtanuki-のソースコード3503dc5736ea5ae425602a75c70cc9b3df21f573を使いました。やねうら王はtanuki-の基になった公開将棋思考エンジンです。今回の「やねうら王に実装された24点法」はルールの実装を指し、最新のやねうら王と対局したという意味ではありません。ソースコード版の英数字40文字は、Gitという変更履歴管理の仕組みで一つの版を特定するコミット識別子です。 — 根拠: 実験計画、使用ソースコードの記録、学習完了記録
  • 2局の動作確認では、エンジンが起動して所定の動作検査を通り、実際の対局が終了することを確認しました。この2局の勝敗は強さの採否には使いません。短時間試験は初期持ち時間8秒・1手ごと0.08秒加算、長時間試験は初期40秒・1手ごと0.4秒加算というサーバー上の設定です。実際の時間は対局用の固定プログラムが計算速度の測定値に応じて補正します。両試験で同じ非公開の開始局面集を使います。開始局面集は対局を始める盤面の一覧で、通常の初期配置以外からも対局を始めるためのものです。 公開記録のmethods.rating.time_controlという単一の値40.0+0.4は、最終測定段階である長時間試験を表します。短時間試験の持ち時間は本文の「観測事実」にのみ記載しており、report-fields-v3.jsonの対局時間欄には含まれません。 — 根拠: 実験計画、短時間対局試験の結果、長時間対局試験の結果
  • SPRTは結果が増えるたびに判定する統計手法です。LLRは、観測結果が改善仮説の下で生じる確率を同等仮説の下で生じる確率と比べ、その比の対数を取った数値です。この「ある仮説なら観測結果がどの程度起こりやすいか」が尤度です。LLRが合格境界を越えたら改善仮説を支持する証拠が十分として通過させます。境界は誤採用率の設定alpha=0.05と誤不採用率の設定beta=0.1から定まり、今回は上限約2.89037・下限約−2.25129です。Eloは強さの差を点数で表す尺度で、標準的な換算では+4点は勝ち1点・引き分け0.5点とした期待得点率約50.58%に相当する小さな差です。これは今回測定したElo値ではなく、判定用仮説の説明です。 — 根拠: 実験計画、短時間対局試験の結果、長時間対局試験の結果
  • 内部設定名のThreadsは対局の並行計算数で1、Hashは探索結果を保存して再利用するメモリ容量、CSARule24は今回の24点法のルール指定です。学習設定のthreads=16はデータを読む側の並行処理数であり、対局側のThreads=1とは別です。ft-factorizeは今回の特徴の因子分解、ft-outは入力特徴を変換する層の出力数、l1/l2は続く層の出力数です。bucket-mode=progress8kpabsは局面の進み具合で8組の計算部分を使い分ける既定の方式を選ぶ内部名です。wrm-nnue2scoreは勝率に基づく学習でモデル出力を評価点へ換算する倍率です。これらのうち今回明示的に変えた設定は付録の変更欄に記録しました。 — 根拠: 実験計画、使用ソースコードの記録
  • 公開監査とは、記載した方法、勝敗、判定境界、公開ソースコードの版の整合性を読者が確認することです。非公開データの中身を公開しているという意味ではありません。JSONは項目名と値を組にして記録するコンピューター向けの形式です。付録のlayerstackは層を積み重ねるモデル構成、goal-rating-policy-v3は固定対局規則の第3版、canonical-yaneuraou-csarule24-v1は24点法のルール識別名です。promoteは採用、ltc_native_passは長時間試験が通常の統計判定で合格したこと、public_outcome_labelは公開用の採否ラベル、reason_codeは判定理由の内部コード、evidence_catalogは根拠となる記録の一覧です。locally_exact_verifiedは運用側が記録の同一性を照合済み、private_not_publishedは非公開で掲載しないという意味です。 — 根拠: 実験計画、使用ソースコードの記録、学習完了記録

解釈

  • 共通の駒特徴を学習時に追加した今回の継続学習は、固定条件で追加学習前のモデルを上回る採用基準を満たしました。この特徴共有の考え方自体は既存手法であり、新しい方式の発明を示すものではありません。 この解釈が誤りだと分かる条件 (反証条件): 別の学習乱数による追試や、同じ追加学習で特徴の因子分解だけを無効にした候補との直接比較で改善が得られなければ、この方式の効果に関する解釈を見直します。

実験前の予想に対する判定: 支持。今回の結果が実験前の予想を支持したことを表します。

限界

  • 測定範囲: 対照モデルには追加学習を行っていません。測定したのは、特徴の因子分解、指定した学習率、学習量、状態初期化を組み合わせた追加学習全体の効果です。特徴の因子分解を使わず同じ条件で追加学習した候補との直接対局ではないため、この機能だけの効果を分離した結果ではありません。 — 根拠: 実験計画、学習完了記録、短時間対局試験の結果、長時間対局試験の結果
  • 他の条件への適用可能性: 追加学習は一回だけです。別の学習乱数、初期モデル、対局条件で同じ改善が得られるとは限りません。入玉局面だけの成績や、学習データ生成時の探索量は今回独立に検証していません。 — 根拠: 学習完了記録、短時間対局試験の結果、長時間対局試験の結果
  • 測定範囲: 開始局面、学習データ、評価モデルは非公開のため、記事だけで計算全体を再現することはできません。公開するのは方法、観測値、採否を確認するための情報です。 — 根拠: 実験計画、学習完了記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-e0c10e9c03ea4a2394ec1a2a9893068a
  • 非公開の監査用記録のSHA-256: b250ceb98413e1343c9d71b292d30004d1d939899c5200839dd79d9e8ed3b713
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: 09c6b6e5e84a48d75174bb53da589b95c73628b9cf2277123bb9abbb775f9beb

次の実験

  • 仮説: 最新のやねうら王の探索処理と採用中の探索処理を、同じ評価モデル、2スレッド、1手1秒で比較すると、現在の固定試験とは異なる強さの差が現れる可能性があります。スレッド数は並行して計算する処理の数です。
  • 変更: 運用者の優先提案に従い、この条件で比較する次の計画を検討します。使用するソースコードの版と新しい採用モデルを固定し、対局規則と実際の持ち時間が一致することを実行前に検証します。現行規則の変更と事前検証が必要であり、ここで実行済みとは扱いません。 1手1秒は1回の着手判断に与える実時間の設定を意味し、初期持ち時間への1秒加算とは区別します。並列計算は複数の処理を同時に進めることです。時間切れは制限時間超過、反則手は将棋のルール上指せない手、エンジン異常はプログラム停止などの実行上の障害を指します。
  • 理由: 探索は先の手順を調べる処理、評価モデルは調べた局面の良し悪しを数値化する部分です。同じ評価モデルを使うことで、異なるモデルの強さを探索処理の差と取り違えることを避けます。
  • 結果に影響し得る別の要因: 探索処理の違いが強さの差を生む可能性があります。 / 並列計算や持ち時間管理の違いが成績に影響する可能性があります。 / 運用者が別条件で観測した差が、今回の共通モデルでは現れない可能性があります。
  • 成功条件: 事前に固定する対局規則と予算に従って勝敗、対局数、強さの差と95%信頼区間、時間切れ、反則手、エンジン異常を確認します。比較結果を採用判断に使う条件も、実行前に定めます。 95%信頼区間は推定の不確かさを表す区間で、同じ手順を何度も繰り返したときに真の値を含む割合が95%となるよう構成します。逐次停止など、計算上の前提と実際の試験との違いも明記します。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1
  • ネットワーク構造の内部名: layerstack
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: promote / ltc_native_pass
区分 内部パラメーター名 日本語での意味
候補側 ft-factorize True 実装内部の設定。正確な意味は公開ソースコードで確認できます
候補側 lr 4.375e-05 実装内部の設定。正確な意味は公開ソースコードで確認できます
固定 batch-size 16384 1回の重み更新でまとめて扱う局面数
固定 batches-per-superbatch 6104 一つの大きな学習区間に含める更新単位数
固定 bucket-mode progress8kpabs 局面を進行度などでグループ分けする方法
固定 ft-out 768 駒の配置を数値特徴へ変換した直後に出力する特徴数
固定 l1 8 変換後の特徴を受け取る第1隠れ層のニューロン数
固定 l2 32 第1隠れ層の出力を受け取る第2隠れ層のニューロン数
固定 num-buckets 8 局面を分けるグループ数
固定 scale 600 学習値と評価値を対応させる倍率
固定 superbatches 400 実行する大きな学習区間の数
固定 threads 16 学習または対局計算に使うCPU処理列数
固定 win-rate-model True 評価値と勝率の関係も学習する設定
固定 wrm-nnue2score 600 勝率学習でNNUE評価値を変換する倍率
対局 engine\_options Threads=1 Hash=128 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":16446.868,"effective_positions":40003174400,"ended_at":"2026-09-10T12:20:16.186Z","mode":"trained","optimizer_updates":2441600,"recipe_id":"tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1","stage_count":1,"started_at":"2026-09-10T07:46:09.318Z"},"experiment":{"candidate_id":"goal-candidate-e0c10e9c03ea4a2394ec1a2a9893068a","champion_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","ended_at":"2026-09-11T04:55:50.527516Z","experiment_id":"e0c10e9c-03ea-4a23-94ec-1a2a9893068a","started_at":"2026-09-10T07:33:54.313132Z"},"hardware":[{"name":"gpu","value":"NVIDIA GeForce RTX 4090"}],"internal_evidence_receipt_sha256":"b250ceb98413e1343c9d71b292d30004d1d939899c5200839dd79d9e8ed3b713","observations":[{"metric":"draws","observation_id":"ltc-draws","stage":"ltc","unit":"games","value":1039},{"metric":"games","observation_id":"ltc-games","stage":"ltc","unit":"games","value":11832},{"metric":"llr-current","observation_id":"ltc-llr-current","stage":"ltc","unit":"llr","value":2.9274886657171986},{"metric":"llr-lower","observation_id":"ltc-llr-lower","stage":"ltc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"ltc-llr-upper","stage":"ltc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"ltc-losses","stage":"ltc","unit":"games","value":5246},{"metric":"wins","observation_id":"ltc-wins","stage":"ltc","unit":"games","value":5547},{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":1431},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":31936},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":2.9765664908066274},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":15039},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":15466}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"training_data","stage_index":1,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-e0c10e9c03ea4a2394ec1a2a9893068a","rating_contract":{"alpha":0.05,"base_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","beta":0.1,"candidate_id":"goal-candidate-e0c10e9c03ea4a2394ec1a2a9893068a","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"40.0+0.4"},"report_kind":"rating_experiment","repositories":[{"commit":"8b40493ccc5b0f22afea1fa6b951d183b87b3ea5","public_url":"https://github.com/nodchip/tatara","ref":"refs/tags/autotune/experiments/e0c10e9c-03ea-4a23-94ec-1a2a9893068a","repository_id":"tatara"}],"resolved_arguments":[{"name":"stage-01.ft-factorize","value":true,"value_type":"boolean"},{"name":"stage-01.lr","value":4.375e-05,"value_type":"number"}],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tatara","version":"8b40493ccc5b0f22afea1fa6b951d183b87b3ea5"}]}

将棋AI tanuki- 2026-09-10 16:00 日本標準時 時間管理を現行たぬきに揃えたやねうら王の思考部比較 同じ評価モデルを使用(短時間対局試験・候補不採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの構成です。今回は学習済みモデルを再利用し、候補 (candidate) は今回評価する思考エンジンと対局設定の組み合わせを指します。入玉局面とは王が相手陣へ入った局面です。

要約

  • 今回評価した変更に関する実験前の予想: 同じ評価モデルを使い、やねうら王の時間管理を現行たぬきと同じ計算に揃えた思考部を、現行たぬきと比較しました。新しい学習はありません。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補不採用でした。
  • 測定段階: 短時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 時間管理を現行たぬきに揃えたやねうら王の思考部は、同じ評価モデルで現行たぬきより強くなるでしょうか。
  • 実験前の予想: 局所測定で見つかった時間配分の違いを揃えれば、新しい探索の工夫が既存の評価モデルでも有効になる可能性があると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: やねうら王は公開されている将棋思考エンジンです。直前に試した候補から、1手に使う時間を決める時間管理モジュールだけを現行たぬきの計算に置き換えました。局面の良し悪しを数値化する評価モデルは共通に使います。
  • 事前成功条件: 起動と対局完了を確認する2局の動作確認を終え、短時間対局が合格した場合だけ長時間対局へ進み、両方の事前固定した統計基準に合格することです。

今回の変更

次の表は、今回の実験で行った変更です。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 3503dc5736ea5ae425602a75c70cc9b3df21f573 a6a69c0fd6455e1976c4d82cb01b6d36c4815455 直前のやねうら王候補と比べ、時間管理モジュールと対応するヘッダーだけを変更しました。比較相手は現行たぬきです。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 学習済みモデルを変更せず、思考エンジンと対局設定を比較するため、今回は学習データを使用しない
  • 前処理: 現在の比較基準モデルを両者で同一に固定
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 0 / 0
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 学習せず、現在の比較基準と同じ評価モデルを使用
  • 学習段階数: 0 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): 使用なし
  • 実際に学習へ使った局面数 / 重みを更新した回数: 0 / 0
  • 実行時間: 2026-09-10 15:43:07 日本標準時 → 2026-09-10 15:43:07 日本標準時 (約0時間0分0秒)

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 8.0+0.08 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 長時間対局試験の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ16 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 候補不採用
  • 判定理由: 短時間対局試験のLLRが候補不採用の下限に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 候補不採用 842 292 38 512 現在値 -2.53627 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 未実施 短時間対局試験が候補不採用になったため

追加の統計値

指標 値または掲載しない理由
推定Elo 記述的Elo差(対局後に勝敗から計算した参考値。SPRTの採否判定には使用しない): -92.93。名目95%区間 -117.56~-69.19(逐次停止・候補選択・共通開始局面の影響を補正していない)
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

対局結果の概要図

この図は、候補と比較基準の勝敗数と統計判定値の推移を示します。

短時間対局試験の勝敗数と統計判定値

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 9ef515e68a7aae7b6b3c9b5eaa8778ec6c80feaba25979d3a6147ae752ca3ed1

考察

観測事実

  • やねうら王は公開されている将棋思考エンジンです。今回は直前に試したやねうら王を基にする思考部に対し、1手に使う時間を決める時間管理の実装だけを、現行たぬきと同じ計算に変更しました。対応するヘッダーの型宣言は新しいエンジンに合わせました。局面の良し悪しを計算する学習済み評価モデルは両者で共通にし、新しい学習は行っていません。対戦相手は現行たぬきです。 — 根拠: 実験計画、使用ソースコードの記録、評価モデル再利用記録
  • 候補を決める前に、公開されている将棋の初期局面で、1手ごとに0.08秒を加算する条件の1手探索を測りました。残り時間8秒では、1手の探索に要した実測時間は直前候補が約2.9秒、現行たぬきが約1.0秒、今回候補が約1.0秒でした。残り時間0.8秒では、直前候補が約0.1秒、現行たぬきが約0.39秒、今回候補が約0.38秒でした。これは局所的な時間配分の確認で、対局の強さを測った値ではありません。 — 根拠: 実験計画、使用ソースコードの記録
  • 対局システムで起動と対局完了を確かめる2局の動作確認を終え、短時間対局を行いました。候補から見て292勝・38引分・512敗、計842局でした。合否判定用の統計値LLRは−2.53627となり、事前に固定した不合格境界−2.25129を下回りました。記録上、クラッシュは0件、時間切れによる敗戦は1件でした。 — 根拠: 短時間対局試験の結果
  • 対局終了後に勝敗から計算した記述的なElo差は約−92.93、名目95%区間は−117.56~−69.19でした。Eloは強さの差を表す点数で、負の値は候補側の成績が劣ったことを表します。先後を入れ替えた2局一組の結果から計算しましたが、対局を途中で止める統計手順、候補の選び方、開始局面の共有による影響を補正した区間ではありません。採用判断にはこの推定値を使っていません。 — 根拠: 短時間対局試験の結果
  • 短時間対局が不合格だったため、長時間対局は行わず、今回の候補を採用しませんでした。現行たぬきの思考部と評価モデルを維持しました。 — 根拠: 短時間対局試験の結果、採用判定記録

解釈

  • 時間管理の計算を現行実装へ揃えても、今回の条件では採用基準を満たしませんでした。直前試行との成績差だけから時間管理変更の効果量を確定することはできません。今回測ったのは、共通モデルを使う今回候補と現行たぬきの差であり、二つの候補同士の直接対局ではありません。 この解釈が誤りだと分かる条件 (反証条件): 別の事前固定した条件で同じ変更の候補が採用基準を満たせば、その条件での適合性を改めて評価します。

実験前の予想に対する判定: 反証。今回の結果が実験前の予想を支持しなかったことを表します。

限界

  • 測定範囲: 今回候補と現行たぬきには、時間管理以外にも探索や評価処理の実装差が残ります。旧候補との直接比較をしておらず、残る成績差を特定の探索規則や処理速度に帰属させることはできません。 — 根拠: 実験計画、使用ソースコードの記録、短時間対局試験の結果
  • 他の条件への適用可能性: 時間配分の局所確認は初期局面一つ、各条件一回です。本番は同じ評価モデル一つと短い持ち時間での試験であり、長時間対局や別の評価モデルへ結果をそのまま一般化できません。入玉局面だけの成績も分離していません。 — 根拠: 実験計画、評価モデル再利用記録、短時間対局試験の結果
  • 測定範囲: 名目95%区間は対局終了後の記述的な推定です。逐次停止、候補選択、開始局面の共有の影響を補正した採用判定用の区間ではありません。時間切れの1敗も勝敗集計に含め、除外して再判定していません。 — 根拠: 短時間対局試験の結果
  • 測定範囲: 開始局面、学習データ、評価モデルは非公開です。この記事は方法と観測結果の監査を目的とし、記事だけで計算全体を再現することはできません。 — 根拠: 実験計画、評価モデル再利用記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-35956da462e44483b545563cd85d9b22
  • 非公開の監査用記録のSHA-256: 9c48352859971af85351b02977716223a61684b96f8efb4ae2f7c5dba4798ffd
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: 4c4c95bb609662a53dbfba0e0bc7fcb9be96baa69f1525395e20ee0967b4a9ff

次の実験

  • 仮説: 現行の思考部を維持し、評価モデルへ渡す局面の特徴や学習条件を一つ変えることで、思考部全体の移植とは別の改善余地を調べられる可能性があります。
  • 変更: チェスAIのStockfishで公開されているNNUE設計と、たぬきの既存実装、過去の実験を照合し、将棋で意味を持つ未試行の変更を一つ選びます。NNUEは局面評価を高速に計算するニューラルネットワークで、特徴とは駒の配置などモデルへ渡す情報の表し方です。
  • 理由: 共通モデルでの思考部比較が二回とも採用に至らなかったため、運用者の別の優先提案に沿って、評価モデル側の変更を独立に検討するためです。
  • 結果に影響し得る別の要因: 新しい特徴表現が局面の違いを学びやすくする可能性があります。 / 既存実装と機能が重複していて、新しい情報を増やさない可能性があります。 / 学習時の改善が対局速度や強さの改善につながらない可能性があります。
  • 成功条件: 既試行や既存機能との重複を確認し、一つの要因と予算を事前に固定します。必要な互換性検証と事前検証を通過し、対局で固定した統計基準を満たすことを成功条件にします。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: not-applicable
  • ネットワーク構造の内部名: 現在の比較基準モデルを変更せず再利用
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: reject / stc_native_fail
区分 内部パラメーター名 日本語での意味
対局 engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":0,"effective_positions":0,"ended_at":"2026-09-10T06:43:07.229287Z","mode":"reuse_champion","optimizer_updates":0,"recipe_id":"not-applicable","stage_count":0,"started_at":"2026-09-10T06:43:07.229287Z"},"experiment":{"candidate_id":"goal-candidate-35956da462e44483b545563cd85d9b22","champion_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","ended_at":"2026-09-10T07:00:34.576951Z","experiment_id":"35956da4-62e4-4483-b545-563cd85d9b22","started_at":"2026-09-10T06:38:49.094302Z"},"hardware":[],"internal_evidence_receipt_sha256":"9c48352859971af85351b02977716223a61684b96f8efb4ae2f7c5dba4798ffd","observations":[{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":38},{"metric":"descriptive-elo-elo","observation_id":"stc-extra-descriptive-elo-elo","stage":"stc","unit":"elo","value":-92.93365282185263},{"metric":"descriptive-elo-lower","observation_id":"stc-extra-descriptive-elo-lower","stage":"stc","unit":"elo","value":-117.561671333549},{"metric":"descriptive-elo-upper","observation_id":"stc-extra-descriptive-elo-upper","stage":"stc","unit":"elo","value":-69.1866933925407},{"metric":"reported-crashes","observation_id":"stc-extra-reported-crashes","stage":"stc","unit":"count","value":0},{"metric":"reported-time-losses","observation_id":"stc-extra-reported-time-losses","stage":"stc","unit":"count","value":1},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":842},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":-2.536274597095666},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":512},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":292}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-35956da462e44483b545563cd85d9b22","rating_contract":{"alpha":0.05,"base_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","beta":0.1,"candidate_id":"goal-candidate-35956da462e44483b545563cd85d9b22","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"8.0+0.08"},"report_kind":"rating_experiment","repositories":[{"commit":"a6a69c0fd6455e1976c4d82cb01b6d36c4815455","public_url":"https://github.com/nodchip/tanuki-","ref":"refs/tags/autotune/experiments/35956da4-62e4-4483-b545-563cd85d9b22","repository_id":"tanuki"}],"resolved_arguments":[],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tanuki-","version":"a6a69c0fd6455e1976c4d82cb01b6d36c4815455"}]}

将棋AI tanuki- 2026-09-10 15:15 日本標準時 同じ評価モデルでやねうら王の思考部を比較 現行たぬきとの対局(短時間対局試験・候補不採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの構成です。今回は学習済みモデルを再利用し、候補 (candidate) は今回評価する思考エンジンと対局設定の組み合わせを指します。入玉局面とは王が相手陣へ入った局面です。

要約

  • 今回評価した変更に関する実験前の予想: 採用中の評価モデルを両者で共通に使い、やねうら王を基に既存モデルと対局システムへ合わせた思考部を、現行たぬきと比較しました。新しい学習はありません。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補不採用でした。
  • 測定段階: 短時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 同じ評価モデルを使う場合、やねうら王を基にした思考部は現行たぬきより強くなるでしょうか。
  • 実験前の予想: 新しい先読みの工夫が既存の評価モデルでも有効なら、短時間と長時間の対局で採用基準を満たすと予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 評価モデルは局面の良し悪しを数値にする仕組みで、思考部はそれを使って先の指し手を調べます。モデルを固定し、先読みの方法全体の差を測ります。既存モデルを読むための調整と、対局システムの設定への対応を候補に含めました。
  • 事前成功条件: 2局の動作確認を完了し、短時間対局が事前固定の統計基準に合格した場合だけ長時間対局へ進み、両方が合格することです。

今回の変更

次の表は、今回の実験で行った変更です。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 3503dc5736ea5ae425602a75c70cc9b3df21f573 388e266854257f22c4fc8bb56b2ad92ba7e92138 共通の評価モデルを使い、先読みして指し手を選ぶ思考部を置き換えました。モデルの読み込みと対局システムに合わせる調整も候補に含みます。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 学習済みモデルを変更せず、思考エンジンと対局設定を比較するため、今回は学習データを使用しない
  • 前処理: 現在の比較基準モデルを両者で同一に固定
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 0 / 0
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 学習せず、現在の比較基準と同じ評価モデルを使用
  • 学習段階数: 0 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): 使用なし
  • 実際に学習へ使った局面数 / 重みを更新した回数: 0 / 0
  • 実行時間: 2026-09-10 15:00:14 日本標準時 → 2026-09-10 15:00:14 日本標準時 (約0時間0分0秒)

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 8.0+0.08 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 長時間対局試験の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ16 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 候補不採用
  • 判定理由: 短時間対局試験のLLRが候補不採用の下限に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 候補不採用 438 103 15 320 現在値 -2.29736 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 未実施 短時間対局試験が候補不採用になったため

追加の統計値

指標 値または掲載しない理由
推定Elo この逐次判定は0 Eloと+4 Eloのどちらが結果に合うかだけを判定し、Eloを一つの推定値として計算しないため掲載なし
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

対局結果の概要図

この図は、候補と比較基準の勝敗数と統計判定値の推移を示します。

短時間対局試験の勝敗数と統計判定値

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 7c99ebd8e5ff14cccf7817145c13320b9872877718aa0b8caef8d4e749af5a91

考察

観測事実

  • 両者に同じ採用中の学習済み評価モデルを使い、先読みして指し手を選ぶ思考部を比較しました。やねうら王は公開されている将棋思考エンジンです。候補は調査時点のやねうら王を基に、既存モデルの読み込み、対局システムの設定、ビルド手順を合わせた実装です。対戦相手は現行たぬきの思考部です。新しい学習は行っていません。 — 根拠: 実験計画、使用ソースコードの記録、評価モデル再利用記録
  • 対局前に固定した260局面で、指し手の探索を始める前に現在の局面だけから計算した評価値を両実装から取得して一致を確認しました。局面評価の数値の尺度を決める評価値の倍率を調整する係数 (設定名: FV_SCALE)は、対局時には両者とも24に揃えました。終盤へどれだけ進んだかを表す進行度の評価も、既存の共通データを使いました。これらの確認は読み込みや設定の互換性を調べるもので、指し手や強さの一致を保証するものではありません。260局面の数値照合とは別に、対局システムでの起動と対局完了を確かめる事前検証を行いました。本番でも最初に2局の動作確認を完了してから、強さを測る短時間対局へ進みました。 — 根拠: 実験計画、使用ソースコードの記録
  • 短時間対局では、候補から見て103勝・15引分・320敗、計438局でした。対局の途中で合否を判定する統計値LLRは−2.29736となり、事前に固定した不合格境界−2.25129を下回りました。対局システムは通常の統計的不合格として終了しました。 — 根拠: 短時間対局試験の結果
  • 短時間対局が不合格だったため、長時間対局には進まず、候補の思考部を採用しませんでした。現行の思考部と評価モデルを維持しました。 — 根拠: 短時間対局試験の結果、採用判定記録

解釈

  • 今回の共通モデルと対局条件では、移植したやねうら王の思考部は現行たぬきの採用基準を満たしませんでした。差が大きいため、次の実験を選ぶ前に、探索中の評価値の扱い、時間管理、既存モデルとの組み合わせを追加調査します。今回の結果だけで、上流のやねうら王全体が弱い、あるいは特定の変更が原因だとは断定できません。 この解釈が誤りだと分かる条件 (反証条件): 事前に固定した別条件や、原因を一つに絞った修正後の比較が合格すれば、その条件での適合性を改めて評価します。

実験前の予想に対する判定: 反証。今回の結果が実験前の予想を支持しなかったことを表します。

限界

  • 測定範囲: 思考部全体の置き換えと互換性のための調整を含む比較です。先読みを省く規則、評価値の補正、時間管理などの個別要因は分離していません。先読み前の評価値の一致から、探索中の評価や時間配分の一致は推定できません。 — 根拠: 実験計画、使用ソースコードの記録、短時間対局試験の結果
  • 他の条件への適用可能性: 同じ評価モデル一つと固定した短い持ち時間での結果です。やねうら王向けに学習したモデル、長い持ち時間、別の開始局面へそのまま一般化できません。入玉局面だけの成績も分離して測っていません。 — 根拠: 評価モデル再利用記録、短時間対局試験の結果
  • 測定範囲: 開始局面、学習データ、評価モデルは非公開です。この記事は方法と観測結果の監査を目的とし、記事だけで計算全体を再現することはできません。 — 根拠: 実験計画、評価モデル再利用記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-60f2028c48f249949bd9e05bf0205c0a
  • 非公開の監査用記録のSHA-256: a3bcf888a19ff60074ae322684b27b4a5a4ea2fb3fed07da513931d5547e00ba
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: ba2cc74164984f287c4c50d0730fdcdcbb3cef9fb24e8b095abc8ec69f6a8d9e

次の実験

  • 仮説: 先読み前の評価値が同じでも、探索中の評価値の補正や時間配分が既存モデルに合わず、対局結果へ影響している可能性があります。
  • 変更: 同じモデルを固定したまま両実装の評価値の補正と時間管理を調査し、根拠が得られた要因を一つだけ変える比較を次の候補として計画します。
  • 理由: 思考部全体の差をもう一度測る前に、大きな成績差を生む条件を絞り、変更の意味を判断できる実験にするためです。
  • 結果に影響し得る別の要因: 探索中の評価値の尺度や補正が共通モデルに合っていない可能性があります。 / 短い持ち時間での時間管理や処理速度の差が影響した可能性があります。 / 複数の探索規則とモデルの組み合わせによる差で、単一の原因に分けられない可能性があります。
  • 成功条件: 新しい条件を事前に固定し、互換性と事前検証を通過したうえで、同一のモデル、開始局面、持ち時間、先後を揃えた対局が統計的な合格基準を満たすことです。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: not-applicable
  • ネットワーク構造の内部名: 現在の比較基準モデルを変更せず再利用
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: reject / stc_native_fail
区分 内部パラメーター名 日本語での意味
対局 engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":0,"effective_positions":0,"ended_at":"2026-09-10T06:00:14.945977Z","mode":"reuse_champion","optimizer_updates":0,"recipe_id":"not-applicable","stage_count":0,"started_at":"2026-09-10T06:00:14.945977Z"},"experiment":{"candidate_id":"goal-candidate-60f2028c48f249949bd9e05bf0205c0a","champion_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","ended_at":"2026-09-10T06:15:57.822020Z","experiment_id":"60f2028c-48f2-4994-9bd9-e05bf0205c0a","started_at":"2026-09-10T05:53:51.260329Z"},"hardware":[],"internal_evidence_receipt_sha256":"a3bcf888a19ff60074ae322684b27b4a5a4ea2fb3fed07da513931d5547e00ba","observations":[{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":15},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":438},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":-2.2973579958252857},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":320},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":103}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-60f2028c48f249949bd9e05bf0205c0a","rating_contract":{"alpha":0.05,"base_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","beta":0.1,"candidate_id":"goal-candidate-60f2028c48f249949bd9e05bf0205c0a","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"8.0+0.08"},"report_kind":"rating_experiment","repositories":[{"commit":"388e266854257f22c4fc8bb56b2ad92ba7e92138","public_url":"https://github.com/nodchip/tanuki-","ref":"refs/tags/autotune/experiments/60f2028c-48f2-4994-9bd9-e05bf0205c0a","repository_id":"tanuki"}],"resolved_arguments":[],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tanuki-","version":"388e266854257f22c4fc8bb56b2ad92ba7e92138"}]}

将棋AI tanuki- 2026-09-10 02:23 日本標準時 採用モデルから学習率をさらに半分にした追加学習 追加学習前後の比較(短時間対局試験・候補不採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの評価モデル、候補 (candidate) は今回評価するモデルです。追加学習とは、既存モデルの学習済みの重み (学習で調整された内部の数値) を出発点にして、さらに学習を続けることです。入玉局面とは王が相手陣へ入った局面、通常局面とはそれ以外の局面です。教師AIとは、学習時の答えとなる評価値を作るために使った別の将棋AIです。教師信号とは、その教師AIが各局面に付け、学習時の正解として使う評価値です。

要約

  • 今回評価した変更に関する実験前の予想: 直前に採用したモデルを初期値とし、初期学習率を前回の半分の0.00004375にして、同じデータでさらに一段階の追加学習を行いました。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補不採用でした。
  • 測定段階: 短時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 採用モデルから更新幅をさらに小さくして追加学習すると、強さをもう一段改善できるでしょうか。
  • 実験前の予想: 同じ既存データを初期学習率0.00004375で追加学習した候補は、追加学習前の採用モデルより強くなると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 学習率はモデル内部の数値を一回の更新で動かす幅に関わる設定です。前回の採用実験の半分に抑え、400の学習区間と区間ごとの0.992倍の減衰規則を維持しました。重みだけを引き継ぎ、最適化手法の内部状態、累計更新回数、学習率の変更規則の進行位置は初期化しました。Rangerは学習時に重みを調整する最適化手法の名前で、その更新を安定させるlookaheadという仕組みの状態も初期化しました。
  • 用語補足: 学習局面の構成とは、学習データにどのような局面がどの程度含まれるかという傾向です。これは教師AIが付けた評価値の数値分布とは異なります。
  • 事前成功条件: 2局の動作確認を完了し、短時間対局を合格した場合だけ長時間対局へ進み、両方で事前固定の合格基準を満たすことです。

今回の変更

次の表は、今回の実験で行った変更です。 今回の候補の学習では、40,003,174,400局面を処理し、重みを2,441,600回更新しました。初期重みの選び方と対戦相手との関係は、考察の観測事実・解釈で説明します。学習を行ったという記録だけから、現在の比較基準への追加学習とは判断しません。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 52b4fdd1354073545bb19aac0ecd8e088e177b4f 52b4fdd1354073545bb19aac0ecd8e088e177b4f 同じソースコードとモデル構造で、低い初期学習率で追加学習しました。対戦相手は追加学習前の採用モデルです。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 版を固定した学習設定で選んだ非公開の入力データ
  • 前処理: 将棋局面と教師評価値を格納する固定形式で読み込む
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 8,000,049,489 / 40,003,174,400
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 1段階の学習。初期重みと変更内容は考察の観測事実・解釈を参照
  • 学習段階数: 1 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): NVIDIA GeForce RTX 4090
  • 実際に学習へ使った局面数 / 重みを更新した回数: 40,003,174,400 / 2,441,600
  • 実行時間: 2026-09-09 17:39:06 日本標準時 → 2026-09-09 21:42:06 日本標準時 (約4時間2分59秒)
  • 学習状態の用語: 最適化手法 (optimizer) は、誤差を小さくするようにモデル内部の数値を更新する計算方法です。Rangerのlookaheadは、その更新を安定させるためにoptimizer内部で保持する状態であり、将棋の指し手を読む深さではありません。累計更新回数 (global step) は学習開始から重みを更新した総回数、学習率の変更規則 (LR schedule) は更新幅を学習中にどう変えるかを定めた規則です。

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 8.0+0.08 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 長時間対局試験の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ16 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 候補不採用
  • 判定理由: 短時間対局試験のLLRが候補不採用の下限に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 候補不採用 22852 10867 1054 10931 現在値 -2.2793 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 未実施 短時間対局試験が候補不採用になったため

追加の統計値

指標 値または掲載しない理由
推定Elo この逐次判定は0 Eloと+4 Eloのどちらが結果に合うかだけを判定し、Eloを一つの推定値として計算しないため掲載なし
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

学習誤差 (loss)

学習誤差 (loss) は、AIの予測と教師データに記録された答えのずれを表す値です。同じ定義と条件で比べる場合は、小さいほど教師データへよく合っています。

学習損失・ステップ別

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): fed409eb9d7412656493f2d5eede1616577297ac4e44bf18d2243701f41fb29c

考察

観測事実

  • 直前に採用したモデルの重みを引き継ぎ、初期学習率0.00004375で一段階の追加学習を完了しました。これは直前の採用実験で使った0.0000875の半分です。学習率は一回の更新でモデル内部の数値を動かす幅に関わる設定です。400の学習区間と、各区間で学習率を0.992倍にする規則を維持しました。 — 根拠: 実験計画、学習完了記録
  • 入力は直前の採用実験と同じ既存データです。運用者の生成情報では、1手の探索を最大1,000ノードとして作られた局面と、教師評価値の相加平均を使っています。探索ノードは先読み中に調べる局面一つ分の計算単位で、相加平均は値を足して個数で割る計算です。実際の入力の一致を非公開の記録で照合しました。今回、教師評価値の生成は行っていません。 — 根拠: 実験計画、学習完了記録
  • 短時間対局は10,867勝・1,054分・10,931敗、計22,852局で不合格になりました。統計的な判定値であるLLRは−2.27930となり、事前に固定した不合格境界−2.25129を下回りました。 — 根拠: 短時間対局試験の結果
  • 短時間対局が不合格だったため、計画どおり長時間対局は実施せず、今回の候補を採用しませんでした。採用中のモデルは維持しました。対戦相手は今回の追加学習前のモデルです。 — 根拠: 短時間対局試験の結果、採用判定記録

解釈

  • 初期学習率をさらに半分にした追加学習は、今回の条件では採用基準を満たしませんでした。直前の追加学習が成功していても、同じデータでさらに学習すれば改善が続くとは限らない結果です。この試験だけから、学習率を半分にしたことが不合格の原因だと断定することはできません。 この解釈が誤りだと分かる条件 (反証条件): 別の事前固定した学習系列で同じ条件の追加学習が採用基準を満たせば、この条件での改善の再現性を改めて評価します。

実験前の予想に対する判定: 反証。今回の結果が実験前の予想を支持しなかったことを表します。

限界

  • 測定範囲: 対照モデルは今回の追加学習を行っていません。測ったのは学習率、データ反復、学習量、状態初期化を組み合わせた追加学習全体の効果で、異なる学習率の候補同士を直接比較したものではありません。 — 根拠: 実験計画、学習完了記録、短時間対局試験の結果
  • 他の条件への適用可能性: 学習は一回だけで、長時間対局は未実施です。別の学習乱数、データ、初期モデル、対局条件へ結果をそのまま一般化できません。入玉局面だけの成績も分離して測定していません。 — 根拠: 学習完了記録、短時間対局試験の結果
  • 測定範囲: 教師評価値の生成方法は運用者の説明に基づき、今回再生成して検証していません。開始局面、学習データ、評価モデルは非公開のため、この記事だけで計算全体を再現することはできません。 — 根拠: 実験計画、学習完了記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-71517d21427843dcb0a6c11a8350f218
  • 非公開の監査用記録のSHA-256: 8c7a4fecefb46a916d11a65918ff80d1044e993504e9ac26374bae280ed13090
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: e197642430c1f3113d48a88f5802191426906a40d39d2ef3b8fff5dadf6fcb4a

次の実験

  • 仮説: 同じ採用モデルを使い、先読みする手を選ぶ思考部を変えると、対局の強さが改善する可能性があります。
  • 変更: 採用中の評価モデルを両者で共通に使う思考部比較を次の候補として調査します。新しい優先提案の対象実装を確認し、モデル読み込みと進行度の評価処理、短い対局の互換性を確認してから実験条件を固定します。
  • 理由: 同じデータでの追加学習が今回不合格だったため、優先提案に沿って、評価モデルを固定した思考部の差に情報価値があるかを調べます。
  • 結果に影響し得る別の要因: 思考部の改善が同じ評価モデルでも有効な可能性があります。 / 評価値や進行度の扱いの違いが比較に影響する可能性があります。 / 持ち時間や開始局面により優劣が変わる可能性があります。
  • 成功条件: 互換性と事前検証を通し、同じ開始局面、持ち時間、先後を揃えた対局で、事前に固定する統計基準を満たすことです。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1
  • ネットワーク構造の内部名: layerstack
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: reject / stc_native_fail
区分 内部パラメーター名 日本語での意味
候補側 lr 4.375e-05 実装内部の設定。正確な意味は公開ソースコードで確認できます
固定 batch-size 16384 1回の重み更新でまとめて扱う局面数
固定 batches-per-superbatch 6104 一つの大きな学習区間に含める更新単位数
固定 bucket-mode progress8kpabs 局面を進行度などでグループ分けする方法
固定 ft-out 768 駒の配置を数値特徴へ変換した直後に出力する特徴数
固定 l1 8 変換後の特徴を受け取る第1隠れ層のニューロン数
固定 l2 32 第1隠れ層の出力を受け取る第2隠れ層のニューロン数
固定 num-buckets 8 局面を分けるグループ数
固定 scale 600 学習値と評価値を対応させる倍率
固定 superbatches 400 実行する大きな学習区間の数
固定 threads 16 学習または対局計算に使うCPU処理列数
固定 win-rate-model True 評価値と勝率の関係も学習する設定
固定 wrm-nnue2score 600 勝率学習でNNUE評価値を変換する倍率
対局 engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":14579.193,"effective_positions":40003174400,"ended_at":"2026-09-09T12:42:06.173Z","mode":"trained","optimizer_updates":2441600,"recipe_id":"tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1","stage_count":1,"started_at":"2026-09-09T08:39:06.980Z"},"experiment":{"candidate_id":"goal-candidate-71517d21427843dcb0a6c11a8350f218","champion_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","ended_at":"2026-09-09T17:23:56.003324Z","experiment_id":"71517d21-4278-43dc-b0a6-c11a8350f218","started_at":"2026-09-09T08:30:41.499210Z"},"hardware":[{"name":"gpu","value":"NVIDIA GeForce RTX 4090"}],"internal_evidence_receipt_sha256":"8c7a4fecefb46a916d11a65918ff80d1044e993504e9ac26374bae280ed13090","observations":[{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":1054},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":22852},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":-2.2792976531111684},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":10931},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":10867}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"training_data","stage_index":1,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-71517d21427843dcb0a6c11a8350f218","rating_contract":{"alpha":0.05,"base_id":"goal-champion-207380a3787b4a26831fef29ed2c12cd","beta":0.1,"candidate_id":"goal-candidate-71517d21427843dcb0a6c11a8350f218","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"8.0+0.08"},"report_kind":"rating_experiment","repositories":[{"commit":"52b4fdd1354073545bb19aac0ecd8e088e177b4f","public_url":"https://github.com/nodchip/tatara","ref":"refs/tags/autotune/experiments/71517d21-4278-43dc-b0a6-c11a8350f218","repository_id":"tatara"}],"resolved_arguments":[{"name":"stage-01.lr","value":4.375e-05,"value_type":"number"}],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tatara","version":"52b4fdd1354073545bb19aac0ecd8e088e177b4f"}]}

将棋AI tanuki- 2026-09-09 17:14 日本標準時 学習率を10分の1にした追加学習 追加学習前後の比較(長時間対局試験・採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの評価モデル、候補 (candidate) は今回評価するモデルです。追加学習とは、既存モデルの学習済みの重み (学習で調整された内部の数値) を出発点にして、さらに学習を続けることです。入玉局面とは王が相手陣へ入った局面、通常局面とはそれ以外の局面です。教師AIとは、学習時の答えとなる評価値を作るために使った別の将棋AIです。教師信号とは、その教師AIが各局面に付け、学習時の正解として使う評価値です。

要約

  • 今回評価した変更に関する実験前の予想: 採用中だったモデルの重みを引き継ぎ、初期学習率を既定値の10分の1となる0.0000875にして、一段階の追加学習を行いました。比較対象は追加学習前後のモデルです。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補採用でした。
  • 測定段階: 長時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 小さい更新幅で追加学習すると、学習済みモデルの強さを改善できるでしょうか。
  • 実験前の予想: 既存データを使って低い初期学習率で追加学習した候補は、追加学習前の採用モデルより強くなると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 学習率はモデル内部の重みを一回の更新で動かす幅に関わる設定です。初期値を0.0000875に抑え、400の学習区間を実行しました。各区間で学習率を0.992倍にする規則は維持しました。重みだけを引き継ぎ、最適化手法の内部状態、更新を安定させるRangerのlookahead状態、累計更新回数、学習率の変更規則の進行位置は初期化しました。
  • 用語補足: 学習局面の構成とは、学習データにどのような局面がどの程度含まれるかという傾向です。これは教師AIが付けた評価値の数値分布とは異なります。
  • 事前成功条件: 2局の動作確認を完了したうえで、短時間対局と長時間対局の両方で事前に固定した合格境界に到達することです。

今回の変更

次の表は、今回の実験で行った変更です。 今回の候補の学習では、40,003,174,400局面を処理し、重みを2,441,600回更新しました。初期重みの選び方と対戦相手との関係は、考察の観測事実・解釈で説明します。学習を行ったという記録だけから、現在の比較基準への追加学習とは判断しません。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 52b4fdd1354073545bb19aac0ecd8e088e177b4f 52b4fdd1354073545bb19aac0ecd8e088e177b4f 同じソースコードとネットワーク構造で、低い初期学習率の追加学習を行いました。対戦相手は追加学習前の採用モデルです。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 版を固定した学習設定で選んだ非公開の入力データ
  • 前処理: 将棋局面と教師評価値を格納する固定形式で読み込む
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 8,000,049,489 / 40,003,174,400
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 1段階の学習。初期重みと変更内容は考察の観測事実・解釈を参照
  • 学習段階数: 1 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): NVIDIA GeForce RTX 4090
  • 実際に学習へ使った局面数 / 重みを更新した回数: 40,003,174,400 / 2,441,600
  • 実行時間: 2026-09-08 23:16:00 日本標準時 → 2026-09-09 03:18:15 日本標準時 (約4時間2分15秒)
  • 学習状態の用語: 最適化手法 (optimizer) は、誤差を小さくするようにモデル内部の数値を更新する計算方法です。Rangerのlookaheadは、その更新を安定させるためにoptimizer内部で保持する状態であり、将棋の指し手を読む深さではありません。累計更新回数 (global step) は学習開始から重みを更新した総回数、学習率の変更規則 (LR schedule) は更新幅を学習中にどう変えるかを定めた規則です。

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ128 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 採用
  • 判定理由: 長時間対局試験のLLR 2.90038 が、事前に定めた通過上限 2.89037 に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 通過 30010 14616 1196 14198 現在値 2.95955 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 通過 12520 5908 1005 5607 現在値 2.90038 / 不採用境界 -2.25129 / 合格境界 2.89037 131072

追加の統計値

指標 値または掲載しない理由
推定Elo この逐次判定は0 Eloと+4 Eloのどちらが結果に合うかだけを判定し、Eloを一つの推定値として計算しないため掲載なし
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

学習誤差 (loss)

学習誤差 (loss) は、AIの予測と教師データに記録された答えのずれを表す値です。同じ定義と条件で比べる場合は、小さいほど教師データへよく合っています。

学習損失・ステップ別

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 6540808eacf3229e1bfe6d2318b8938138a56d36baab192fd13804141565895f

考察

観測事実

  • 採用中だったモデルの重みを引き継ぎ、初期学習率を既定値0.000875の10分の1に当たる0.0000875として、一段階の追加学習を完了しました。重みは局面評価を調整するモデル内部の数値で、学習率は一回の更新で重みを動かす幅に関わる設定です。400の学習区間を実行し、各区間で学習率を0.992倍にする既存の減衰規則を維持しました。 — 根拠: 実験計画、学習完了記録
  • 使用したのは、運用者の生成情報で教師評価値の相加平均と説明された既存データです。1手の探索を最大1,000ノードとして作られた局面を使います。探索ノードは先読み中に調べる局面一つ分の計算単位です。相加平均は複数の値を足し、その個数で割る計算です。学習入力の同一性を非公開の記録で照合しており、今回、教師による評価値の生成は行っていません。 — 根拠: 実験計画、学習完了記録
  • 短時間対局は14,616勝・1,196分・14,198敗、計30,010局で合格しました。統計的な判定値であるLLRは2.95955となり、事前に固定した合格境界2.89037を超えました。 — 根拠: 短時間対局試験の結果
  • 続く長時間対局も5,908勝・1,005分・5,607敗、計12,520局で合格しました。LLRは2.90038となり、同じ合格境界2.89037を超えました。 — 根拠: 長時間対局試験の結果
  • 短時間・長時間の両対局で採用条件を満たしたため、追加学習後のモデルを新しい採用モデルにしました。比較相手は追加学習前の採用モデルであり、既定の学習率で追加学習した候補との直接対局ではありません。 — 根拠: 短時間対局試験の結果、長時間対局試験の結果、採用判定記録

解釈

  • 低い初期学習率で追加学習した今回の候補は、固定した対局条件で追加学習前のモデルを上回る採用基準を満たしました。以前の既定学習率の候補が不採用だったことと整合する結果ですが、学習率だけの効果を候補同士で直接測定したわけではなく、最適な値を特定した結果でもありません。 この解釈が誤りだと分かる条件 (反証条件): 学習の乱数を事前に固定した別の追試で改善が再現しなければ、この追加学習条件の一般性を見直します。

実験前の予想に対する判定: 支持。今回の結果が実験前の予想を支持したことを表します。

限界

  • 測定範囲: 対照モデルには追加学習を行っていません。今回測ったのは、指定した初期学習率、データ、学習量、状態初期化を組み合わせた追加学習全体の効果です。既定学習率の候補との強さの差を直接測ったものではありません。 — 根拠: 実験計画、学習完了記録、短時間対局試験の結果、長時間対局試験の結果
  • 他の条件への適用可能性: 追加学習は一回だけです。別の学習乱数、初期モデル、対局条件で同じ改善が得られるとは限りません。入玉局面だけの対局成績も分離して測定していません。 — 根拠: 学習完了記録、短時間対局試験の結果、長時間対局試験の結果
  • 測定範囲: 教師評価値の生成方法は運用者の説明に基づき、今回再実行して検証したものではありません。開始局面、学習データ、評価モデルは非公開のため、記事だけで計算全体を再現することはできません。 — 根拠: 実験計画、学習完了記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-207380a3787b4a26831fef29ed2c12cd
  • 非公開の監査用記録のSHA-256: ad6e6441fb5eaf0af40756fa7c63f94fae8ed9fee4143207db41ad9b2ec34798
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: 225ea5c2292efdb6cf55b8a07b826c8d9558c13d50f287ba3747cb7f77b73768

次の実験

  • 仮説: 今回採用したモデルから、初期学習率をさらに半分にして追加学習すると、改善を保ちながらもう一段強くできる可能性があります。
  • 変更: 新しい採用モデルを出発点に、同じ既存データと学習量を使い、初期学習率0.00004375で一段階の追加学習を行う候補を計画します。実行前に有効な運用者入力と許可済み条件を再確認します。
  • 理由: 今回、低い学習率の追加学習で採用条件を満たしたため、次は採用済みの重みを大きく変え過ぎない更新幅で改善が続くかを調べます。
  • 結果に影響し得る別の要因: 同じデータから学べる改善が残っている可能性があります。 / 同じデータの反復学習で汎化性能が下がる可能性があります。 / 更新幅を小さくすると十分な改善が得られない可能性があります。
  • 成功条件: 新しい採用モデルに対し、事前に固定した短時間・長時間対局の両方で統計的な合格基準を満たすことです。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1
  • ネットワーク構造の内部名: layerstack
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: promote / ltc_native_pass
区分 内部パラメーター名 日本語での意味
候補側 lr 8.75e-05 実装内部の設定。正確な意味は公開ソースコードで確認できます
固定 batch-size 16384 1回の重み更新でまとめて扱う局面数
固定 batches-per-superbatch 6104 一つの大きな学習区間に含める更新単位数
固定 bucket-mode progress8kpabs 局面を進行度などでグループ分けする方法
固定 ft-out 768 駒の配置を数値特徴へ変換した直後に出力する特徴数
固定 l1 8 変換後の特徴を受け取る第1隠れ層のニューロン数
固定 l2 32 第1隠れ層の出力を受け取る第2隠れ層のニューロン数
固定 num-buckets 8 局面を分けるグループ数
固定 scale 600 学習値と評価値を対応させる倍率
固定 superbatches 400 実行する大きな学習区間の数
固定 threads 16 学習または対局計算に使うCPU処理列数
固定 win-rate-model True 評価値と勝率の関係も学習する設定
固定 wrm-nnue2score 600 勝率学習でNNUE評価値を変換する倍率
対局 engine\_options Threads=1 Hash=128 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":14535.184,"effective_positions":40003174400,"ended_at":"2026-09-08T18:18:15.540Z","mode":"trained","optimizer_updates":2441600,"recipe_id":"tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1","stage_count":1,"started_at":"2026-09-08T14:16:00.356Z"},"experiment":{"candidate_id":"goal-candidate-207380a3787b4a26831fef29ed2c12cd","champion_id":"goal-champion-source-52b4fdd1354073545bb19aac","ended_at":"2026-09-09T08:14:39.245359Z","experiment_id":"207380a3-787b-4a26-831f-ef29ed2c12cd","started_at":"2026-09-08T14:09:44.875297Z"},"hardware":[{"name":"gpu","value":"NVIDIA GeForce RTX 4090"}],"internal_evidence_receipt_sha256":"ad6e6441fb5eaf0af40756fa7c63f94fae8ed9fee4143207db41ad9b2ec34798","observations":[{"metric":"draws","observation_id":"ltc-draws","stage":"ltc","unit":"games","value":1005},{"metric":"games","observation_id":"ltc-games","stage":"ltc","unit":"games","value":12520},{"metric":"llr-current","observation_id":"ltc-llr-current","stage":"ltc","unit":"llr","value":2.9003785434874843},{"metric":"llr-lower","observation_id":"ltc-llr-lower","stage":"ltc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"ltc-llr-upper","stage":"ltc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"ltc-losses","stage":"ltc","unit":"games","value":5607},{"metric":"wins","observation_id":"ltc-wins","stage":"ltc","unit":"games","value":5908},{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":1196},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":30010},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":2.9595467926973726},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":14198},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":14616}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"training_data","stage_index":1,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-207380a3787b4a26831fef29ed2c12cd","rating_contract":{"alpha":0.05,"base_id":"goal-champion-source-52b4fdd1354073545bb19aac","beta":0.1,"candidate_id":"goal-candidate-207380a3787b4a26831fef29ed2c12cd","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"40.0+0.4"},"report_kind":"rating_experiment","repositories":[{"commit":"52b4fdd1354073545bb19aac0ecd8e088e177b4f","public_url":"https://github.com/nodchip/tatara","ref":"refs/tags/autotune/experiments/207380a3-787b-4a26-831f-ef29ed2c12cd","repository_id":"tatara"}],"resolved_arguments":[{"name":"stage-01.lr","value":8.75e-05,"value_type":"number"}],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tatara","version":"52b4fdd1354073545bb19aac0ecd8e088e177b4f"}]}

将棋AI tanuki- 2026-09-08 15:35 日本標準時 入玉データを学習したモデルに別の教師評価値平均データで追加学習 追加学習前後の比較(短時間対局試験・候補不採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの評価モデル、候補 (candidate) は今回評価するモデルです。追加学習とは、既存モデルの学習済みの重み (学習で調整された内部の数値) を出発点にして、さらに学習を続けることです。入玉局面とは王が相手陣へ入った局面、通常局面とはそれ以外の局面です。教師AIとは、学習時の答えとなる評価値を作るために使った別の将棋AIです。教師信号とは、その教師AIが各局面に付け、学習時の正解として使う評価値です。

要約

  • 今回評価した変更に関する実験前の予想: 入玉局面を含むデータで学習済みの採用モデルを出発点に、別の既存データで一段階の追加学習を行いました。今回使ったのは、運用者の生成情報で教師評価値の相加平均と説明された、1手の探索を最大1,000ノードとして作られた局面のデータです。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補不採用でした。
  • 測定段階: 短時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 入玉局面を含むデータで学習した採用モデルに、別の教師評価値平均データで一段階の追加学習を行うと、対局での強さは改善するでしょうか。
  • 実験前の予想: 追加学習前の採用モデルより対局で強くなると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 入玉局面を含むデータの学習後に、別の局面群へ学習を戻す順序を調べます。学習済みの重みだけを継承し、重み更新を管理する四つの状態を初期化して、400の学習区間を実行しました。四つの状態は最適化手法の内部状態、更新を安定させるRangerのlookahead状態、累計更新回数、学習率の変更規則です。データと追加学習量を含む条件全体の効果を比較します。
  • 用語補足: 学習局面の構成とは、学習データにどのような局面がどの程度含まれるかという傾向です。これは教師AIが付けた評価値の数値分布とは異なります。
  • 事前成功条件: 2局の動作確認を完了し、短時間対局で固定した合格境界に到達した場合だけ長時間対局へ進み、そちらでも合格境界に到達することです。

今回の変更

次の表は、今回の実験で行った変更です。 今回の候補の学習では、40,003,174,400局面を処理し、重みを2,441,600回更新しました。初期重みの選び方と対戦相手との関係は、考察の観測事実・解釈で説明します。学習を行ったという記録だけから、現在の比較基準への追加学習とは判断しません。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 52b4fdd1354073545bb19aac0ecd8e088e177b4f 52b4fdd1354073545bb19aac0ecd8e088e177b4f 同じソースコードとネットワーク構造で、採用モデルの重みを初期値に一段階の追加学習を行いました。実際の比較対象は追加学習前後の重みです。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 版を固定した学習設定で選んだ非公開の入力データ
  • 前処理: 将棋局面と教師評価値を格納する固定形式で読み込む
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 8,000,049,489 / 40,003,174,400
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 1段階の学習。初期重みと変更内容は考察の観測事実・解釈を参照
  • 学習段階数: 1 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): NVIDIA GeForce RTX 4090
  • 実際に学習へ使った局面数 / 重みを更新した回数: 40,003,174,400 / 2,441,600
  • 実行時間: 2026-09-08 10:27:34 日本標準時 → 2026-09-08 14:29:47 日本標準時 (約4時間2分13秒)
  • 学習状態の用語: 最適化手法 (optimizer) は、誤差を小さくするようにモデル内部の数値を更新する計算方法です。Rangerのlookaheadは、その更新を安定させるためにoptimizer内部で保持する状態であり、将棋の指し手を読む深さではありません。累計更新回数 (global step) は学習開始から重みを更新した総回数、学習率の変更規則 (LR schedule) は更新幅を学習中にどう変えるかを定めた規則です。

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 8.0+0.08 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 長時間対局試験の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ16 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 候補不採用
  • 判定理由: 短時間対局試験のLLRが候補不採用の下限に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 候補不採用 4764 2202 191 2371 現在値 -2.28961 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 未実施 短時間対局試験が候補不採用になったため

追加の統計値

指標 値または掲載しない理由
推定Elo この逐次判定は0 Eloと+4 Eloのどちらが結果に合うかだけを判定し、Eloを一つの推定値として計算しないため掲載なし
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

学習誤差 (loss)

学習誤差 (loss) は、AIの予測と教師データに記録された答えのずれを表す値です。同じ定義と条件で比べる場合は、小さいほど教師データへよく合っています。

学習損失・ステップ別

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 4d54fe62e204da49bfe908923ca974652174cd7c29884084cddbf85c153bfb05

考察

観測事実

  • 採用中のモデルの重みを出発点に、既存データで一段階の追加学習を完了しました。重みは局面の評価を調整するモデル内部の数値です。今回の入力は、運用者の生成情報で教師評価値の相加平均と説明された、1手の探索を最大1,000ノードとして作られた局面のデータです。探索ノードは先読み中に調べる局面一つ分の計算単位であり、1,000種類の異なる局面を意味しません。相加平均は複数の値を足し、その個数で割る計算です。非公開の入力説明と固定済みの入力記録を照合して使用しました。教師信号を今回新たに生成したわけではありません。 — 根拠: 実験計画、学習完了記録
  • 短時間対局は2,202勝・191分・2,371敗の4,764局で終了しました。判定値のLLRは−2.28961で、事前に定めた不採用側の境界−2.25129を下回りました。 — 根拠: 短時間対局試験の結果
  • 短時間対局で不採用となったため、計画に従って長時間対局を実施せず、追加学習前の採用モデルを維持しました。学習の実行は正常に完了しており、今回の不採用は対局の統計判定によるものです。 — 根拠: 実験計画、短時間対局試験の結果、採用判定記録

解釈

  • 今回の初期モデル・データ・学習量では、追加学習による改善を支持できず、固定した検定の不採用側の境界に達しました。別データへの追加学習全体を検証した結果であり、教師評価値を平均する方法だけの効果や、入玉局面だけの強さを分離した結果ではありません。 この解釈が誤りだと分かる条件 (反証条件): 異なる学習乱数を事前に固定した追試で改善方向が再現し、同じ短時間・長時間対局の合格基準を満たす場合には、今回の条件についての解釈の一般性を見直します。

実験前の予想に対する判定: 反証。今回の結果が実験前の予想を支持しなかったことを表します。

限界

  • 測定範囲: 比較基準には同じ回数の追加学習を行っていません。入力データ、学習順序、学習量の寄与を個別には分離できません。学習状態の初期化も今回の追加学習条件に含まれます。 — 根拠: 実験計画、学習完了記録、短時間対局試験の結果
  • 他の条件への適用可能性: 追加学習は一回だけです。別の学習乱数や初期モデル、持ち時間に結果を一般化できません。入玉に限った対局成績と長時間対局での成績は測定していません。 — 根拠: 実験計画、学習完了記録、短時間対局試験の結果
  • 測定範囲: 教師信号の由来は運用者の説明に基づきます。入力の同一性は非公開記録で照合しましたが、今回その生成処理を再実行して検証したものではありません。開始局面、学習データ、評価モデルは非公開のため、記事だけで計算全体を再現することはできません。 — 根拠: 実験計画、学習完了記録

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-ab2b8a7f55684422be37ba9429145cd8
  • 非公開の監査用記録のSHA-256: e0e582dff823ce1dcd94fb6346aba0c808974d3d4f0fa70bd3f657cd233eeb51
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: 5a29aee70bdbce28f67ef6810f56bdd8137ccee8d9a6ab48138db80be49efcd1

次の実験

  • 仮説: 追加学習時に一回の重み更新で変化させる幅を調整すると、学習済みの評価を保ちつつ改善できる可能性があります。
  • 変更: 学習率など更新幅に関わる条件を一つだけ変える候補について、許可済みの学習条件と過去の記録を調べ、次の実験前に具体的な比較条件を固定します。
  • 理由: 入玉学習後に別データへ学習を戻す今回の一段追加では改善を確認できませんでした。次はデータの種類だけでなく、追加学習の進め方を検討します。
  • 結果に影響し得る別の要因: 更新幅が大きく、既存の有用な重みを変え過ぎた可能性があります。 / 入力データと現在のモデルの組み合わせが適さなかった可能性があります。 / 今回一回の学習と対局のばらつきが結果に影響した可能性があります。
  • 成功条件: 事前に固定した対局方針に従い、必要な短時間・長時間対局の統計的な合格基準を満たすことです。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1
  • ネットワーク構造の内部名: layerstack
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: reject / stc_native_fail
区分 内部パラメーター名 日本語での意味
候補側 loss-pow-exp 2.75 大きな学習誤差をどの程度強く重視するか
固定 batch-size 16384 1回の重み更新でまとめて扱う局面数
固定 batches-per-superbatch 6104 一つの大きな学習区間に含める更新単位数
固定 bucket-mode progress8kpabs 局面を進行度などでグループ分けする方法
固定 ft-out 768 駒の配置を数値特徴へ変換した直後に出力する特徴数
固定 l1 8 変換後の特徴を受け取る第1隠れ層のニューロン数
固定 l2 32 第1隠れ層の出力を受け取る第2隠れ層のニューロン数
固定 num-buckets 8 局面を分けるグループ数
固定 scale 600 学習値と評価値を対応させる倍率
固定 superbatches 400 実行する大きな学習区間の数
固定 threads 16 学習または対局計算に使うCPU処理列数
固定 win-rate-model True 評価値と勝率の関係も学習する設定
固定 wrm-nnue2score 600 勝率学習でNNUE評価値を変換する倍率
対局 engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":14533.114,"effective_positions":40003174400,"ended_at":"2026-09-08T05:29:47.858Z","mode":"trained","optimizer_updates":2441600,"recipe_id":"tatara-loss-pow-2.75-training-data-nodes1000-ensemble-production-v1","stage_count":1,"started_at":"2026-09-08T01:27:34.744Z"},"experiment":{"candidate_id":"goal-candidate-ab2b8a7f55684422be37ba9429145cd8","champion_id":"goal-champion-source-52b4fdd1354073545bb19aac","ended_at":"2026-09-08T06:35:27.778786Z","experiment_id":"ab2b8a7f-5568-4422-be37-ba9429145cd8","started_at":"2026-09-08T01:19:47.583216Z"},"hardware":[{"name":"gpu","value":"NVIDIA GeForce RTX 4090"}],"internal_evidence_receipt_sha256":"e0e582dff823ce1dcd94fb6346aba0c808974d3d4f0fa70bd3f657cd233eeb51","observations":[{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":191},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":4764},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":-2.2896122010472006},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":2371},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":2202}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"training_data","stage_index":1,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-ab2b8a7f55684422be37ba9429145cd8","rating_contract":{"alpha":0.05,"base_id":"goal-champion-source-52b4fdd1354073545bb19aac","beta":0.1,"candidate_id":"goal-candidate-ab2b8a7f55684422be37ba9429145cd8","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"8.0+0.08"},"report_kind":"rating_experiment","repositories":[{"commit":"52b4fdd1354073545bb19aac0ecd8e088e177b4f","public_url":"https://github.com/nodchip/tatara","ref":"refs/tags/autotune/experiments/ab2b8a7f-5568-4422-be37-ba9429145cd8","repository_id":"tatara"}],"resolved_arguments":[{"name":"stage-01.loss-pow-exp","value":2.75,"value_type":"number"}],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tatara","version":"52b4fdd1354073545bb19aac0ecd8e088e177b4f"}]}

将棋AI tanuki- 2026-09-08 09:54 日本標準時 評価値の尺度設定を元の値に近い中間値で比較 FV_SCALE 20対24(短時間対局試験・候補不採用)

このエントリーは、将棋AI tanuki- の強さを改善するために行った一件の実験を記録します。tanuki- は、指し手を探す思考エンジンと、局面の有利・不利を数値化する評価モデルを組み合わせた将棋AIです。 ここで局面とは盤上の駒の配置、思考エンジンとは指し手を探して選ぶプログラムです。NNUEは Efficiently Updatable Neural Network (効率的に更新可能なニューラルネットワーク) の略です。NNUE評価モデルは、入力した局面から有利・不利の評価値を高速に計算する、将棋向けの軽量なAIモデルです。思考エンジンは、この評価値を指し手の探索に使います。 試験で使う対局開始時の盤面の集合、実運用向けモデルの学習に使うデータ、学習済み評価モデルは非公開です。そのため、この記事だけで同じ計算を完全に再現することはできませんが、何を変え、どの条件で比較し、どの結果から採用・不採用を決めたかは確認できます。 現在の比較基準 (champion) は実験開始時に採用済みの評価モデル、候補 (candidate) は今回評価するモデルです。追加学習とは、既存モデルの学習済みの重み (学習で調整された内部の数値) を出発点にして、さらに学習を続けることです。入玉局面とは王が相手陣へ入った局面、通常局面とはそれ以外の局面です。教師AIとは、学習時の答えとなる評価値を作るために使った別の将棋AIです。教師信号とは、その教師AIが各局面に付け、学習時の正解として使う評価値です。 教師評価値の数値分布とは、教師AIが多数の局面に付けた有利・不利の数値が、どの範囲にどれだけ現れるかという偏りです。評価値の数値分布の較正とは、局面の強さの順序を保ちながら、その数値の偏りを別の教師AIの評価値分布へ近づける調整です。これは、どの種類の局面をどれだけ学習データに含めるかという学習局面の構成とは別のものです。 評価値の数値分布の較正とモデルの学習は過去の実験で完了しています。今回は学習済みモデルを再利用しました。今回変えた条件と実施した対局試験は、以下の実験方法と結果に記載します。

要約

  • 今回評価した変更に関する実験前の予想: 過去に教師評価値の較正を使って学習した同じモデルを両側に固定し、評価値の尺度設定評価値の倍率を調整する係数 (設定名: FV_SCALE)だけを24から中間値20へ変更しました。先の測定推奨値14が不合格だったため、変更幅を小さくした比較です。今回の対戦相手は現行採用モデルではなく、新たな学習もありません。
  • 結果: 事前に固定した採用判定ルールによる最終判定は、候補不採用でした。
  • 測定段階: 短時間対局試験
  • 最重要の注意点: 対局開始局面、学習データ、評価モデル(今回の候補および比較に用いるもの)は非公開であり、公開記事は方法と結果の監査を目的とします。

背景と実験前の予想 (仮説)

  • ここからの各項目は、今回の実験前に立てた仮説と判定条件です。
  • 問い: 同じ較正済みモデルで、元の24に近い中間値評価値の倍率を調整する係数 (設定名: FV_SCALE) 20なら、短時間対局の強さが改善するでしょうか。
  • 実験前の予想: 尺度設定の変更幅を14より小さくすれば、前の試験で起きた悪化を避けて改善する可能性があると予想しました。
  • 強くなるという予想と、その改善量を測定したという結論は異なります。今回の採否は後述する二仮説の逐次検定で決めます。判定用のLLRと、強さの差を表すEloの推定値は区別します。
  • 改善すると考えた理由: 元の24からの設定変更を小さくし、探索への影響が変わるかを調べます。既存の尺度診断は不安定で、20は測定から直接得た最適値ではありません。
  • 用語補足: 学習局面の構成とは、学習データにどのような局面がどの程度含まれるかという傾向です。これは教師AIが付けた評価値の数値分布とは異なります。
  • 今回の確認段階の事前成功条件: 同じモデルの20側が24側に対し、短時間対局で事前固定した統計基準に合格することです。この設定比較は現行モデルへの昇格対象ではありません。

今回の変更

今回は学習済みモデルを再利用しています。次の表と対局設定欄に、今回の比較条件を記載します。モデルが同じでも対局設定は異なる場合があります。

構成要素 現在の比較基準 (champion) 今回評価する候補 (candidate) 変更理由
使用したソースコードの版 52b4fdd1354073545bb19aac0ecd8e088e177b4f 52b4fdd1354073545bb19aac0ecd8e088e177b4f ソースコードとモデルは固定し、対局時の評価値の倍率を調整する係数 (設定名: FV_SCALE)だけを変更しました。この表のソースコードの版と、実際の対戦モデルの管理情報は区別します。

実験方法

データ

  • 公開状態: 非公開
  • 選択方法: 今回は新たな学習を行わず、計画で固定した過去の学習済みモデルを再利用する
  • 前処理: 学習済みモデルを再利用し、今回の計画で固定した条件で対局する
  • 学習データに含まれる記録数 / 学習中に処理した累計局面数: 0 / 0
  • 記録数は、学習データのファイルに保存された局面レコードの件数です。累計局面数は、同じデータを複数回読む場合も含め、学習処理が実際に読み込んだ延べ件数です。

学習

  • 学習方法: 学習せず、過去の実験で作成した評価モデルを再利用
  • 今回の確認段階では新たな学習を行っていません。過去の実験で作成したモデルを、今回の計画の対局条件で評価しました。
  • 学習段階数: 0 (計画で区切った学習処理の段階数)
  • ニューラルネットワークの設計: 局面から評価値を計算する複数の層を積み重ねたNNUEモデル
  • 学習計算に使った画像処理向けプロセッサ (GPU): 使用なし
  • 実際に学習へ使った局面数 / 重みを更新した回数: 0 / 0
  • 実行時間: 2026-09-08 09:28:55 日本標準時 → 2026-09-08 09:28:55 日本標準時 (約0時間0分0秒)
  • 学習状態の用語: 最適化手法 (optimizer) は、誤差を小さくするようにモデル内部の数値を更新する計算方法です。Rangerのlookaheadは、その更新を安定させるためにoptimizer内部で保持する状態であり、将棋の指し手を読む深さではありません。累計更新回数 (global step) は学習開始から重みを更新した総回数、学習率の変更規則 (LR schedule) は更新幅を学習中にどう変えるかを定めた規則です。

対局による強さの測定

  • 測定方針: 持ち時間、統計判定の閾値、最大対局数を固定した方針
  • 対局ルール: やねうら王に実装された24点法の入玉ルールを使用します。24点法は、王が相手陣へ入り、所定の駒点を満たした場合の勝敗を定める規則です。
  • 対局の開始局面集: 非公開
  • 今回の測定段階の持ち時間: 8.0+0.08 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 長時間対局試験の持ち時間: 40.0+0.4 (先頭は初期持ち時間、+ の後は1手ごとの加算時間。単位はいずれも秒)
  • 統計判定: 対局結果を順に加え、次の二つの仮説の一方を支持する証拠が十分になった時点で止める逐次確率比検定 (SPRT)
  • 比較する強さの仮説: 基準と同等 (0.0 Elo) / 改善 (+4.0 Elo)。Eloは対局結果から推定する強さの点数です。
  • 誤判定の許容確率: 改善していない候補を誤って採用する確率を5%、改善した候補を誤って不採用にする確率を10%まで許容
  • 最大対局数: 131072
  • 思考エンジン設定: CPU(中央処理装置)で指し手を探す処理を1つだけ実行し、探索結果を一時保存するメモリ16 MiB (1 MiB = 1,048,576バイト)、24点法の入玉ルール

結果

  • 判定: 候補不採用
  • 判定理由: 短時間対局試験のLLRが候補不採用の下限に達したため
  • 短時間対局試験 (STC: Short Time Control) は、短い持ち時間で多数局を行い、改善の証拠がある候補だけを選ぶ試験です。長時間対局試験 (LTC: Long Time Control) は、短時間対局試験を通過した候補を長い持ち時間で確認する試験です。
  • LLR (対数尤度比) は、上記の改善仮説と同等仮説のどちらの証拠が強いかを表す判定用の数値です。LLRが下限に達したら候補不採用、上限に達したらこの測定段階を通過とします。実際の採用は、実験計画で必要とされた後続の測定段階も通過した後に判断します。通過しても、強さの差が少なくとも+4 Eloあると証明したわけではありません。不通過も、候補の方が弱いと証明したことを意味しません。
測定段階 状態 対局数 引分 現在のLLRと判定境界(信頼区間ではない) 最大対局数 未実施理由
短時間対局試験 候補不採用 2138 939 73 1126 現在値 -2.30901 / 不採用境界 -2.25129 / 合格境界 2.89037 131072
長時間対局試験 未実施 この実験計画では長時間対局試験を行わないため

追加の統計値

指標 値または掲載しない理由
推定Elo 試験後の記述的推定 -30.47。名目95%区間 -45.16~-15.88(逐次停止・設定選択・共通開始局面の未補正値。採用基準には使わない) elo
先手と後手それぞれの勝敗集計 今回の測定方針では集計していないため掲載なし

対局結果の概要図

この図は、候補と比較基準の勝敗数と統計判定値の推移を示します。

短時間対局試験の勝敗数と統計判定値

グラフの内容照合用SHA-256 (ファイル内容から作る一方向の指紋): 9f888925ed9900d65c7026cd9837eb9ec1b0198316f25f2f5bca90f4047b93d6

考察

観測事実

  • 評価値の倍率を調整する係数 (設定名: FV_SCALE)は、思考エンジンが使う評価値の数値の尺度を調整する設定です。以前に教師評価値の分布を調整する較正を使って学習したモデルを固定し、今回は設定だけを24から20へ変更しました。両側は同じ学習済みモデルで、現行の採用済みモデルとの対戦ではありません。新たな学習、較正表の作り直し、ソースコードの変更はありません。 — 根拠: 実験計画、評価モデル再利用記録、使用ソースコードの記録
  • 前の実験では、較正あり候補と対応する未較正対照を同じ256局面で、両側の評価値の倍率を調整する係数 (設定名: FV_SCALE)を1に固定して測定しました。評価値の絶対値の中央値の比は約0.570で、設定24にこの比を適用して整数に丸めた候補値は14でした。中央値は数値を並べた中央の値です。その測定結果を今回も使い、測定自体はやり直していません。今回の20は測定から直接得た値ではありません。 — 根拠: 実験計画
  • 測定値の対応の強さを表す相関係数は約0.587でした。中央値からのずれの中央値を比べる別の推定は約0.655、原点を通る直線への当てはめによる比は約0.458で、推定方法間にも差がありました。固定した診断基準では安定した尺度推定と判定されていません。14は対局で試す候補値として採用したもので、測定だけで棋力改善を認めた値ではありません。今回もこの診断を安定した推定とは扱っていません。 — 根拠: 実験計画
  • 前の14対24の試験は620局、14側の205勝・12分・403敗で不合格でした。今回は24から14への差10のうち4だけ動かす、24寄りの中間値20を事前に選びました。20を最適値と判断したものではありません。両試験は別の設定比較であり、勝敗を合算して1つの効果を推定しません。 — 根拠: 実験計画
  • 2局の動作確認後、同じ開始局面で先後を入れ替える短時間対局試験を行いました。評価値の倍率を調整する係数 (設定名: FV_SCALE) 20側は2,138局で939勝・73分・1,126敗でした。試験を続けるか止めるかを決める統計値LLRは約−2.309で、事前に固定した不合格境界の約−2.251を下回りました。20への変更を不採用とし、現行モデルは更新していません。長時間対局試験は計画に含まず、実施していません。 — 根拠: 短時間対局試験の結果、採用判定記録
  • 先後を入れ替えた2局を1組とする1,069組の得点分布から、試験後にEloを別計算しました。Eloは対局結果から強さの差を表す尺度です。20側の24側に対する記述的推定差は−30.47 Elo、名目95%区間は−45.16から−15.88でした。2局の合計得点を5分類で数え、OpenBenchのElo関数と同じ方法で得点率から不確実性の範囲を計算する統計手法(Student-t分布)で区間を求め、Eloへ変換しました。方法のソースは https://github.com/AndyGrant/OpenBench/blob/master/OpenBench/stats.py です。元の逐次検定の合否は変更していません。 — 根拠: 短時間対局試験の結果
  • この試験で報告されたエンジン異常終了と時間切れ負けは各0件でした。不正着手の独立した件数欄はありませんが、不正着手や異常終了の報告で立つサーバーのエラーフラグが偽だったため、報告された不正着手はないと推論しました。これは報告経路に基づく確認です。 — 根拠: 短時間対局試験の結果
  • 保存された対局要求を照合し、両側のモデル、思考エンジンの版と動作確認値、持時間と他の設定が一致し、設定の差が評価値の倍率を調整する係数 (設定名: FV_SCALE)だけであることを確認しました。今回の図は勝敗と判定統計値の概要です。学習をしていないため、過去の学習損失を今回の結果として掲載しません。付録のbaseは24側、devは20側を表します。現在の比較基準という記録は現行採用モデルの管理情報であり、今回の対戦相手を意味しません。 — 根拠: 実験計画、評価モデル再利用記録、短時間対局試験の結果

解釈

  • 今回の固定モデルと短時間条件では、中間値20への変更も改善につながらず、24側が優勢でした。先の14対24と今回の20対24はともに不合格ですが、異なる設定同士の試験なので勝敗を合算しません。較正そのものの有効性や、未試験のすべての尺度設定まで否定する結果ではありません。 この解釈が誤りだと分かる条件 (反証条件): モデルや対局設定の一致に誤りが見つかった場合、または別の事前固定条件で結果の方向が再現しない場合は解釈の範囲を見直します。

実験前の予想に対する判定: 反証。今回の結果が実験前の予想を支持しなかったことを表します。

限界

  • 統計上の不確実性: Eloの区間は試験後に計算した名目95%区間で、途中結果による停止、設定候補の選択、共通の開始局面の影響を補正していません。独立した事前固定局数の95%保証や採用基準としては使いません。LLRの下限・上限は試験を止める判定境界であり、Eloの信頼区間とは異なります。 — 根拠: 短時間対局試験の結果
  • 測定範囲: 尺度測定は固定した256局面に限られ、診断も不安定でした。2モデルの評価値の違いには数値の尺度だけでなく局面判断の違いも含まれます。今回の測定は教師評価値の較正表の再学習には使っていません。 — 根拠: 実験計画
  • 他の条件への適用可能性: 対局は1つの学習済みモデルにおける2設定の短時間比較です。他のモデルや持時間にも同じ差があるとは断定しません。モデル、学習データ、開始局面は非公開で、記事は方法と結果を検討するための記録です。 — 根拠: 評価モデル再利用記録、短時間対局試験の結果

結果を後から検証するための情報

  • 対局の開始局面集、学習データ、今回の候補と現在の比較基準に使った学習済み評価モデル: 非公開
  • 運用者は、実験結果を後から検証できるように、元データ、実行記録、判定記録などの検証資料を非公開で保持しています。公開する監査記録は、実験証拠を決まった形式で記録した検証用記録のSHA-256と結び付いています。
  • SHA-256は、元の内容を復元せず、二つのファイルが同じ内容か照合するための固定長の値です。認証情報、非公開データ、内部パスは公開せず、検証用記録のSHA-256だけを掲載します。
  • 公開範囲は、実験方法、観測値、採否を第三者が確認するための情報です。非公開資料が必要なため、ブログ読者が計算を完全に再現することは完了条件にしていません。
  • 公開識別子は、この記事と公開用の実験記録を対応させるための文字列です: goal-ae90287b01db47cbbd23067034f8b6a3
  • 非公開の監査用記録のSHA-256: 792a4217922bb6118fe50c90bdba2d0cd92e7e94f23ea03ed234b11017fe4689
  • 公開項目一覧 (公開する項目を一覧にした検証記録) のSHA-256: 23c7d1ae5bb0ea6153f0395f867172bedeefa60c2105aeaf272e56377c8b9e0f

次の実験

  • 仮説: 今回の固定モデルでは尺度設定を変える以外の要因を調べる方が、強さの改善につながる可能性があります。
  • 変更: 14と20で改善がなかった結果を保存し、同じ尺度設定の試験を続けて増やさず、入玉局面の扱いなど別の優先提案や学習仮説を次の計画境界で検討します。
  • 理由: 尺度診断が不安定で、選んだ2つの設定がともに不合格だったため、別要因の情報を得ることを優先します。
  • 結果に影響し得る別の要因: 元の尺度設定24がこのモデルと探索条件に適している可能性があります。 / モデルの局面判断や学習局面の構成など、別の要因が改善を制限している可能性があります。
  • 成功条件: 次の仮説でも変更要因を明示して比較条件を固定し、必要な先後反転対局の勝ち・引き分け・負け(W-D-L)と統計基準で評価します。今回の不合格結果だけから未検証の改善を断定しません。

技術付録

内部設定と公開検証記録を表示

以下の内部IDとパラメーターは、公開ソースコードと実験記録を照合するために掲載します。実験の結論を読むだけなら、この表を逐語的に理解する必要はありません。

  • 学習設定一式の内部識別子: not-applicable
  • ネットワーク構造の内部名: 確認対象の学習済み候補モデルを変更せず再利用
  • 測定方針 / 対局ルールの内部識別子: goal-rating-policy-v3 / canonical-yaneuraou-csarule24-v1
  • 判定 / 判定理由の内部コード: reject / stc_native_fail
区分 内部パラメーター名 日本語での意味
対局 base.engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 FV\_SCALE=24 実装内部の設定。正確な意味は公開ソースコードで確認できます
対局 dev.engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 FV\_SCALE=20 実装内部の設定。正確な意味は公開ソースコードで確認できます
対局 engine\_options Threads=1 Hash=16 option.EnteringKingRule=CSARule24 対局時の思考エンジン設定一式

コンピューターが読み取れる公開検証記録

以下は、第三者が実験結果を確認でき、コンピューターでも実験条件と結果を照合できるように、項目名と値を並べた標準的なテキスト形式 (JSON) で作った記録です。英語の値は内部コードであり、その意味は上の各節で説明しています。JSONのコードブロックはコンピューターによる照合用の付録なので、読者が各キーを逐語的に理解する必要はありません。private_not_published は「非公開で掲載していない」という意味です。

候補IDと比較基準IDは、この公開記録の中で二者を区別するためだけに割り当てた公開用ラベルです。非公開モデルのファイル名、保存場所、内容のSHA-256ではなく、それらを手掛かりに非公開モデルを取得することもできません。private_artifacts には、非公開物の種類と非公開であることだけを記録し、個別の非公開物を識別する名前は含めていません。

JSONの項目名 日本語での意味
schema_version / profile_id / report_kind 記録形式の版、種類、用途
publication_key 記事と公開記録を対応付ける公開識別子
disclosure 何を公開し、何を非公開にするか
artifact_policy 開始局面、学習データ、モデルを非公開にする方針
reproduction_scope 完全再計算ではなく、方法と結果の確認を公開範囲とする方針
execution 学習の開始・終了、所要時間、学習量
effective_positions 学習中に処理した累計局面数
optimizer_updates モデルの重みを更新した回数
experiment 実験の公開用ラベルと開始・終了日時
candidate_id / champion_id / base_id 候補と比較基準を区別する公開用ラベル
hardware / software 使用した計算機器とソフトウェア
observations 勝敗数や統計判定値などの観測結果
policies / rating_contract 学習・対局・統計判定で事前に固定した規則
private_artifacts 非公開物の種類と、非公開であることだけを示す一覧
repositories 公開ソースコードの場所と版
resolved_arguments 今回変更した公開可能な設定値
internal_evidence_receipt_sha256 非公開の監査用記録が変わっていないか照合する値
{"disclosure":{"artifact_policy":"opening_training_data_and_models_are_private_not_published","reproduction_scope":"article_supports_method_and_result_audit_but_not_full_computational_reproduction"},"execution":{"duration_seconds":0,"effective_positions":0,"ended_at":"2026-09-08T00:28:55.548199Z","mode":"reuse_terminal_network","optimizer_updates":0,"recipe_id":"not-applicable","stage_count":0,"started_at":"2026-09-08T00:28:55.548199Z"},"experiment":{"candidate_id":"goal-candidate-ae90287b01db47cbbd23067034f8b6a3","champion_id":"goal-champion-source-52b4fdd1354073545bb19aac","ended_at":"2026-09-08T00:54:04.315691Z","experiment_id":"ae90287b-01db-47cb-bd23-067034f8b6a3","started_at":"2026-09-08T00:26:15.116495Z"},"hardware":[],"internal_evidence_receipt_sha256":"792a4217922bb6118fe50c90bdba2d0cd92e7e94f23ea03ed234b11017fe4689","observations":[{"metric":"draws","observation_id":"stc-draws","stage":"stc","unit":"games","value":73},{"metric":"descriptive-elo-elo","observation_id":"stc-extra-descriptive-elo-elo","stage":"stc","unit":"elo","value":-30.46627513258188},{"metric":"descriptive-elo-lower","observation_id":"stc-extra-descriptive-elo-lower","stage":"stc","unit":"elo","value":-45.156494020313744},{"metric":"descriptive-elo-upper","observation_id":"stc-extra-descriptive-elo-upper","stage":"stc","unit":"elo","value":-15.883975952891607},{"metric":"reported-crashes","observation_id":"stc-extra-reported-crashes","stage":"stc","unit":"count","value":0},{"metric":"reported-time-losses","observation_id":"stc-extra-reported-time-losses","stage":"stc","unit":"count","value":0},{"metric":"reported-worker-error-flag","observation_id":"stc-extra-reported-worker-error-flag","stage":"stc","unit":"count","value":0},{"metric":"games","observation_id":"stc-games","stage":"stc","unit":"games","value":2138},{"metric":"llr-current","observation_id":"stc-llr-current","stage":"stc","unit":"llr","value":-2.3090073101149016},{"metric":"llr-lower","observation_id":"stc-llr-lower","stage":"stc","unit":"llr","value":-2.251291798606495},{"metric":"llr-upper","observation_id":"stc-llr-upper","stage":"stc","unit":"llr","value":2.8903717578961645},{"metric":"losses","observation_id":"stc-losses","stage":"stc","unit":"games","value":1126},{"metric":"wins","observation_id":"stc-wins","stage":"stc","unit":"games","value":939}],"policies":[{"name":"rating-policy","version":"goal-rating-policy-v3"},{"name":"training-catalog","version":"goal-training-catalog-v2"}],"private_artifacts":[{"availability":"private_not_published","role":"candidate_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"champion_model","stage_index":null,"verification":"locally_exact_verified"},{"availability":"private_not_published","role":"opening","stage_index":null,"verification":"locally_exact_verified"}],"profile_id":"goal-public-audit-manifest-v3","publication_key":"goal-ae90287b01db47cbbd23067034f8b6a3","rating_contract":{"alpha":0.05,"base_id":"goal-candidate-beea5df2e01a4140a412282e4b33be09","beta":0.1,"candidate_id":"goal-candidate-ae90287b01db47cbbd23067034f8b6a3","elo0":0.0,"elo1":4.0,"game_budget":131072,"opening_availability":"private_not_published","policy_id":"goal-rating-policy-v3","rule_profile_id":"canonical-yaneuraou-csarule24-v1","time_control":"8.0+0.08"},"report_kind":"rating_experiment","repositories":[{"commit":"52b4fdd1354073545bb19aac0ecd8e088e177b4f","public_url":"https://github.com/nodchip/tatara","ref":"refs/tags/autotune/experiments/ae90287b-01db-47cb-bd23-067034f8b6a3","repository_id":"tatara"}],"resolved_arguments":[{"name":"base.engine_options","value":"Threads=1 Hash=16 option.EnteringKingRule=CSARule24 FV_SCALE=24","value_type":"string"},{"name":"dev.engine_options","value":"Threads=1 Hash=16 option.EnteringKingRule=CSARule24 FV_SCALE=20","value_type":"string"},{"name":"engine_options","value":"Threads=1 Hash=16 option.EnteringKingRule=CSARule24","value_type":"string"}],"schema_version":3,"software":[{"name":"tatara-source","public_locator":"https://github.com/nodchip/tatara","version":"52b4fdd1354073545bb19aac0ecd8e088e177b4f"}]}