图书
深度强化学习:基于Python的理论及实践(英文版)

深度强化学习:基于Python的理论及实践(英文版)"

作者:[美]劳拉·格雷泽(LauraGraesser),[美]华龙·肯(WahLoonKeng)
ISBN:978-7-111-67040-7
定价:¥119.0
字数:285千字
页数:
出版时间:2020-12-30
开本:16
版次:
装帧:平装
出版社:机械工业出版社
简介

这本书是针对计算机科学专业大学生和软件工程师的。本课程旨在介绍深度强化学习,无需事先了解相关主题。但是,我们假设读者对机器学习和深度学习有基本的了解,并且对Python编程有中级的了解。一些使用PyTorch的经验也是有用的,但不是必需的。

前言

目录

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

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个