diff --git a/README.md b/README.md index 7a6744d..a36ce18 100644 --- a/README.md +++ b/README.md @@ -176,7 +176,118 @@ 麻将游戏引擎建模代码于项目根src/engine/目录下。 -## PPO(Proximal Policy Optimization)算法 + + +## 算法 + +#### **1. 强化学习** + +适用于学习最佳策略,帮助AI根据牌局动态决策(如摸牌、出牌、胡牌等)。 + +**Q-Learning/Deep Q-Learning (DQN)**: + +使用价值函数近似,适用于简单麻将变体。 + +在复杂麻将中可能遇到状态空间爆炸的问题。 + + **Policy Gradient(如 REINFORCE、PPO、A3C)**: + +- 直接学习策略,适合连续决策问题。 +- Proximal Policy Optimization (PPO) 是目前表现较好的强化学习算法。 + +**AlphaZero/Monte Carlo Tree Search (MCTS)**: + +- 结合深度神经网络和搜索算法,模拟多局游戏,适用于探索全局最优策略。 + +**适用场景**: + +自主对局学习(自我博弈)。 + +学习如何综合权衡得失(如是否碰牌、杠牌或放弃操作)。 + +#### **2. 模拟和搜索算法** + +适用于推理对手手牌或牌堆剩余牌,提升策略的稳定性。 + +**算法**: + +- Monte Carlo Tree Search (MCTS): + - 模拟多个可能的后续动作,估算每个动作的收益。 + - 常用于长序列决策,如考虑碰、杠、胡等多步操作的效果。 +- Minimax with Alpha-Beta Pruning: + - 在两人麻将(或简化版本)中,模拟对手的可能操作。 + +**适用场景**: + +需要进行搜索优化的场景(如判断是否选择碰、杠)。 + +分析未来几步操作对得分的影响。 + +#### **3. 监督学习** + +适用于模仿人类玩家的决策或历史数据学习。 + +**算法**: + +- 分类算法 + + (如 Logistic Regression、Random Forest、XGBoost、Neural Networks): + + - 学习单步决策(如出哪张牌)。 + - 适用于学习简单的局部决策。 + +- 序列模型 + + (如 RNN、LSTM、Transformer): + + - 学习决策的序列模式(如出牌顺序和策略连贯性)。 + - Transformer 可以捕捉复杂的上下文关系。 + +**适用场景**: + +有大量玩家对局数据作为训练集。 + +模拟人类打牌风格。 + +#### **4. 混合方法** + +结合强化学习和监督学习的优点,以应对麻将的高复杂性和多样化。 + +**示例方法**: + +- Imitation Learning + Reinforcement Learning + + : + + - 先使用监督学习模仿玩家风格,再用强化学习微调策略。 + +- AlphaZero-like Framework + + : + + - 结合深度强化学习和搜索(如 MCTS),强化对局策略。 + +**适用场景**: + +需要在短时间内获得可用的AI策略。 + +想进一步优化模型的决策能力。 + +#### **对抗学习**: + +让AI与自身对局(自我博弈)或与其他AI对局,提升对抗能力。 + +#### **工具和框架** + +1. 强化学习框架: + - **Stable-Baselines3**: 简单易用,支持PPO、DQN等算法。 + - **Ray RLlib**: 分布式强化学习框架,适合复杂任务。 +2. 深度学习框架: + - TensorFlow 或 PyTorch:构建神经网络和深度学习模型。 +3. 麻将环境: + - 自定义麻将环境或使用已有开源环境(如 OpenAI Gym 或 MahjongRL)。 + +### PPO(Proximal Policy Optimization)算法 TensorBoard 通常会记录和可视化多种训练指标。你提到的这些图表代表了 PPO 训练过程中的不同方面。下面是对每个图表的解释: