智能计算 - 期末大作业要求

1. 项目概述与目标

本课程的期末大作业旨在让你综合运用所学的强化学习 (RL) 知识,特别是深度强化学习 (DRL) 的概念和 Stable Baselines3 (SB3) 库,来分析和(模拟)解决一个具有商业背景的决策问题。本次大作业的选题范围聚焦于两个核心商业应用领域:动态定价 (Dynamic Pricing)个性化推荐 (Personalized Recommendation)

项目目标:

  1. 深入理解问题: 选择动态定价或个性化推荐中的一个具体场景,清晰地将其表述为一个强化学习问题。
  2. 模型构建与实现:
    • 定义MDP要素: 明确状态 (State)、动作 (Action)、奖励 (Reward) 以及环境动态(状态转移)。
    • 环境模拟: 使用 Python 和 Gymnasium API 构建一个模拟环境,该环境应能合理地反映你所选场景的核心机制。
    • 算法应用: 利用 Stable Baselines3 库中的合适算法 (如 DQN, PPO, A2C 等) 训练一个 RL 智能体来解决该问题。
  3. 实验与分析:
    • 设计并进行实验,调整关键参数(如学习率、探索策略、折扣因子、网络结构等),观察其对智能体性能和学习策略的影响。
    • 批判性地分析和解释实验结果,将结果与商业目标联系起来。
  4. 商业洞察与伦理思考:
    • 从模拟结果中提炼出对实际商业决策的启示或见解。
    • 识别并讨论在真实世界中部署此类 RL 解决方案时可能遇到的关键数据需求、技术挑战、以及尤其重要的伦理风险,并提出初步的应对思路。
  5. 报告撰写与成果展示: 清晰、专业地呈现你的项目过程、结果、分析和思考。
项目核心能力考察

本作业不仅考察你对RL算法的理解和SB3库的使用能力,更重要的是考察你将商业问题形式化为RL问题、设计模拟环境、分析实验结果并进行批判性思考的能力。代码实现是重要的组成部分,但对其背后的逻辑理解、结果的深入分析和商业/伦理层面的思考同样关键。

2. 选题方向与场景建议

你需要从以下两个方向中选择一个,并可以进一步细化具体场景:

2.1. 方向一:动态定价 (Dynamic Pricing)

核心思想: 利用RL智能体根据市场状态(如时间、需求、库存等)动态调整产品或服务的价格,以期最大化累积利润或实现其他商业目标。

建议场景(可简化):

  • 单一商品零售定价: 模拟一个销售周期(如30天),智能体每日为一种商品定价。状态可包括:当前天数、近期需求水平、剩余库存(可选)。动作是选择一个价格等级。奖励是当日利润。
    • 灵感来源: Week 13 课件中的动态定价环境。
  • 简单服务定价(如共享单车/充电宝时段定价): 智能体根据一天中的不同时段(高峰/平峰)和当前区域可用资源数量(可选)来设定价格。
  • 航空公司/酒店的简化早鸟定价: 模拟距离起飞/入住日期的一段时间,智能体根据剩余时间和已售出座位/房间比例来调整价格。
  • 考虑竞争的简化定价(高级): 如果有能力,可以模拟一个非常简单的市场,其中包含一个或多个固定策略的竞争对手,智能体的状态可以包含对竞争对手价格的观察。

数据启发: 你可以参考Kaggle等平台上的零售、电商或出行服务数据集,从中获取关于需求模式、价格弹性等方面的洞察,用以参数化你的模拟环境。但本项目不强制要求使用真实数据集进行模型训练,重点是构建一个合理的、受数据启发的模拟器。

2.2. 方向二:个性化推荐 (Personalized Recommendation)

核心思想: 利用RL智能体根据用户特征和历史行为,动态地向用户推荐物品(如商品、内容),以期最大化用户参与度、满意度或长期价值。

