1.1 基本概念
category
type
status
slug
date
summary
tags
password
icon
本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记.
1.1.1 网格世界示例
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2F1b3fc854-5088-4aed-ada9-f62f1953a21f%2Fimage.png?table=block&id=133cd382-093d-8020-890d-d778679ace03&t=133cd382-093d-8020-890d-d778679ace03&width=336&cache=v2)
首先给出了课程中需要用的模拟场景: 一个有边界的网格世界. 由起点, 终点和禁止网格. 目的是得到一条从起点到终点的最优路径.
1.1.2 State, Action, Policy 状态, 动作, 策略
1.1.2.1 状态和状态空间
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2F6cc2661e-43ac-41e4-a537-606a4d51e94c%2Fimage.png?table=block&id=133cd382-093d-8015-9df2-c08b3e232d1e&t=133cd382-093d-8015-9df2-c08b3e232d1e&width=288&cache=v2)
在网格世界示例中, 我们将状态定义为栅格的索引. 实际上, 更复杂的建模状态中可以包含:速度, 加速度, 角速度等等信息.
将一系列状态放进一个集合中称之为状态空间
1.1.2.2 动作和动作空间
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2Fea55027a-1a66-4bcf-be75-f61c8ef4d430%2Fimage.png?table=block&id=133cd382-093d-8094-bf06-c95f8200769c&t=133cd382-093d-8094-bf06-c95f8200769c&width=240&cache=v2)
如上图所示, 我们将动作定义为:向上走, 向右走等等. 将一系列动作放进一个集合中称之为动作空间
每一个状态都有对应的动作空间, 比如对于左上角栅格状态, 它能采取的动作只有向右, 向下和不动. 因此它的动作空间为:
也就是说, 动作空间是一个关于状态空间的函数:
1.1.2.3 状态转移
从执行向右的动作到, 可以写作:
一般的, 采取动作从一个状态转移到另一个状态的过程, 定义为状态转移:
我们列举出了网格世界示例中, 所有的状态转移组合:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2Fcfedbe63-f228-42a6-a6d9-56fed288cbf7%2Fimage.png?table=block&id=133cd382-093d-8016-99e4-db33133d5988&t=133cd382-093d-8016-99e4-db33133d5988&width=707.9752197265625&cache=v2)
如果我们用条件概率来表达状态转移:
1.1.2.4 Policy 策略
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2Fe9b23c21-9d59-447b-9af1-c57774467c76%2Fimage.png?table=block&id=133cd382-093d-80ac-82bc-f92504545a3e&t=133cd382-093d-80ac-82bc-f92504545a3e&width=480&cache=v2)
策略是指对于每一个状态而言, 为了抵达目的应该采取的动作称之为策略. 比如上图给出了在不同状态下, 绿色箭头就是对应的策略.
我们将策略定义为, 也就是当状态为时采取动作的概率, 上图的策略可以写成:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2F637b22fe-8277-4ba5-a573-641acaf3dc1a%2Fimage.png?table=block&id=133cd382-093d-80cf-a0ab-f4e028a62dcd&t=133cd382-093d-80cf-a0ab-f4e028a62dcd&width=240&cache=v2)
如上图, 如果策略可以按概率采取不同的动作, 则可以写成:
在程序中, 我们常常使用一个矩阵来表达完整的策略分布:
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2Fbb17a6a8-5287-4fc8-9ecb-0ed94f7c77e9%2Fimage.png?table=block&id=133cd382-093d-8087-9e53-de242c1d7f7f&t=133cd382-093d-8087-9e53-de242c1d7f7f&width=672&cache=v2)
1.1.3 Reward, Return
1.1.3.1 Reward 奖励
Reward是指采取动作之后, 得到的奖励值, 是一个标量. 奖励值越高, 采取的动作越受鼓励, 因此我们需要设计合适的Reward 函数来鼓励智能体采取我们希望的动作.
我们将处于状态s, 执行动作a, 奖励函数定义为:
以网格世界为例, 我们可以设计如下奖励:
- 如果智能体越过边界, 或者走到禁止网格, 则奖励值为-1
- 如果智能体抵达目的, 则奖励值为1
- 其他情况, 奖励值为0
所以可以写出: , ,
1.1.3.2 Trajectories, returns
我们将一组连续的状态定义为Trajectory, 每一个状态都从上一个状态采取动作转移而来. 每次状态转移都有对应的奖励.
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fad2ab0c3-eab8-46b6-8097-793d488a1c72%2F050dba5b-fdde-4e4d-8e06-6a64b97db69d%2Fimage.png?table=block&id=133cd382-093d-801d-a460-e93f578a1971&t=133cd382-093d-801d-a460-e93f578a1971&width=432&cache=v2)
上图的trajectory可以写成:
将trajectory上每一步的奖励加起来, 定义为return:
如果我们在抵达终点之后, 没有中止游戏. 那么奖励值就会不停的+1导致发散:
为了解决这个问题, 可以采取discounted return, 也就是奖励值的加权和:
其中是远期奖励值的权重. 这样可以增加近期动作获得奖励的权重, 减少远期动作获得奖励的权重.
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...