上一篇:强化学习RL学习笔记1-概述(1)
下一篇:强化学习RL学习笔记3-gym了解与coding实践
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题 。
本文是笔者对强化学习的一点学习记录,成文于笔者刚开始接触强化学习期间,主要内容参考LeeDeepRL-Notes,学习期间很多概念和理论框架还很不成熟,若文中存在错误欢迎批评指正,也欢迎广大学习者沟通交流、共同进步。
Policy 决定了 agent 的行为,是一个输入状态输出行为的函数。这里有两种 policy:
stochastic policy(随机性策略),即 π 函数 π(a∣s)=P[At =a∣St =s] 。输入当前状态输出各个行为概率。然后可以进一步对这个概率分布进行采样,得到真实的采取的行为。比如说概率可能是有 70% 的概率往左,30% 的概率往右,那么通过采样就可以得到一个 action。
deterministic policy(确定性策略),即有可能只是采取它的极大化,采取最有可能的动作。现在概率是事先决定好的。
从 Atari 游戏来看的话,policy function 的输入就是游戏的一帧,它的输出决定你是往左走或者是往右走。
通常情况下,强化学习一般使用随机性策略。随机性策略有很多优点:
在学习时可以通过引入一定随机性来更好地探索环境;
随机性策略的动作具有多样性,这一点在多个智能体博弈时也非常重要。采用确定性策略的智能体总是对同样的环境做出相同的动作,会导致它的策略很容易被对手预测。
价值函数是未来奖励的预测,用来评估状态的好坏。
价值函数里面有一个 discount factor,我们希望尽可能在短的时间里面得到尽可能多的奖励。如果说十天过后,我给你 100 块钱,跟我现在给你 100 块钱,你肯定更希望我现在就给你 100 块钱,因为你可以把这 100 块钱存在银行里面,你就会有一些利息。所以我们就通过把这个 discount factor 放到价值函数的定义里面,价值函数的定义其实是一个期望。有期望 E π \mathbb{E}_{\pi} Eπ ,这里有个小角标是 π 函数, π 函数就是说在已知某一个 policy function 的时候,到底可以得到多少奖励。
有一种价值函数:Q 函数。Q 函数包含两个变量:状态和动作。所以未来可以获得多少奖励,它的期望取决于当前的状态行为。进入某一种状态,它最优的行为就可以通过这个 Q 函数来得到。
模型决定了下一个状态会是什么样的,就是说下一步的状态取决于你当前的状态以及你当前采取的行为。它由三个部分组成:
当有了这三个成分过后,就形成了一个 Markov Decision Process(马尔可夫决策过程)。这个决策过程可视化了状态之间的转移以及采取的行为。
看一个走迷宫的例子:
我们可以用不同的强化学习算法来解这个环境:
决策方式是智能体在给定状态下从动作集合中选择一个动作的依据,它是静态的,不随状态变化而变化。
不同决策方式下,Agents可以分为以下三种情况:
可以用马尔可夫决策过程来定义强化学习任务,并表示为四元组 ,即状态集合、动作集合、状态转移函数和奖励函数。如果这四元组中所有元素均已知,且状态集合和动作集合在有限步数内是有限集,则机器可以对真实环境进行建模,构建一个虚拟世界来模拟真实环境的状态和交互反应。
具体来说,当智能体知道状态转移函数 P ( s t + 1 ∣ s t , a t ) P(s_{t+1}∣s_t ,a_t) P(st+1∣st,at) 和奖励函数 R ( s t , a t ) R(s_t,a_t) R(st,at)后,它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟世界中学习和规划策略即可。这种学习方法称为有模型学习。
有模型强化学习的流程图如下图所示:
然而在实际应用中,智能体并不是容易知晓 MDP 中的所有元素。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型学习。免模型学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新行为策略,这样反复迭代直到学习到最优策略。
model-based和model-free的区别:
免模型学习的泛化性要优于有模型学习,原因是免模型学习相比有模型学习还引入了对虚拟环境中的学习,泛化能力更强。
reinforcement learning 中环境初始时是未知的,agent 不知道环境如何工作,agent 通过不断地与环境交互,逐渐改进策略。
plannning 中环境是已知的,我们被告知了整个环境的运作规则的详细信息。Agent 能够计算出一个完美的模型,并且在不需要与环境进行任何交互的时候进行计算。Agent 不需要实时地与环境交互就能知道未来环境,只需要知道当前的状态,就能够开始思考,来寻找最优解。
在这个游戏中,规则是制定的,我们知道选择 left 之后环境将会产生什么变化。我们完全可以通过已知的变化规则,来在内部进行模拟整个决策过程,无需与环境交互。
一个常用的强化学习问题解决思路是,先学习环境如何工作,也就是了解环境工作的方式,即学习得到一个模型,然后利用这个模型进行规划。
Exploration 和 Exploitation 是强化学习两个很核心的问题:
Exploration 是说我们怎么去探索这个环境,通过尝试不同的行为来得到一个最佳的策略,得到最大奖励的策略。
Exploitation 是说我们不去尝试新的东西,就采取已知的可以得到很大奖励的行为。
Exploitation 往往可以带来更好的短期 reward ,而 Exploration 牺牲短期 reward 又可以获得长期对行为的理解。所以就面临一个 trade-off,怎么通过牺牲一些短期的 reward 来获得行为的理解。
以选择餐馆为例:
与监督学习不同,强化学习任务存在延迟奖励,这里不妨先考虑比较简单的情形:最大化单步奖赏,即仅考虑一步操作。需注意的是,即便在这样的简化情形下,强化学习仍与监督学习有显著不同,因为机器需通过尝试来发现各个动作产生的结果,而没有训练数据告诉机器应当做哪个动作。
单步强化学习任务对应了一个理论模型,即 K-臂赌博机(K-armed bandit)。K-臂赌博机也被称为 多臂赌博机(Multi-armed bandit) 。如上图所示,K-摇臂赌博机有 K 个摇臂,赌徒在投入一个硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币,但这个概率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖赏,即获得最多的硬币。
显然,仅探索法能很好地估计每个摇臂的奖赏,却会失去很多选择最优摇臂的机会;仅利用法则相反,它没有很好地估计摇臂期望奖赏,很可能经常选不到最优摇臂。因此,这两种方法都难以使最终的累积奖赏最大化。
事实上,探索(即估计摇臂的优劣)和利用(即选择当前最优摇臂)这两者是矛盾的,因为尝试次数(即总投币数)有限,加强了一方则会自然削弱另一方,这就是强化学习所面临的探索-利用窘境(Exploration-Exploitation dilemma)。显然,想要累积奖赏最大,则必须在探索与利用之间达成较好的折中(trade-off)。
上一篇:强化学习RL学习笔记1-概述(1)
下一篇:强化学习RL学习笔记3-gym了解与coding实践