建议场景(可简化):

  • 基于用户类型的物品类别推荐: 模拟若干用户类型,每种类型对不同物品类别有不同的内在偏好。智能体在与特定类型用户交互时,需要学习推荐该用户可能喜欢的物品类别。状态可包括:当前用户类型、会话中的步骤。动作是选择一个物品(或物品类别)进行推荐。奖励基于用户的模拟反馈(如点击、购买)。
    • 灵感来源: Week 14 课件中的个性化推荐环境。
  • 简单序列推荐: 模拟用户与物品的简短交互序列。智能体的状态可以包含用户最近交互的N个物品(或类别),目标是推荐下一个用户可能感兴趣的物品。
  • 探索与利用的平衡模拟: 设计一个环境,其中包含一些“热门”物品和一些“长尾”或“新”物品。智能体需要学习如何在推荐已知受欢迎的物品(利用)和尝试推荐新物品以发现用户潜在兴趣或收集物品反馈(探索)之间进行权衡。奖励函数可以设计为同时考虑即时点击和对探索行为的奖励。

数据启发: 你可以参考Kaggle等平台上的推荐系统数据集(如MovieLens, 电商点击日志),了解用户行为模式、物品流行度分布等,用以设计你的用户模型和物品目录。同样,本项目不强制要求使用真实数据集进行模型训练,重点是构建一个合理的、受数据启发的模拟器。

3. 项目要求与交付物

3.1. 项目步骤建议

  1. 选题与场景定义 (Week 14 结束前初步确定):
    • 选择动态定价或个性化推荐方向。
    • 明确你想要模拟的具体商业场景,即使是高度简化的版本。
    • 初步思考该场景的 MDP 要素 (S, A, R)。
  2. 环境构建 (Weeks 14-15):
    • 使用 Python 和 Gymnasium API 实现你的模拟环境 (YourEnv(gym.Env))。
    • 清晰定义 observation_space, action_space, reset(), step() 方法。
    • step() 方法中应包含核心的模拟逻辑(如需求函数、用户响应模型)和奖励计算。
    • 强烈建议: 先实现一个最简可行版本 (MVP),然后逐步增加复杂性。
    • 测试你的环境! 使用 stable_baselines3.common.env_checker.check_env(env) 确保其符合规范。
  3. 智能体训练与实验 (Weeks 15-16):
    • 选择一个或多个合适的 SB3 算法 (DQN 通常是离散动作空间的好起点)。
    • 设计实验来:
      • 训练智能体并观察其学习过程(如通过 TensorBoard 查看奖励曲线)。
      • 评估训练好的智能体的性能(如使用 evaluate_policy)。
      • 尝试调整至少2-3个关键超参数(如学习率、折扣因子 gamma、探索参数 exploration_fraction/exploration_final_eps、网络结构 net_arch 等),比较它们对结果的影响。
      • (可选)与基线策略(如随机策略、固定策略)进行比较。
  4. 结果分析与报告撰写 (Weeks 16 - 提交截止日期):
    • 详细记录你的实验设置、观察到的现象和数据。
    • 深入分析智能体学到的策略是什么?它是否符合你的预期?有哪些有趣的发现?
    • 讨论模型的局限性和潜在的改进方向。
    • 思考商业启示和伦理问题。

3.2. 交付物

