修改公司网站,南充建设公司网站,青岛自媒体公司排名,wordpress 优质插件在这篇文章中#xff0c;我将介绍与强化学习有关的一些东西#xff0c;具体包括相关概念、k-摇臂机、强化学习的种类等。
一、基本概念
所谓强化学习就是去学习#xff1a;做什么才能使得数值化的收益信号最大化。学习者不会被告知应该采取什么动作#xff0c;而是必须通…在这篇文章中我将介绍与强化学习有关的一些东西具体包括相关概念、k-摇臂机、强化学习的种类等。
一、基本概念
所谓强化学习就是去学习做什么才能使得数值化的收益信号最大化。学习者不会被告知应该采取什么动作而是必须通过自己去发现哪些动作会产生最丰厚的收益。
所以我们可以发现强化学习会带来一个独有的挑战即试探与开发之间的折中平衡。也就是说智能体agent必须开发已有的经验来获取收益但于此同时也要进行试探使得未来可以获得更好的动作选择空间。
强化学习也可以通过马尔科夫决策过程MDP来描述即是说机器在环境中每下一次的行动仅与当前状态有关但在之后选择并进行了某一项行动后这个行动会反馈回刚才的决策中。
其中关于MDP我们可以有这样的一个定义
马尔科夫决策过程是一个五元组 S,A,P,R,γ其中
S 表示状态集合
A 表示动作集合
P 是状态转移概率矩阵表示在状态 s 采取动作 aa 后转移到状态 s′ 的概率
R 是奖励函数表示在状态 s 采取动作 a 后得到的即时奖励
γ 是折扣因子用于减少未来奖励的影响。
而MDP中的马尔可夫是指马尔可夫性质即下一状态的概率分布只依赖于当前状态而不依赖于历史状态序列。
我们知道强化学习中存在一个反馈机制当智能体执行某个动作后它会从环境中获得即时奖励并且环境会转移到一个新的状态。这种反馈不是直接改变动作被选择的概率而是通过更新智能体的策略来间接影响未来的动作选择。策略是一个从状态到动作的概率分布智能体学习的策略将决定它在特定状态下选择特定动作的概率。
总节来说就是智能体在执行动作后会收到奖励并转移到新状态但这并不直接改变动作被选择的概率。相反它是通过更新策略来影响未来的决策。
然后是强化学习中其他的一些概念
智能体 (Agent): 是执行动作的学习实体。
环境 (Environment): 是智能体所处的世界它根据智能体的动作给出响应。
状态 (State): 描述了环境的当前情况。强化学习十分依赖状态这一概念它既可以作为策略和价值函数的输入又同时作为模型的输入与输出。
动作 (Action): 智能体可以执行的行为。
奖励 (Reward): 环境对智能体采取的动作给予的反馈用数值表示智能体的目标就是最大化累计奖励。
在这里补充一下一些优化方法如遗传算法、模拟退火算法等方法它们都可以用于解决强化学习的问题而不必显式运用价值函数。它们都采用大量静态策略每个策略在扩展的较长时间与环境的一个独立实例进行交互。这些方法选择获取了最多收益的策略以及其变种来产生下一代的策略然后继续循环更替我们将之称为进化方法因为我们不难发现它们的过程与生物的进化过程十分相似。不过这些进化方法忽视了强化学习问题中的一些有用结构它们忽略了所有策略是状态到动作的函数这一事实同时也没有注意个体在生命周期中都有经历过哪些状态采取了哪些动作。所以尽管进化与学习间有许多的共性并且二者往往是相伴的但我们还是会认为进化方法并不适用于强化学习问题。
二、K-摇臂机
K-摇臂机Multi-Armed Bandit, MAB问题是强化学习中的一个经典问题也是一个简单的强化学习问题它可以帮助我们理解在不确定情况下如何做出最佳决策。
2.1 定义
假设你在一家赌场里面对一台有 k 个摇臂的老虎机每个摇臂都有不同的中奖概率。每次拉其中一个摇臂你都会得到一个奖励通常是金钱。你的目标是在有限次尝试内最大化累计奖励。在这个问题中“摇臂”代表不同的选项“多臂”则指多个选择。
2.2 问题特点
探索与利用Exploration vs. Exploitation这是MAB问题的核心。你需要在探索尝试不同的摇臂以了解它们的平均奖励和利用拉最有可能带来高奖励的摇臂之间找到一个平衡点。
不确定性在开始时你对每个摇臂的期望奖励一无所知必须通过试验来估计每个摇臂的真实期望值。
即时反馈每次拉摇臂后你会立即得到一个奖励这是一个即时反馈问题。
2.3 ε-greedy 策略
我们可以使用价值的估计来进行动作的选择这一类方法统称为“动作-价值”方法。那么一种自然的方式就是通过计算实际收益的平均值来估计动作的价值 所以最简单的一种动作选择方法就是选择具有最高估计值的动作即进行贪心选择。但这时会出现一个问题就是这种贪心选择只顾眼前的收益而可能会失去更大的收益因为它不会选择那些虽然当前是低价值但在未来会去的极高价值的动作。那么我们需要对其改进我们让agent在大部分时间里是贪心的但有时以很小的概率ε会去独立于动作-价值估计值而从所有的动作中等概率随机做出选择而这种方法就是ε-贪心greedy 策略所以可以总结出它的概念为
ε-greedy 策略大部分时间选择当前估计奖励最高的摇臂利用一小部分时间随机选择一个摇臂探索。
我们令Qk记录摇臂k的平均奖赏若摇臂k被尝试了n次得到的奖赏为v1v2v3……vn那么平均奖赏为 此时如果我们直接用该式来计算平均奖赏则需要记录n个平均奖赏值所以为了更加高效我们采用增量式计算即每尝试一次后就立即更新Qk那么这个平均奖赏就应更新为 具体用一个代码举例
import numpy as np
import randomclass MultiArmedBandit:def __init__(self, num_arms, epsilon0.1):self.num_arms num_arms# 初始化每个摇臂的实际平均奖励self.true_rewards np.random.normal(loc0.0, scale1.0, sizenum_arms)# 初始化每个摇臂的经验平均奖励self.estimates np.zeros(num_arms)# 初始化每个摇臂的尝试次数self.attempts np.zeros(num_arms, dtypeint)# 探索与利用的参数self.epsilon epsilondef pull_arm(self, arm):reward np.random.normal(locself.true_rewards[arm], scale1.0)return rewarddef update_estimate(self, arm, reward):# 使用增量式更新公式self.attempts[arm] 1self.estimates[arm] (reward - self.estimates[arm]) / self.attempts[arm]def choose_arm(self):if random.random() self.epsilon:# 探索随机选择一个摇臂return random.randint(0, self.num_arms - 1)else:# 利用选择估计奖励最高的摇臂return np.argmax(self.estimates)# 参数设置
num_arms 10
epsilon 0.1
num_trials 1000# 创建 K-摇臂机对象
bandit MultiArmedBandit(num_arms, epsilon)# 进行多次尝试
for trial in range(num_trials):chosen_arm bandit.choose_arm()reward bandit.pull_arm(chosen_arm)bandit.update_estimate(chosen_arm, reward)# 打印结果
print(True Rewards:, bandit.true_rewards)
print(Estimated Rewards:, bandit.estimates)
print(Attempts per Arm:, bandit.attempts)
其运行结果为
True Rewards: [ 0.05273471 1.40458756 0.32813439 -1.25692634 -0.67451511 -1.97502727-0.60326298 -0.22662436 -0.49297712 0.25822946]
Estimated Rewards: [ 0.54674629 1.45132379 0.18953721 -1.67282471 0.1013343 -2.52797267-1.07719265 0.19331869 -0.47083797 0.14306436]
Attempts per Arm: [ 12 922 11 8 3 6 10 13 5 10]
2.4 乐观初始值
目前我们所讨论的方法都在一定程度上依赖于初始动作值的选择但这样一来它们就是有偏的在统计学的角度来看。不过在实际中这并非是一个问题但它会称为用户需要调整的一个参数。那么这个初始值该如何分配呢可以考虑分配一个较高的初始值以鼓励agent在早期多做尝试以发现真正优秀的动作而这样的一个思路就是乐观初始值的思路。
2.5 置信度上界
在之前的动作-价值的估计总会存在不确定性所以试探的存在是必要的。所以在非贪心动作中最好是根据动作的潜力来选择可能事实上优秀的动作这就要考虑它们的估计值有多接近最大值以及估计这些动作的不确定风性。一个有效的思路就是基于置信度上界的动作选择即按照这个公式 其中平方根项是对 a 动作值估计的不确定性或方差的度量。因此最大值的大小是动作 a 的可能真实值上界而参数 c 决定了置信水平。
2.6 梯度摇臂机算法
现在让我们针对每个动作 a 考虑学习一个数值化的偏好函数。偏好函数越大动作就越频繁地被选择但偏好函数的概念并非从“收益”上提出的。只有一个动作对另一个动作的相对偏好才是重要的那么对于如下的这个softmax分布来说若对于每一个动作的偏好函数都加上1000则不会对动作概率产生任何影响式子如下 其中表示动作 a 在时刻 t 被选择的概率。另外所有偏好函数的初始值都是一样的所以它们被选择的概率是一样的。
2.7 关联搜索
关联搜索任务也叫上下文相关的摇臂机它既涉及采用学习去搜索最优的动作又将这些动作与表现最优时的情景关联在一起。它介于k摇臂机问题与完整的强化学习问题之间。它与完整的强化学习问题相似的点是它需要学习一种策略但它与k摇臂机相似是体现在每个动作只影响即时收益。所以如果允许动作可以影响下一刻的情景与收益那么就是完整的学习问题。
三、分类
如果我们按照有无环境模型来对强化学习去分类的话它可以被分为两类一是有模型的强化学习二是无模型的强化学习。具体地
基于模型的强化学习Model-Based RL在这种设置下智能体尝试构建一个环境的模型然后利用这个模型来预测未来的状态和奖励从而做出决策。这种方法的优点是可以减少与真实环境的交互次数但缺点是模型构建可能会引入误差。
无模型的强化学习Model-Free RL智能体不试图构建环境模型而是直接从与环境的交互中学习。这类方法包括基于价值的方法如Q-Learning、基于策略的方法如Policy Gradients和Actor-Critic方法。
如果我们按照学习目标去分类的话那么强化学习可以分为策略优化与Q-Learning
策略优化Policy Optimization直接优化策略本身使其在长期能够获得更高的累计奖励。
Q-Learning学习动作-价值函数即在给定状态下采取某个动作所能获得的预期未来奖励。
此外还有特殊类型的比如
逆向强化学习Inverse Reinforcement Learning, IRL从观察到的专家行为中学习奖励函数。
层级强化学习Hierarchical Reinforcement Learning, HRL将任务分解成多个子任务每个子任务可以独立学习从而简化整体学习过程。
部分可观测的强化学习Partially Observable Markov Decision Processes, POMDPs当环境不是完全可观测时智能体需要处理不确定性的信息。
此上