AlphaGo的示例:
在大多数情况下reward都是0,这个过程中机器需要做的一个事情就是通过调整模型,学习在什么状态下应该采取什么行动可以使得期望reward取得一个最大值。
AlphaGo的实际操作过程是令两个机器做对手下棋来进行学习。
2.用马尔可夫决策过程(MDP) 的描述方式:
机器处于环境E中,状态空间为X,其中每个状态x∈X是机器感知到的环境的描述;机器能采取的动作构成动作空间A,若某个动作a∈A作用在当前状态x上,则潜在的转移函数P使得环境从当前状态按某种概率转移到另一个状态;在转移到另一个状态的同时,环境会根据潜在的“奖赏”函数R反馈给机器一个奖赏。
综合起来对应一个四元组:E=
主要是表示机器和环境交互的整个过程
eg:给西瓜浇水问题的MDP:
MDP本质:
设系统在某任意时刻t的状态为s,则机器在t时刻执行动作a后使状态转变为下一状态s’的概况P(s’|s,a),以及获得的瞬时奖赏值r(s,a)都仅仅依赖于当前状态s和选择的动作a,而与历史状态和历史动作无关,即“将来”与“现在”有关,而与“过去”无关。
3.机器与环境:
(机器只能做出行动、接受结果,不能决定行动对应啥结果) 在环境中状态的转移、奖赏的返回是不受机器控制的;机器只能通过选择要执行的动作来影响环境,只能通过观察转移后的状态和返回的奖赏来感知环境。
机器的任务:在环境中不断尝试学得策略 π \pi π(用函数或者概率表示),这个决策使得在某状态下就能得知要执行的动作。
关于策略:
策略的优劣标准:长期执行后得到的累计奖赏。计算方式:
4.强化学习任务:
找到能使长期累积奖赏最大化的策略。
total reward期望值的计算:
τ \tau τ是一次执行的序列(过程),把每一步的奖赏加起来就是 R ( τ ) R(\tau) R(τ),我们希望的就是这个玩意儿的期望值可以最大,在参数 θ \theta θ下所求的期望值等于每一个过程发生的概率与该过程的总奖赏的乘积。
我们不可能罗列某策略下所有的可能序列,因此实质上是在该策略下进行N次,获得N个过程,对这N个过程的总奖赏求平均。
5.强化学习与监督学习
6.强化学习面临的困难
一是奖赏存在延迟,也就是主体动作存在潜在的影响未来奖赏的可能,不止影响立即得到的奖励,而且影响接下来的动作和最终的奖励,但是现在看不出来;另一方面机器的动作会影响它接收到的后面的数据信息,比如有些东西是它没探索过的,就无法获知这种情形下会有什么奖赏
7.强化学习方法分类
基于策略的方法学习的是采取何种行动,希望学得策略,以状态为输入,然后以动作为输出,奖赏用来帮助选择最优的一个function.
基于值的方法学的是批评,评价现在的行为有多好或者有多不好,而不学习采取什么行动。
除了这种分类方式,其实还有其他的分类方式:比如可以分为有模型学习方法和免模型学习方法
考虑最大化单步奖赏(也可以认为是在选择有价值的数据的方式)
事实上,面临“探索-利用”窘境。搜索新动作(试错)可以带来长期的性能改善,帮助收敛到最优策略,但是探索多了有可能找到差的动作;利用(强化)可以帮助系统短期性能改善,但可能收敛到次优解,但是探索少了有可能错过好的动作。
所以欲累积奖赏最大,必须在两者之间达成较好折中。
1. ϵ \epsilon ϵ-贪心
基于一个概率来对探索和利用进行折中:
每次尝试时,以 ϵ \epsilon ϵ的概率进行探索(以均匀概率随机选取一个摇臂);以 1 − ϵ 1-\epsilon 1−ϵ的概率进行利用(选择当前平均奖赏最高的摇臂。摇臂奖赏不确定性较大时,需要更多的探索,则需要较大的 ϵ \epsilon ϵ值;反之需要的 ϵ \epsilon ϵ值较小。(可以令 ϵ = 1 / t \epsilon=1/\sqrt{t} ϵ=1/t)
尝试n次,得到奖赏 v 1 , . . . , v n , v_1,...,v_n, v1,...,vn,摇臂k的平均奖赏: Q ( k ) = 1 n ∑ i = 1 n v i Q(k)=\frac{1}{n}\sum_{i=1}^{n}v_i Q(k)=n1i=1∑nvi
第n次更新: Q n ( k ) = 1 n ( ( n − 1 ) × Q n − 1 ( k ) + v n ) = Q n − 1 ( k ) + 1 n ( v n − Q n − 1 ( k ) ) Q_n(k)=\frac{1}{n}((n-1)×Q_{n-1}(k)+v_n)=Q_{n-1}(k)+\frac{1}{n}(v_n-Q_{n-1}(k)) Qn(k)=n1((n−1)×Qn−1(k)+vn)=Qn−1(k)+n1(vn−Qn−1(k))(这样只需要记录次数和最近平均奖赏)
算法描述:
2.Softmax
基于当前已知的摇臂平均奖赏来进行折中:
平均奖赏相当则被选取概率也相当,平均奖赏高的摇臂被选取概率也更高。
摇臂概率分配基于Boltzmann分布:
其中 τ \tau τ越小则平均奖赏高的摇臂被选取的概率越高 ( τ \tau τ越小,那么俩个不同的Q值使得P值相差越大) τ \tau τ趋于0是算法趋于“仅利用”,趋于无穷大时算法趋于“仅探索”。
考虑多步强化学习任务,假定模型已知。(机器已对环境进行了建模,能在机器内部模拟出与环境相同或近似的状况,此时 P x → x ′ a P_{x→x'}^a Px→x′a和 R x → x ′ a R_{x→x'}^a Rx→x′a已知)
1.策略评估 (基于值的方法)
在给出的一个策略 π \pi π基础上,对策略 π \pi π估计它带来的期望累积奖赏。
状态值函数与Q函数的关系:对Q函数进行边缘概率求和得到V函数(结合一个图感受一下):
对于最上面那个状态,会有一个动作的概率分布,动作确定后就会得到一个Q函数
贝尔曼方程
主要定义当前状态和外来状态之间的一个关联。
根据马尔可夫性质(系统下一时刻的状态仅由当前时刻状态决定),状态值函数的递归形式:
算法描述:
对于 V γ π V_\gamma^\pi Vγπ,由于 γ t \gamma^t γt在t很大时趋于0,因此也能使用类似算法,将(16.7)换成(16.8)即可。
算法迭代的停止准则:可以设一个阈值 θ \theta θ,然后把第四行条件替换为:
有了状态值函数V后,可直接计算出状态-动作值函数:
2.策略改进
理想的策略应能最大化累积奖赏: π ∗ = arg max π ∑ x ∈ X V π ( x ) \pi^*=\operatorname{arg\,max}_\pi\sum_{x∈X}V^\pi(x) π∗=argmaxπx∈X∑Vπ(x) (对所有的初始状态经过策略 π \pi π后计算累计奖赏,然后把它们加起来)
最优值函数:最优策略对应的值函数
最优Bellman等式:
这一块前面提到的递归式相当于是考虑了每个可能的动作带来的累计奖赏,对每个求出来的值乘了该动作发生的概率;最优值函数里面则是直接选择了令 V T ∗ ( x ) V_T^*(x) VT∗(x)最大的那个动作。
最优Bellman等式揭示了非最优策略的改进方式:将策略选择的动作改变为当前最优的动作。
3.策略迭代与值迭代(在MDP中的方法)
动态规划方法:把一个复杂的问题变为相对简单的一些子问题,再利用保存解决这些子问题得到结果来减少运算复杂度。
强化学习中的动态规划:
获取最优策略:
策略迭代:不断迭代进行策略评估和改进,直到策略收敛、不再改变为止。
基于T步累积奖赏的策略迭代算法 算法描述:
基于T步累积奖赏的值迭代算法算法描述:
学习算法不依赖于环境建模。
1.蒙特卡罗强化学习
是一种模型无关的,解决基于平均样本回报的强化学习问题的学习方法。
策略评估替代方法:多次“采样”,然后求取平均累积奖赏作为期望累积奖赏的近似。
在模型未知的情形下,从起始状态出发,使用某种策略进行采样,执行该策略T步并获得轨迹 < x 0 , a 0 , r 1 , x 1 , a 1 , r 2 , . . . , x T − 1 , a T − 1 , r T , x T >
估计状态值函数:
2.TD
可以看成是MC和DP算法的一个折中算法。
Sarsa
推导TD目标:
γ \gamma γ折扣累积奖赏: U t π = R t + γ R t + 1 + γ 2 R t + 2 + . . . U^\pi_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+... Utπ=Rt+γRt+1+γ2Rt+2+...
提出一个 γ \gamma γ 之后: U t π = R t + γ ( R t + 1 + γ R t + 2 + . . . ) = R t + γ U t + 1 π U^\pi_t=R_t+\gamma( R_{t+1}+\gamma R_{t+2}+...)=R_t+\gamma U^\pi_{t+1} Utπ=Rt+γ(Rt+1+γRt+2+...)=Rt+γUt+1π假设 r t r_t rt依赖于t时刻的状态、动作、下一时刻的状态:( S t , A t , S t + 1 S_t,A_t,S_{t+1} St,At,St+1)
Q π ( s t , a t ) = E [ U t π ∣ s t , a t ] = E [ R t + γ U t + 1 π ∣ s t , a t ] Q^\pi(s_t,a_t)=E[U^\pi_t|s_t,a_t]=E[R_t+\gamma U^\pi_{t+1}|s_t,a_t] Qπ(st,at)=E[Utπ∣st,at]=E[Rt+γUt+1π∣st,at]
把两项期望分解开来: Q π ( s t , a t ) = E [ R t ∣ s t , a t ] + γ E [ U t + 1 π ∣ s t , a t ] Q^\pi(s_t,a_t)=E[R_t|s_t,a_t]+\gamma E[U^\pi_{t+1}|s_t,a_t] Qπ(st,at)=E[Rt∣st,at]+γE[Ut+1π∣st,at]而 E [ U t + 1 π ∣ s t , a t ] = E [ Q π ( S t + 1 , A t + 1 ) ∣ s t , a t ] E[U^\pi_{t+1}|s_t,a_t]=E[Q^\pi(S_{t+1},A_{t+1})|s_t,a_t] E[Ut+1π∣st,at]=E[Qπ(St+1,At+1)∣st,at]
所以可以写成 Q π ( s t , a t ) = E [ R t + γ Q π ( S t + 1 , A t + 1 ) ] Q^\pi(s_t,a_t)=E[R_t+\gamma Q^\pi(S_{t+1},A_{t+1})] Qπ(st,at)=E[Rt+γQπ(St+1,At+1)]直接求期望很困难,所以对期望做蒙特卡洛近似:把 R t R_t Rt近似为观测到的奖励 r t r_t rt,用观测到的 s t + 1 和 a t + 1 s_{t+1}和a_{t+1} st+1和at+1代替随机变量 S t + 1 和 A t + 1 S_{t+1}和A_{t+1} St+1和At+1
TD 目标: y t = r t + γ Q π ( s t + 1 , a t + 1 ) y_t=r_t+\gamma Q^\pi(s_{t+1},a_{t+1}) yt=rt+γQπ(st+1,at+1)TD学习是希望 Q π ( s t , a t ) 更 接 近 y t Q^\pi(s_t,a_t)更接近y_t Qπ(st,at)更接近yt
Q-learning:
用来学习最优状态-动作值函数 Q ∗ ( s , a ) Q^*(s,a) Q∗(s,a)
推导TD目标:
大体思路:
训练
实施
【1】西瓜书
【2】李宏毅强化学习系列网课
【3】https://www.bilibili.com/video/BV1Qt411j7e6?p=2
【4】https://www.bilibili.com/video/BV1rv41167yx?p=5
(以上是一些主要的资源与网课链接,侵权删减)