モデルにはまだ記憶力がありません
モデルは一手ごとに、その瞬間の盤面だけを見て答えます。数手前にどの石が取られたか、 どこでコウが生じたか、最初に決めたルールが何かを覚えていません。そのため、すでに石が ある場所や自殺手、取られたばかりのコウをすぐに取り返す手を出すこともあります。
今はWebのルールエンジンがその穴を埋めています。モデルが選んだ座標がルールに反すれば 拒否リストに入れて聞き直し、それでも合法手が出てこなければエラーをそのまま表示します。 勝手に別の手へこっそり差し替えることはしません。
対局のすべての手はサーバーに記録されます。しかしモデルはその記録を読んでから打つわけでは ありません。ノートに書いておくことと、頭の中で覚えていることは違います。
だからといって、記憶力をひとつのモデルに任せるつもりはありません。RAGとLLMだけでは こうした問題を解けないという研究も珍しくありません。そこで複数のエンジンに役割を 分けて記憶力を作ろうとしています。
- コウの直後の取り返しや自殺手のように絶対に打てない手は、ルールエンジンが止めます。 プロンプトに書いておいてもモデルは無視することがあります。この部分は今も動いています。
- シチョウ、ダメ、二眼ができそうな形のように、盤面と手順から計算し直せるものは、 分析エンジンが毎手新たに計算します。覚えておくと、盤面が変わった後も古い情報が残って しまいます。
- 最初に決めたルール、進行中の計画、以前に犯したミスのように盤上に見えないものだけを 出来事として記録します。出来事ごとに発生した手と消える時点を決めておき、質問の直前に 今の盤面に関係するものだけを選んでプロンプトに入れます。
- 学習データにも同じメモを付けます。メモ付きの盤面を見たことのないモデルは、対局中に メモを受け取ってもうまく使えません。
この構造を完成させることが、MariaGO が解くべき宿題です。
MariaGO 囲碁の要点
19×19の正式な碁盤 · 人が黒 / AIが白 · 着手の時間制限なし · 毎手自動保存 · 棋譜の 前後表示 · 特定の手から続きを打つ · 手動/連続パスでの整地に対応しています。
シチョウと虎の口をより安全に判断します
2026年9月28日、AIが戦術的に損な手をそのまま選んでしまう二つのケースを改善しました。 モデルが提案した座標を碁盤の石と呼吸点で確認し直し、シチョウにかかった石の無駄な逃げや、 すぐに取られる虎の口への進入であれば、別の合法手を探します。
シチョウ: 無駄な逃げと早まったパスを避けます
アタリの石が一路逃げても、相手の連続アタリに追われて結局取られるかどうかを、手順を たどって読みます。シチョウアタリがなく抜け出せない場合は、その逃げる手を候補から外します。 打つ場所があるのにシチョウを避けるためにパスしていたケースも防ぎ、盤上の別の合法手を 選ぶよう修正しました。
虎の口: 入るときと埋めるときを区別します
相手の石に三方を囲まれ、打った直後にアタリになる虎の口には入りません。自分の石が作った 虎の口も、特別な理由なく埋める手は避けます。ただし、その手で相手の石を取れる場合や、 周りの自分の石の呼吸点が足りない場合は必要な戦術になりうるので、通常の候補として残します。
現在の適用範囲
この修正はAIの最終的な手の選択段階に適用されます。すべてのシチョウや死活を完璧に解く 汎用の読みではなく、実際の対局で見つかった例外は引き続き記録して補っていきます。
2026年9月の開発変更記録
実際の対局で見つかったパス、反則手、戦術選択の問題と、ユーザー別の級位機能を順に 改善しました。以下の内容はモデル自体の学習性能とは別に、モデルが出した答えを検証し 対局を運営するサーバー・Webのルールに適用した変更です。
進行中の対局で早まってパスしないよう修正
空き地や未解決の競り合いが十分に残っていれば、モデルがパスと答えてもすぐには受け入れず、 緊急の合法手候補を評価し直します。逆に、盤面が実際に整理されてもう打つ価値のある場所が ない終局のパスは許可し、通常の連続パスによる終了と区別します。
両アタリと切断の危険を候補評価に反映
斜めにだけ石をつなぎ、相手が間を切ると二つの石のどちらかがアタリになる形を検査します。 相手の次の一手で両アタリが生じる進出は減点し、弱い石をつないだり先に生かしたりする手を 優先するようにしました。
コウと詰めてからの取りを現在の盤の形で区別
一度拒否された座標をその後の手までずっと禁止していた問題を直しました。禁止座標は現在の 盤面と手番にだけ適用され、石が取られて盤の形が変われば合法かどうかを計算し直します。 したがって、すぐに取り返して同じ盤面を作るコウは止めつつ、一点を詰めて石を取った後に 新しくできた場所へ打つ合法手は許可します。
クライアントIDごとの級位と通算戦績の保存
ログインしていないユーザーも、ブラウザのクライアントIDを基準に勝ち・負け・引き分けと 通算対局数を保存します。同じ結果が重複して反映されないよう、対局結果の処理を トランザクションでまとめました。
| 現在の級位 | 昇級・降級の基準 |
|---|---|
| 18級〜11級 | 勝ち点+3で昇級、−3で降級 |
| 10級〜5級 | 勝ち点+5で昇級、−5で降級 |
| 4級〜1級 | 勝ち点+10で昇級、−10で降級 |
| 段 | 勝ち点+15で昇段、−15で降段 |
昇級または降級すると、その区間の勝ち点は0に戻り、18級より下には下がりません。引き分けは 勝ち点を変えず、戦績にだけ記録します。
評価用ヒューリスティックの中央ばらまきを改善
以前の評価相手は、取れる石がないと中央に近い候補をランダムに選んで石をばらまく傾向が ありました。これを、隅の3・4線の布石、取り、アタリからの脱出、連結、相手の弱い石への 圧迫、自らアタリになる手の回避をあわせて点数化する方式に置き換えました。MIX R5 と行った 最初の3局はすべて R5 が勝ちましたが、80手時点での R5 の平均取り石数は、最近の既存対局 100局の5.98個から3.0個に減りました。
評価結果を読むときは
ヒューリスティックとの対局は現在80手で中断して仮の整地をするため、公式の勝率や級位と しては解釈できません。正確な棋力差を知るには、黒白を交代した終局までの対局と死活判定を 含む長期評価を別に行う必要があります。
ヒューリスティック、R5、Gemma 4 を分けて記録しました
2026年10月9日、計価関数が手を選んだ局と、モデル自身が打った局を分けました。ヒューリスティック(黒)対 R5(白)の無制限5局は、ヒューリスティックの1勝4敗で、すべて双方パスで終わりました。Gemma 4 対 R5 は、着手のほとんどを計価関数が選び直していたため、モデル同士の対局ではありません。その後 Gemma 4 にヒューリスティックの手を学習させ、計価を切って3局打つと、KataGo では黒が76.2、74.0、69.7目リードしました。画面では Gemma 4、ローカルAI、R5 を選べます。ローカルAIはヒューリスティックで、選択はそのブラウザだけに保存されます。
19×19の座標をAIにどう教えたか
学習データの出発点は、上級者とプロが打ったSGF棋譜です。一局を丸ごと覚えさせる代わりに、 各手の直前の盤面と実際の次の一手をペアにします。勝者の棋譜を優先し、アタリのように 戦術判断が必要な局面をより多く含め、同じ盤面が繰り返されないよう重複を取り除きます。
初期の実験では、モデルが盤の右下の座標ばかり繰り返す問題がありました。学習用の盤には 数字が付いていましたが、実際の対局サーバーとは空白と整列の方法が違い、列番号が2桁に なる10列目以降をモデルが読み違えていました。これは「棋譜が足りないから」ではなく、 学習と実行の入力形式がずれていた問題でした。
今は行と列を00から18まで2桁にそろえた整列格子を、学習と実戦でまったく同じように 使っています。本学習の前に、ランダムに置いた石の位置をモデルが見つける座標テストを行い、 左上・右上・左下・右下の四つの象限の正確さを別々に見ます。全体の平均が良くても一方の隅 だけで崩れると、実際の対局では方向の偏りになるからです。
| 入力 | 00〜18の行・列を整列した19×19の盤面と現在の対局条件 |
|---|---|
| 正解 | 実際の棋譜で選ばれた次の着手座標、またはパス |
| 学習 | ベースモデルに LoRA 方式で囲碁の手選びのパターンを追加学習 |
| 検証 | 座標認識、合法手、方向の偏り、早すぎるパスと自分の地を埋める手を観察 |
ですから MariaGO のAIは完成した正解マシンではありません。棋譜の選択を学習しましたが、 見慣れない局面では悪手や反則の座標を出すことがあります。この失敗を対局ログとして残し、 次のデータ構成とルール検証を直すことが、プロジェクトの重要な部分です。
時間制限なしで安全に着手します
小さなスマートフォンの画面で押し間違えた一手が確定しないよう、二段階の着手を使います。 空いた交点を一度押すと金色の仮の手が表示されます。同じ点をもう一度押すか画面の「着手」 ボタンを押すと、サーバーに保存されてAIの手番に移ります。別の点を押すと仮の手だけが 変わります。
人の手番には秒読みや制限時間がありません。画面を長く開いたままにしても、時間のせいで 自動的にパスすることはありません。ただしAIが手を計算している間は、重複リクエストを防ぐ ために入力が少し待機し、ネットワークの状態によって応答時間が変わることがあります。
急いで打つ必要はありません。手を選び、表示された位置を確かめてから確定してください。 自殺手やコウのようにルール上打てない手は、確定の段階でお知らせします。
棋譜は単なる記録より幅広く使われます
対局を始めると、6文字の対局コードとアクセスキーが作られます。着手のたびに盤面、次の手番、 取った石、コウの座標と全手順がサーバーのデータベースに保存されます。同じブラウザでは 検索しなくても最近の進行中の対局を読み込み、棋譜画面では過去の対局一覧を日時と手数で 確認できます。
対局中に前後の矢印を使えば、現在の手を変えずに過去の局面を振り返れます。最後の手に戻れば 元の対局を続けます。過去の手を見ている状態で「ここから続ける」を選ぶと、その後の手順を 捨ててその局面から新しい変化図を始めます。実戦の振り返りと仮想の変化を一つの画面で つなげた機能です。
保存データはブラウザの一時的な識別子とアクセスキーで保護されます。対局コードを知っている だけでは他のユーザーの盤面は開けず、別の端末で続きを打つにはアクセスキーを含むリンクが 必要です。ブラウザの保存データを消すと端末が既存の識別子を忘れることがあるので、大事な 進行中の対局のリンクは別に保管しておくほうが安全です。
自動整地が計算するものと見落とすもの
MariaGO は、双方が続けてパスするかユーザーが「整地」を押すと、韓国式の地の数え方に近い 参考スコアを計算します。空いた領域を探索し、境界が黒石だけで囲まれていれば黒地、白石だけで 囲まれていれば白地とみなします。ここに対局中に取った相手の石を加え、白にはコミ6.5目を 足して差を表示します。
難しいのは空いた点を数える計算ではなく、盤上の死に石を見つけることです。 人は二眼のない石の集まりや取られるしかない石を死んでいると合意して取り除きますが、現在の 自動整地は死活を完全には判定しません。死に石が盤上に残っていると、その周りの領域の境界が 混ざって地と認められなかったり、実際の結果と違う値が出たりします。
したがって途中の整地は形勢をおおまかに見る道具であり、終局の結果も公式な審判の判定と みなしてはいけません。特に大きなヨセが残っていたり、互いの石が一つの領域の中で混ざって いたりすると、計算されない中立点が増えます。この場合は数値より盤面を直接確かめることが 優先です。
整地結果の読み方
黒のスコア = 囲んだ黒地 + 取った白石。白のスコア = 囲んだ白地 + 取った黒石 + コミ6.5目 です。死活の自動判定にはまだ対応していないため、死に石が残った終局では参考値としてのみ 使ってください。
対局を始める前に
- 現在のWeb対局は19×19の盤で、人が黒、AIが白を担当します。
- 空いた点を一度押して仮の手を確かめ、もう一度押して確定します。
- 人の着手には時間制限がなく、手順は着手のたびに保存されます。
- 同じブラウザで再接続すると、最近の進行中の対局を自動で続けられます。
- 自動整地は死活を完全には判定しない参考機能です。