關(guān)于我們
書單推薦
新書推薦
|
這本書是針對(duì)計(jì)算機(jī)科學(xué)專業(yè)大學(xué)生和軟件工程師的。本課程旨在介紹深度強(qiáng)化學(xué)習(xí),無需事先了解相關(guān)主題。但是,我們假設(shè)讀者對(duì)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)有基本的了解,并且對(duì)Python編程有中級(jí)的了解。一些使用PyTorch的經(jīng)驗(yàn)也是有用的,但不是必需的。
第1章 強(qiáng)化學(xué)習(xí)簡介 1
1.1 強(qiáng)化學(xué)習(xí) 1 1.2 強(qiáng)化學(xué)習(xí)中的MDP 6 1.3 強(qiáng)化學(xué)習(xí)中的學(xué)習(xí)函數(shù) 9 1.4 深度強(qiáng)化學(xué)習(xí)算法 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 小結(jié) 16 1.5 強(qiáng)化學(xué)習(xí)中的深度學(xué)習(xí) 17 1.6 強(qiáng)化學(xué)習(xí)與監(jiān)督學(xué)習(xí) 19 1.6.1 缺乏先知 19 1.6.2 反饋稀疏性 20 1.6.3 數(shù)據(jù)生成 20 1.7 總結(jié) 21 第一部分 基于策略的算法和基于值的算法 第2章 REINFORCE 25 2.1 策略 26 2.2 目標(biāo)函數(shù) 26 2.3 策略梯度 27 2.3.1 策略梯度推導(dǎo) 28 2.4 蒙特卡羅采樣 30 2.5 REINFORCE算法 31 2.5.1 改進(jìn)的REINFORCE算法 32 2.6 實(shí)現(xiàn)REINFORCE 33 2.6.1 一種最小化REINFORCE的實(shí)現(xiàn) 33 2.6.2 用PyTorch構(gòu)建策略 36 2.6.3 采樣動(dòng)作 38 2.6.4 計(jì)算策略損失 39 2.6.5 REINFORCE訓(xùn)練循環(huán) 40 2.6.6 同策略內(nèi)存回放 41 2.7 訓(xùn)練REINFORCE智能體 44 2.8 實(shí)驗(yàn)結(jié)果 47 2.8.1 實(shí)驗(yàn):評(píng)估折扣因子的影響 47 2.8.2 實(shí)驗(yàn):評(píng)估基準(zhǔn)線的影響 49 2.9 總結(jié) 51 2.10 擴(kuò)展閱讀 51 2.11 歷史回顧 51 第3章 SARSA 53 3.1 Q函數(shù)和V函數(shù) 54 3.2 時(shí)序差分學(xué)習(xí) 56 3.2.1 時(shí)序差分學(xué)習(xí)示例 59 3.3 SARSA中的動(dòng)作選擇 65 3.3.1 探索和利用 66 3.4 SARSA算法 67 3.4.1 同策略算法 68 3.5 實(shí)現(xiàn)SARSA 69 3.5.1 動(dòng)作函數(shù):ε-貪婪 69 3.5.2 計(jì)算Q損失 70 3.5.3 SARSA訓(xùn)練循環(huán) 71 3.5.4 同策略批處理內(nèi)存回放 72 3.6 訓(xùn)練SARSA智能體 74 3.7 實(shí)驗(yàn)結(jié)果 76 3.7.1 實(shí)驗(yàn):評(píng)估學(xué)習(xí)率的影響 77 3.8 總結(jié) 78 3.9 擴(kuò)展閱讀 79 3.10 歷史回顧 79 第4章 深度Q網(wǎng)絡(luò) 81 4.1 學(xué)習(xí)DQN中的Q函數(shù) 82 4.2 DQN中的動(dòng)作選擇 83 4.2.1 Boltzmann策略 86 4.3 經(jīng)驗(yàn)回放 88 4.4 DQN算法 89 4.5 實(shí)現(xiàn)DQN 91 4.5.1 計(jì)算Q損失 91 4.5.2 DQN訓(xùn)練循環(huán) 92 4.5.3 內(nèi)存回放 93 4.6 訓(xùn)練DQN智能體 96 4.7 實(shí)驗(yàn)結(jié)果 99 4.7.1 實(shí)驗(yàn):評(píng)估網(wǎng)絡(luò)架構(gòu)的影響 99 4.8 總結(jié) 101 4.9 擴(kuò)展閱讀 102 4.10 歷史回顧 102 第5章 改進(jìn)的深度Q網(wǎng)絡(luò) 103 5.1 目標(biāo)網(wǎng)絡(luò) 104 5.2 雙重DQN 106 5.3 優(yōu)先級(jí)經(jīng)驗(yàn)回放 109 5.3.1 重要性抽樣 111 5.4 實(shí)現(xiàn)改進(jìn)的DQN 112 5.4.1 網(wǎng)絡(luò)初始化 113 5.4.2 計(jì)算Q損失 113 5.4.3 更新目標(biāo)網(wǎng)絡(luò) 115 5.4.4 包含目標(biāo)網(wǎng)絡(luò)的DQN 116 5.4.5 雙重DQN 116 5.4.6 優(yōu)先級(jí)經(jīng)驗(yàn)回放 117 5.5 訓(xùn)練DQN智能體玩Atari游戲 123 5.6 實(shí)驗(yàn)結(jié)果 128 5.6.1 實(shí)驗(yàn):評(píng)估雙重DQN與PER的影響 128 5.7 總結(jié) 132 5.8 擴(kuò)展閱讀 132 第二部分 組合方法 第6章 優(yōu)勢演員–評(píng)論家算法 135 6.1 演員 136 6.2 評(píng)論家 136 6.2.1 優(yōu)勢函數(shù) 136 6.2.2 學(xué)習(xí)優(yōu)勢函數(shù) 140 6.3 A2C算法 141 6.4 實(shí)現(xiàn)A2C 143 6.4.1 優(yōu)勢估計(jì) 144 6.4.2 計(jì)算價(jià)值損失和策略損失 147 6.4.3 演員–評(píng)論家訓(xùn)練循環(huán) 147 6.5 網(wǎng)絡(luò)架構(gòu) 148 6.6 訓(xùn)練A2C智能體 150 6.6.1 在Pong上使用n步回報(bào)的A2C算法 150 6.6.2 在Pong上使用GAE的A2C算法 153 6.6.3 在BipedalWalker上使用n步回報(bào)的A2C算法 155 6.7 實(shí)驗(yàn)結(jié)果 157 6.7.1 實(shí)驗(yàn):評(píng)估n步回報(bào)的影響 158 6.7.2 實(shí)驗(yàn):評(píng)估GAE中的影響 159 6.8 總結(jié) 161 6.9 擴(kuò)展閱讀 162 6.10 歷史回顧 162 第7章 近端策略優(yōu)化算法 165 7.1 替代目標(biāo)函數(shù) 165 7.1.1 性能突然下降 166 7.1.2 修改目標(biāo)函數(shù) 168 7.2 近端策略優(yōu)化 174 7.3 PPO算法 177 7.4 實(shí)現(xiàn)PPO 179 7.4.1 計(jì)算PPO的策略損失 179 7.4.2 PPO訓(xùn)練循環(huán) 180 7.5 訓(xùn)練PPO智能體 182 7.5.1 在Pong上使用PPO算法 182 7.5.2 在BipedalWalker上使用PPO算法 185 7.6 實(shí)驗(yàn)結(jié)果 188 7.6.1 實(shí)驗(yàn):評(píng)估GAE中的影響 188 7.6.2 實(shí)驗(yàn):評(píng)估裁剪變量的影響 190 7.7 總結(jié) 192 7.8 擴(kuò)展閱讀 192 第8章 并行方法 195 8.1 同步并行 196 8.2 異步并行 197 8.2.1 Hogwild!算法 198 8.3 訓(xùn)練A3C智能體 200 8.4 總結(jié) 203 8.5 擴(kuò)展閱讀 204 第9章 算法總結(jié) 205 第三部分 實(shí)踐細(xì)節(jié) 第10章 深度強(qiáng)化學(xué)習(xí)工程實(shí)踐 209 10.1 軟件工程實(shí)踐 209 10.1.1 單元測試 210 10.1.2 代碼質(zhì)量 215 10.1.3 Git工作流 216 10.2 調(diào)試技巧 218 10.2.1 生命跡象 219 10.2.2 策略梯度診斷 219 10.2.3 數(shù)據(jù)診斷 220 10.2.4 預(yù)處理器 222 10.2.5 內(nèi)存 222 10.2.6 算法函數(shù) 222 10.2.7 神經(jīng)網(wǎng)絡(luò) 222 10.2.8 算法簡化 225 10.2.9 問題簡化 226 10.2.10 超參數(shù) 226 10.2.11 實(shí)驗(yàn)室工作流 226 10.3 Atari技巧 228 10.4 深度強(qiáng)化學(xué)習(xí)小結(jié) 231 10.4.1 超參數(shù)表 231 10.4.2 算法性能比較 234 10.5 總結(jié) 238 第11章 SLM Lab 239 11.1 SLM Lab算法實(shí)現(xiàn) 239 11.2 Spec文件 241 11.2.1 搜索Spec語法 243 11.3 運(yùn)行SLM Lab 246 11.3.1 SLM Lab指令 246 11.4 分析實(shí)驗(yàn)結(jié)果 247 11.4.1 實(shí)驗(yàn)數(shù)據(jù)概述 247 11.5 總結(jié) 249 第12章 神經(jīng)網(wǎng)絡(luò)架構(gòu) 251 12.1 神經(jīng)網(wǎng)絡(luò)的類型 251 12.1.1 多層感知機(jī) 252 12.1.2 卷積神經(jīng)網(wǎng)絡(luò) 253 12.1.3 循環(huán)神經(jīng)網(wǎng)絡(luò) 255 12.2 選擇網(wǎng)絡(luò)族的指導(dǎo)方法 256 12.2.1 MDP與POMDP 256 12.2.2 根據(jù)環(huán)境選擇網(wǎng)絡(luò) 259 12.3 網(wǎng)絡(luò)API 262 12.3.1 輸入層和輸出層形狀推斷 264 12.3.2 自動(dòng)構(gòu)建網(wǎng)絡(luò) 266 12.3.3 訓(xùn)練步驟 269 12.3.4 基礎(chǔ)方法的使用 270 12.4 總結(jié) 271 12.5 擴(kuò)展閱讀 271 第13章 硬件 273 13.1 計(jì)算機(jī) 273 13.2 數(shù)據(jù)類型 278 13.3 在強(qiáng)化學(xué)習(xí)中優(yōu)化數(shù)據(jù)類型 280 13.4 選擇硬件 285 13.5 總結(jié) 285 第四部分 環(huán)境設(shè)計(jì) 第14章 狀態(tài) 289 14.1 狀態(tài)示例 289 14.2 狀態(tài)完整性 296 14.3 狀態(tài)復(fù)雜性 297 14.4 狀態(tài)信息損失 301 14.4.1 圖像灰度 301 14.4.2 離散化 302 14.4.3 散列沖突 303 14.4.4 元信息損失 303 14.5 預(yù)處理 306 14.5.1 標(biāo)準(zhǔn)化 307 14.5.2 圖像預(yù)處理 308 14.5.3 時(shí)間預(yù)處理 310 14.6 總結(jié) 313 第15章 動(dòng)作 315 15.1 動(dòng)作示例 315 15.2 動(dòng)作完整性 318 15.3 動(dòng)作復(fù)雜性 319 15.4 總結(jié) 323 15.5 擴(kuò)展閱讀:日常事務(wù)中的動(dòng)作設(shè)計(jì) 324 第16章 獎(jiǎng)勵(lì) 327 16.1 獎(jiǎng)勵(lì)的作用 327 16.2 獎(jiǎng)勵(lì)設(shè)計(jì)準(zhǔn)則 328 16.3 總結(jié) 332 第17章 轉(zhuǎn)換函數(shù) 333 17.1 可行性檢測 333 17.2 真實(shí)性檢測 335 17.3 總結(jié) 337 后記 339 附錄A 深度強(qiáng)化學(xué)習(xí)時(shí)間線 343 附錄B 示例環(huán)境 345 B.1 離散環(huán)境 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 連續(xù)環(huán)境 350 B.2.1 Pendulum-v0 350 B.2.2 BipedalWalker-v2 350 參考文獻(xiàn) 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
你還可能感興趣
我要評(píng)論
|