周志华-机器学习-笔记(五)- 强化学习

本文围绕强化学习展开,介绍其用马尔可夫决策过程描述及相关四元组。以西瓜浇水为例说明,机器要学得使长期积累奖赏最大化的策略。还阐述了K - 摇臂赌博机的探索与利用窘境,以及ϵ - 贪心、Softmax算法,最后提及有模型学习下的策略评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 #### 任务与奖赏 ####

  “强化学习”(reinforcement learning)可以讲述为在任务过程中不断摸索,然后总结出较好的完成任务策略。
  强化学习任务通常用马尔可夫决策过程(Markov Decision Process,简称MDP)来描述:机器处于环境EE中,状态空间为X,其中每个状态xXx∈X是机器感知到的环境的描述;机器能采取的动作构成了动作空间AA;若某个动作aA作用在当前状态xx上,则潜在的转移函数P将使得环境从当前状态按某种概率转移到另一个状态;在转移到另一个状态的同时,环境会根据潜在的“奖赏”(reward)函数RR反馈给机器一个奖赏;综合起来,强化学习任务对应了四元组E=<X,A,P,R>,其中P:X×A×XRP:X×A×X→R指定了状态转移概率,R:X×A×XRR:X×A×X→R指定了奖赏;在有的应用中,奖赏函数可能仅与状态转移有关,即R:X×XRR:X×X→R
这里写图片描述
  图16.2给出了西瓜浇水的马尔可夫决策过程。该任务中只有四个状态(健康、缺水、溢水、凋亡)和两个动作(浇水、不浇水),在每一步转移后,若状态是保持瓜苗健康则获得奖赏11,瓜苗缺水或溢水奖赏为1,当瓜苗凋亡时奖赏是最小值100−100。箭头代表状态转移,箭头旁的a,p,ra,p,r分别代表导致状态转移的动作、转移概率以及返回的奖赏。
  机器要做的是通过在环境中不断地尝试而学得一个“策略”(policy)ππ,根据这个策略,在状态xx下就能得知要执行的动作a=π(x)。策略有两种表示方法:一种是将策略表示为函数π:XAπ:X→A,确定性策略常用这种表示;另一种是概率表示π:X×ARπ:X×A→R,随机性策略常用这种表示,π(x,a)π(x,a)为状态xx下选择动作a的概率,这里必须有aπ(x,a)=1∑aπ(x,a)=1
  策略的优劣取决于长期执行这一策略后得到的累积奖赏。在强化学习任务中,学习的目的就是要找到能使长期积累奖赏最大化的策略。长期积累奖赏有多种计算方式,常用的有“T步积累奖赏”E[1TTt=1rt]E[1T∑t=1Trt]和“r折扣累积奖赏”E[+t=0γtrt+1]E[∑t=0+∞γtrt+1],其中rtrt表示第tt不获得的奖赏值,E表示对所有随机变量求期望。

K-摇臂赌博机
探索与利用

  我们考虑比较简单的情形:最大化单步奖赏,即仅考虑一步操作。这时需要考虑两个方面:一是需知道每个动作带来的奖赏,二是要执行奖赏最大的动作。
  单步强化学习任务对应了一个理论模型,即“K-摇臂赌博机”(K-armed bandit)。
这里写图片描述
  K-摇臂赌博机和我们常见的老虎机差不多,投入硬币后可选择按下其中一个摇臂,每个摇臂以一定的概率吐出硬币。
  若仅为获知每个摇臂的期望奖赏,则可采用“仅探索”(exploration-only)法:将所有的尝试机会平均分配给每个摇臂(即轮流按下每个摇臂),最后以每个摇臂各自的平均吐币概率作为其奖赏期望的近似估计。
  若仅为执行奖赏最大的动作,则可采用“仅利用”(exploitation-only)法:按下目前最优的(即到目前为止平均奖赏最大)的摇臂,若有多个摇臂同为最优,则随机选择其中一个。
  显然,“仅探索”法能很好地估计每个摇臂的奖赏,却会市区很多选择最优摇臂的机会;“仅利用”法则相反,它没有很好地估计摇臂期望奖赏,很有可能经常选不到最优摇臂。因此,这两种方法都难以使得最终的积累奖赏最大化。
  由于尝试次数是有限的,“探索”和“利用”这两者相互矛盾,加强了一方则会自然消弱另一方,这就是强化学习所面临的“探索-利用窘境”(Exploration-Exploitation dilemma)。欲使积累奖赏最大,则必须在探索与利用之间达成较好的折中。

ϵϵ-贪心

  ϵϵ-贪心法基于一个概率来对探索和利用进行折中:每次尝试时,以ϵϵ的概率进行探索,即以均匀概率随机选取一个摇臂;以1ϵ1−ϵ的概率进行利用,即选择当前平均奖赏最高的摇臂(若有多个,则随机选取一个)。
  令Q(k)Q(k)记录摇臂kk的平均奖赏,若摇臂k被尝试了nn次,得到的奖赏为v1,v2,...,vn。一般,我们对均值进行增量式计算,即每尝试一次就立即更新Q(k)。这样每次尝试仅需记录两个值:已尝试次数n1n−1和最近平均奖赏Qn1(k)Qn−1(k)

Qn(k)=Qn1(k)+1n(vnQn1(k))(16.3)(16.3)Qn(k)=Qn−1(k)+1n(vn−Qn−1(k))

  ϵϵ-贪心算法描述如图16.4所示
