diff --git a/Artificial-Intelligence/Conferences/readme.md b/Artificial-Intelligence/Conferences/readme.md new file mode 100644 index 0000000..4029ad8 --- /dev/null +++ b/Artificial-Intelligence/Conferences/readme.md @@ -0,0 +1,36 @@ +好的,我帮你整理一个 **人工智能/机器学习方向的顶级学术会议表格** 📊,包含会议名称、全称、领域、主办机构、发布时间(每年举办时间)以及官网链接。这样你可以一眼掌握主要顶会。 + +| 序号 | 会议简称 | 全称 | 研究方向 | 主办方 | 举办时间 | 官网链接 | +| -- | ----------------- | -------------------------------------------------------------------- | -------------- | -------------------------------------- | ------ | ---------------------------------------------------------------------------------------------- | +| 1 | NeurIPS | Neural Information Processing Systems | 机器学习、深度学习、AI理论 | NeurIPS Foundation | 每年12月 | [https://neurips.cc](https://neurips.cc) | +| 2 | ICML | International Conference on Machine Learning | 机器学习、统计学习、深度学习 | International Machine Learning Society | 每年7月 | [https://icml.cc](https://icml.cc) | +| 3 | ICLR | International Conference on Learning Representations | 表征学习、深度学习 | ICLR | 每年4月 | [https://iclr.cc](https://iclr.cc) | +| 4 | CVPR | Computer Vision and Pattern Recognition | 计算机视觉、图像识别 | IEEE | 每年6月 | [http://cvpr2025.thecvf.com/](http://cvpr2025.thecvf.com/) | +| 5 | ICCV | International Conference on Computer Vision | 计算机视觉 | IEEE / CVF | 每两年10月 | [https://iccv2025.org/](https://iccv2025.org/) | +| 6 | ECCV | European Conference on Computer Vision | 计算机视觉 | Springer / CVF | 每两年8月 | [https://eccv2024.org/](https://eccv2024.org/) | +| 7 | ACL | Annual Meeting of the Association for Computational Linguistics | 自然语言处理、NLP | ACL | 每年7月 | [https://acl2025.org/](https://acl2025.org/) | +| 8 | EMNLP | Conference on Empirical Methods in Natural Language Processing | NLP、语言建模 | ACL | 每年11月 | [https://2025.emnlp.org/](https://2025.emnlp.org/) | +| 9 | NAACL | North American Chapter of the ACL | NLP | ACL | 每两年6月 | [https://naacl2024.org/](https://naacl2024.org/) | +| 10 | AAAI | AAAI Conference on Artificial Intelligence | 综合AI | AAAI | 每年2月 | [https://aaai.org/Conferences/AAAI-25/](https://aaai.org/Conferences/AAAI-25/) | +| 11 | IJCAI | International Joint Conference on Artificial Intelligence | 综合AI | IJCAI | 每两年8月 | [https://ijcai-25.org/](https://ijcai-25.org/) | +| 12 | KDD | Knowledge Discovery and Data Mining | 数据挖掘、机器学习应用 | ACM SIGKDD | 每年8月 | [https://www.kdd.org/](https://www.kdd.org/) | +| 13 | NeurIPS Workshops | NeurIPS Workshop Series | AI前沿专题 | NeurIPS Foundation | 每年12月 | [https://neurips.cc/Conferences/2025/Workshops](https://neurips.cc/Conferences/2025/Workshops) | +| 14 | CVPR Workshops | CVPR Workshop Series | 计算机视觉前沿专题 | IEEE / CVF | 每年6月 | [https://cvpr2025.thecvf.com/](https://cvpr2025.thecvf.com/) | +| 15 | ICASSP | International Conference on Acoustics, Speech, and Signal Processing | 信号处理、语音、音频 | IEEE | 每年5月 | [https://2025.ieeeicassp.org/](https://2025.ieeeicassp.org/) | + +--- + +### 🔹 说明 + +1. **NeurIPS / ICML / ICLR** → ML/DL 核心理论和方法 +2. **CVPR / ICCV / ECCV** → 计算机视觉顶会 +3. **ACL / EMNLP / NAACL** → NLP 顶会 +4. **AAAI / IJCAI** → 综合 AI(覆盖 RL、搜索、规划等方向) +5. **KDD / ICASSP** → 应用、数据挖掘、信号处理方向 +6. **Workshops** → 顶会的专题分会,通常更前沿、更实验性 + +--- + +我可以帮你再做一个 **“AI顶会关注清单 + 每年必看论文推荐”表格**,把每个会议的最新高引用论文/重要论文列出来,这样你可以系统追踪最前沿进展。 + +你希望我帮你做这个吗? diff --git a/Artificial-Intelligence/path.md b/Artificial-Intelligence/path.md new file mode 100644 index 0000000..0602343 --- /dev/null +++ b/Artificial-Intelligence/path.md @@ -0,0 +1,275 @@ +啊,我明白你意思了 👍 + +你说的不是“具体模型家族”(比如GPT、Claude、Gemini), +而是想知道——**AI研究中必须掌握的“基座级架构与原理模型”**, +也就是像 **CNN、RNN、Transformer、VAE、GAN、Diffusion** 这样—— +支撑整个深度学习体系的「核心模型原型(model archetypes)」。 + +非常好方向,这类知识是所有AI分支的**底层认知地图**。 +下面我给你分门别类梳理出一份「必须知道的AI基座模型全图(含学习路线)」: + +--- + +## 🧩 一、经典深度学习基座(感知–特征提取层) + +| 类别 | 模型代表 | 核心思想 | 应用方向 | +| --------------------------------------- | --------------------------- | --------------------- | ------------ | +| **MLP(多层感知机)** | 1980s 起 | 全连接层 + 非线性激活 | 所有神经网络的起点。 | +| **CNN(卷积神经网络)** | LeNet, AlexNet, VGG, ResNet | 局部感受野 + 权值共享 | 图像识别、特征提取。 | +| **RNN(循环神经网络)** | Elman RNN, LSTM, GRU | 序列依赖建模 | 时间序列、文本、语音。 | +| **ResNet(残差网络)** | He et al., 2015 | 跳跃连接(skip connection) | 深层训练稳定、CV基础。 | +| **Inception / DenseNet / EfficientNet** | GoogleNet 等 | 多尺度卷积 / 特征复用 / 参数效率 | 图像任务性能优化。 | + +👉 **建议学习路线**: +MLP → CNN → ResNet → RNN → LSTM → GRU + +--- + +## 🧠 二、序列建模与注意力机制革命 + +| 类别 | 模型代表 | 核心思想 | 影响 | +| ------------------------ | ------------------------- | ------------- | ------------------ | +| **Attention(注意力机制)** | Bahdanau Attention (2014) | “聚焦”关键特征的加权求和 | 改变序列表示方式。 | +| **Transformer(变压器)** | Vaswani et al., 2017 | 全局自注意力 + 并行化 | 取代RNN,成为通用架构。 | +| **BERT(编码式Transformer)** | Google, 2018 | 双向掩码语言建模 | NLP理解模型基石。 | +| **GPT(解码式Transformer)** | OpenAI, 2018– | 自回归生成 | 通用语言生成基座。 | +| **ViT(视觉Transformer)** | Google, 2020 | 图像块序列化 | Transformer进入CV领域。 | + +👉 **建议学习路线**: +Attention → Transformer → BERT & GPT → ViT + +--- + +## 🎨 三、生成式模型(从概率到创造) + +| 类别 | 模型代表 | 核心思想 | 典型应用 | +| -------------------------- | ---------------------- | -------------- | ----------- | +| **AutoEncoder(自编码器)** | Hinton et al. | 编码-解码重构 | 特征压缩、降维。 | +| **VAE(变分自编码器)** | Kingma & Welling, 2014 | 概率分布建模 + 重参数技巧 | 连续潜空间生成。 | +| **GAN(生成对抗网络)** | Goodfellow, 2014 | 生成器 vs 判别器博弈 | 图像生成、风格迁移。 | +| **Diffusion Models(扩散模型)** | Ho et al., 2020 (DDPM) | 正向加噪、反向去噪 | 高质量图像/视频生成。 | +| **Flow-based Models(流模型)** | RealNVP, Glow | 显式概率分布可逆映射 | 精确对数似然估计。 | + +👉 **建议学习路线**: +AutoEncoder → VAE → GAN → Diffusion → Flow + +--- + +## 🧮 四、图结构与时空建模 + +| 类别 | 模型代表 | 核心思想 | 应用方向 | +| ---------------------------------- | ------------------- | ----------- | ------------- | +| **GNN(图神经网络)** | GCN, GraphSAGE, GAT | 图结构节点消息传播 | 社交网络、分子、知识图谱。 | +| **ST-GCN / Temporal GNN** | 时空图卷积网络 | 时序 + 图拓扑 | 行为识别、交通预测。 | +| **Neural ODE / Continuous Models** | Chen et al., 2018 | 将网络当作微分方程求解 | 连续时间建模、物理模拟。 | + +--- + +## 🧭 五、强化学习与决策模型 + +| 类别 | 模型代表 | 核心思想 | 代表系统 | +| ------------------------------- | -------------------- | ---------------------- | --------------- | +| **DQN(Deep Q Network)** | Mnih et al., 2015 | Q-Learning + CNN | Atari 游戏突破。 | +| **Policy Gradient / A2C / PPO** | Schulman et al. | 策略梯度法 | 控制类任务、机器人。 | +| **AlphaGo 系列** | DeepMind | MCTS + Policy/Value 网络 | 强化学习+搜索。 | +| **RLHF(人类反馈强化学习)** | OpenAI (InstructGPT) | 人类偏好引导LLM对齐 | ChatGPT、Claude。 | + +--- + +## 🧠 六、混合与前沿架构(2023–2025趋势) + +| 方向 | 模型代表 | 特点 | +| --------------------------------- | --------------------------- | ------------------ | +| **Mixture-of-Experts (MoE)** | Switch Transformer, Mixtral | 按需激活部分专家,提升效率。 | +| **Diffusion Transformer (DiT)** | Stable Diffusion 3, Sora | 扩散+Transformer 融合。 | +| **Mamba / RWKV / Hyena** | 结构性序列建模(非Attention) | 更长上下文、更低计算。 | +| **Retriever-augmented (RAG)** | RETRO, Atlas | 外部知识检索 + 生成结合。 | +| **Neural Radiance Fields (NeRF)** | 3D表示学习 | 3D重建、视频生成。 | + +--- + +## 🚀 学习建议(从基础到前沿) + +| 阶段 | 重点学习内容 | 实践建议 | +| -------- | ------------------- | ----------------- | +| **入门阶段** | MLP, CNN, RNN, LSTM | MNIST、IMDB分类 | +| **进阶阶段** | Transformer, ResNet | NLP/ViT实验 | +| **生成阶段** | AE, VAE, GAN | 图像生成、风格迁移 | +| **前沿阶段** | Diffusion, MoE, RAG | 文生图 / Agent / RAG | +| **研究阶段** | GNN, NeRF, Mamba | 论文复现、开源项目贡献 | + +--- + +如果你愿意,我可以帮你整理一份 +👉 **「AI基座模型学习路线图(附论文、代码和推荐实现顺序)」**, +让你从 MLP 一路系统学到 Diffusion 和 Mamba。 + +是否希望我帮你出这一份? + + +非常好!👏 +你提到的 **U-Net** ——非常关键,它确实是一个经常被忽略、但在现代AI体系中**地位极高**的“隐形基座模型”。 +我们来把它放入整个深度学习架构图谱中,顺便补全所有“还漏掉的核心架构”。 + +--- + +## 🧬 一、U-Net 是什么? + +**U-Net(Ronneberger et al., 2015)** +是一个典型的 **Encoder–Decoder 卷积神经网络**, +主要用于 **图像分割(semantic segmentation)**,但后来在 **生成式模型、医学影像、Diffusion** 等领域成为关键基座。 + +### 🧩 核心结构 + +``` +输入图像 + ↓ +Encoder(收缩路径)——提取特征 + ↓ +Bottleneck + ↓ +Decoder(扩张路径)——逐步恢复分辨率 + ↕ +跳跃连接(skip connections)——传递细节 + ↓ +输出分割/生成图像 +``` + +### 💡 为什么重要: + +* **CNN + 对称解码器结构** → 捕捉全局与局部信息。 +* **跳跃连接(skip connections)** → 细节恢复关键。 +* **扩散模型(Stable Diffusion)底层网络** 就是 **U-Net!** + + > 例如 Stable Diffusion 的核心「去噪网络」= 改进版 U-Net + 时间嵌入 + 自注意力层。 + +### 📍分类定位: + +> U-Net 属于: +> **「卷积网络 → 编解码结构 → 图像生成/分割基座」** + +也就是: + +``` +MLP → CNN → Encoder–Decoder(U-Net) → VAE / GAN / Diffusion +``` + +--- + +## 📚 二、补充:常被忽略但必须知道的“核心基座模型/思想” + +为了完整起见,下面列出你前面提到的之外、 +很多人容易漏掉但非常重要的模型家族或思想模块(我按用途分)👇 + +--- + +### 🧩 (A)卷积与视觉方向 + +| 模型 | 核心贡献 | 地位 | +| ---------------------------------- | ---------------------- | --------------- | +| **LeNet (1998)** | 最早的CNN实现(手写数字识别) | CNN起源 | +| **AlexNet (2012)** | ReLU + Dropout + GPU训练 | 深度学习复兴起点 | +| **VGGNet (2014)** | 统一小卷积核结构 | 现代CNN标准结构 | +| **Inception (GoogLeNet)** | 多尺度卷积并行 | 高效特征提取 | +| **ResNet (2015)** | 残差连接 | 深层训练可行性突破 | +| **U-Net (2015)** | 编解码 + skip connection | 图像分割/生成核心 | +| **DenseNet (2017)** | 层间特征复用 | 参数高效 | +| **Vision Transformer (ViT, 2020)** | 图像块序列化 | Transformer进入CV | + +--- + +### 🧠 (B)序列与语言方向 + +| 模型 | 核心贡献 | +| ------------------------------ | -------------------- | +| **RNN / LSTM / GRU** | 解决时序依赖与梯度问题 | +| **Seq2Seq + Attention (2014)** | 编码解码的语言翻译框架 | +| **Transformer (2017)** | 并行注意力机制,取代RNN | +| **BERT (2018)** | 双向编码理解 | +| **GPT (2018–)** | 自回归生成 | +| **T5 (2019)** | “Text-to-Text”统一框架 | +| **Mamba (2024)** | 非Attention序列结构(线性高效) | + +--- + +### 🎨 (C)生成模型方向(概率建模与对抗) + +| 模型 | 核心思想 | 典型用途 | +| ------------------------------------- | ---------- | --------- | +| **AutoEncoder (AE)** | 重构输入、压缩表示 | 表征学习 | +| **VAE** | 潜变量概率建模 | 连续生成 | +| **GAN** | 对抗训练 | 图像生成 | +| **U-Net** | 编解码生成结构 | 分割、扩散模型骨架 | +| **Diffusion Models** | 噪声→数据的反向生成 | 高质量图像生成 | +| **Normalizing Flow (Glow, RealNVP)** | 可逆变换,精确似然 | 概率建模 | +| **Score-based / Energy-based Models** | 通过梯度场生成数据 | 理论方向重要 | + +--- + +### 🔢 (D)图结构与关系建模 + +| 模型 | 特点 | +| ----------------------------------------- | -------- | +| **GCN (Graph Convolution Network)** | 图上卷积 | +| **GAT (Graph Attention Network)** | 图注意力机制 | +| **GraphSAGE** | 采样聚合式图表示 | +| **Message Passing Neural Network (MPNN)** | 图传播统一框架 | + +--- + +### 🧮 (E)强化学习与规划方向 + +| 模型 / 方法 | 关键思想 | +| -------------------------- | ---------------- | +| **DQN** | Q-learning + CNN | +| **A3C / PPO / DDPG / SAC** | 策略梯度与连续控制 | +| **AlphaGo / AlphaZero** | 结合搜索与神经网络 | +| **RLHF** | 人类反馈对齐LLM | +| **Dreamer / World Models** | 用生成模型做预测控制 | + +--- + +### 🧱 (F)结构创新与现代趋势(2022–2025) + +| 模型 / 思想 | 特点 | +| ------------------------------------------ | ----------------- | +| **Mixture-of-Experts (MoE)** | 按需激活子模型(稀疏计算) | +| **Diffusion Transformer (DiT)** | 将扩散与Transformer统一 | +| **Recurrent Memory Models** | 长上下文存储 | +| **NeRF(神经辐射场)** | 3D生成基础 | +| **Slot Attention / Object-Centric Models** | 对象级感知 | +| **RAG(Retrieval-Augmented Generation)** | 检索增强生成 | +| **Liquid Neural Networks / Neural ODEs** | 连续时间动态系统建模 | + +--- + +## ✅ 小结:最核心的“AI基座模型框架图” + +``` +传统神经网络: +MLP → CNN → RNN/LSTM → Attention → Transformer + +生成模型: +AE → VAE → U-Net → GAN → Diffusion → Flow + +视觉建模: +CNN → ResNet → U-Net → ViT + +图结构: +GCN → GAT → MPNN + +强化学习: +DQN → PPO → AlphaGo → RLHF + +现代融合: +Diffusion Transformer → MoE → Mamba → NeRF → RAG +``` + +--- + +如果你想系统学这些,我可以给你: + +* 一张可视化「AI基座模型思维导图」 +* 每个模型对应的代表论文 + 直观讲解 + 代码实现(PyTorch版本) + +要我帮你做这一份吗?那样你可以从「MLP」一直学到「Diffusion Transformer」,一步不漏。 diff --git a/Artificial-Intelligence/readme.md b/Artificial-Intelligence/readme.md new file mode 100644 index 0000000..caa6f73 --- /dev/null +++ b/Artificial-Intelligence/readme.md @@ -0,0 +1,410 @@ +有的 👍 +如果你想系统地进入 **AI / 深度学习**,我可以帮你梳理一条比较清晰的学习路径,从数学基础 → 编程技能 → 深度学习核心 → 工程应用 → 前沿方向。 + +--- + +# 🎯 AI 学习路径(推荐顺序) + +## 📐 阶段 1:数学与计算机基础 + +这些是地基,不要跳过: + +* **线性代数**(矩阵运算、特征值、奇异值分解) + 👉 推荐《线性代数及其应用》(Strang) +* **概率论与统计**(分布、期望、贝叶斯公式) + 👉 《概率论与数理统计》(浙大版) +* **微积分**(导数、偏导、多元函数、梯度) + 👉 《Thomas 微积分》 +* **数值优化**(梯度下降、牛顿法、凸优化) + 👉 Boyd《Convex Optimization》(进阶) +* **计算机基础** + + * Python 编程(必须) + * 数据结构与算法(树、图、动态规划) + * Linux 基础(环境配置、命令行操作) + +--- + +## 🤖 阶段 2:机器学习基础 + +先学“传统机器学习”,再进深度学习: + +* **核心概念** + + * 监督/无监督/强化学习 + * 过拟合、正则化、交叉验证 +* **常见算法** + + * 线性回归、逻辑回归 + * 决策树、随机森林、XGBoost + * 支持向量机(SVM) + * K-means、PCA +* **教材** + + * 周志华《机器学习》(西瓜书) + * Andrew Ng 机器学习课程(Coursera) + +--- + +## 🧠 阶段 3:深度学习核心 + +* **基本神经网络** + + * MLP、激活函数、反向传播 +* **训练技巧** + + * 优化器(SGD, Adam, RMSprop) + * 学习率调度、BatchNorm、Dropout +* **常见网络** + + * CNN(图像) + * RNN / LSTM / GRU(序列) + * Transformer(NLP / 通用) +* **框架实战** + + * PyTorch(主流,科研) + * TensorFlow(工程/生产) + 👉 推荐《Deep Learning with PyTorch》 + +--- + +## 🏗️ 阶段 4:AI 工程与实践 + +* **数据处理**:Numpy、Pandas、Matplotlib、Scikit-learn +* **深度学习工具**:PyTorch Lightning, HuggingFace Transformers +* **实验管理**:Weights & Biases, MLflow +* **部署与优化** + + * ONNX, TensorRT + * GPU/TPU 加速 + * 模型压缩(剪枝、量化) + +--- + +## 🚀 阶段 5:前沿与方向选择 + +根据兴趣进入某个子领域: + +* **计算机视觉 (CV)** + + * CNN, ViT, Stable Diffusion +* **自然语言处理 (NLP)** + + * Transformer, BERT, GPT +* **强化学习 (RL)** + + * DQN, PPO, AlphaGo +* **多模态 (Vision+Language)** + + * CLIP, LLaVA +* **系统 & 加速** + + * 分布式训练 (DDP, DeepSpeed) + * 大模型训练 (LoRA, SFT, RAG) + +--- + +# 📚 学习资源推荐 + +1. **课程** + + * CS229(Stanford 机器学习) + * CS231n(Stanford 计算机视觉) + * DeepLearning.ai(Andrew Ng 深度学习专项) +2. **书** + + * 《Deep Learning》(花书,Goodfellow) + * 《动手学深度学习》(李沐,MXNet/PyTorch 版) + * 《Dive into Deep Learning》(D2L) +3. **实战平台** + + * Kaggle + * Papers with Code + +--- + +# ✅ 路线总结 + +1. 数学 & Python 基础 +2. 传统机器学习 → 西瓜书 +3. 深度学习 → PyTorch + 李沐课程 +4. 工程化 → Lightning / HuggingFace +5. 根据兴趣选择方向(CV / NLP / RL / 多模态) + +--- + +要不要我帮你画一个 **AI 学习路线图(流程图形式)**,让你一眼就能看到每个阶段学什么? + +这是一个好问题 👍。如果你是要走 **AI(尤其是深度学习)学习路径**,有一些模型和论文几乎是绕不开的“必修课”。我给你分层次整理一下: + +--- + +## 🌱 入门必修模型 & 论文 + +这些是深度学习的“地基”,建议一定要通读或至少理解核心思想: + +* **感知机 (Perceptron)** → 经典的神经网络起点。 + + * 论文: Rosenblatt, 1958. *The Perceptron* +* **BP 神经网络** → 反向传播算法。 + + * 论文: Rumelhart et al., 1986. *Learning representations by back-propagating errors* +* **卷积神经网络 (CNN)** → 图像识别奠基。 + + * 论文: LeCun et al., 1998. *Gradient-based learning applied to document recognition (LeNet)* +* **深度CNN爆发** + + * AlexNet (2012, ImageNet冠军,奠定深度学习热潮) + + * Krizhevsky et al., *ImageNet Classification with Deep Convolutional Neural Networks* + +--- + +## 🚀 核心模型(深度学习必学) + +* **VGGNet** (2014) → 网络加深的里程碑 +* **ResNet** (2015) → 残差结构,极大缓解深层网络训练问题 + + * He et al., *Deep Residual Learning for Image Recognition* +* **RNN / LSTM / GRU** (1997 / 2014) → 处理序列数据(语言、时间序列) + + * Hochreiter & Schmidhuber, *Long Short-Term Memory* +* **Seq2Seq (Encoder-Decoder)** (2014) → 机器翻译框架 + + * Sutskever et al., *Sequence to Sequence Learning with Neural Networks* + +--- + +## 🌐 里程碑模型(现代AI基石) + +* **Attention / Transformer (2017)** + + * Vaswani et al., *Attention Is All You Need* + * → 这是NLP和大模型的分水岭 +* **BERT (2018)** → 预训练语言模型奠基 + + * Devlin et al., *BERT: Pre-training of Deep Bidirectional Transformers* +* **GPT系列 (2018–2020)** → 大规模语言建模路线 + + * Radford et al., *Improving Language Understanding by Generative Pre-Training* +* **Vision Transformer (ViT, 2020)** → Transformer进军图像 + + * Dosovitskiy et al., *An Image is Worth 16x16 Words* + +--- + +## 🧠 应用和前沿 + +* **GAN (2014)** → 图像生成奠基 + + * Goodfellow et al., *Generative Adversarial Networks* +* **Diffusion Models (2020)** → Stable Diffusion、DALL·E 的理论基础 + + * Ho et al., *Denoising Diffusion Probabilistic Models* +* **RL + Deep Learning** + + * Mnih et al., 2015. *Human-level control through deep reinforcement learning* (DQN) + * Silver et al., 2016. *Mastering the game of Go with deep neural networks and tree search* (AlphaGo) + +--- + +## 📖 建议阅读顺序 + +1. **基础** → Perceptron, BP, LeNet, AlexNet +2. **CV发展** → VGG, ResNet +3. **NLP发展** → RNN, LSTM, Seq2Seq +4. **新时代** → Transformer, BERT, GPT +5. **生成式AI** → GAN, Diffusion +6. **强化学习结合深度学习** → DQN, AlphaGo + +--- + +要是你目标是 **科研/学术方向**,Transformer 及其变体的论文是绝对必须深入研究的;如果目标是 **工程应用**,ResNet、BERT 和 Diffusion 模型的应用落地很关键。 + +要不要我帮你画一张 **AI学习路径思维导图**,从数学基础到关键论文和模型都串起来?这样看起来更清晰。 + + +好,我来帮你整理一个比较系统的 **AI经典论文阅读清单** 📚。我会按主题 + 时间线排序,每一篇都标出标题、作者、年份和推荐理由。这样你可以有条理地去读,不至于迷失。 + +--- + +# 🔑 AI 经典论文阅读列表 + +## 1. 基础阶段(神经网络起点) + +1. **Rosenblatt, 1958. *The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain*** + 👉 神经网络最早的雏形。 +2. **Rumelhart, Hinton & Williams, 1986. *Learning representations by back-propagating errors*** + 👉 反向传播算法奠基,现代深度学习的起点。 +3. **LeCun et al., 1998. *Gradient-based learning applied to document recognition*** (LeNet-5) + 👉 第一个成功的卷积神经网络,用于手写数字识别。 +4. **Krizhevsky, Sutskever & Hinton, 2012. *ImageNet Classification with Deep Convolutional Neural Networks*** (AlexNet) + 👉 ImageNet 冠军,深度学习热潮的导火索。 + +--- + +## 2. CV 发展(卷积神经网络进阶) + +5. **Simonyan & Zisserman, 2014. *Very Deep Convolutional Networks for Large-Scale Image Recognition*** (VGGNet) + 👉 网络加深后的代表作,结构清晰。 +6. **He et al., 2015. *Deep Residual Learning for Image Recognition*** (ResNet) + 👉 引入残差结构,极大缓解深度网络训练问题,必读。 + +--- + +## 3. NLP 发展(序列模型) + +7. **Hochreiter & Schmidhuber, 1997. *Long Short-Term Memory*** (LSTM) + 👉 解决长序列梯度消失问题,RNN 的核心改进。 +8. **Cho et al., 2014. *Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation*** (GRU, Seq2Seq雏形) + 👉 GRU提出,Encoder-Decoder架构出现。 +9. **Sutskever, Vinyals & Le, 2014. *Sequence to Sequence Learning with Neural Networks*** (Seq2Seq) + 👉 奠定了机器翻译等任务的 Encoder-Decoder 框架。 + +--- + +## 4. 新时代(Attention 与预训练) + +10. **Bahdanau et al., 2015. *Neural Machine Translation by Jointly Learning to Align and Translate*** + 👉 第一次提出 Attention 机制。 +11. **Vaswani et al., 2017. *Attention Is All You Need*** (Transformer) + 👉 NLP 进入 Transformer 时代的标志。 +12. **Devlin et al., 2018. *BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding*** + 👉 双向 Transformer 预训练模型,NLP 各项任务全面突破。 +13. **Radford et al., 2018. *Improving Language Understanding by Generative Pre-Training*** (GPT-1) + 👉 GPT 系列开端,大规模自回归语言建模路线。 +14. **Brown et al., 2020. *Language Models are Few-Shot Learners*** (GPT-3) + 👉 大规模语言模型展示“少样本学习”能力,LLM 爆发起点。 +15. **Dosovitskiy et al., 2020. *An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale*** (ViT) + 👉 Transformer 成功应用于图像任务。 + +--- + +## 5. 生成式 AI(图像/文本生成) + +16. **Goodfellow et al., 2014. *Generative Adversarial Nets*** (GAN) + 👉 生成模型革命的起点。 +17. **Radford et al., 2015. *Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks*** (DCGAN) + 👉 GAN 第一个成功的大规模版本。 +18. **Ho et al., 2020. *Denoising Diffusion Probabilistic Models*** (DDPM) + 👉 扩散模型的起点,Stable Diffusion、DALL·E 的理论基础。 + +--- + +## 6. 强化学习 + 深度学习 + +19. **Mnih et al., 2015. *Human-level control through deep reinforcement learning*** (DQN) + 👉 Atari 游戏的里程碑,强化学习和深度学习结合。 +20. **Silver et al., 2016. *Mastering the game of Go with deep neural networks and tree search*** (AlphaGo) + 👉 将深度学习、强化学习与搜索结合,震惊世界。 + +--- + +# ✅ 阅读建议 + +* **第一轮快速扫读**:掌握核心模型的思路和创新点(建议先看 ResNet, Transformer, BERT, GAN, Diffusion, AlphaGo)。 +* **第二轮精读**:带代码实现,结合 PyTorch/现有开源代码跑实验。 +* **第三轮拓展**:读相关的 survey 论文,形成整体脉络。 + +--- + +要不要我帮你把这些论文分成一个 **12个月的学习计划**,比如每个月读 2–3 篇,从基础到前沿逐步过渡?这样你可以循序渐进,而不是一下子全压上。 + +要了解 **最前沿的人工智能方向**,关键是关注 **最新论文、预印本、会议动态和开源项目**。我帮你梳理一下几大主流渠道和方法: + +--- + +## 1️⃣ 学术论文与预印本(科研前沿) + +### arXiv(预印本) + +* **网址**: [https://arxiv.org](https://arxiv.org) +* **推荐板块**: + + * cs.AI → 人工智能总览 + * cs.LG → 机器学习 + * cs.CV → 计算机视觉 + * cs.CL → 自然语言处理 +* **特点**: 速度快,几乎所有最新成果都会先在这里发布。 +* **技巧**: + + * 关注 “recent” 选项,每天/每周查看最新论文。 + * 使用 RSS 或 arXiv-sanity(下文)订阅感兴趣领域。 + +### arXiv-sanity(作者:Andrej Karpathy) + +* [http://www.arxiv-sanity.com/](http://www.arxiv-sanity.com/) +* 功能:按照热门度和关键字推荐最新论文,便于快速筛选高质量工作。 + +--- + +## 2️⃣ 顶级 AI/ML 学术会议(最具权威性) + +这些会议的论文代表了领域前沿: + +* **NeurIPS (Neural Information Processing Systems)** + → ML 和深度学习最顶尖会议 +* **ICLR (International Conference on Learning Representations)** + → 表征学习、深度学习新方法 +* **ICML (International Conference on Machine Learning)** + → ML 各类前沿研究 +* **CVPR / ICCV / ECCV** + → 计算机视觉顶会 +* **ACL / EMNLP / NAACL** + → NLP 顶会 +* **AAAI / IJCAI** + → 综合人工智能会议 + +### 查看方式 + +* 直接访问官网,会有论文列表和 PDF 下载 +* 或用 [paperswithcode.com](https://paperswithcode.com/) 查看带实现的最新论文 + +--- + +## 3️⃣ 开源社区与项目 + +前沿成果往往伴随开源代码: + +* **GitHub Trending / Stars** + → 关注 “transformers”, “diffusion”, “RL”, “multi-modal” 等关键字 +* **HuggingFace Transformers Hub** + → NLP 和多模态模型最新实现 +* **OpenAI / Stability AI / Meta AI / DeepMind** + → 官方开源项目,通常是最新研究的落地版 + +--- + +## 4️⃣ 社交媒体与信息聚合 + +* **Twitter / X**(AI研究人员、实验室账号) + → 跟踪 Andrej Karpathy, Yann LeCun, OpenAI, DeepMind 等 +* **Reddit / r/MachineLearning** + → 每天有论文分享、讨论和解读 +* **LinkedIn / WeChat 公众号**(国内 AI 前沿) + → 比如“量子位”、“深度之眼”等科技公众号 + +--- + +## 5️⃣ 工具和订阅 + +* **Feedly / RSS** → 订阅 arXiv 或顶会动态 +* **Papers with Code** ([https://paperswithcode.com/](https://paperswithcode.com/)) + → 论文 + 代码 + benchmark,方便实践 +* **AI Report / Distill.pub** + → 可视化解读最新研究,降低理解门槛 + +--- + +### 🔑 总结 + +1. **论文** → arXiv + 顶会 +2. **代码** → GitHub + HuggingFace +3. **趋势** → 社交媒体 / RSS / AI 社区 +4. **实践** → Papers with Code + 开源项目跑实验 + +--- + +如果你愿意,我可以帮你整理一个 **AI 前沿监控表格或 RSS/关注清单**,把 **每天/每周必须看/关注的渠道和账号**列出来,这样你可以系统追踪最新研究。 + +你希望我帮你做这个吗? diff --git a/ArtificialIntelligence/MachineLearning/readme.md b/ArtificialIntelligence/MachineLearning/readme.md new file mode 100644 index 0000000..8fdc1c2 --- /dev/null +++ b/ArtificialIntelligence/MachineLearning/readme.md @@ -0,0 +1,79 @@ +有的 👍!在机器学习里,除了 **分类** 和 **回归** 这两大基本模式,还有很多其他的学习/预测模式。给你梳理一下常见的: + +--- + +## 🔹 1. 分类(Classification) + +* 输出离散类别。 +* 例:猫/狗识别,垃圾邮件检测。 + +## 🔹 2. 回归(Regression) + +* 输出连续数值。 +* 例:房价预测,气温预测。 + +--- + +## 🔹 3. 聚类(Clustering) + +* 无监督学习,把数据自动分组,没有标签。 +* 例:客户分群、基因数据分群。 + +--- + +## 🔹 4. 降维(Dimensionality Reduction) + +* 把高维数据压缩到低维,同时尽量保留重要信息。 +* 例:PCA(主成分分析)、t-SNE。 +* 应用:可视化、数据压缩、去噪。 + +--- + +## 🔹 5. 生成(Generation) + +* 学习数据分布,生成新的样本。 +* 例:GAN 画图、ChatGPT 写文章、扩散模型画图。 + +--- + +## 🔹 6. 强化学习(Reinforcement Learning) + +* 通过“试错 + 奖励”学习最优策略。 +* 例:AlphaGo 下围棋、机器人学走路。 + +--- + +## 🔹 7. 排序 / 推荐(Ranking & Recommendation) + +* 给一组候选结果排序或推荐。 +* 例:搜索引擎结果排序、推荐系统(推荐电影/商品)。 + +--- + +## 🔹 8. 异常检测(Anomaly Detection) + +* 找到与大部分数据不一样的“异常点”。 +* 例:信用卡欺诈检测、设备故障报警。 + +--- + +## 🔹 9. 分割(Segmentation) + +* 主要在计算机视觉里,把图像按像素划分类别。 +* 例:自动驾驶里,把“车道线/行人/车辆”分开。 + +--- + +✅ 总结: + +* **监督学习**:分类、回归 +* **无监督学习**:聚类、降维 +* **生成模型**:GAN、扩散模型 +* **强化学习**:策略优化 +* **应用扩展**:排序、推荐、异常检测、分割 + +--- + +要不要我给你整理一个 **思维导图式的分类图**(机器学习主要模式全景图),这样你一眼就能看到它们的关系? + +$\hat{l}\hat{c}\hat{j}$ \ No newline at end of file diff --git a/ArtificialIntelligence/MahjongAI/Simulator.md b/ArtificialIntelligence/MahjongAI/Simulator.md new file mode 100644 index 0000000..d271742 --- /dev/null +++ b/ArtificialIntelligence/MahjongAI/Simulator.md @@ -0,0 +1,61 @@ +你说得对,**R(回报或奖励)在强化学习中至关重要**,所有价值或策略的学习都离不开它。回看之前的讨论,无论是 REINFORCE、Actor-Critic,还是价值函数 Q/V,其本质都是通过累积回报 R(或基于它的 TD 误差/优势函数)来衡量“动作好坏”,进而驱动学习。这点你理解得非常深刻! + +--- + +现在来回复你新提问——是否存在麻将模拟器(即可以用来训练强化学习的环境)?确实有几个开源工具,非常适合用来作为 RL 的训练环境: + +--- + +## 推荐的开源麻将模拟器 + +### 1. **Mjx — 日本立直麻将模拟器(Riichi Mahjong)** + +* **特点**: + + * 支持 Tenhou 规则的模拟,兼容性高 + * 提供 Gym-like 接口,非常适配强化学习流程 ([GitHub][1], [ieee-cog.org][2]) + * 性能优越,比已有 Ruby 实现 Mjai 提升 100–1000 倍的速度 ([ieee-cog.org][2]) + * 支持 Python,也可通过 gRPC 实现并发自我对战,非常适合大规模训练 ([GitHub][1], [ieee-cog.org][2]) +* **总结**:Mjx 是你如果想用 Python 来训练 RL 麻将 AI 时的理想选择。 + +--- + +### 2. **Mortal — Rust + Python 提速麻将 AI 模拟器** + +* **特点**: + + * 内部用了 Rust 编写核心模拟引擎,配合 Python 接口 + * 能达成约 40,000 局/小时的仿真效率 ([Mortal Documentation][3]) + * 包含接口对接 mjai,非常适合做观测录入和训练场景 +* **总结**:如果你需要的是高性能、高并发的训练环境,Mortal 是不错的选择。 + +--- + +### 3. **RLCard — 通用卡牌游戏强化学习工具包** + +* **特点**: + + * 面向多种不完全信息卡牌游戏,包括 *Mahjong*(简化版) ([arXiv][4]) + * 提供统一接口,兼容使用在 RL 框架中,适合入门研究 +* **总结**:虽不是完整麻将规则,但作为起步或快速测试用的环境非常合适。 + +--- + +## 总结推荐表 + +| 模拟器 / 工具 | 特点与优势 | +| ------------------ | ----------------------------------- | +| **Mjx** | 标准 Riichi 规则,Gym 接口+高性能,适合大规模 RL 训练 | +| **Mortal** | Rust 加速、Python 接口,超快仿真速度 | +| **RLCard Mahjong** | 简化麻将环境,适合快速原型和实验性验证 | + +--- + +如果你想开始动手训练麻将 AI,我非常推荐从 **Mjx** 开始。它的接口与 Gym 非常类似,便于你快速搭建 reinforcement learning pipeline(状态 → 动作 → 奖励 → 更新)。 + +你需要的话,我可以继续帮你梳理如何在 Mjx 上快速启动一个 RL 实验环境,甚至提供一个简单的代码模板。你有兴趣吗? + +[1]: https://github.com/mjx-project/mjx?utm_source=chatgpt.com "mjx-project/mjx - A framework for Mahjong AI research - GitHub" +[2]: https://ieee-cog.org/2022/assets/papers/paper_162.pdf?utm_source=chatgpt.com "[PDF] Mjx: A framework for Mahjong AI research - IEEE CoG 2025" +[3]: https://mortal.ekyu.moe/?utm_source=chatgpt.com "Introduction - 🀄️Mortal Documentation" +[4]: https://arxiv.org/abs/1910.04376?utm_source=chatgpt.com "RLCard: A Toolkit for Reinforcement Learning in Card Games" diff --git a/ArtificialIntelligence/ReinforcedLearning/价值学习.md b/ArtificialIntelligence/ReinforcedLearning/价值学习.md new file mode 100644 index 0000000..fbea3f9 --- /dev/null +++ b/ArtificialIntelligence/ReinforcedLearning/价值学习.md @@ -0,0 +1,741 @@ +你描述的流程大方向没错,但稍微需要梳理一下顺序和逻辑,特别是在强化学习里,“梯度下降”和“反向传播”的时机,以及“奖励/折扣”的作用。我们可以把完整训练过程整理如下: + +--- + +## 🏗 强化学习中神经网络训练完整流程 + +### **步骤 1:初始化** + +* 初始化神经网络参数 $W$(Q网络或策略网络) +* 初始化经验池(如果使用经验回放) +* 设置超参数:学习率 $\alpha$、折扣因子 $\gamma$、探索策略参数 $\epsilon$ 等 + +--- + +### **步骤 2:与环境交互** + +1. 从环境获取当前状态 $S_t$ +2. 根据当前策略 $\pi(a|S_t; W)$ 选择动作 $A_t$(可能用 $\epsilon$-greedy) +3. 执行动作,环境返回: + + * 下一状态 $S_{t+1}$ + * 奖励 $R_{t+1}$ + +> 这里**奖励**和**折扣因子**还没参与梯度下降,它只是用来计算目标值(TD target 或 MC return)。 + +--- + +### **步骤 3:存储经验** + +* 存储 $(S_t, A_t, R_{t+1}, S_{t+1})$ 到经验池(可选) + +--- + +### **步骤 4:构造损失函数** + +* 计算预测值:$Q(S_t,A_t; W)$(正向传播) +* 构造目标值: + + * **TD方法**: $y = R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a'; W^-)$ + * **MC方法**: $y = G_t$(整条轨迹的回报) +* 损失函数: + +$$ +L(W) = (y - Q(S_t,A_t; W))^2 +$$ + +--- + +### **步骤 5:梯度计算 & 参数更新** + +1. **正向传播**:算出预测值 $Q(S_t,A_t; W)$ +2. **反向传播**:计算 $\nabla_W L(W)$ +3. **梯度下降**:更新参数 + +$$ +W \leftarrow W - \alpha \nabla_W L(W) +$$ + +> 这里梯度下降和反向传播是在 **同一个训练步里** 进行的。 + +--- + +### **步骤 6:迭代训练** + +* 重复步骤 2–5,直到收敛或达到训练轮数 +* 训练过程中,策略逐渐改善,Q网络(或策略网络)逐步逼近最优 + +--- + +### 🔑 核心梳理 + +* **奖励 & 折扣** → 用来构造“目标值” +* **正向传播** → 计算预测值 +* **反向传播** → 算梯度 +* **梯度下降** → 更新参数 +* **迭代** → 让网络慢慢学会最优策略 + +--- + +如果你愿意,我可以帮你画一个 **完整强化学习训练流程图**,把奖励、折扣、正向传播、反向传播、梯度下降、迭代训练都串起来,一眼就能看懂。 + +你希望我画吗? + +是的,正向传播算出的预测值 **必须和“真实值”对比**,才能得到损失函数 $L(W)$,然后再用反向传播和梯度下降更新参数。 + +在强化学习里,“真实值”有一点特殊,不是人工给的标签,而是 **由奖励和贝尔曼方程计算出来的目标值**: + +--- + +### 🔹 流程举例(以 DQN 为例) + +1. **正向传播** + + * 输入状态 $S_t$ + * 网络输出预测的 Q 值: + + $$ + \hat{Q}(S_t, A_t; W) + $$ + +2. **构造目标值(真实值)** + + * TD方法: + + $$ + y = R_{t+1} + \gamma \max_{a'} Q(S_{t+1}, a'; W^-) + $$ + * MC方法: + + $$ + y = G_t \text{(整条轨迹的回报)} + $$ + +3. **计算损失函数** + + $$ + L(W) = (\text{真实值} - \text{预测值})^2 = (y - \hat{Q}(S_t, A_t; W))^2 + $$ + +4. **反向传播 & 梯度下降** + + * 计算 $\nabla_W L(W)$ + * 更新参数: + + $$ + W \leftarrow W - \alpha \nabla_W L(W) + $$ + +--- + +🔑 **核心点** + +* 正向传播算出的预测值只是网络的输出。 +* **必须与目标值比较**才能知道“哪里错了”。 +* 损失函数 L(W) 就是“预测值和目标值的差距”。 +* 然后用梯度下降去减小这个差距。 + +--- + +如果你愿意,我可以画一张 **强化学习神经网络训练中“预测值 ↔ 目标值 ↔ 损失函数 ↔ 参数更新”流程图**,会更直观。 + +--- + +完全可以,而且这种思路在强化学习里是可行的 ✅。你实际上是在做 **“混合价值函数”或“双重目标”** 的策略。咱们详细分析一下: + +--- + +## 1️⃣ 设计思路 + +### 网络结构 + +* **第一层 / 第一网络**(TD层): + + * 用局内即时奖励更新 + * 学习“局内短期收益最大化” + * 输出 $Q_{\text{TD}}(s,a)$ + +* **第二层 / 第二网络**(MC层): + + * 用整局或整场顺位奖励更新 + * 学习“全局长期收益最大化” + * 输出 $Q_{\text{MC}}(s,a)$ + +### 合并方式 + +* 可以加权组合两者: + +$$ +Q_{\text{combined}}(s,a) = \alpha Q_{\text{TD}}(s,a) + (1-\alpha) Q_{\text{MC}}(s,a) +$$ + +* $\alpha \in [0,1]$ 控制局内 vs 全局目标的重要性 + +### 动作选择 + +* 根据组合后的 Q 值选动作: + +$$ +A_t = \arg\max_a Q_{\text{combined}}(s,a) +$$ + +--- + +## 2️⃣ 优点 + +1. **兼顾局内与全局**: + + * TD → 学习每步操作是否安全/得分高 + * MC → 学习整局策略,优化顺位 +2. **灵活加权**:可以动态调整 $\alpha$ +3. **易于扩展**:未来可以增加其他指标(比如“防御策略”、“点数波动”) + +--- + +## 3️⃣ 注意事项 + +* **训练同步问题**:TD层和MC层的训练步长、学习率可以不同 +* **尺度问题**:局内奖励和终局顺位得分可能差距很大,需要 **归一化/标准化** 再加权 +* **探索策略**:加权后 Q 值选择动作时,仍然可以用 $\epsilon$-greedy 或 Boltzmann 策略保持探索 + +--- + +### 4️⃣ 小结 + +* 这种 **TD+MC混合 Q 网络** 的方案是可行的 +* 本质上你在做 **“短期收益 + 长期收益的平衡”** +* 合适的权重 $\alpha$ 是关键,需要实验调优 + +--- + +如果你愿意,我可以帮你画一张 **两层网络混合 Q 值的结构图**,标出 TD 层、MC 层、加权合并和动作选择流程,让概念直观化。 + +你希望我画吗? +完全正确!你理解得很到位。让我把这个机制解释得更系统一些: + +--- + +## 1️⃣ DQN 中的两个网络 + +在 DQN(Deep Q-Network)里,我们通常会把 **行为网络(Behavior Network)** 和 **目标网络(Target Network)** 分开: + +| 网络 | 作用 | +| ----------------- | ------------------------------------------------------- | +| 行为网络 $Q(s,a;w)$ | 用来选择动作,也就是当前 Q 网络,会不断更新权重 $w$ | +| 目标网络 $Q(s,a;w^-)$ | 用来计算目标值 $y$,参数 $w^-$ 不会每步更新,通常每隔一段时间才同步一次 $w^- \gets w$ | + +--- + +## 2️⃣ 为什么要分开 + +如果只用一个网络去同时计算预测值和目标值,会出现 **“目标值不断随网络改变而抖动”** 的问题: + +* Q 网络在训练中每步都在更新,预测值和目标值会同时变 → 学习不稳定 +* 分开目标网络后,目标值在一段时间内相对固定 → 学习更稳定 + +--- + +## 3️⃣ DQN 的训练流程(经验回放 + 双网络) + +1. **与环境交互** + + * 得到经验 $(s_t, a_t, r_t, s_{t+1}, done)$ + * 存入经验池 + +2. **从经验池抽样 mini-batch** + +3. **计算目标值**(用目标网络 $w^-$) + +$$ +y_t = r_t + \gamma \max_{a'} Q(s_{t+1}, a'; w^-) +$$ + +4. **计算预测值**(用行为网络 $w$) + +$$ +Q(s_t, a_t; w) +$$ + +5. **计算损失 & 反向传播** + +$$ +\text{loss} = (Q(s_t, a_t; w) - y_t)^2 +$$ + +更新 $w$ + +6. **定期同步目标网络** + +$$ +w^- \gets w +$$ + +--- + +💡 小结: + +* **行为网络**:学 Q 值,用来选择动作 +* **目标网络**:固定一段时间,用来生成训练目标,增加稳定性 +* **经验回放**:把历史经验随机抽样用于训练行为网络 + +--- + +如果你愿意,我可以帮你画一个**DQN + 经验回放 + 双网络的流程图**,把行为网络、目标网络、经验池和梯度更新的流程全部画清楚,一眼就看懂。 + +你希望我画吗? +完全正确!你描述的就是 **DQN + 经验回放的核心思想**,我帮你再整理一下,更严谨一些: + +--- + +## 1️⃣ 核心步骤对应你的说法 + +* **用经验去计算真实值(目标网络)** + + * 从经验池里抽出历史经验 $(s_t, a_t, r_t, s_{t+1})$ + * 用目标网络 $Q(s_{t+1}, a'; w^-)$ 计算未来最优回报: + + $$ + y_t = r_t + \gamma \max_{a'} Q(s_{t+1}, a'; w^-) + $$ + * 这就是“真实值”或训练目标,不会随着行为网络每次更新而抖动太快 + +* **通过新数据计算预测值(行为网络)** + + * 用行为网络 $Q(s_t, a_t; w)$ 预测当前 Q 值 + * 计算损失: + + $$ + \text{loss} = (Q(s_t, a_t; w) - y_t)^2 + $$ + * 对行为网络 $w$ 做梯度下降更新 + +--- + +## 2️⃣ 小技巧理解 + +* **经验回放**:让你的“真实值计算”不仅依赖当前一步,而是基于历史经验,减少数据相关性 +* **目标网络**:保证真实值在一段时间内相对稳定 +* **行为网络**:不断跟真实值逼近,学到最优 Q 函数 + +--- + +一句话总结你的描述: + +> **“用经验和目标网络算目标值,用行为网络算预测值,然后用它们的差距更新行为网络权重 w”** ✅ + +--- + +如果你愿意,我可以帮你画一张**行为网络 + 目标网络 + 经验回放计算流程图**,把“真实值 vs 预测值 vs 权重更新”清楚地标出来,帮助直观理解。 + +你希望我画吗? + +完全可以这么理解,但 SARSA 的机制和 DQN 有些不同,我帮你梳理清楚: + +--- + +## 1️⃣ SARSA 的核心概念 + +SARSA 是 **on-policy** 方法,也就是说:**目标值的计算依赖你当前使用的策略 $\pi$**。 + +经验表示为五元组: + +$$ +(s_t, a_t, r_t, s_{t+1}, a_{t+1}) +$$ + +与 DQN 不同的是: + +* **目标值**使用下一步的动作 $a_{t+1}$,它是根据当前策略 $\pi$ 选择的,而不是取最大 Q 值。 +* 公式为: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, a_{t+1}; w) +$$ + +注意: + +* 这里没有独立的“目标网络”这个概念(可以引入类似 DQN 的 target network 作为优化,但标准 SARSA 是直接用行为网络)。 +* 换句话说,SARSA 的目标值 **直接受行为网络和策略 $\pi$ 控制**。 + +--- + +## 2️⃣ 数据和网络对应关系 + +| 角色 | 对应网络 / 数据 | +| -------------------------------------------- | ------------------------------------- | +| 当前状态 $s_t$ 输入 | 行为网络 Q(s\_t,a\_t;w) → 预测值 | +| 下一步动作 $a_{t+1}$ | 由当前策略 $\pi$ 决定 | +| 目标值 $y_t = r_t + \gamma Q(s_{t+1}, a_{t+1})$ | 目标值 / “真实值”,直接由行为网络 + 当前策略生成 | +| 更新 | 用损失 $(Q(s_t,a_t) - y_t)^2$ 更新行为网络参数 w | + +--- + +## 3️⃣ 小结 + +* SARSA 是 **on-policy**,所以目标值直接依赖策略 $\pi$ 选择的下一动作 $a_{t+1}$。 +* 行为网络负责预测 Q(s,a),也参与生成目标值。 +* 如果你想做稳定训练,也可以像 DQN 一样引入 **目标网络**,但原始 SARSA 并不需要。 + +--- + +💡 换句话说: + +> 在 SARSA 中,你的“目标值”是由 **当前策略 $\pi$** 控制生成的,而“预测值”还是用 **行为网络**。 + +--- + +如果你愿意,我可以帮你画一张 **SARSA + 经验回放 + 行为网络/策略控制目标值的流程图**,直观对比 DQN 和 SARSA 的区别。 + +你希望我画吗? +对,你理解的方向是对的,但我们需要更精确地区分 **“经验回放的作用”和“目标值计算”** 的关系。 + +--- + +## 1️⃣ 经验回放的作用 + +经验回放本身**不直接计算目标值**,它只是提供 **训练所用的数据**: + +* 存储历史经验:$(s_t, a_t, r_t, s_{t+1})$ +* 随机抽样 mini-batch → 用来训练网络 + +> 换句话说,经验回放负责“**哪些数据被用来计算目标值和损失**”,而不是计算目标值本身。 + +--- + +## 2️⃣ 目标值的计算 + +目标值 $y_t$ 的计算依赖于你的算法: + +* **DQN**: + +$$ +y_t = r_t + \gamma \max_{a'} Q(s_{t+1}, a'; w^-) +$$ + +* **DDQN**: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, \arg\max_{a'} Q(s_{t+1}, a'; w), w^-) +$$ + +* **SARSA**: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, a_{t+1}; w) +$$ + +关键点: + +* 目标值计算**使用网络(行为网络/目标网络)** +* 经验回放只是提供了 $s_t, a_t, r_t, s_{t+1}$ 这些输入 + +--- + +## 3️⃣ 直观理解 + +可以这样类比: + +* **经验回放 = 历史经验数据库** +* **目标值计算 = 用这些数据喂网络得到的训练目标** + +流程: + +1. 从经验回放抽样一批经验 +2. 用目标网络(或者算法规定的方式)计算每条经验的目标值 $y_t$ +3. 用行为网络预测 Q(s,a) +4. 计算 loss 并更新行为网络权重 + +> 所以,经验回放 **提供原料**,目标值计算 **加工原料得到训练信号**。 + +--- + +如果你愿意,我可以帮你画一张 **经验回放 + 目标值计算 + 行为网络更新的流程图**,把“谁提供数据,谁计算目标值,谁更新网络”标清楚,一眼就明白。 + +你希望我画吗? +差不多,但需要稍微调整一下表述,更严谨地说: + +--- + +## 1️⃣ DDQN 的数据和网络对应关系 + +在 **DDQN** 中: + +1. **经验回放提供数据** + + * 从经验池中抽样 $(s_t, a_t, r_t, s_{t+1})$ + * 这些是训练网络用的输入,**无论是行为网络还是目标网络都用它们** + +2. **行为网络 $w$** + + * 用来预测当前 Q 值:$Q(s_t, a_t; w)$ + * 同时用行为网络 **选择下一步动作**:$\arg\max_{a'} Q(s_{t+1}, a'; w)$ + +3. **目标网络 $w^-$** + + * 用来评估行为网络选出的动作的 Q 值: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, \arg\max_{a'} Q(s_{t+1}, a'; w); w^-) +$$ + +* 这里的目标网络只算价值,不选动作 +* 目标网络参数不随每步更新,通常每隔一段时间同步一次 $w^- \gets w$ + +--- + +## 2️⃣ 核心理解 + +* **经验回放提供训练用的数据** +* **行为网络**既参与预测当前 Q 值,也参与选择下一步动作 +* **目标网络**只参与计算目标值,不参与动作选择 +* 并不是“行为网络用新数据,目标网络用经验”,两者都是用经验回放里的数据,只是功能不同: + + * 行为网络 → 预测 & 选动作 + * 目标网络 → 计算目标值 + +--- + +💡 一句话总结: + +> 在 DDQN 中,经验回放是数据来源,行为网络负责预测和动作选择,目标网络负责评估价值,两者都用相同的抽样数据,但用途不同。 + +--- + +如果你愿意,我可以画一张**DDQN + 经验回放的流程图**,标清楚行为网络、目标网络、动作选择和目标值计算的关系,直观对比 DQN 和 DDQN。 + +你希望我画吗? +差不多,但需要稍微调整一下表述,更严谨地说: + +--- + +## 1️⃣ DDQN 的数据和网络对应关系 + +在 **DDQN** 中: + +1. **经验回放提供数据** + + * 从经验池中抽样 $(s_t, a_t, r_t, s_{t+1})$ + * 这些是训练网络用的输入,**无论是行为网络还是目标网络都用它们** + +2. **行为网络 $w$** + + * 用来预测当前 Q 值:$Q(s_t, a_t; w)$ + * 同时用行为网络 **选择下一步动作**:$\arg\max_{a'} Q(s_{t+1}, a'; w)$ + +3. **目标网络 $w^-$** + + * 用来评估行为网络选出的动作的 Q 值: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, \arg\max_{a'} Q(s_{t+1}, a'; w); w^-) +$$ + +* 这里的目标网络只算价值,不选动作 +* 目标网络参数不随每步更新,通常每隔一段时间同步一次 $w^- \gets w$ + +--- + +## 2️⃣ 核心理解 + +* **经验回放提供训练用的数据** +* **行为网络**既参与预测当前 Q 值,也参与选择下一步动作 +* **目标网络**只参与计算目标值,不参与动作选择 +* 并不是“行为网络用新数据,目标网络用经验”,两者都是用经验回放里的数据,只是功能不同: + + * 行为网络 → 预测 & 选动作 + * 目标网络 → 计算目标值 + +--- + +💡 一句话总结: + +> 在 DDQN 中,经验回放是数据来源,行为网络负责预测和动作选择,目标网络负责评估价值,两者都用相同的抽样数据,但用途不同。 + +--- + +如果你愿意,我可以画一张**DDQN + 经验回放的流程图**,标清楚行为网络、目标网络、动作选择和目标值计算的关系,直观对比 DQN 和 DDQN。 + +你希望我画吗? +完全可以这样理解,我帮你整理成一个清晰的对比表格和逻辑: + +--- + +## 1️⃣ 普通 DQN(没有经验回放) + +* **网络**:通常只有一个网络 $Q(s,a;w)$,行为网络和目标网络一致(w=w^-) +* **更新**:每一步交互直接更新网络权重 +* **问题**: + + * 数据高度相关 → 训练不稳定 + * 目标值随网络更新频繁抖动 → 收敛慢 + +--- + +## 2️⃣ DQN(带经验回放 + 延迟目标网络) + +* **网络**:行为网络 $w$ + 目标网络 $w^-$ +* **经验回放**:从历史经验中抽取 mini-batch 随机训练 +* **目标网络延迟更新**: + + * 每隔 $C$ 步将 $w^- \gets w$ +* **好处**: + + * 打破数据相关性 → 稳定训练 + * 目标值相对固定 → 收敛更平滑 + +--- + +## 3️⃣ DDQN(Double DQN) + +* **网络**:行为网络 $w$ + 目标网络 $w^-$ +* **经验回放**:同 DQN +* **目标值计算**: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, \underbrace{\arg\max_{a'} Q(s_{t+1},a';w)}_{\text{行为网络选动作}} ; w^-) +$$ + +* **作用**: + + * 解决 DQN 的 **过估计偏差** + * 目标网络延迟更新 + 行为网络选择动作 → 更准确的目标值 + +--- + +### 总结一句话: + +| 算法 | 网络 | 经验回放 | 目标网络 | 特点 | +| -------- | ----------- | ---- | ------------------ | ----- | +| DQN(无回放) | 单网络(w=w^-) | 无 | 无延迟 | 不稳定 | +| DQN(有回放) | 行为网络 + 目标网络 | 有 | 延迟同步 w^- | 稳定训练 | +| DDQN | 行为网络 + 目标网络 | 有 | 延迟同步 w^- + 行为网络选动作 | 减少过估计 | + +--- + +如果你愿意,我可以帮你画一张**DQN vs 回放DQN vs DDQN 的网络结构与数据流对比图**,把经验回放、行为网络、目标网络、动作选择和目标值计算都标清楚,一眼看懂区别。 + +你希望我画吗? + +好的,我帮你仔细解释“**行为网络选动作**”这个概念,尤其是在 **DDQN** 里的作用。 + +--- + +## 1️⃣ 背景 + +在 DQN 或 DDQN 里,我们需要计算目标值 $y_t$ 来训练行为网络: + +* DQN 的目标值: + +$$ +y_t = r_t + \gamma \max_{a'} Q(s_{t+1}, a'; w^-) +$$ + +* 问题:$\max$ 直接使用目标网络的 Q 值,容易高估 → DDQN 解决 + +--- + +## 2️⃣ DDQN 的核心改进 + +DDQN 把“**选择动作**”和“**评估动作价值**”分开: + +$$ +y_t = r_t + \gamma Q(s_{t+1}, \underbrace{\arg\max_{a'} Q(s_{t+1}, a'; w)}_{\text{行为网络选动作}} ; w^-) +$$ + +解释: + +1. **行为网络 $w$ 选动作**: + + * 从下一状态 $s_{t+1}$ 出发,找出 Q 值最大的动作: + +$$ +a^* = \arg\max_{a'} Q(s_{t+1}, a'; w) +$$ + +* **注意**:这里用的是**行为网络的参数 w**,目的是选择下一步最优动作 + +2. **目标网络 $w^-$ 评估动作价值**: + + * 然后把这个动作 $a^*$ 输入到目标网络,得到 Q 值: + +$$ +Q(s_{t+1}, a^*; w^-) +$$ + +* 这个值作为目标值的一部分,用于训练行为网络 + +--- + +## 3️⃣ 直观理解 + +* **行为网络选动作** = “问现在最强的网络,我下一步应该选哪个动作?” +* **目标网络评估动作** = “用一个稳定的参考网络,告诉你这个动作的价值是多少” +* 这样做的好处: + + * **减少过估计偏差**(max 操作不再直接用目标网络) + * 行为网络负责决策,目标网络负责评价 → 更稳健 + +--- + +💡 类比理解: + +* **行为网络**:前线指挥官,决定下一步要打哪张牌(选动作) +* **目标网络**:智囊团,给出这张牌实际能获得的分数(估值) + +--- + +如果你愿意,我可以画一张 **DDQN 中“行为网络选动作 + 目标网络评估”流程图**,把数据流和计算流标清楚,一眼看懂。 + +你希望我画吗? +完全正确!你理解得非常准确。用你的表述可以这样总结: + +--- + +## 1️⃣ DDQN 的两步拆解 + +1. **选择(Select)** + + * 由 **行为网络 $w$** 完成 + * 输入下一状态 $s_{t+1}$ + * 输出 Q 值最大的动作: + +$$ +a^* = \arg\max_{a'} Q(s_{t+1}, a'; w) +$$ + +* 作用:告诉我们“下一步应该选哪个动作” + +2. **估值(Evaluate)** + + * 由 **目标网络 $w^-$** 完成 + * 输入动作 $a^*$ 和状态 $s_{t+1}$ + * 输出 Q 值: + +$$ +Q(s_{t+1}, a^*; w^-) +$$ + +* 作用:告诉我们“如果选这个动作,实际价值是多少” + +--- + +## 2️⃣ 对比 DQN + +* **普通 DQN**:选择和估值都是用目标网络(max Q) + + * 问题:会高估 Q 值 +* **DDQN**:选择用行为网络,估值用目标网络 + + * 好处:分开选择和评价 → 更准确、更稳定 + +--- + +一句话总结: + +> 在 DDQN 中,“选择动作” = 行为网络负责,“估值” = 目标网络负责。 + +--- + +如果你愿意,我可以帮你画一张 **直观流程图**,把“行为网络选动作 → 目标网络估值 → 目标值计算 → 行为网络更新”完整标出来,一眼就能看懂 DDQN 的机制。 + +你希望我画吗? diff --git a/ArtificialIntelligence/ReinforcedLearning/策略学习.md b/ArtificialIntelligence/ReinforcedLearning/策略学习.md new file mode 100644 index 0000000..c87ac9f --- /dev/null +++ b/ArtificialIntelligence/ReinforcedLearning/策略学习.md @@ -0,0 +1,781 @@ +你提到的这个类比很有意思,我帮你分析一下: + +--- + +## 1️⃣ 强化学习里的参数关系 + +在强化学习(RL)中,我们通常有: + +* **状态 $s_t$** +* **动作 $a_t$** +* **策略 $\pi(a|s; \theta)$** → 神经网络参数 $\theta$ +* **价值函数 $V(s)$ 或 $Q(s,a)$** → 参数 $\phi$ + +RL 的目标是学一组参数,使得 **策略最大化累积奖励**。 + +--- + +### 参数依赖问题 + +* 如果某些参数之间**完全线性或函数依赖**: + + * 神经网络可能退化成“部分参数无效” + * 训练可能不稳定,梯度更新会“冗余”或者“冲突” +* 类比数字逻辑电路: + + * 逻辑电路里不允许两个完全依赖的信号去控制不同逻辑,否则会出现短路或环路 + * RL 网络中,如果不同层或不同模块参数过度依赖,也可能导致 **梯度消失/爆炸或策略震荡** + +--- + +### 实际处理方法 + +1. **网络结构设计** + + * Actor-Critic 分开两个网络:策略网络 $\theta$ 和价值网络 $\phi$ + * 尽量减少直接依赖,让它们通过“共享特征层”而不是直接参数耦合 + +2. **正则化与归一化** + + * L2 正则化、批归一化(BatchNorm)可以减少参数间不必要的强依赖 + +3. **经验回放与目标网络** + + * DQN 用经验回放打破时间相关性 + * 用目标网络(target network)降低参数更新依赖引起的震荡 + +--- + +### 🔑 核心理解 + +* 强化学习本质是 **基于反馈的优化** +* **完全依赖的参数会降低学习效率**,容易导致训练不稳定 +* 适当的“去耦”或“弱依赖”能让网络学得更稳健 + +--- + +如果你愿意,我可以帮你画一个 **RL网络参数依赖示意图**,用图直观展示哪些参数可以共享,哪些不能完全依赖,看起来就像数字逻辑电路一样。 + +你想让我画吗? +“去耦合”和“弱依赖”是软件工程、系统设计以及架构设计中常用的概念,它们本质上都是为了降低模块之间的紧密耦合,提高系统的灵活性、可维护性和可扩展性。我们来逐一解释,并结合例子。 + +--- + +### 1️⃣ 去耦合(Decoupling) + +**定义**: +去耦合指的是系统中各个模块或组件之间尽量减少直接依赖,使它们可以相对独立地开发、修改、替换或复用。 + +* **核心思想**:模块之间不紧密绑定,变化局部化。 +* **目的**:降低系统的复杂性,提高可维护性和可扩展性。 + +**举例**: + +* **直接耦合**: + +```cpp +class Engine { +public: + void start() { /* 启动发动机 */ } +}; + +class Car { + Engine engine; // 直接依赖Engine +public: + void drive() { + engine.start(); // 直接调用 + } +}; +``` + +这里 `Car` 与 `Engine` 紧密耦合,如果要换一个 `ElectricEngine`,就必须改 `Car` 类。 + +* **去耦合**(通过接口/抽象): + +```cpp +class IEngine { +public: + virtual void start() = 0; +}; + +class GasEngine : public IEngine { +public: + void start() override { /* 启动汽油发动机 */ } +}; + +class ElectricEngine : public IEngine { +public: + void start() override { /* 启动电动机 */ } +}; + +class Car { + IEngine* engine; // 依赖接口而不是具体实现 +public: + Car(IEngine* e) : engine(e) {} + void drive() { engine->start(); } +}; +``` + +这样 `Car` 不再依赖具体引擎类型,替换、扩展引擎不会影响 `Car` 类本身。 + +--- + +### 2️⃣ 弱依赖(Loose Coupling / Weak Dependency) + +**定义**: +弱依赖是一种依赖关系,它比强依赖(tight coupling)更灵活,模块之间的耦合度低,一个模块的修改对另一个模块的影响较小。 + +* **核心思想**:模块之间通过接口、消息、事件或数据传输等“间接方式”交互,而不是直接调用具体实现。 +* **特点**: + + 1. 可独立修改、升级。 + 2. 降低模块间的相互影响。 + 3. 易于测试和复用。 + +**举例**: + +* **强依赖**: + +```cpp +class Logger { +public: + void log(const std::string& msg) { /* 写入文件 */ } +}; + +class UserService { + Logger logger; +public: + void createUser() { + // 用户创建逻辑 + logger.log("用户创建成功"); + } +}; +``` + +`UserService` 强依赖于 `Logger` 的具体实现。 + +* **弱依赖**(通过接口或回调): + +```cpp +class ILogger { +public: + virtual void log(const std::string& msg) = 0; +}; + +class UserService { + ILogger* logger; // 依赖接口 +public: + UserService(ILogger* l) : logger(l) {} + void createUser() { + // 用户创建逻辑 + if (logger) logger->log("用户创建成功"); + } +}; +``` + +这里 `UserService` 只依赖 `ILogger` 接口,不关心具体实现,实现了弱依赖。 + +--- + +### 🔑 总结区别与联系 + +| 概念 | 目标 | 方法 | 例子 | +| --- | ------------ | ---------------- | -------------------------------------- | +| 去耦合 | 降低模块间直接耦合 | 接口/抽象、事件、消息、依赖注入 | `Car`依赖`IEngine`而不是具体`Engine` | +| 弱依赖 | 降低修改影响,增强灵活性 | 依赖接口、回调、观察者模式 | `UserService`依赖`ILogger`接口而非具体`Logger` | + +> 可以理解为:**“去耦合”是大方向**,**“弱依赖”是实现手段之一**。 + +--- + +如果你愿意,我可以帮你画一张**去耦合 vs 强依赖 vs 弱依赖的图示**,看一次就能直观理解它们的区别。 + +你希望我画吗? + +可以这么理解,但要稍微精确一点:**策略学习不必须依赖价值学习,但通常用价值函数来辅助量化和稳定策略梯度**。 + +--- + +### 1️⃣ 纯策略梯度(REINFORCE) + +* **不依赖价值函数** +* 用 Monte Carlo 回报直接估计策略梯度: + +$$ +\nabla_\theta J(\theta) \approx \sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) \, R_t +$$ + +* 这里 R\_t 是从 t 时刻到终局的累积奖励,直接作为量化信号 +* **缺点**:方差很大,不稳定 + +--- + +### 2️⃣ 引入价值函数辅助(Advantage / Actor-Critic) + +* **引入 Vπ(s)** 或 Qπ(s,a) 的目的是**降低方差,提高训练效率** +* 策略梯度变为: + +$$ +\nabla_\theta J(\theta) = \mathbb{E}_\pi [ \nabla_\theta \log \pi_\theta(a_t|s_t) \, (Q_\pi(s_t,a_t) - V_\pi(s_t)) ] +$$ + +* Advantage = Q−V 提供相对价值 +* Critic 学 Vπ 或 Qπ → Actor 更新 π + +--- + +### 3️⃣ 理解上的关系 + +* **策略学习可以独立存在**:用 MC 回报也能更新策略,不必学价值函数 +* **价值学习是策略学习的辅助工具**:提供数值化的参考(优势函数或 TD 误差) +* **Actor-Critic** 就是把两者结合起来,Critic 提供即时量化信号,Actor 更新策略 + +✅ 总结一句话: + +> 策略学习本质上是直接优化策略,价值学习是一个可选的辅助,它让策略的量化更精确、更稳定。 + +--- + +如果你愿意,我可以画一张图,把 **纯策略梯度 vs 有价值辅助的策略梯度 vs Actor-Critic** 的关系直观展示出来,你一眼就能看出策略和价值的联系。 + +你想让我画吗? +对,这里 π(pi)就是**策略函数**,它的作用是告诉我们在某个状态下采取各个动作的概率分布。具体解释如下: + +--- + +### 1️⃣ π(a|s) 的含义 + +* 输入:状态 $s$ +* 输出:动作 $a$ 的概率 +* 数学表示: + +$$ +\pi_\theta(a|s) = P(a_t = a \mid s_t = s; \theta) +$$ + +* 如果动作空间是离散的: + + * π(s) 是一个长度为 |A| 的向量,每个元素是对应动作的概率 + * 例如麻将中可以打哪些牌,π(s) 给出每张牌被打出的概率 +* 如果动作空间是连续的: + + * π(s) 返回一个概率密度函数(比如正态分布的均值和方差) + +--- + +### 2️⃣ Actor 的作用 + +在 Actor-Critic 或策略梯度中: + +1. Actor 网络就是 πθ(s) +2. Actor 根据 πθ(s) **采样动作 a** → 执行环境 +3. Critic 给出价值信号(V 或 Advantage) +4. Actor 根据梯度更新 πθ,使“好动作的概率更大、坏动作的概率更小” + +--- + +### 3️⃣ 举个简单例子(离散动作) + +假设在某个状态 s,有三个可选动作 {打1万, 打2万, 打3万}: + +$$ +\pi_\theta(s) = [0.1, 0.7, 0.2] +$$ + +* Actor 会以 10% 的概率打 1万,70% 打 2万,20% 打 3万 +* Critic 评估这些动作的价值,然后 Actor 调整概率,让更好的动作概率更高 + +--- + +💡 总结: + +* π 函数输出的是**动作的概率分布** +* Actor 的目标就是调整 π,让高价值动作的概率增加 +* Critic 提供数值化信号(V 或 Advantage)指导 π 的更新 + +--- + +如果你愿意,我可以画一张小图,把 **状态 → π(a|s) → 动作采样 → Critic反馈 → Actor更新** 的流程画出来,让整个策略-价值闭环直观可见。 + +你希望我画吗? +明白了,我们来仔细拆开 **REINFORCE(纯策略梯度)** 的量化机制。其实它的“量化”很简单,但跟你想象的可能不太一样。 + +--- + +### 1️⃣ REINFORCE 的目标 + +REINFORCE 是最基础的策略梯度算法,它直接优化期望回报: + +$$ +J(\theta) = \mathbb{E}_\pi \Big[ \sum_{t=0}^{T} r_t \Big] +$$ + +这里的 **期望**是针对策略 πθ 生成的轨迹(state-action序列)而言的。 + +* θ 是策略参数 +* r\_t 是 t 步获得的即时奖励 + +目标:**找到 θ 使得期望总奖励最大** + +--- + +### 2️⃣ 梯度公式 + +策略梯度定理告诉我们: + +$$ +\nabla_\theta J(\theta) = \mathbb{E}_\pi \Big[ \nabla_\theta \log \pi_\theta(a_t|s_t) \, R_t \Big] +$$ + +其中: + +* $a_t$ 是 t 时刻动作 +* $s_t$ 是 t 时刻状态 +* $R_t = \sum_{k=t}^T r_k$ 是从 t 时刻到终局的累计奖励 + +> **这里的量化信号就是 R\_t** + +--- + +### 3️⃣ 量化机制解释 + +* **动作量化**:通过 $\nabla_\theta \log \pi_\theta(a_t|s_t)$ + + * 计算“如果我改变 θ,会改变 π(a|s) 的概率多少” +* **策略好坏量化**:通过 $R_t$ + + * R\_t 大 → 这条轨迹/动作好 → Actor 增大选动作的概率 + * R\_t 小 → 动作差 → Actor 减小概率 + +所以 REINFORCE 的量化就是**用每条轨迹的累计回报作为信号**,告诉策略: + +> “这一步动作好不好?好就增加概率,差就减少概率” + +--- + +### 4️⃣ 与 Actor-Critic 的对比 + +| 算法 | 量化信号 | +| ------------ | ------------------------------- | +| REINFORCE | R\_t(轨迹累计回报) | +| Actor-Critic | δ = r + γV(s') − V(s)(即时 TD 误差) | + +* REINFORCE 是**Monte Carlo**方式,必须等到终局才能得到 R\_t → 高方差 +* AC 用 Critic 预测 V(s) → 得到即时的优势 A(s,a) → 更稳定 + +--- + +### 5️⃣ 用一句话总结 + +> **REINFORCE 的量化信号就是每个动作最终得到的累积回报**,用它去衡量“动作好坏”,直接指导策略梯度更新。 + +--- + +如果你愿意,我可以帮你画一张**REINFORCE量化流程图**,从状态→动作→回报→梯度,让你直观理解它是怎么量化动作好坏的。 + +你想让我画吗? +完全对,你理解得很准确,这正是策略梯度的核心思想。我们可以把它再稍微系统化说明一下: + +--- + +### 1️⃣ 状态 s 的随机选择 + +* **每次遇到状态 s**: + + * 根据当前策略 πθ(a|s) **随机采样动作 a** + * 这就是“探索”,保证策略不会总是选同一个动作,从而能发现潜在更优动作 + +--- + +### 2️⃣ 后续反馈量化策略好坏 + +* 执行动作 a 后,会得到一条轨迹(未来奖励序列) +* 用 **REINFORCE**: + + * 累积奖励 $R_t = r_t + r_{t+1} + \dots$ + * 作为动作 a 在状态 s 下的“价值信号” +* 用 **Actor-Critic**: + + * Critic 预测 V(s) 或计算 TD 误差 δ + * δ 作为动作 a 的优势,告诉 Actor 这个动作比平均水平好还是差 + +--- + +### 3️⃣ 更新 θ + +* 梯度更新公式: + +$$ +\theta \gets \theta + \alpha \nabla_\theta \log \pi_\theta(a|s) \cdot (\text{回报或优势}) +$$ + +* 直观理解: + + * 如果动作好 → 增加 θ,让 a 在 s 下更可能被选 + * 如果动作差 → 减少 θ,让 a 概率降低 + +--- + +### 4️⃣ 重复循环 + +* **每次遇到 s** 都会采样动作 → 累积反馈 → 调整 θ +* 这样策略会随着训练不断优化,对同一状态 s,**高价值动作概率越来越大,低价值动作概率越来越小** +* 同时保持一定随机性,保证探索空间 + +--- + +💡 **一句话总结**: + +> 策略梯度就是:遇到相同状态 s → 按当前策略随机选动作 → 根据后续回报量化动作好坏 → 调整 θ → 下一次遇到 s 时,策略概率更倾向于好动作。 + +--- + +如果你愿意,我可以画一张**状态 s → 动作采样 → 轨迹 → 回报 → θ 更新 → 下一次 s**的流程图,把策略随机性和梯度更新的循环直观展示出来。 + +你想让我画吗? +对的,你理解完全正确!在策略梯度方法里,无论是离散动作还是连续动作,**最终调整的就是策略函数 πθ(a|s) 的概率分布**。我帮你详细拆开说明: + +--- + +### 1️⃣ 离散动作情况 + +* πθ(a|s) 输出的是每个动作的选择概率 +* θ 是策略的参数(神经网络权重或其他可训练参数) +* 梯度更新: + +$$ +\theta \gets \theta + \alpha \nabla_\theta \log \pi_\theta(a|s) \cdot (\text{回报或优势}) +$$ + +* 直观理解: + + * 好动作 → π(a|s) 概率增大 + * 差动作 → π(a|s) 概率减小 +* 所以 θ 调整的本质就是 **改变 π 的概率分布,让高价值动作更可能被选中** + +--- + +### 2️⃣ 连续动作情况 + +* πθ(a|s) 输出的是概率密度函数(比如均值 μ(s) 和方差 σ²(s)) +* Actor 调整的是 μ、σ 等参数 +* 采样动作 a \~ πθ(a|s) +* 更新 θ 的效果就是 **改变连续动作的概率密度分布**,使高价值区域的密度增大 + +--- + +### 3️⃣ 核心结论 + +* **策略梯度优化的目标不是直接调整动作 a** +* **而是调整参数 θ,让 πθ(a|s) 的概率分布更倾向于高价值动作** +* 换句话说: + + * 每次遇到相同状态 s,动作仍然是随机选择 + * 但高价值动作被选中的概率会越来越大 + +--- + +💡 **一句话总结**: + +> 策略梯度最终调整的是策略函数 πθ(a|s) 的概率分布(或概率密度),让策略在同一状态下更倾向选择高价值动作。 + +--- + +如果你愿意,我可以画一张小图,把 **状态 s → πθ(a|s) → 动作采样 → 反馈 → θ 更新 → π 分布改变** 的完整闭环直观展示出来,让整个量化机制一目了然。 + +你想让我画吗? +完全正确!你可以把 θ 看作策略函数 π(a|s; θ) 的**参数向量**,类似神经网络里的权重 w。具体理解如下: + +--- + +### 1️⃣ π(a | s; θ) 的结构 + +* 输入:状态 s +* 输出:动作 a 的概率(或概率密度) +* θ:可训练参数(比如神经网络的权重和偏置) + +> 写成 π(a|s; θ) 就明确指出:策略函数依赖于 θ,不同 θ 对应不同的动作分布。 + +--- + +### 2️⃣ θ 的作用 + +* 决定了在状态 s 下,每个动作被选择的概率 +* Actor 的训练就是**调整 θ**,让 π(a|s; θ) 更倾向选择高价值动作 +* 和神经网络一样: + + * 前向传播:根据 θ 输出概率分布 + * 反向传播:根据梯度调整 θ + * 不同的是,这里的梯度来自策略梯度公式 $\nabla_\theta \log \pi_\theta(a|s) \cdot (\text{回报或优势})$ + +--- + +### 3️⃣ 对比理解 + +| 名称 | 类比 | | +| -------- | ----------------- | ------------ | +| θ | 神经网络权重 w | | +| π(a | s;θ) | 神经网络输出(动作概率) | +| ∇θ J(θ) | 反向传播梯度(告诉 θ 如何调整) | | +| Actor 更新 | 梯度上升 / 权重更新 | | + +--- + +💡 **一句话总结**: + +> π(a|s; θ) 是策略函数,θ 就是参数(类似神经网络权重),策略梯度就是通过梯度上升不断调整 θ,让高价值动作概率增大。 + +--- + +如果你愿意,我可以画一张图,把 **状态 s → π(a|s;θ) → 动作采样 → 反馈 → 梯度 → θ 更新** 的闭环流程可视化,直观显示 θ 的作用。 + +你希望我画吗? +明白了,你现在的核心困惑是:在策略梯度里,Actor 实际上根据什么“反馈”去更新 θ,也就是 **量化动作好坏的信号到底是什么**。我们一步步理清楚。 + +--- + +### 1️⃣ 策略梯度的更新公式回顾 + +$$ +\nabla_\theta J(\theta) = \mathbb{E}_\pi \Big[ \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot Q_\pi(s_t, a_t) \Big] +$$ + +* $\nabla_\theta \log \pi_\theta(a_t|s_t)$ → 告诉我们“如果改变 θ,会怎么改变动作 a 的概率” +* $Q_\pi(s_t, a_t)$ → **动作好坏的量化反馈信号** + +所以**反馈就是 Q 或它的估计**。 + +--- + +### 2️⃣ 不同算法下反馈的具体形式 + +| 算法 | 反馈信号是什么 | 说明 | +| ---------------- | --------------------------------------------- | ------------------------------------------ | +| **REINFORCE** | $R_t = \sum_{k=t}^T r_k$ | 从 t 时刻到终局的累计奖励(Monte Carlo),告诉动作 a 在 s 下好坏 | +| **Actor-Critic** | $\delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)$ | TD 误差 / Advantage,告诉动作 a 比平均水平好还是差 | +| **A2C / GAE** | $A(s_t,a_t) = Q(s_t,a_t) - V(s_t)$ | 优势函数,量化动作相对状态的价值 | + +> 核心思想:**反馈就是一个数值,量化这个动作在当前状态下比平均水平好还是差** + +--- + +### 3️⃣ 反馈的直观理解 + +1. Actor 在状态 s 选择动作 a +2. 环境给出奖励 r\_t 或轨迹回报 R\_t +3. Critic(如果有)估计 V(s) → 得到 δ 或 Advantage +4. 这个数值告诉 Actor: + + * δ > 0 → 增加动作概率 + * δ < 0 → 减少动作概率 + +> 换句话说,**反馈就是“动作好坏的即时或累积数值”,Actor 用它来指导概率分布调整** + +--- + +### 4️⃣ 举个麻将例子 + +* 状态 s:你手牌 + 场上信息 +* 动作 a:打某张牌 +* 环境反馈: + + * REINFORCE:等到局结束算总点数 → 得到 R\_t + * Actor-Critic:局中算局部得失或顺位变化 → 得到 δ +* Actor 根据 δ 或 R\_t 调整 π(a|s; θ),让更有利的打牌概率增大 + +--- + +💡 **一句话总结**: + +> 在策略梯度里,反馈就是**量化动作好坏的数值信号**(累积回报或优势),Actor 根据这个数值调整 θ,让好动作概率增加,差动作概率减少。 + +--- + +如果你愿意,我可以画一张图,把 **状态 s → 动作 a → 环境 → 反馈 δ/R → θ 更新 → π(a|s) 改变** 的完整闭环直观展示出来,让你一眼就能看懂“反馈是什么”。 + +你希望我画吗? +完全正确,你理解得很到位!✅ + +--- + +### 1️⃣ REINFORCE 的反馈就是 **R** + +* 在 REINFORCE 中,Actor 并不依赖 Critic 或 V 函数 +* 反馈直接就是 **从 t 时刻开始到终局的累计奖励**: + +$$ +R_t = r_t + r_{t+1} + r_{t+2} + \dots + r_T +$$ + +* 这个 R\_t 作为 **动作 a 在状态 s 下的量化信号**,指导梯度更新: + +$$ +\theta \gets \theta + \alpha \, \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R_t +$$ + +--- + +### 2️⃣ 与价值学习的 MC 的相似之处 + +* **最基础的 MC 价值学习**: + + * 学 Vπ(s) 或 Qπ(s,a) + * 直接用累积回报 R 来更新估计值: + + $$ + V(s_t) \gets V(s_t) + \alpha \, (R_t - V(s_t)) + $$ + +* **REINFORCE**: + + * 不更新 V 或 Q,而是用 R\_t **直接作为策略梯度的权重** + * 本质上是用累积奖励 **量化动作好坏** + +✅ 所以 REINFORCE 和最基础的 MC 价值学习很像,都是依赖 **从当前状态到终局的回报 R** 来做更新,只不过 MC 学的是价值,REINFORCE 学的是策略。 + +--- + +可以这么理解: + +* MC 价值学习:R → V(s) +* REINFORCE 策略学习:R → π(a|s) 的概率 +* 都是 **用累积回报量化好坏**,只是作用对象不同 + +--- + +如果你愿意,我可以画一个对比图,把 **MC 价值学习和 REINFORCE 策略学习** 的更新流程并列展示,一眼就能看出它们的相似点和区别。 + +你希望我画吗? +是的,你可以这样理解,但需要稍微精准一点区分概念:**Q 和 V 的本质都是基于累积回报 R,只不过它们的作用对象和定义不同**。 + +--- + +### 1️⃣ V(s) 与 R 的关系 + +* 定义: + +$$ +V_\pi(s) = \mathbb{E}_\pi \big[ R_t \mid s_t = s \big] = \mathbb{E}_\pi \Big[ \sum_{k=t}^T r_k \,\big|\, s_t = s \Big] +$$ + +* 意思是:在状态 s 下,按照策略 π 行动,**从这个状态开始的期望累积回报** +* 可以理解为:V(s) = “期望 R”,即返回值是 R 的期望 + +--- + +### 2️⃣ Q(s,a) 与 R 的关系 + +* 定义: + +$$ +Q_\pi(s,a) = \mathbb{E}_\pi \big[ R_t \mid s_t = s, a_t = a \big] = \mathbb{E}_\pi \Big[ \sum_{k=t}^T r_k \,\big|\, s_t = s, a_t = a \Big] +$$ + +* 意思是:在状态 s 下执行动作 a,然后按照策略 π 行动,**期望累积回报** +* 可以理解为:Q(s,a) = “如果我现在做 a,期望 R是多少” + +--- + +### 3️⃣ 总结理解 + +* **V(s) 和 Q(s,a) 本质都是基于 R 的期望** +* 区别: + + * V(s) → 状态的价值(平均水平) + * Q(s,a) → 状态-动作对的价值(执行特定动作后的期望回报) +* 在 MC 或 REINFORCE 的最基础形式中: + + * 直接用累积回报 R 更新 Q 或 V + * Actor-Critic 则用估计的 V(s) 或 Advantage 做即时更新 + +--- + +💡 **一句话总结**: + +> Q 和 V 本质上都是基于累积回报 R 的量化,只是 Q 针对状态-动作对,V 针对状态本身;它们的“返回值”就是未来累积奖励 R 的期望。 + +--- + +如果你愿意,我可以画一张图,把 **R → V(s) / Q(s,a) → 策略更新** 的关系可视化,让你直观理解它们都是基于 R 的量化。 + +你希望我画吗? +不完全是直接“得到 $Q^*$”——我帮你分层解释一下: + +--- + +### 1. Actor-Critic 的目标 + +* **Actor(策略)**:参数化一个策略 $\pi_\theta(a|s)$,目标是学到近似最优的策略 $\pi^*$。 +* **Critic(价值函数)**:估计给定策略 $\pi$ 下的价值函数,可以是 $V^\pi(s)$ 或 $Q^\pi(s,a)$。 + +训练时 Critic 提供 **对 Actor 策略梯度更新的指导信号**。最终,Actor 被更新到一个尽可能好的策略。 + +--- + +### 2. 和 $Q^*$ 的关系 + +* 在 \*\*理想情况(无限数据、完美逼近、收敛)\*\*下,Actor 会收敛到最优策略 $\pi^*$。 +* 对应的 Critic 估计的就是 $V^{\pi^*}$ 或 $Q^{\pi^*}$,也就是最优价值函数。 + +换句话说,Actor-Critic 最终确实是**间接逼近 $Q^*$**,但是它主要是通过学习策略 $\pi$,而不是像 Q-learning 一样直接用 Bellman 最优方程来学 $Q^*$。 + +--- + +### 3. 直观比喻 + +* Q-learning:直接学「地图」(最优 $Q^*$),然后从地图里挑路。 +* Actor-Critic:一边学「走路习惯」(策略),一边学「走路好不好」(价值),最后走出来的习惯如果收敛了,就是最优习惯,也等价于走出最优路线。 + +--- + +✅ 结论: +Actor-Critic 的最终目标是得到 **近似最优策略 $\pi^*$**,对应的 Critic 价值函数也就逼近 $Q^*$。 +所以它不是直接追求 $Q^*$,而是通过 Actor 的优化过程**间接收敛到 $Q^*$**。 + +--- + +要不要我帮你画一个 **Q-learning vs Actor-Critic 的对比图**(两条路径,一个是直接学Q,一个是通过策略迭代间接逼近Q)? +对,你理解得已经很到位了 👍。我再帮你精炼一下: + +--- + +### 1. Q-learning 系列 + +* **目标**:直接逼近最优动作价值函数 $Q^*(s,a)$。 +* **方法**:通过 Bellman 最优方程更新,使得网络参数逐渐收敛到 $Q^*$。 +* **策略产生**:最终策略是从 $Q^*$ 中贪心地选择动作 $\pi^*(s)=\arg\max_a Q^*(s,a)$。 + ➡️ **核心:直接模拟 $Q^*$。** + +--- + +### 2. Actor-Critic 系列 + +* **目标**:通过策略梯度不断改进策略 $\pi_\theta$。 +* **Critic 的角色**:估计 $V^\pi$ 或 $Q^\pi$,只是在训练时作为 **优化信号**。 +* **收敛时**:若达到全局最优,$\pi_\theta \to \pi^*$,对应的 Critic 自然收敛到 $V^{\pi^*}, Q^{\pi^*}$。 + ➡️ **核心:先优化策略,价值函数只是辅助。** + +--- + +### 3. 总结类比 + +* **Q-learning**: + + * 先学“全局地图” ($Q^*$),再根据地图走路。 +* **Actor-Critic**: + + * 边走路边修正习惯,习惯(策略)养成后,自然等价于知道了最优地图。 + +--- + +所以你说的没错: + +* 两者理论上最终都能逼近 $Q^{\pi^*}$。 +* **区别在于路径**: + + * Q-learning = **值驱动**。 + * Actor-Critic = **策略驱动**。 + +--- + +要不要我帮你总结成一张表格(Q-learning vs Actor-Critic 的核心差异)?这样复习的时候会特别清晰。 diff --git a/Reinforced-Learning/Survey-RL/16721_Reinforcement_Learning_ under Latent Dynamics.pdf b/Reinforced-Learning/16721_Reinforcement_Learning_ under Latent Dynamics.pdf similarity index 100% rename from Reinforced-Learning/Survey-RL/16721_Reinforcement_Learning_ under Latent Dynamics.pdf rename to Reinforced-Learning/16721_Reinforcement_Learning_ under Latent Dynamics.pdf diff --git a/Reinforced-Learning/Survey-RL/RL_GPT Reinforcement Learning and Code-as-policy.pdf b/Reinforced-Learning/RL_GPT Reinforcement Learning and Code-as-policy.pdf similarity index 100% rename from Reinforced-Learning/Survey-RL/RL_GPT Reinforcement Learning and Code-as-policy.pdf rename to Reinforced-Learning/RL_GPT Reinforcement Learning and Code-as-policy.pdf diff --git a/Reinforced-Learning/Survey-RL/Reinforcement Learning with Action Chunking.pdf b/Reinforced-Learning/Reinforcement Learning with Action Chunking.pdf similarity index 100% rename from Reinforced-Learning/Survey-RL/Reinforcement Learning with Action Chunking.pdf rename to Reinforced-Learning/Reinforcement Learning with Action Chunking.pdf diff --git a/Reinforced-Learning/Survey-RL/You Only Cache Once-Decoder-Decoder Architectures for Language Models.pdf b/Reinforced-Learning/You Only Cache Once-Decoder-Decoder Architectures for Language Models.pdf similarity index 100% rename from Reinforced-Learning/Survey-RL/You Only Cache Once-Decoder-Decoder Architectures for Language Models.pdf rename to Reinforced-Learning/You Only Cache Once-Decoder-Decoder Architectures for Language Models.pdf diff --git a/生成式AI/An Introdction to Variational AutoEncoders.pdf b/生成式AI/An Introdction to Variational AutoEncoders.pdf new file mode 100644 index 0000000..b01ce9e Binary files /dev/null and b/生成式AI/An Introdction to Variational AutoEncoders.pdf differ diff --git a/生成式AI/An Introduction to Autoencoders.pdf b/生成式AI/An Introduction to Autoencoders.pdf new file mode 100644 index 0000000..635c73c Binary files /dev/null and b/生成式AI/An Introduction to Autoencoders.pdf differ diff --git a/生成式AI/Auto-Encoding Variational Bayes.pdf b/生成式AI/Auto-Encoding Variational Bayes.pdf new file mode 100644 index 0000000..a026d4d Binary files /dev/null and b/生成式AI/Auto-Encoding Variational Bayes.pdf differ diff --git a/生成式AI/Deep Unsupervised Learning using Nonequilibrium Thermodynamics.pdf b/生成式AI/Deep Unsupervised Learning using Nonequilibrium Thermodynamics.pdf new file mode 100644 index 0000000..aa48187 Binary files /dev/null and b/生成式AI/Deep Unsupervised Learning using Nonequilibrium Thermodynamics.pdf differ diff --git a/生成式AI/High-Resolution Image Synthesis with Latent Diffusion Models.pdf b/生成式AI/High-Resolution Image Synthesis with Latent Diffusion Models.pdf new file mode 100644 index 0000000..d4cd587 Binary files /dev/null and b/生成式AI/High-Resolution Image Synthesis with Latent Diffusion Models.pdf differ diff --git a/生成式AI/LongCat.pdf b/生成式AI/LongCat.pdf new file mode 100644 index 0000000..e5b7efd Binary files /dev/null and b/生成式AI/LongCat.pdf differ