强化学习-马尔可夫决策过程

目录

2.1 基本概念

2.2 随机性的来源

2.3 回报与折扣回报

2.3.1 回报

2.3.2 折扣回报

2.3.3 回报中的随机性

2.3.4 有限期 MDP 和无限期 MDP

2.4 价值函数

2.4.1 动作价值函数

2.4.2 最优动作价值函数

2.4.3 状态价值函数

2.5 实验环境


2.1 基本概念

强化学习主要就是基本概念比较多,容易混淆,不容易记住,主要说一下一些基本的概念。

强化学习可以看做成一个马尔可夫决策过程(MDP),一个MDP通常由状态空间、动作空间、奖励函数、状态转移函数等组成。

下面以小例子来谈一下几个概念:

强化学习-马尔可夫决策过程_第1张图片

智能体:强化学习的主体被称为智能体,例如超级玛丽;

环境:环境指的是智能体交互的对象,可以抽象地理解为交互过程中的规则或机理。在超级玛丽的例子中,游戏程序就是环境;

状态:超级玛丽面对的环境就是此时的状态;

状态空间:状态空间是指所有可能存在状态的集合,记为S。状态空间可以是有限的,也可以是无限的;可以是离散的,也可以是连续的。

动作:超级玛丽面对上述状态所采取的行动称为动作,可能是上、左和右;

动作空间:动作空间是指所有可能动作的集合记为AA = {上,左,右}。

奖励:智能体在执行一个动作后,与环境交互,环境返回给智能体一个数值。奖励往往由我们自己来定义,奖励定义得好坏非常影响强化学习的结果。

状态转移:智能体由t时刻的状态s转移到下一个时刻t+1的状态s^{^{'}};状态转移可能是随机的,而且强化学习通常假设状态转移是随机的,随机性来自于环境。

状态转移函数p\left (s^{'}|s,a \right )=P(S^{'}=s^{'}|S=s,A=a),表示智能体由状态S,采取动作a后,环境状态变为s^{^{'}}

策略:智能体根据观测到的状态,如何从动作空间选取一个动作;

随机策略:智能体面对状态S,随机采取动作A,输出的是一个概率密度函数,随机做出决策。

确定策略:把状态S做为输入,直接输出动作A,而并不是输出一个概率密度函数,确定性采取某一动作;

回合:指智能体从游戏开始到通关或者结束的过程;

智能体与环境交互

强化学习-马尔可夫决策过程_第2张图片

 

2.2 随机性的来源

动作 ——> 随机决策

由于决策的随意性会导致动作的随机性。

状态 ——> 状态转移函数

状态转移函数的随机性导致状态的随机性。例如超级玛丽在确定采取向上跳的动作,但是旁边的NPC的选择不是确定的,有可能向左,也有可能向右,这也会导致下一个状态的随机性。

轨迹:是指一回合(episode)游戏中,智能体观测到的所有的状态、动作、奖励:

2.3 回报与折扣回报

2.3.1 回报

回报是指从回合开始到结束所获得的奖励总和,也称为累计奖励。强化学习的目标是要得到最大的回报,而不是获得当前最大的奖励。举个例子,玩赛车游戏时,我们的主要目标是要获得比赛的第一名,而不是在某一个时刻冒着风险去完成超车,有可能会导致赛车撞毁。

2.3.2 折扣回报

折扣回报是指未来的奖励与当前的奖励的重要性不一样,需要用一个折扣率来对未来的奖励进行一个折扣,例如你只能选择一项,第一现在拿100元,第二10年后拿100元,大家肯定都选择现在拿,但是如果现在让你拿80元,10年后让你拿800元,又该如何做选择,这就意味着未来奖励折扣重要性。

2.3.3 回报中的随机性

回报中的随机性主要来源于智能体的动作随机性和状态随机性。

2.4 价值函数

2.4.1 动作价值函数

可以从上述公式中看出动作价值函数取决于三个变量:s_{t},a_{t},\pi,分别是t时刻的状态st时刻动作a,策略函数\pi

2.4.2 最优动作价值函数

2.4.3 状态价值函数

强化学习-马尔可夫决策过程_第3张图片

2.5 实验环境

比较和评价强化学习算法最常用的是OpenAI Gym,它相当于计算机视觉中的ImageNet数据集。Gym 有几大类控制问题,比如经典控制问题、Atari游戏、机器人。

import gym

env = gym.make('CartPole-v0') #生成环境
state = env.reset() #重置环境

for t in range(100):
    env.render() #弹出窗口,渲染,,把游戏中发生的显示到屏幕上。
    print(state)
    action = env.action_space.sample() #此处均匀抽样生成一个动作。在实际应用中,应当依据状态,用策略函数生成动作。
    state,reward,done,info = env.step(action)#智能体每一步执行完动作后返回四个值,下一个状态、奖励、是否完成
    if done: #done = 1意味着游戏结束,done = 0意味着游戏继续
        print('Finished')
        break
env.close()

你可能感兴趣的:(强化学习入门,概率论,强化学习)