你需要提交一个包含以下内容的 ZIP压缩包

  1. 项目报告 (PDF 格式, 建议8-15页,不含附录): 这是最重要的交付物。报告应包含以下部分:
    • 摘要 (Abstract): 简要介绍项目目标、方法、主要发现和结论。
    • 1. 引言 (Introduction):
      • 问题背景与商业意义。
      • 项目目标和研究范围。
    • 2. 相关工作/背景知识 (Related Work/Background - 可选但推荐): 简要回顾与你所选问题相关的RL应用或核心概念(如果你的分析深入到特定文献)。
    • 3. RL 问题建模与环境设计 (RL Formulation & Environment Design):
      • 清晰描述你选择的商业场景。
      • 详细定义 MDP 要素:
        • 状态空间 (State Space) 及其表示。
        • 动作空间 (Action Space) 及其表示。
        • 奖励函数 (Reward Function) 设计及其理由。
        • 状态转移逻辑/环境动态描述。
      • 介绍你的 Gymnasium 环境实现的关键部分和设计考虑。
    • 4. 实验设计与设置 (Experimental Design & Setup):
      • 选择的 RL 算法及其理由。
      • 训练细节:使用的超参数初始值、训练时长/步数。
      • 评估指标和方法。
      • 描述你进行的参数调整实验。
    • 5. 实验结果与分析 (Results & Analysis):
      • 呈现训练过程的关键图表(如奖励曲线)。
      • 展示评估结果(如平均累积奖励、与基线对比等)。
      • 分析智能体学到的策略(例如,在不同状态下智能体倾向于采取什么动作?)。
      • 讨论超参数调整对性能的影响。
      • 可视化是关键! 使用图表清晰展示你的结果。
    • 6. 讨论 (Discussion):
      • 商业启示: 你的模拟结果对实际商业决策有何借鉴意义?
      • 模型局限性: 你的模型和模拟环境有哪些简化和不足?
      • 未来工作: 如何进一步改进你的模型或扩展研究?
    • 7. 伦理考量 (Ethical Considerations):
      • 识别在真实世界中部署此类 RL 解决方案时可能出现的至少2-3个关键伦理风险(如偏见、公平性、透明度、隐私、过滤气泡、操纵等,具体取决于你的选题)。
      • 对每个风险进行简要分析,并提出初步的应对策略或缓解思路。这部分非常重要。
    • 8. 结论 (Conclusion): 总结你的主要工作和发现。
    • 参考文献 (References - 如果有引用外部文献)。
    • 附录 (Appendix - 可选): 可以包含部分不太核心但有助于理解的代码片段、额外的图表等。
  2. 源代码 (Python .py 或 Jupyter Notebook .ipynb 文件):
    • 包含你的自定义 Gymnasium 环境的完整代码。
    • 包含使用 Stable Baselines3 训练和评估智能体的主要脚本。
    • 代码应有适当的注释,使其易于理解和运行。
    • 如果使用了 Jupyter Notebook,请确保已运行所有单元格并显示了输出。
    • 请确保代码可以独立运行(或在标准 SB3 和 Gymnasium 环境下)。如果依赖特定版本的库或特殊设置,请在报告或 README 文件中说明。
  3. (可选)README 文件 (.txt.md):
    • 简要说明如何运行你的代码(例如,主要脚本的名称,依赖库等)。
    • 对项目文件结构的简要说明。

3.3. 评分标准 (示例)

评分维度 权重 描述
1. 问题定义与RL建模的清晰性与合理性 20% 对商业场景的理解;MDP要素(S,A,R)定义的清晰、合理性;环境设计的创新性和对问题核心机制的把握。
2. 环境实现与SB3算法应用的正确性与熟练度 25% Gymnasium环境代码的质量和功能完整性;SB3算法选择的合理性;训练和评估过程的正确执行;代码的可读性和规范性。
3. 实验设计、结果呈现与分析的深度 30% 实验设计的系统性(如参数调整);结果呈现的清晰性(图表);对智能体行为和学习策略的深入分析;对模型局限性的认识。
4. 商业洞察与伦理思考的深刻性 15% 从模拟结果中提炼商业启示的能力;对所选场景伦理风险的识别和批判性思考的深度;提出的应对思路的合理性。
5. 报告的专业性与清晰度 10% 报告结构完整、逻辑清晰;语言表达准确、专业;图表规范;排版整洁。
总计 100%
学术诚信

所有提交的工作必须是你个人独立完成的。你可以讨论概念和方法,但代码实现和报告撰写必须是原创的。严禁任何形式的抄袭。课程将使用工具进行代码和文本的相似性检查。任何违反学术诚信的行为将导致该作业计零分,并可能上报学院处理。

允许使用AI辅助工具

你可以使用 AI 辅助编程工具(如 GitHub Copilot, ChatGPT)来帮助你生成部分代码片段或理解某些概念。但是:

  • 核心逻辑和环境设计必须是你自己的构思。
  • 你必须完全理解 AI 生成的代码,并能对其进行调试、修改和解释。
  • 项目报告的分析、讨论和结论必须是你自己的独立思考和原创表达。
  • 如果在报告中直接使用了 AI 生成的大段文字,请适当注明(例如,在附录中说明使用了何种工具以及在哪些部分提供了辅助)。

4. 提交截止日期与方式

  • 截止日期: 2025年6月4日23.59分
  • 提交方式: 将包含上述所有交付物的 ZIP 压缩包通过 学系通 提交。
  • 命名规范: 压缩包请命名为 学号_姓名_FinalProject.zip (例如: 20210001_张三_FinalProject.zip)。