这里写图片描述
Q(i)Q(i)count(i)count(i)分别记录摇臂ii的平均奖赏和选中次数。
  若摇臂奖赏的不确定性较大,例如概率分布较宽时,则需更多的探索,此时需要较大的ϵ值;若摇臂的不确定性较小,例如概率分布较集中时,则小量的尝试就能很好地近似真实奖赏,此时需要的ϵϵ较小。
Softmax

  Softmax算法基于当前已知的摇臂平均奖赏来对探索和利用进行折中。若各个摇臂的平均奖赏相当,则选取各摇臂的概率也相当;若某些摇臂的平均奖赏明显高于其他摇臂,则被选取的概率也明显更高。
  Softmax算法中摇臂概率的分配是基于Boltzmann分布:

P(k)=eQ(k)τKi=1eQ(i)τ(16.4)(16.4)P(k)=eQ(k)τ∑i=1KeQ(i)τ
其中,Q(i)Q(i)记录当前摇臂的平均奖赏;τ>0τ>0称为“温度”,ττ越小则平均奖赏高的摇臂被选择的概率越高。ττ趋于00时Softmax将趋于“仅利用”,τ趋于无穷大时Softmax则趋于“仅探索”。
这里写图片描述
有模型学习

  假定任务对应的马尔可夫决策过程四元组E=<X,A,P,R>E=<X,A,P,R>均为已知,这样的情形称为“模型已知”,即机器对环境进行了建模。

策略评估

  在模型已知时,对任意策略ππ能估计出该策略带来的期望积累奖赏。令函数Vπ(x)Vπ(x)表示从状态xx出发,使用策略π所带来的积累奖赏;函数Qπ(x,a)Qπ(x,a)表示从状态xx出发,执行动作a后再使用策略ππ带来的积累奖赏。这里V()V(⋅)称为“状态值函数”(state value function),Q()Q(⋅)称为“状态-动作值函数”(state-action value function),分别代表指定“状态”上以及指定“状态-动作”上的积累奖赏。可以定义状态值函数

{VπT(x)=Eπ[1TTt=1rt|x0=x]TVπγ(x)=Eπ[+t=0γtrt+1|x0=x]γ(16.5)(16.5){VTπ(x)=Eπ[1T∑t=1Trt|x0=x],T步积累奖赏;Vγπ(x)=Eπ[∑t=0+∞γtrt+1|x0=x],γ折扣积累奖赏

  令x0x0表示起始状态,a0a0表示起始状态上采取的第一个动作;对于TT不积累奖赏,用下标t表示后续执行的步数。有状态-动作值函数
{QπT(x,a)=Eπ[1TTt=1rt|x0=x,a0=a];Qπγ(x,a)=Eπ[+t=0γtrt+1|x0=x,a0=a].(16.6)(16.6){QTπ(x,a)=Eπ[1T∑t=1Trt|x0=x,a0=a];Qγπ(x,a)=Eπ[∑t=0+∞γtrt+1|x0=x,a0=a].
### 关于周志华机器学习》(西瓜书)第二章的学习笔记 #### 模型评估与选择概述 模型评估与选择是机器学习领域的重要组成部分,旨在通过合理的方法评价不同模型的表现并挑选最优者。这一过程不仅涉及如何衡量单个模型的好坏,还包括怎样对比多个候选方案以做出最佳决策。 #### 偏差、方差和噪声的概念解析 偏差度量了学习算法的期望预测与实际结果之间的差距,反映了算法自身的拟合精度;方差描述的是相同规模训练集变化引起的学习效果波动情况,体现了数据扰动带来的影响;而噪声则设定了给定任务下所有可能采用的学习方法能达到的最佳预期泛化误差界限,揭示了问题本身固有的复杂性和挑战性[^2]。 #### 性能度量指标——P-R图及其应用 为了更直观地展示各类分类器的工作特性,通常会绘制精确率-召回率(Precision-Recall, P-R)曲线来辅助分析。当面对多组实验结果时,可以通过观察这些图形相互间的位置关系来进行优劣评判:如果某条曲线始终位于另一条之上,则表明前者具有更好的整体表现;而对于那些存在交点的情况,则需进一步计算各自下方区域面积大小作为判断依据之一。此外,“平衡点”作为一种特殊的性能测度,在特定条件下也能提供有价值的参考信息[^3]。 #### 偏差-方差分解理论简介 该理论为理解学习算法的一般化能力提供了框架性的指导思路,通过对平均测试错误率实施拆分操作,可以深入剖析导致过拟合现象背后的原因所在,并据此探索改进措施的方向。具体而言,总误差由三部分构成——不可约减误差点(即噪声)、平方形式表达出来的偏差项以及线性累加而成的方差成分[^4]。 ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.metrics import precision_recall_curve, auc def evaluate_model_performance(model, X, y): """ 计算并返回PR曲线下面积(AUC),用于量化模型的整体性能。 参数: model (object): 已经训练好的分类模型实例。 X (array-like of shape (n_samples, n_features)): 测试特征矩阵。 y (array-like of shape (n_samples,)): 对应的真实标签向量。 返回: float: PR AUC得分。 """ # 划分训练集/验证集 X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2) # 使用训练集拟合模型 model.fit(X_train, y_train) # 获取验证集中各观测对应的概率估计值 probas_pred = model.predict_proba(X_val)[:, 1] # 绘制PR曲线并求得AUC分数 precisions, recalls, _ = precision_recall_curve(y_val, probas_pred) pr_auc_score = auc(recalls, precisions) return pr_auc_score ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值