File size: 5,420 Bytes
f0065bf 3f95bfc f31d6a7 f0065bf bd01b40 4c53197 f0065bf 4c53197 f0065bf 4c53197 f0065bf 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 577f58b 4c53197 f0065bf ac744ce 533fbd7 4c53197 533fbd7 f0065bf 4c53197 f0065bf 4c53197 f0065bf 4c53197 f0065bf 4c53197 f0065bf 4c53197 345b1fa f0065bf 4c53197 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
---
license: cc-by-nc-4.0
tags:
- code
- chess
- game
- CNN
- ResNet
---
# **GChess: A Deep Residual Network for Chess**
## Model Description
The **GChess** model is a deep neural network designed for the game of chess, inspired by the **AlphaZero** architecture. It uses a single network to perform both move prediction (Policy) and position evaluation (Value).
This release is a **proof-of-concept** version. The model's current estimated playing strength is **~1300 Elo**, placing it at a beginner to intermediate level. It demonstrates a robust foundation for an AlphaZero-style chess AI.
---
## Architecture Details
GChess is built on a **Deep Residual Network (ResNet)**, which is highly effective for processing the spatial features of an 8x8 board.
### **Core Network (Torso)**
* **Architecture Type:** Deep Residual Network (ResNet).
* **Residual Blocks:** **20** blocks, ensuring deep, hierarchical feature learning.
* **Filter Count:** **512** convolutional filters (channels) in its main layers for high feature complexity.
### **Input Representation**
The network accepts a multi-plane tensor encoding the board state and history:
* **Input Channels:** **128** input channels.
* **Data Included:** Piece locations, player to move, castling rights, and **8-ply history** to handle repetition and context.
### **Dual Output Heads**
The shared ResNet torso branches into two specialized output heads:
| Head | Function | Output Format |
| :--- | :--- | :--- |
| **Policy Head (p\_logits)** | **Move Prediction** | Logits over **4672** possible moves/actions. |
| **Value Head (v)** | **Position Evaluation** | Single scalar value in [-1.0, +1.0]. |
| Value Interpretation | Score |
| :--- | :--- |
| **White Winning** | Close to +1.0 |
| **Black Winning** | Close to -1.0 |
| **Equal Position** | Close to 0.0 |
---
## Training Summary
The model was trained on a small dataset of **50,000 high-quality PGN games** across **25 epochs**.
### **Convergence Analysis**
The training process was stable and highly efficient, utilizing an aggressive learning rate strategy.
* **Training Loss Curve:**

The loss shows a rapid initial drop, signifying quick learning of fundamental concepts, followed by a smooth convergence.
* **Detailed Loss Convergence:**

A detailed view reveals short-term oscillations, which are expected with dynamic learning rate scheduling but confirm a consistently downward trend towards a low, stable loss.
* **Accuracy Evaluations:**

Both Top 1 and Top 5 Accuracy showed clear, consistent upward trends, confirming that the network successfully learned to predict expert moves without overfitting to the limited data. The high Top 5 Accuracy indicates the model reliably generates a strong list of candidate moves.
---
## Conclusion and Future Outlook
* **Current Performance:** The model achieved an estimated **1300 Elo**. While this is an entry-level performance, it's a strong result considering the resource constraints.
* **Strong Foundation:** The architecture is structurally sound, and the training process demonstrated effective learning.
* **Future Potential:** The established architecture is well-suited for scaling. With a significantly larger, more diverse dataset (e.g., millions of games) and extended training, this model has the foundation to reach expert and master Elo levels.
---
## Usage
To use the GChess model for inference, you must convert a `chess.Board` object and its history into the required **128-channel input tensor**.
```python
import chess
import torch
import torch.nn.functional as F
# NOTE: The 'model' object must be loaded from a checkpoint, and
# 'board_to_tensor' function must be implemented separately
# to generate the 128-channel input.
# DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Define Input State (FEN)
# Example: Initial position
fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"
board = chess.Board(fen)
# --- Preprocess Input (Requires custom function) ---
# input_tensor = board_to_tensor(board, history_depth=8).unsqueeze(0).to(DEVICE)
# Placeholder tensor for execution:
input_tensor = torch.randn(1, 128, 8, 8)
model = torch.nn.Module() # Placeholder model for execution
model.eval() # Set model to evaluation mode
# Run Inference
with torch.no_grad():
# policy_logits is a tensor of size 4672, value_output is a scalar tensor
# policy_logits, value_output = model(input_tensor)
# Placeholder outputs for demonstration:
policy_logits = torch.randn(1, 4672)
value_output = torch.tensor([[0.25]])
# Post-process Output
policy_probabilities = F.softmax(policy_logits, dim=1).squeeze(0)
# Find the move with the highest predicted probability
best_action_index = torch.argmax(policy_probabilities).item()
best_probability = policy_probabilities[best_action_index].item()
# Extract the value prediction
expected_value = value_output.item()
# Print Results
print(f"FEN: {fen}")
print(f"--- Model Prediction ---")
print(f"Predicted Probability of Top Move: {best_probability:.4f}")
print(f"Position Evaluation (Value): {expected_value:.4f}")
print("Interpretation: Value close to +1.0 means White is winning, -1.0 means Black is winning.")
```
Devlopper: PENEAUX Benjamin |