0


强化学习——Q-Learning算法原理

一、Q-Learning :异策略时序差分控制

从决策方式来看,强化学习可以分为基于策略的方法(policy-based)和基于价值的方法(value-based)。基于策略的方法直接对策略进行优化,使制定的的策略能够获得最大的奖励。基于价值的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数,通过这个价值表格或价值函数来选取价值最大的动作。
Q-Learning 算法就是一种value-based的强化学习算法。

二、算法思想:

Q(s,a)是状态价值函数,表示在某一具体初始状态s和动作a的情况下,对未来收益的期望值。
Q-Learning算法维护一个Q-table,Q-table记录了不同状态下s(s∈S),采取不同动作a(a∈A)的所获得的Q值。
Q-tablea1a2a3…s1Q(s1,a1)Q(s1,a2)Q(s1,a3)s2Q(s2,a1)Q(s2,a2)Q(s2,a3)s3Q(s3,a1)Q(s3,a2)Q(s3,a3)…
探索环境之前,初始化Q-table,当agent与环境交互的过程中,算法利用贝尔曼方程(ballman equation)来迭代更新Q(s,a),每一轮结束后就生成了一个新的Q-table。agent不断与环境进行交互,不断更新这个表格,使其最终能收敛。最终,agent就能通过表格判断在某个转态s下采取什么动作,才能获得最大的Q值。

三、更新过程

更新方法:

  1. Q
  2. (
  3. s
  4. t
  5. ,
  6. a
  7. t
  8. )
  9. Q
  10. (
  11. s
  12. t
  13. ,
  14. a
  15. t
  16. )
  17. +
  18. α
  19. [
  20. r
  21. t
  22. +
  23. 1
  24. +
  25. γ
  26. max
  27. a
  28. Q
  29. (
  30. s
  31. t
  32. +
  33. 1
  34. ,
  35. a
  36. )
  37. Q
  38. (
  39. s
  40. t
  41. ,
  42. a
  43. t
  44. )
  45. ]
  46. Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha [r_{t+1}+ \gamma \max_aQ(s_{t+1},a) - Q(s_t,a_t) ]
  47. Q(st​,at​)←Q(st​,at​)+α[rt+1​+γamaxQ(st+1​,a)−Q(st​,at​)]
  48. Q
  49. (
  50. s
  51. t
  52. ,
  53. a
  54. t
  55. )
  56. {\color{Red} Q(s_t,a_t)}
  57. Q(st​,at​) 是在状态
  58. s
  59. t
  60. s_t
  61. st​下采取动作
  62. a
  63. t
  64. a_t
  65. at​的长期回报,是一个估计Q
  66. r
  67. t
  68. +
  69. 1
  70. {\color{Red} r_{t+1}}
  71. rt+1 是在状态
  72. s
  73. t
  74. s_t
  75. st​下执行动作
  76. a
  77. t
  78. a_t
  79. at​得到的回报reward
  80. max
  81. a
  82. Q
  83. (
  84. s
  85. t
  86. +
  87. 1
  88. ,
  89. a
  90. )
  91. {\color{Red} \max_aQ(s_{t+1},a)}
  92. maxaQ(st+1​,a) 指的是在状态
  93. s
  94. t
  95. +
  96. 1
  97. s_{t+1}
  98. st+1​下所获得的最大Q值,直接看Q-table,取它的最大化的值。
  99. γ
  100. \gamma
  101. γ是**折扣因子**,含义是看重近期收益,弱化远期收益,同时也保证Q函数收敛。
  102. (
  103. r
  104. t
  105. +
  106. 1
  107. +
  108. γ
  109. max
  110. a
  111. Q
  112. (
  113. s
  114. t
  115. +
  116. 1
  117. ,
  118. a
  119. )
  120. {\color{Red} (r_{t+1}+ \gamma \max_aQ(s_{t+1},a)}
  121. (rt+1​+γmaxaQ(st+1​,a) 即为**目标值**,就是时序差分目标,是
  122. Q
  123. (
  124. s
  125. t
  126. ,
  127. a
  128. t
  129. )
  130. Q(s_t,a_t)
  131. Q(st​,at​) 想要逼近的目标。
  132. α
  133. \alpha
  134. α是**学习率**,衡量更新的幅度。

当目标值和估计值的差值趋于0的时候,Q(s,a)就不再继续变化,Q 表趋于稳定,说明得到了一个收敛的结果。这就是算法想要达到的效果。

注意:

  1. max
  2. a
  3. Q
  4. (
  5. s
  6. t
  7. +
  8. 1
  9. ,
  10. a
  11. )
  12. {\color{Red} \max_aQ(s_{t+1},a)}
  13. maxaQ(st+1​,a)所对应的动作不一定是下一步会执行的实际动作!

这里引出

  1. ε
  2. g
  3. r
  4. e
  5. e
  6. d
  7. y
  8. {\color{Red} \varepsilon-greedy}
  9. ε−greedy,即
  10. ε
  11. \varepsilon-
  12. ε−贪心算法。

在智能体探索过程中,执行的动作采用

  1. ε
  2. g
  3. r
  4. e
  5. e
  6. d
  7. y
  8. {\color{Red} \varepsilon-greedy}
  9. ε−greedy策略,是权衡**exploitation-exploration**(利用和探索)的超参数。
  • exploration:探索环境,通过尝试不同的动作来得到最佳策略(带来最大奖励的策略)
  • exploitation:不去尝试新的动作,利用已知的可以带来很大奖励的动作。Q-Learning算法中,就是根据Q-table选择当前状态下能使Q值最大的动作。

在刚开始的时候,智能体不知道采取某个动作后会发生什么,所以只能通过试错去探索。利用是指直接采取已知的可以带来很好奖励的动作。这里面临一个权衡问题,即怎么通过牺牲一些短期的奖励来理解动作,从而学习到更好的策略。因此,提出

  1. ε
  2. g
  3. r
  4. e
  5. e
  6. d
  7. y
  8. \varepsilon-greedy
  9. ε−greedy
  10. ε
  11. \varepsilon
  12. ε就是权衡这两方面的超参数。

这篇博客https://blog.csdn.net/zhm2229/article/details/99351831对这部分的理解讲的很好,在此引用一下:

做exploitation和exploration的目的是获得一种长期收益最高的策略,这个过程可能对short-term reward有损失。如果exploitation太多,那么模型比较容易陷入局部最优,但是exploration太多,模型收敛速度太慢。这就是exploitation-exploration权衡。

比如我们设

  1. ε
  2. \varepsilon
  3. ε=0.9,随机化一个[0,1]的值,如果它小于
  4. ε
  5. \varepsilon
  6. ε,则进行exploration,随机选择动作;如果它大于
  7. ε
  8. \varepsilon
  9. ε,则进行exploitation,选择Q value最大的动作。

在训练过程中,

  1. ε
  2. \varepsilon
  3. ε在刚开始的时候会被设得比较大,让agent充分探索,然后
  4. ε
  5. \varepsilon
  6. ε逐步减少,agent会开始慢慢选择Q value最大的动作

三、伪代码

在这里插入图片描述
图源于:百度飞桨AlStudio


参考:
[1] 王琦.强化学习教程[M]
[2] https://blog.csdn.net/zhm2229/article/details/99351831

标签: 算法 人工智能

本文转载自: https://blog.csdn.net/weixin_44732379/article/details/127812712
版权归原作者 流萤点火 所有, 如有侵权,请联系我们删除。

“强化学习——Q-Learning算法原理”的评论:

还没有评论