强化学习(Reinforcement Learning) 用来学习如何做出一系列好的决策。
一个智能体(agent)怎么在一个复杂不确定的环境(environment)里面极大化能获得的奖励。
agent在环境里面获得状态,利用这个状态输出一个动作action(决策),然后这个决策会放到环境中去,环境根据agent采取的决策,输出下一个状态以及当前动作action(决策)得到的奖励。Agent的目的是为了尽可能多的从环境中获得奖励。
人工智能的基本挑战是学习在不确定的情况下做出的好的决策。
监督学习:1)输入的数据都是尽可能没有关联,最好独立同分布(independent and identically distributed,简称 i.i.d.)。2)通过正确的标签来修正自己的预测。
强化学习:监督学习的两点都不满足。1)强化学习输入的是序列数据,不满足独立同分布。游戏中上一个状态和下一个状态;2)没有立刻获得反馈,没有标签来说明你现在这个动作是正确还是错误,必须等到游戏结束才可能说明。(延迟奖励(Delayed Reward))
强化学习得到的模型可以有超人类的表现:
深度强化学习 = 深度学习 + 强化学习。
强化学习的过程,agent与环境交互,做出决策,获得奖励。极大化期望的累计奖励 (expected cumulative reward)
但在这个过程里面,它的奖励被延迟了,现在采取的某一步决策可能要时间很久后才知道这一步产生了什么样的影响,所以,采取的动作要有长期的影响,让 agent获得更多的长期奖励。
在跟环境的交互过程中,agent 会获得很多观测。在每一个观测会采取一个动作,它也会得到一个奖励。所以历史Ht是观测(observation)、行为、奖励的序列:
H t = O 1 , R 1 , A 1 , … , A t − 1 , O t , R t H t =O 1 ,R 1 ,A 1 ,…,A t−1 ,O t ,R t Ht=O1,R1,A1,…,At−1,Ot,Rt
Agent 在采取当前动作的时候会依赖于它之前得到的这个历史,所以你可以把整个游戏的状态看成关于这个历史的函数:
S t = f ( H t ) S t =f(H t ) St=f(Ht)
状态和观测有什么关系?状态s(state)
是对世界的完整描述,不会隐藏世界的信息。观测o(observation)
是对状态s的部分描述,可能会遗漏一些信息。
环境有自己的函数$ S_{t}{e}=f{e}\left(H_{t}\right) 来 更 新 状 态 , 在 a g e n t 的 内 部 也 有 一 个 函 数 来更新状态,在 agent 的内部也有一个函数 来更新状态,在agent的内部也有一个函数 S_{t}{a}=f{a}\left(H_{t}\right)$来更新状态。当 agent 的状态跟环境的状态等价的时候,我们就说这个环境是 full observability
,就是全部可以观测。换句话说,当 agent 能够观察到环境的所有状态时,我们称这个环境是完全可观测的(fully observed)
。在这种情况下面,强化学习通常被建模成一个 马尔可夫决策问题Markov decision process(MDP)的问题。在 MDP 中, $ O_{t}=S_{t}{e}=S_{t}{a}$
当 agent 只能看到部分的观测,我们就称这个环境是部分可观测的(partially observed)
。在这种情况下面,强化学习通常被建模成一个 部分可观测马尔可夫决策过程(Partially Observable Markov Decision Processes, POMDP)的问题。智能体无法感知环境的状态s,只能知道部分观测值 o。比如在自动驾驶中,智能体只能感知传感器采集的有限的环境信息。POMDP 可以用一个 7 元组描述:(S,A,T,R,Ω,O,γ),其中 S表示状态空间,为隐变量,AA 为动作空间,T(s′∣s,a) 为状态转移概率,R为奖励函数,Ω(o∣s,a) 为观测概率,O为观测空间,γ 为折扣系数。
动作空间action space 连续or离散
强化学习agent组成:
策略函数(policy function):agent用这个函数选取下一步动作。
Policy 是 agent 的行为模型,它决定了这个 agent 的行为,它其实是一个函数,把输入的状态变成行为。
一种是stochastic policy(随机性策略)
它是π 函数 π ( a ∣ s ) = P [ A t = a ∣ S t = s ] π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a | s)=P\left[A_{t}=a | S_{t}=s\right]π(a∣s)=P[At=a∣St=s] π(a∣s)=P[At=a∣St=s]π(a∣s)=P[At=a∣St=s] 。当输入一个状态 s 的时候,输出是一个概率。这个概率就是你所有行为的一个概率,然后进一步对这个概率分布进行采样,采取的行为。比如说这个概率可能是有 70% 的概率往左,30% 的概率往右,那么你通过采样就可以得到一个 action。
deterministic policy(确定性策略)
,能只是采取它的极大化,采取最有可能的动作,即 a ∗ = arg max a π ( a ∣ s ) a^{*}=\arg \underset{a}{\max} \pi(a \mid s) a∗=argamaxπ(a∣s) 你现在这个概率就是事先决定好的。价值函数(value function):对当前状态估价,进入现在这个状态,可以对你后面的收益带来多大的影响。
模型(model):agent 对这个环境的状态进行了理解。
根据 agent 学习的东西不同,我们可以把 agent 进行归类。
基于价值、基于策略
基于价值迭代
的强化学习方法中,智能体不需要制定显式的策略,它维护一个价值表格或价值函数
,并通过这个价值表格或价值函数来选取价值最大的动作。
在基于策略迭代
的强化学习方法中,智能体会制定一套动作策略
(确定在给定状态下需要采取何种动作),并根据这个策略进行操作。强化学习算法直接对策略进行优化,使制定的策略能够获得最大的奖励。
通过 agent 到底有没有学习这个环境模型来分类。
有模型、免模型
Learning and Planning 序列决策的两个基本问题。
在强化学习中,环境初始时是未知的,agent 不知道环境如何工作,agent 通过不断地与环境交互,逐渐改进策略。
在 plannning 中,环境是已知的,我们被告知了整个环境的运作规则的详细信息
Exploration and Exploitation探索和利用
探索是说我们怎么去探索这个环境,通过尝试不同的行为来得到一个最佳的策略,得到最大奖励的策略。
利用是说我们不去尝试新的东西,就采取已知的可以得到很大奖励的行为
探索就是在试错来理解采取的这个行为到底可不可以得到好的奖励。利用是说我们直接采取已知的可以得到很好奖励的行为。