Policy Learning
首先 policy 是函数,是函数就需要有输入和输出,在 Policy 函数中输入 state 输出执行 action 的概率分布,相同输入 state 而因为 Policy 输出不一定一直某一个 Action。之前我们考虑的情况老路和新路是相对独立,没有关系,我们没有 action 也就是没有选择,如果走小路就一定进入高速。不过我们现在可以从老路切换到高速也是可能。也就是事件不是相对独立,在当前 state 做出 action 会影响下一个 state,反过来下一个 state 还会影响当前的 state。根据我们的行为策略,来确定当前状态有多好。
最佳的行动策略是什么,现在我们就进入控制论的领域,我们现在变成了网格问题,也就是 Agent 找出口问题,类似密室逃脱问题。Agent 在 2D 平面密室中有上下左右移动来找到最快逃脱的路径。通常将问题转换为强化学习问题,首先确定目标也就是 Agent 需要学到什么,然后区分客观条件和主观条件,主观条件也就是我们能够学到东西。
-
目标: 用最少步数走到目的。
-
reward reward 是关于 state 函数,reward = R(s)。reward 是可以有变化的但是不会依赖于学习者,不要将 reward 与 Agent 的采用行为相关联。reward 应该是环境个东西而且直观。这里我们将目标的 reward 定义为 1 其他都定义为 -1
-
state 每一个格式就是 state,
-
action 可以上下左右走
-
已知条件 state action episode
-
temporal discount
现在我们的 state 值不仅因为 state 位置,即使我们 state 离出口很近而 Agent 采取 Action 而导致 Agent 没有走向出口。所以现在 V 不仅因受到 state 影响,还需要考虑到 policy 的影响。这里我们先从简单 policy 入手也就是一个采用等概率随机 Action。我们知道 policy 是 Action 的概率分布。也就是每一个 state 的概率是等同。所以我们在 V 暂时无需考虑 action,所以我们依旧可以用 action 来评估方法来解决问题。之前公式依旧适用该问题。
gsize = [4,4]
我们对密室进行抽象,在左上角和右下角设置出口,在矩阵中用 1 表示密室出口,Agent 每一次可以移动一个格子。
[[1. 0. 0. 0.]
代码没有什么特比的,gsize 就是为了控制 Agent 移动范围。做个游戏开发对于这个算法应该不会陌生。
def state_act(state,action,gsize):
def reward(state, gw):
在 reward 当 Agent 到达出口 state 就会得到 0 reward 其他 state 都是 -1
A = .1
我们这里 gamma 表示未来对当下有多重要,这里设置 1 表示未来和当下同样重要。这里使用随机函数表示 policy 随机等概率输出一个 action
episode = 10
if k %20 == 0:
[[ 0. -0.1 -0.3 -0.3]
我们看一看强化学习结果,我们随机找到一个位置[1,2] 也就是矩阵中的 -12.600012 然后看其上下左右值,选择最小 -10 向下移动 agent 然后在 [2,2]位置看其上下左右的值
找出最小值 -8 来到了 [2,3] 然后向下移动一个就到到了出口,也就是 [1,2][2,2][2,3][3,3]
网友评论