|
|
ebf2a0dc98
|
fix: N2H2V5独立分支用NeuralBotV5 - 新增NeuralBotV5类 + InitBots映射 + --n2h2v5参数
|
2026-07-18 11:20:14 +08:00 |
|
|
|
58e12e2def
|
feat: 远程Mac worker支持 — SSH分发训练任务
parallel_train.py --remote ouyangqi@100.121.6.90
→ SSH到Mac执行 dotnet run --mix N
→ scp拉取training_data回VPS
→ 自动merge到本地数据池
→ SSH失败自动回退本地worker
用法:
# 仅本地
python3 scripts/parallel_train.py --workers 3 --games 333
# 本地2 + Mac1
python3 scripts/parallel_train.py --workers 3 --games 333 --remote ouyangqi@100.121.6.90
# 本地1 + Mac2
python3 scripts/parallel_train.py --workers 3 --games 333 --remote ouyangqi@100.121.6.90
注: Mac需先 git pull 最新代码 + dotnet build
|
2026-07-13 03:29:23 +08:00 |
|
|
|
2b108c4d41
|
feat: 训练效率优化 — B:全bot记录 + A:并行调度
B: NeuralBot也调用TrainingCollector.Record
→ 3个bot全部记录(之前只有ISMCTS)
→ 9样本/局(之前6, +50%)
A: parallel_train.py 并行调度器
python3 scripts/parallel_train.py --workers 3 --games 333
→ 串行3个worker各跑333局 → 合并数据到training_data/
效率: 1000局 ≈ 12分钟, 9000样本
之前: 1000局 ≈ 12分钟, 6000样本
|
2026-07-13 03:25:51 +08:00 |
|
|
|
b619b84f2a
|
config: --mix改为2×ISMCTS+1×NeuralBot (训练评估模式)
|
2026-07-13 03:18:47 +08:00 |
|
|
|
e5e1f4818e
|
fix: V-learning 出牌率 0%→81% — MakePlay Type=None导致所有候选被当pass
根因: MakePlay(Type=CardType1.None)
→ play.Type==None 对所有候选为true
→ afterHand保持原样(未出牌)
→ 所有候选V值相同 → 始终选第一个(pass)
修复:
- play.Type→play.Ids.Length判断是否真pass
- EncodeAfterPlay更新ShenYuCard(出牌后剩余-1)
- EncodeAfterPlay设MaxPlayCard为出的牌
- isPass用Ids==null而非Type
效果: Play 117 Pass 28(81%出牌) vs ISMCTS -108/10局
|
2026-07-13 03:03:36 +08:00 |
|
|
|
f43e47b0a6
|
feat: V-learning架构 — 改Q→V
Q-learning问题: pass action Q值稳定偏高 → 永远pass
V-learning修复:
- 网络输出 14(Q-action)→1(V-state): P(win|state)
- NeuralBot: 对每个候选编码出牌后state → 选V值最高的
- pass和出牌都是候选, 公平竞争(不是固定action slot)
TrainingCollector:
- 新增 EncodeAfterPlay(view, tracker, afterHand, playedIds)
- EncodeState 支持 extraSeen 参数(模拟出牌时标记已见)
Python:
- train_v.py: V-learning训练器(load CSV→predict win/loss)
- network.py: OUTPUT_DIM=14→1
验证: 200局0错误, V-model loss 0.81→0.0001
需更多数据覆盖状态空间
|
2026-07-13 02:52:48 +08:00 |
|