关于我们
书单推荐
新书推荐
|
这本书是针对计算机科学专业大学生和软件工程师的。本课程旨在介绍深度强化学习,无需事先了解相关主题。但是,我们假设读者对机器学习和深度学习有基本的了解,并且对Python编程有中级的了解。一些使用PyTorch的经验也是有用的,但不是必需的。
第1章 强化学习简介 1
1.1 强化学习 1 1.2 强化学习中的MDP 6 1.3 强化学习中的学习函数 9 1.4 深度强化学习算法 11 1.4.1 基于策略的算法 12 1.4.2 基于值的算法 13 1.4.3 基于模型的算法 13 1.4.4 组合方法 15 1.4.5 本书中的算法 15 1.4.6 同策略和异策略算法 16 1.4.7 小结 16 1.5 强化学习中的深度学习 17 1.6 强化学习与监督学习 19 1.6.1 缺乏先知 19 1.6.2 反馈稀疏性 20 1.6.3 数据生成 20 1.7 总结 21 第一部分 基于策略的算法和基于值的算法 第2章 REINFORCE 25 2.1 策略 26 2.2 目标函数 26 2.3 策略梯度 27 2.3.1 策略梯度推导 28 2.4 蒙特卡罗采样 30 2.5 REINFORCE算法 31 2.5.1 改进的REINFORCE算法 32 2.6 实现REINFORCE 33 2.6.1 一种最小化REINFORCE的实现 33 2.6.2 用PyTorch构建策略 36 2.6.3 采样动作 38 2.6.4 计算策略损失 39 2.6.5 REINFORCE训练循环 40 2.6.6 同策略内存回放 41 2.7 训练REINFORCE智能体 44 2.8 实验结果 47 2.8.1 实验:评估折扣因子的影响 47 2.8.2 实验:评估基准线的影响 49 2.9 总结 51 2.10 扩展阅读 51 2.11 历史回顾 51 第3章 SARSA 53 3.1 Q函数和V函数 54 3.2 时序差分学习 56 3.2.1 时序差分学习示例 59 3.3 SARSA中的动作选择 65 3.3.1 探索和利用 66 3.4 SARSA算法 67 3.4.1 同策略算法 68 3.5 实现SARSA 69 3.5.1 动作函数:ε-贪婪 69 3.5.2 计算Q损失 70 3.5.3 SARSA训练循环 71 3.5.4 同策略批处理内存回放 72 3.6 训练SARSA智能体 74 3.7 实验结果 76 3.7.1 实验:评估学习率的影响 77 3.8 总结 78 3.9 扩展阅读 79 3.10 历史回顾 79 第4章 深度Q网络 81 4.1 学习DQN中的Q函数 82 4.2 DQN中的动作选择 83 4.2.1 Boltzmann策略 86 4.3 经验回放 88 4.4 DQN算法 89 4.5 实现DQN 91 4.5.1 计算Q损失 91 4.5.2 DQN训练循环 92 4.5.3 内存回放 93 4.6 训练DQN智能体 96 4.7 实验结果 99 4.7.1 实验:评估网络架构的影响 99 4.8 总结 101 4.9 扩展阅读 102 4.10 历史回顾 102 第5章 改进的深度Q网络 103 5.1 目标网络 104 5.2 双重DQN 106 5.3 优先级经验回放 109 5.3.1 重要性抽样 111 5.4 实现改进的DQN 112 5.4.1 网络初始化 113 5.4.2 计算Q损失 113 5.4.3 更新目标网络 115 5.4.4 包含目标网络的DQN 116 5.4.5 双重DQN 116 5.4.6 优先级经验回放 117 5.5 训练DQN智能体玩Atari游戏 123 5.6 实验结果 128 5.6.1 实验:评估双重DQN与PER的影响 128 5.7 总结 132 5.8 扩展阅读 132 第二部分 组合方法 第6章 优势演员–评论家算法 135 6.1 演员 136 6.2 评论家 136 6.2.1 优势函数 136 6.2.2 学习优势函数 140 6.3 A2C算法 141 6.4 实现A2C 143 6.4.1 优势估计 144 6.4.2 计算价值损失和策略损失 147 6.4.3 演员–评论家训练循环 147 6.5 网络架构 148 6.6 训练A2C智能体 150 6.6.1 在Pong上使用n步回报的A2C算法 150 6.6.2 在Pong上使用GAE的A2C算法 153 6.6.3 在BipedalWalker上使用n步回报的A2C算法 155 6.7 实验结果 157 6.7.1 实验:评估n步回报的影响 158 6.7.2 实验:评估GAE中的影响 159 6.8 总结 161 6.9 扩展阅读 162 6.10 历史回顾 162 第7章 近端策略优化算法 165 7.1 替代目标函数 165 7.1.1 性能突然下降 166 7.1.2 修改目标函数 168 7.2 近端策略优化 174 7.3 PPO算法 177 7.4 实现PPO 179 7.4.1 计算PPO的策略损失 179 7.4.2 PPO训练循环 180 7.5 训练PPO智能体 182 7.5.1 在Pong上使用PPO算法 182 7.5.2 在BipedalWalker上使用PPO算法 185 7.6 实验结果 188 7.6.1 实验:评估GAE中的影响 188 7.6.2 实验:评估裁剪变量的影响 190 7.7 总结 192 7.8 扩展阅读 192 第8章 并行方法 195 8.1 同步并行 196 8.2 异步并行 197 8.2.1 Hogwild!算法 198 8.3 训练A3C智能体 200 8.4 总结 203 8.5 扩展阅读 204 第9章 算法总结 205 第三部分 实践细节 第10章 深度强化学习工程实践 209 10.1 软件工程实践 209 10.1.1 单元测试 210 10.1.2 代码质量 215 10.1.3 Git工作流 216 10.2 调试技巧 218 10.2.1 生命迹象 219 10.2.2 策略梯度诊断 219 10.2.3 数据诊断 220 10.2.4 预处理器 222 10.2.5 内存 222 10.2.6 算法函数 222 10.2.7 神经网络 222 10.2.8 算法简化 225 10.2.9 问题简化 226 10.2.10 超参数 226 10.2.11 实验室工作流 226 10.3 Atari技巧 228 10.4 深度强化学习小结 231 10.4.1 超参数表 231 10.4.2 算法性能比较 234 10.5 总结 238 第11章 SLM Lab 239 11.1 SLM Lab算法实现 239 11.2 Spec文件 241 11.2.1 搜索Spec语法 243 11.3 运行SLM Lab 246 11.3.1 SLM Lab指令 246 11.4 分析实验结果 247 11.4.1 实验数据概述 247 11.5 总结 249 第12章 神经网络架构 251 12.1 神经网络的类型 251 12.1.1 多层感知机 252 12.1.2 卷积神经网络 253 12.1.3 循环神经网络 255 12.2 选择网络族的指导方法 256 12.2.1 MDP与POMDP 256 12.2.2 根据环境选择网络 259 12.3 网络API 262 12.3.1 输入层和输出层形状推断 264 12.3.2 自动构建网络 266 12.3.3 训练步骤 269 12.3.4 基础方法的使用 270 12.4 总结 271 12.5 扩展阅读 271 第13章 硬件 273 13.1 计算机 273 13.2 数据类型 278 13.3 在强化学习中优化数据类型 280 13.4 选择硬件 285 13.5 总结 285 第四部分 环境设计 第14章 状态 289 14.1 状态示例 289 14.2 状态完整性 296 14.3 状态复杂性 297 14.4 状态信息损失 301 14.4.1 图像灰度 301 14.4.2 离散化 302 14.4.3 散列冲突 303 14.4.4 元信息损失 303 14.5 预处理 306 14.5.1 标准化 307 14.5.2 图像预处理 308 14.5.3 时间预处理 310 14.6 总结 313 第15章 动作 315 15.1 动作示例 315 15.2 动作完整性 318 15.3 动作复杂性 319 15.4 总结 323 15.5 扩展阅读:日常事务中的动作设计 324 第16章 奖励 327 16.1 奖励的作用 327 16.2 奖励设计准则 328 16.3 总结 332 第17章 转换函数 333 17.1 可行性检测 333 17.2 真实性检测 335 17.3 总结 337 后记 339 附录A 深度强化学习时间线 343 附录B 示例环境 345 B.1 离散环境 346 B.1.1 CartPole-v0 346 B.1.2 MountainCar-v0 347 B.1.3 LunarLander-v2 347 B.1.4 PongNoFrameskip-v4 348 B.1.5 BreakoutNoFrameskip-v4 349 B.2 连续环境 350 B.2.1 Pendulum-v0 350 B.2.2 BipedalWalker-v2 350 参考文献 353 Contents 1IntroductiontoReinforcementLearning1 1.1ReinforcementLearning1 1.2ReinforcementLearningasMDP6 1.3LearnableFunctionsinReinforcementLearning9 1.4DeepReinforcementLearningAlgorithms11 1.4.1Policy-BasedAlgorithms12 1.4.2Value-BasedAlgorithms13 1.4.3Model-BasedAlgorithms13 1.4.4CombinedMethods15 1.4.5AlgorithmsCoveredinThisBook15 1.4.6On-PolicyandOff-PolicyAlgorithms16 1.4.7Summary16 1.5DeepLearningforReinforcementLearning17 1.6ReinforcementLearningandSupervisedLearning19 1.6.1LackofanOracle19 1.6.2SparsityofFeedback20 1.6.3DataGeneration201.7 Summary21 IPolicy-BasedandValue-BasedAlgorithms232REINFORCE25 2.1Policy26 2.2TheObjectiveFunction26 2.3ThePolicyGradient27 2.3.1PolicyGradientDerivation28 2.4MonteCarloSampling30 2.5REINFORCEAlgorithm31 2.5.1ImprovingREINFORCE32 2.6ImplementingREINFORCE33 2.6.1AMinimalREINFORCEImplementation33 2.6.2ConstructingPolicieswithPyTorch36 2.6.3SamplingActions38 2.6.4CalculatingPolicyLoss39 2.6.5REINFORCETrainingLoop40 2.6.6On-PolicyReplayMemory41 2.7TrainingaREINFORCEAgent44 2.8ExperimentalResults47 2.8.1Experiment:TheEffectofDiscountFactor 472.8.2Experiment:TheEffectofBaseline49 2.9Summary51 2.10FurtherReading51 2.11History51 3SARSA53 3.1TheQ-andV-Functions54 3.2TemporalDifferenceLearning56 3.2.1IntuitionforTemporalDifferenceLearning59 3.3ActionSelectioninSARSA65 3.3.1ExplorationandExploitation66 3.4SARSAAlgorithm67 3.4.1On-PolicyAlgorithms68 3.5ImplementingSARSA69 3.5.1ActionFunction:"-Greedy69 3.5.2CalculatingtheQ-Loss70 3.5.3SARSATrainingLoop71 3.5.4On-PolicyBatchedReplayMemory72 3.6TrainingaSARSAAgent74 3.7ExperimentalResults76 3.7.1Experiment:TheEffectofLearningRate77 3.8Summary78 3.9FurtherReading79 3.10History79 4DeepQ-Networks(DQN)81 4.1LearningtheQ-FunctioninDQN82 4.2ActionSelectioninDQN83 4.2.1TheBoltzmannPolicy86 4.3ExperienceReplay88 4.4DQNAlgorithm89 4.5ImplementingDQN91 4.5.1CalculatingtheQ-Loss91 4.5.2DQNTrainingLoop92 4.5.3ReplayMemory93 4.6TrainingaDQNAgent96 4.7ExperimentalResults99 4.7.1Experiment:TheEffectofNetworkArchitecture99 4.8Summary101 4.9FurtherReading102 4.10History102 5ImprovingDQN103 5.1TargetNetworks104 5.2DoubleDQN106 5.3PrioritizedExperienceReplay(PER)109 5.3.1ImportanceSampling111 5.4ModifiedDQNImplementation112 5.4.1NetworkInitialization113 5.4.2CalculatingtheQ-Loss113 5.4.3UpdatingtheTargetNetwork115 5.4.4DQNwithTargetNetworks116 5.4.5DoubleDQN116 5.4.6PrioritizedExperiencedReplay117 5.5TrainingaDQNAgenttoPlayAtariGames123 5.6ExperimentalResults128 5.6.1Experiment:TheEffectofDoubleDQNandPER128 5.7Summary132 5.8FurtherReading132 IICombinedMethods133 6AdvantageActor-Critic(A2C)135 6.1TheActor136 6.2TheCritic136 6.2.1TheAdvantageFunction136 6.2.2LearningtheAdvantageFunction140 6.3A2CAlgorithm141 6.4ImplementingA2C143 6.4.1AdvantageEstimation144 6.4.2CalculatingValueLossandPolicyLoss147 5NetworkArchitecture148 6.6TraininganA2CAgent150 6.6.1A2Cwithn-StepReturnsonPong150 6.6.2A2CwithGAEonPong153 6.6.3A2Cwithn-StepReturnsonBipedalWalker155 6.7ExperimentalResults157 6.7.1Experiment:TheEffectofn-StepReturns158 6.7.2Experiment:TheEffectofofGAE159 6.8Summary161 6.9FurtherReading162 6.10History162 7ProximalPolicyOptimization(PPO)165 7.1SurrogateObjective165 7.1.1PerformanceCollapse166 7.1.2ModifyingtheObjective168 7.2ProximalPolicyOptimization(PPO)174 7.3PPOAlgorithm177 7.4ImplementingPPO179 7.4.1CalculatingthePPOPolicyLoss179 7.4.2PPOTrainingLoop180 7.5TrainingaPPOAgent182 7.5.1PPOonPong182 7.5.2PPOonBipedalWalker185 7.6ExperimentalResults188 7.6.1Experiment:TheEffectofofGAE188 7.6.2Experiment:TheEffectofClippingVariable"190 7.7Summary192 7.8FurtherReading192 8ParallelizationMethods195 8.1SynchronousParallelization196 8.2AsynchronousParallelization197 8.2.1Hogwild!198 8.3TraininganA3CAgent200 8.4Summary203 8.5FurtherReading2049Algorithm Summary205 IIIPracticalDetails207 10GettingDeepRLtoWork20 910.1SoftwareEngineeringPractices209 10.1.1UnitTests210 10.1.2CodeQuality215 10.1.3GitWorkflow216 10.2DebuggingTips218 10.2.1SignsofLife219 10.2.2PolicyGradientDiagnoses219 10.2.3DataDiagnoses220 10.2.4Preprocessor222 10.2.5Memory222 10.2.6AlgorithmicFunctions222 10.2.7NeuralNetworks222 10.2.8AlgorithmSimplification225 10.2.9ProblemSimplification226 10.2.10Hyperparameters226 10.2.11LabWorkflow226 10.3AtariTricks228 10.4DeepRLAlmanac231 10.4.1HyperparameterTables231 10.4.2AlgorithmPerformanceComparison234 10.5Summary238 11SLMLab239 11.1AlgorithmsImplementedinSLMLab239 11.2SpecFile241 11.2.1SearchSpecSyntax243 11.3RunningSLMLab246 11.3.1SLMLabCommands246 11.4AnalyzingExperimentResults247 11.4.1OverviewoftheExperimentData247 11.5Summary249 12NetworkArchitectures251 12.1TypesofNeuralNetworks251 12.1.1MultilayerPerceptrons(MLPs)252 12.1.2ConvolutionalNeuralNetworks(CNNs)253 12.1.3RecurrentNeuralNetworks(RNNs)255 12.2GuidelinesforChoosingaNetworkFamily256 12.2.1MDPsvs.POMDPs256 12.2.2ChoosingNetworksforEnvironments259 12.3TheNetAPI262 12.3.1InputandOutputLayerShapeInference264 12.3.2AutomaticNetworkConstruction266 12.3.3TrainingStep269 12.3.4ExposureofUnderlyingMethods270 12.4Summary271 12.5FurtherReading271 13Hardware273 13.1Computer273 13.2DataTypes278 13.3OptimizingDataTypesinRL280 13.4ChoosingHardware285 13.5Summary285 IVEnvironmentDesign287 14States289 14.1ExamplesofStates289 14.2StateCompleteness296 14.3StateComplexity297 14.4StateInformationLoss301 14.4.1ImageGrayscaling301 14.4.2Discretization302 14.4.3HashConflict303 14.4.4MetainformationLoss303 14.5Preprocessing306 14.5.1Standardization307 14.5.2ImagePreprocessing308 14.5.3TemporalPreprocessing310 14.6Summary313 15Actions315 15.1ExamplesofActions315 15.2ActionCompleteness318 15.3ActionComplexity319 15.4Summary323 15.5FurtherReading:ActionDesigninEverydayThings324 16Rewards327 16.1TheRoleofRewards327 16.2RewardDesignGuidelines328 16.3Summary332 17TransitionFunction333 17.1FeasibilityChecks333 17.2RealityCheck335 17.3Summary337 Epilogue339 ADeepReinforcementLearningTimeline343 BExampleEnvironments345B.1DiscreteEnvironments346 B.1.1CartPole-v0346 B.1.2MountainCar-v0347 B.1.3LunarLander-v2347 B.1.4PongNoFrameskip-v4348 B.1.5BreakoutNoFrameskip-v4349 B.2ContinuousEnvironments350 B.2.1Pendulum-v0350 B.2.2BipedalWalker-v2350References353 Index363
你还可能感兴趣
我要评论
|