前置: 05-BayesNetwork, 06-BayesInference, 07-Probabilistic

Markov Decision Process

image-20241120105206785

是Non-deterministic的搜索算法

假定了下一时刻的状态只和当前事态的状态和当前时刻的action有关, 与之前的状态和动作无关

假设是reward function, 表示每存活一定时间对总的reward的更新:

image-20241120110016702

不同的reward function会导致不同的结果

Markov Search Tree

image-20241120111657588

节点并不是真实的节点, 而是虚拟的节点, 类似expectation-max的节点

Utilities of Sequences

如何考虑未来的reward的影响? 应该放弃眼前的收益考虑更长远的收益还是更期待长期的收益?

Utility Function: 是基于整个Sequence的值的函数, 并不完全等于Reward Function. 如果只关注了最近的一个值的update, 那么就是Reward

Discounting: 如果未来的reward比较低, 对当前的影响不大, 那么设置一个discounting factor: , 每一个时间步的reward的影响(reward的值)乘上作为未来的权重. 如果更看重当前, 那么设置, 如果更看中未来, 可以让.

有助于防止无限循环, 有助于算法收敛

防止无限循环的方法:

  1. 设置discounting factor<1
  2. 设置最多轮数, 设置最大搜索深度
  3. 设置aborting state. 如果一个状态进去就出不来, 就设置这个状态为停止状态, 表示这个状态没必要再搜索

Optimal Quantities

image-20241120112645100

optimal value function:

其中, 是状态转移的概率, 是状态转移的reward, 是discounting factor.

前面两个式子可以写成一个总式(最后一行), 叫做Bellman Equation

Value Iteration

开始, 迭代计算

image-20241122103739147

复杂度:

Q-value

相同的, Q-value也可以使用Value Iteration计算

image-20241122103717499

proof

Bellman equation

max norm

the bellman update is a contraction by a factor of on the space of utility vectors

there exists only one optimal value of contraction transformation

Value iteration converges to

example

Example

image-20241120114102099

Value Iteration:

Example

image-20241120114526529

Value Iteration:

Computing action from values

称作policy extraction

或者如果已知optimal q-function, 可以写成:

相较于从value得出, action从q-value得出更容易(计算量更少)

Policy Iteration

Problem with Value Iteration:

  • 太慢, 每一次迭代的时间复杂度为
    • 对自己的所有值域遍历(每个值对应的value都更新, 复杂度),
    • 取每个action中的最大值()
    • 每个action的值由action对应状态的转移概率和对应的Reward乘积决定()
  • 在max这一步的value基本没有改变

因此提出: 只关注即可, 而不是关注每一个值

  1. 计算当前Policy的结果

    计算一个固定的(不一定optimal, 可能是随机)Utility Function

  2. 优化Policy

    更新policy使用one-step look-ahead, 可能不是最优, 但是收敛速度更快

  • Step1

    不再提供action, 而是给定一个policy函数, 根据这个函数计算对应的值.

    复杂度:

    或者假定已经达到了收敛状态, 那么只需要解出一个线性方程即可

  • Step2

    更新Policy:

Value Iteration v.s. Policy Iteration

都是计算相同的内容: 计算一个最优的action

都是动态规划

Value Iteration:

  • 每一次更新都会计算所有的policy的value
  • 会track所有的policy的值

Policy Iteration:

  • 只更新一部分固定的policy. 每一个iteration都只关注一个policy而不是全部的policy
  • 每一次计算之后都会更新policy function
  • 可能收敛更快