关于周志华老师的《机器学习》这本书的学习笔记
记录学习过程
本博客记录Chapter16
强化学习(Reinforcement Learning)是机器学习的重要分支。强化学习是指从环境状态从动作映射的学习,以使动作从环境中获得的累计奖赏值最大。与监督学习不同,监督学习通过正例、反例来训练模型采用何种行为,而强化学习通过探索试错的策略发现最优行为策略。
强化学习的基本结构如下所示:
该模型共包括五个重要组成部分:
针对智能体选择行为的方式,强化学习方法可以分为基于价值的方法和基于概率的方法。基于价值的方法的输出值是下一步要采取的各种动作的价值,根据价值最高的原则选择动作,经常应用于不连续的动作行为,常见的算法包括Q learning,Sarsa算法;基于概率的方法能通过感官分析所处的环境,输出下一步要采取的各种动作的概率,根据概率选择行动,经常应用于连续的动作行为,常见的算法包括Policy Gradients算法等。
与一般监督学习不同,强化学习任务的最终奖赏是在多步动作之后才能观察到,这里我们不妨先考虑比较简单的情形:最大化单步奖赏,即仅考虑一步操作。
欲最大化单步奖赏需考虑两个方面:
若每个动作对应的奖赏是一个确定值,那么尝试一遍所有的动作便能找出奖赏最大的动作。然而,更一般的情形是,一个动作的奖赏值是来自于一个概率分布,仅通过一次尝试并不能确切地获得平均奖赏值。
实际上,单步强化学习任务对应了一个理论模型,即 “K-摇臂赌博机”:K-摇臂赌博机有K个摇臂,赌徒在投入一个硬币后可选择按下其中1个摇臂,每个摇臂以一定的概率吐出硬币。但这个概 率赌徒并不知道。赌徒的目标是通过一定的策略最大化自己的奖赏,即获得最多的硬币。
强化学习所面临的"探索-利用窘境" (ExplorationExploitation dilemma)。 显然,欲累积奖赏最大,则必须在探索与利用之间达成较好的折中。
ϵ \epsilon ϵ-贪心法基于一个概率来对探索和利用进行折中:每次尝试时,以 ϵ \epsilon ϵ的概率进行探索,即以均匀概率随机选取一个摇臂;以 1- ϵ \epsilon ϵ的概率进行利用,即选择当前平均奖赏最高的摇臂(若有多个,则随机选取一个)。
Sotfmax算法基于当前已知的摇臂平均奖赏来对探索和利用进行折中。若各摇臂的平均奖赏相当,则选取各摇臂的概率也相当;若某些摇臂的平均奖赏明显高于其他摇臂,则它们被选取的概率也明显更高。
Sotfmax 算法中摇臂概率的分配是基于Boltzmann 分布:
P ( k ) = e Q ( k ) τ ∑ i = 1 K e Q ( i ) τ P(k)=\frac{e^{\frac{Q(k)}{\tau}}}{\sum_{i=1}^K e^{\frac{Q(i)}{\tau}}} P(k)=∑i=1KeτQ(i)eτQ(k)
其中, Q ( i ) Q(i) Q(i)记录当前摇臂的平均奖赏; τ > 0 \tau>0 τ>0 称为"温度" , τ \tau τ越小则平均奖赏高的摇臂被选取的概率越高; τ \tau τ趋于0时,Softmax 将趋于"仅利用"; τ \tau τ趋于无穷大时,Softmax 则将趋于"仅探索"。
考虑多步强化学习任务,暂且先假定任务对应的马尔可夫决策过程四元组 E = ( X , A , P , R ) E=(X,A,P,R) E=(X,A,P,R) 均为己知。这样的情形称为 “模型已知”,即机器对环境进行了建模,能在机器内部模拟出与环境相同或近似的状况。在己知模型的环境中学习称为"有模型学习" 。
理想的策略为最大化累计奖赏:
π ∗ = arg max π ∑ x ∈ X V π ( x ) \pi^*=\mathop{\arg \max}_\pi \sum_{x\in X}V^{\pi}(x) π∗=argmaxπx∈X∑Vπ(x)
在现实的强化学习任务中,环境的转移概率、奖赏函数往往很难得知,甚至很难知道环境中共有多少状态。若学习算法不依赖于环境建模,则称为 “免模型学习” (model-free learning),这比有模型学习要难得多。
受K摇臂赌博机的启发,一种直接的策略评估替代方法是多次"采样",然后求取平均累积奖赏来作为期望累积奖赏的近似,这称为蒙特卡罗强化学习。由于采样必须为有限次数,因此该方法适合于使用T步累积奖赏的强化学习任务。
时序差分 (Temporal Difference,简称TD) 学习结合了动态规划与蒙特卡罗方法的思想,能做到更高效的免模型学习。
蒙特卡洛方法相当于是“批处理”,实际中可以使用增量方法更新值函数。
现实情况,我们面对的状态空间往往是连续的,有无穷多个状态。一种做法是对状态空间离散化,另一种方法时直接对连续状态空间地值函数来进行学习。
假定状态空间为 n n n维实数空间 X = R n X=\mathbb R^n X=Rn,将值函数表达为状态的线性函数:
V θ ( x ) = θ T x V_\theta(x)=\theta^Tx Vθ(x)=θTx
值函数的求解被称为值函数近似。
利用最小二乘法和梯度下降法,求解得到单个样本的更新规则:
θ = θ + α ( V π ( x ) − V θ ( x ) ) x \theta = \theta+\alpha(V^{\pi}(x)-V_\theta(x))x θ=θ+α(Vπ(x)−Vθ(x))x
假定我们获得了一批人类专家的决策轨迹数据 { τ 1 , τ 2 , ⋯ , τ m } \{\tau_1,\tau_2,\cdots,\tau_m \} {τ1,τ2,⋯,τm}, 每条轨迹包含状态和动作序列
τ i = < s 1 i , α 1 i , s 2 i , α 2 i , ⋯ , s n i + 1 i > \tau_i = \big< s_1^i,\alpha_1^i,s_2^i,\alpha_2^i,\cdots,s_{n_i+1}^i \big> τi=⟨s1i,α1i,s2i,α2i,⋯,sni+1i⟩
其中 τ i \tau_i τi为第 i i i条轨迹中的转移次数。有了这样的数据,就相当于告际机器在什么状态下应选择什么动作,于是可利用监督学习来学得符合人类专家决策轨迹数据的策略。
逆强化学习的基本思想是:欲使机器做出与范例一致的行为,等价于在某个奖赏函数的环境中求解最优策略,该最优策略所产生的轨迹与范例数据一致。换言之,我们要寻找某种奖赏函数使得范例数据是最优的,然后即可使用这个奖赏函数来训练强化学习策略。