David Silver-强化学习笔记【1.强化学习介绍】
- 1.1 强化学习特点
- 1.2 RL相关术语
- 1.2.1 reward
- 1.2.2 environment
- 1.2.3 state
- 1.2.3.1 environment state
- 1.2.3.2 agent state
- 1.2.3.3 information state
- 1.2.3.4 解释markov性质
- 1.2.3.5 完全可观测的环境(Fully Observable Environments)
- 1.2.3.6 部分可观测的环境(Partially Observable Environments)
- 1.2.4 agent与环境的交互示例
- 1.3 agent的组成
- 1.4 关于RL的一些问题
1.1 强化学习特点
- 不存在监督者,训练过程就是试错的过程,根据奖励信号指导行为,不需要提前知道环境的信息(比如不需要提前知道游戏的信息,通过试错知道如何获得高分)。
- 反馈可能存在延时,一个episode结束后才修正决策,并不是立马修正。(也可以即时反馈吧?)
- 研究时间序列的行为,而不是独立同分布的数据。需要一个动态的系统,agent与外部环境进行交互,每一步都可能影响下一步。
1.2 RL相关术语
1.2.1 reward
- reward是一个标量,用来表示反馈信号,表明agent每一步做得怎么样,是即时的,做的好得到正向奖励,效果不好就给负向奖励。
- 强化学习主要基于这样的奖励假设(reward hypothesis):所有要解决的目标都可以被描述成最大化累积奖励。david说这是一个有争议的说法,可能指的是reward具有主观性,每个人对reward的理解不一样,但最后都通过最大化累积reward来优化我们的目标。我觉得这样没毛病啊,决策本来就是朝着“利益”最大化的目标进行,这个“利益”爱是啥是啥。学生提问中有提到如果目标之间有冲突(去见女友还是见老板),仅优化一个reward是否合适,David提出可以给不同的目标赋权值,整合成一个reward。
- 作为一个序列决策问题,可能需要牺牲现阶段的一些回报,以获得长期的累积回报。
1.2.2 environment
- 我们希望创建这个大脑,由算法构建即agent。Agent的作用就是采取action,之后就会得到反馈,包括对环境的observation和对动作的reward,这些反馈继续指导agent采取下一步的action,这就是一个agent与environment交互的过程。
- 交互过程:agent接收和,采取动作 → environment在动作的作用下,产生和 → agent接收和,采取动作 …… 依次循环
- 我们不能控制环境,只能通过agent的动作来影响环境。(observation、reward、action…)这个时间序列代表了agent的经验,这个经验就是用于RL的数据。
1.2.3 state
- History就是上图中这样的一个时间序列,表示目前agent所知道的东西。基于这样的一个history,agent可以采取后续的行动,environment可以获得reward和observation
- 但是,history规模太大了,我们希望agent可以在很短的时间内完成交互。因此我们不需要每次都回顾history,通常要研究的是state。
- 每经历一个时间步长就构建一个state,他是history的函数。
1.2.3.1 environment state
- 环境状态是一组数字集合,但不是我们看到的observation本身。举例而言,玩游戏的时候observation是游戏画面。但是environment是输出游戏画面的实体进程,是木偶背后的提线。所以一般而言,Environment state是不可见的。
1.2.3.2 agent state
- 是agent的内部呈现,包括个体可以使用的、决定未来动作的所有信息。Agent state是强化学习算法可以利用的信息,它可以是history的一个函数。
1.2.3.3 information state
- 信息状态又称Markov状态,包含history的全部有用信息。
- 一个状态是马尔可夫的,当且仅当: 。即下一时刻的状态,仅由当前状态决定,与过去的状态没有太大关系。在你得到状态S之后,存储为,如果具有markov性质,就可以扔掉history的整个其他部分,因为history对你的帮助,比不上状态表示法。
- 我们需要做的是定义这样的一个state,使得它具有markov性,这样就可以丢弃history了。相当于从history中提取特定的某些元素,构成state。如果知道飞机的state(包含位置、速度、风向等信息,具有markov性),那么可以根据当前状态知道下一个状态,如果仅知道位置信息(不具有markov性质),是无法推断下一状态的。
- 如果身处markov状态,就会一直在markov状态。
1.2.3.4 解释markov性质
- 有如上三个针对老鼠的事件序列。其中事件1的最后是老鼠遭电击,事件1的最后是老鼠获得一块奶酪,现在请分析比较这三个事件序列的特点,推断第三个事件序列中老鼠是获得电击还是奶酪?
- 假如agent state = 序列中的最后三个事件(不包括电击、获得奶酪),事件序列3的结果会是什么?(答案:电击)
- 假如agent state = 亮灯、响铃和拉电闸各自事件发生的次数,那么事件序列3的结果又是什么?(答案:奶酪)
- 假如agent state = 完整的事件序列,那结果又是什么?(答案:未知)
- 也就是说,state定义不一样,得到的结果也不一样。结果如何,取决于状态表示,可以把history丢弃。
1.2.3.5 完全可观测的环境(Fully Observable Environments)
- 这是一种后续课程经常涉及的环境,agent直接观测环境。即个体对环境的观测= agent state = environment state。正式来说,这种问题是一个马尔科夫决策过程(Markov decision process-MDP)
1.2.3.6 部分可观测的环境(Partially Observable Environments)
- Agent间接观测环境。此时agent state ≠ environment state。
- 例如:带摄像头的机器人,并不确切地知道自己在哪,没有GPS,只能通过摄像头来辨别出在房间的什么位置,需要自己定位;贸易agent只能观测到最新的价格,但是不知道价格趋势,不知道价格来自哪,只能基于已有的部分信息采取下一步活动。
- Agent需要创建状态表示(state representation)。一种方法是整个序列都成为一个state;或者创建beliefs,保存所有东西的概率值,虽然agent不知道环境状态到底是什么样,但agent可以利用已有经验(数据),用各种agent已知状态的概率分布作为当前时刻的agent状态的呈现;或者根据当前的agent状态以及当前时刻agent的观测,送入循环神经网络(RNN)中得到一个当前agent状态的呈现。
1.2.4 agent与环境的交互示例
- Agent做出动作控制右边的操纵杆,下面那台机器就是environment,里面的磁带决定了游戏规则,但是我们不知道。磁带会根据我们的action,决定屏幕上的显示和reward,这些输入到agent里面,agent又会采取新的措施。
1.3 agent的组成
Agent可以由policy、value、model中的一个或多个组成,还可以增加其他内容。
1.3.1 policy
- Policy是一个行为函数。以state作为输入,以下一步的行动决策作为输出,即状态到动作的映射。可以是确定性的,也可以是不确定性的。
- 确定性的policy,就像是上面的函数π,将状态s转化为动作a。
- 有的policy不是确定性的函数,随机的指定策略可以拥有更多的状态空间,利用概率实现转态到转态之间的映射。
1.3.2 value
- value函数评价agent在某种特殊状态下的好坏,采取某种行动后的好坏。当面对两个不同的状态时,agent可以用一个Value值来评估这两个状态可能获得的最终奖励区别,继而指导选择不同的行为,即制定不同的策略。同时,value函数是基于某一个特定策略的,不同的策略下同一状态的value并不相同。
- value函数是对未来回报的预测。一个action获得的reward依赖于policy,而对于policy来说,value函数告诉我们未来的预期奖励是多少(the expect total accumulated future reward),区别于reward( indicates what is good in an immediate sense)。
- 各个阶段的奖励乘以一个小于1的折扣因子,表明更关心当前奖励。
1.3.3 model
- Model是agent对环境的一个建模,用来感知环境是如何变化的,它体现了agent是如何思考环境运行机制的(how the agent think what the environment was.)。模型并不是必需的,很多强化学习算法中agent并不试图(依赖)构建一个模型。
- Model有两个任务:一是状态转化概率,即(环境)根据当前的状态和(接收到的)动作,预测下一时刻的可能状态的概率。还有一项工作是预测即时奖励,即根据当前的状态和动作,预测(环境反馈的)回报(用于指导agent产生下一个动作)。
1.3.4 举个例子(迷宫)
-
目标是尽可能快的从起点到终点。每走一步得到的reward是-1,action则有四个方向,state设置为agent在棋盘中的位置。
- 当前状态的policy由箭头表示,数字则表示每个状态的value值。当下一步就是终点时value是-1,类似的陷入最坏状态的value是-24。当agent走到某一个位置时,探查周围四个方向的value,可以选择value值较大的方向前进(或许也可以通过最大化累积value来优化目标)。
- 上图构建的model表达的是一种动态构想,对不同时间下一时间步position的假设以及采取每个step可以获得的奖励值,每走一步得到的reward是-1。假如agent可以预测20步,那么就会有一种轨迹会是这样的,当然这不是最佳轨迹。(没太明白要表达的是什么)
1.3.5 agent的分类
- 第一种分类:①仅基于价值函数的Value Based(迷宫例子中的箭头表示),在这样的agent中,有对状态的价值估计函数,但是没有直接的策略函数,策略函数由价值函数间接得到。②仅直接基于策略的 Policy Based(迷宫例子中的数字表示),这样的agent中行为直接由策略函数产生,个体并不维护一个对各状态价值的估计函数。③执行者-评价者形式Actor-Critic,个体既有价值函数、也有策略函数,两者相互结合解决问题。
- 根据个体在解决强化学习问题时是否建立一个对环境动力学的模型,将其分为两大类:①model-free,这类agent并不视图了解环境如何工作,而仅聚焦于价值和/或策略函数。②model-based,agent尝试建立一个描述环境运作过程的模型,以此来指导价值或策略函数的更新。
1.4 关于RL的一些问题
1.4.1 学习和规划(Learning & Planning)
一个常用的RL问题的解决思路是,先学习环境如何工作,也就是了解环境工作的方式,即学习得到一个model,然后利用这个模型进行planning。
- learning:环境初始时是未知的,agent不断的与环境交互来optimize policy,是不断试错的过程。
- planning: 环境如何工作对于agent是已知或近似已知的,agent并不与环境发生实际的交互,而是通过内部的运算来决策(知道下一步都会有哪些情况),是一个推理、搜索的过程。大多数棋类游戏都是planning(know environment/model/rules, tree-search)
1.4.2 探索和利用(Exploration & Exploitation)
强化学习类似于一个试错的学习,agent需要在与环境的交互中发现一个好的policy,同时又不至于在试错的过程中丢失太多的reward。探索和利用是agent进行决策时需要平衡的两个方面,利用(exploration)意味着在一个局部最优区域不断的前进,探索(exploitation)意味着跳出局部最优区域,奖励值可能会更好,当然也可能很差。
- 一个形象的比方是,当你去一个餐馆吃饭,“探索”意味着你对尝试新餐厅感兴趣,很可能会去一家以前没有去过的新餐厅体验,“利用”则意味着你就在以往吃过的餐厅中挑一家比较喜欢的,而不去尝试以前没去过的餐厅。这两种做法通常是一对矛盾,但对解决强化学习问题又都非常重要。
- 其它一些例子,在线广告推广时,显示最受欢迎的广告还是显示一个新的广告;油气开采时选择一个已知的最好的地点还是在未知地点进行开采;玩游戏时选择一个你认为最好的方法还是实验性的采取一个新的方法。
1.4.3 预测和控制(Prediction & Control)
在强化学习里,我们经常需要先解决关于预测(prediction)的问题,而后在此基础上解决关于控制(Control)的问题。(没太明白要表达的是什么)
- 预测:给定一个策略,评价未来。可以看成是求解在给定策略下的价值函数(value function)的过程。How well will I(an agent) do if I(the agent) follow a specific policy?
- 控制:找到一个好的策略来最大化未来的奖励。