56、强化学习基础框架解析

强化学习基础框架解析

1. 多臂老虎机的上限估计

在评估多臂老虎机时,我们可以将测试第 $i$ 个老虎机的上限 $U_i$ 视为期望奖励 $Q_i$ 与单侧置信区间长度 $C_i$ 之和,即:
$U_i = Q_i + C_i$

$C_i$ 的值就像是赌徒对该老虎机不确定性增加的一种奖励。$C_i$ 与到目前为止尝试的平均奖励的标准差成正比。根据中心极限定理,在独立同分布(i.i.d.)假设下,这个标准差与老虎机 $i$ 被尝试的次数的平方根成反比。我们可以估计第 $i$ 个老虎机的均值 $\mu_i$ 和标准差 $\sigma_i$,然后将 $C_i$ 设置为 $K \cdot \sigma_i / \sqrt{n_i}$,其中 $n_i$ 是第 $i$ 个老虎机被尝试的次数,$K$ 决定了置信区间的水平。

因此,很少被测试的老虎机往往会有更大的上限(因为置信区间 $C_i$ 更大),从而会更频繁地被尝试。与 $\epsilon$-贪心算法不同,这种方法不再将试验分为探索和利用两类;选择上限最大的老虎机的过程在每次试验中都同时包含了探索和利用的双重效果。我们可以通过使用特定的统计置信水平来调节探索和利用之间的权衡。例如,在高斯假设下,选择 $K = 3$ 会得到一个 99.99% 的上限置信区间。一般来说,增加 $K$ 会为不确定性提供更大的奖励 $C_i$,从而使探索在游戏中所占的比例比 $K$ 值较小的算法更大。

2. 强化学习的基本框架

之前提到的多臂老虎机算法是无状态的。也就是说,每个时间戳做出的决策所处的环境是相同的,过去的行动只影响智能体的知识,而不影响环境本身。但在像视频游戏或自动驾驶汽车这样的通用强化学习场景中,情况并非如此,这些场景存在状态的概念。

在通用强化学习场景中,每个动作与奖励的关联并非孤立的。以玩视频游戏为例,你不会仅仅因为做出了某个特定的动作就获得奖励。一个动作的奖励取决于你过去做出的所有其他动作,这些动作都包含在环境的状态中。在视频游戏或自动驾驶汽车中,我们需要一种不同的方式来在特定系统状态下进行功劳分配。例如,在自动驾驶汽车中,在正常状态下猛烈转向汽车的奖励与在表明有碰撞危险的状态下执行相同动作的奖励是不同的。换句话说,我们需要一种方法来量化每个动作在特定系统状态下的奖励。

在强化学习中,有一个智能体通过动作与环境进行交互。例如,在视频游戏中,玩家就是智能体,在视频游戏中向某个方向移动操纵杆就是一个动作。环境则是视频游戏的整个设置。这些动作会改变环境并导致一个新的状态。在视频游戏中,状态代表了描述玩家在特定时刻当前位置的所有变量。环境会根据学习应用的目标实现情况给予智能体奖励。例如,在视频游戏中得分就是一种奖励。需要注意的是,奖励有时可能并不直接与某个特定动作相关,而是与一段时间前采取的一系列动作的组合相关。此外,在特定状态下,一个动作的奖励本身可能也不是确定的(例如,拉动老虎机的杠杆)。强化学习的主要目标之一是识别不同状态下动作的内在价值,而不考虑奖励的时间和随机性。

2.1 智能体与环境的交互流程

智能体与环境的交互流程如下:
1. 智能体(如老鼠)从状态 $s_t$ 采取动作 $a_t$(如在迷宫中左转)。
2. 环境给予智能体奖励 $r_t$(如奶酪或没有奶酪)。
3. 智能体的状态变为 $s_{t + 1}$。
4. 智能体(如老鼠的神经元)根据动作是否获得奖励来更新突触权重。

总体而言,智能体随着时间的推移学习采取对状态敏感的动作以获得奖励。这个过程可以用以下 mermaid 流程图表示:

graph LR
    A[智能体] -->|动作 $a_t$| B[环境]
    B -->|奖励 $r_t$| A
    B -->|状态转换| C(新状态 $s_{t+1}$)
    A -->|根据奖励更新| D(突触权重)

2.2 马尔可夫决策过程

所有的状态、动作以及从一个状态转换到另一个状态的规则被称为马尔可夫决策过程。马尔可夫决策过程的主要特性是,在任何特定时间戳的状态编码了环境进行状态转换和根据智能体动作分配奖励所需的所有信息。

有限马尔可夫决策过程(如井字棋)会在有限的步骤内终止,这被称为一个回合。这个过程的一个特定回合是一个有限的动作、状态和奖励序列。例如,长度为 $(n + 1)$ 的序列如下:
$s_0 a_0 r_0 s_1 a_1 r_1 \cdots s_t a_t r_t \cdots s_n a_n r_n$

需要注意的是,$s_t$ 是执行动作 $a_t$ 之前的状态,执行动作 $a_t$ 会导致奖励 $r_t$ 并转换到状态 $s_{t + 1}$。无限马尔可夫决策过程(如持续工作的机器人)没有有限长度的回合,被称为非回合制。

2.3 实际应用中的状态近似

虽然系统状态指的是对环境的完整描述,但在实际中通常会进行许多近似。例如,在雅达利视频游戏中,系统状态可能由固定长度的游戏快照窗口来定义。以下是一些具体的例子:
|应用场景|状态定义|动作定义|奖励定义|
| ---- | ---- | ---- | ---- |
|井字棋、国际象棋或围棋|任何时刻棋盘的位置|智能体做出的移动|游戏结束时根据胜负平分别为 +1、0 或 -1|
|机器人运动|机器人关节的当前配置和位置|施加到机器人关节的扭矩|每个时间戳的奖励是机器人是否保持直立以及从点 A 到点 B 的前进距离的函数|
|自动驾驶汽车|汽车的传感器输入|转向、加速和制动选择|奖励是汽车进展和安全性的手工函数|

通常需要花费一些精力来定义状态表示和相应的奖励。然而,一旦做出了这些选择,强化学习框架就是端到端的系统。

3. 强化学习的挑战

强化学习比传统的监督学习形式更具挑战性,主要原因如下:
1. 功劳分配问题 :当获得奖励(例如赢得一盘国际象棋)时,我们并不确切知道每个动作对该奖励的贡献有多大。这是强化学习的核心问题,被称为功劳分配问题。此外,奖励可能是概率性的(例如,拉动老虎机的杠杆),只能通过数据驱动的方式进行近似估计。
2. 模型泛化问题 :强化学习系统可能有非常多的状态(如棋盘游戏中可能的位置数量),并且必须能够在未见过的状态下做出明智的决策。模型泛化是深度学习的主要功能。
3. 探索与利用的权衡 :特定的动作选择会影响未来动作的数据收集。就像多臂老虎机一样,在探索和利用之间存在自然的权衡。如果仅仅为了学习动作的奖励而采取行动,那么会给玩家带来成本。另一方面,只坚持已知的动作可能会导致次优决策。
4. 数据收集问题 :强化学习将数据收集和学习的概念融合在一起。对大型物理系统(如机器人和自动驾驶汽车)进行现实模拟受到实际执行这些任务和在存在失败风险的情况下收集动作响应的限制。在许多情况下,任务学习的早期阶段可能成功少而失败多。在模拟和以游戏为中心的环境之外的现实环境中无法收集足够的数据,这可以说是强化学习面临的最大挑战。

4. 井字棋的简单强化学习算法

可以将之前无状态的 $\epsilon$-贪心算法进行扩展,用于学习玩井字棋。在这种情况下,每个棋盘位置就是一个状态,动作对应于在有效位置放置 “X” 或 “O”。3×3 棋盘的有效状态数量上限为 $3^9 = 19683$,这是因为每个位置有三种可能性(“X”、“O” 和空白)。

与多臂老虎机中估计每个(无状态)动作的值不同,现在我们根据动作 $a$ 在状态 $s$ 下与固定对手的历史表现来估计每个状态 - 动作对 $(s, a)$ 的值。对于较短的胜利,我们使用折扣因子 $\gamma < 1$ 进行偏好处理。因此,在胜利的情况下,状态 $s$ 中动作 $a$ 的未归一化值会增加 $\gamma^{r - 1}$;在失败的情况下,会减少 $\gamma^{r - 1}$,其中 $r$ 是包括当前移动在内的移动次数。平局记为 0。折扣也反映了在现实世界中,动作的重要性会随着时间衰减的事实。

在这种情况下,表格仅在一局游戏的所有移动完成后才更新(尽管后续方法允许在每次移动后进行在线更新)。表格中动作的归一化值是通过将未归一化值除以状态 - 动作对被更新的次数(单独维护)来获得的。表格初始化为小的随机值,状态 $s$ 中的动作 $a$ 以 $1 - \epsilon$ 的概率贪婪地选择为具有最高归一化值的动作,否则选择为随机动作。每局游戏结束后,会对所有移动进行功劳分配。随着时间的推移,所有状态 - 动作对的值都会被学习到,并且由此产生的移动也会适应固定对手的玩法。此外,甚至可以使用自我对弈来最优地生成这些表格。当使用自我对弈时,表格会根据玩家的胜负平情况从 ${-\gamma^r, 0, \gamma^r}$ 中更新值。在推理时,会从玩家的角度选择具有最高归一化值的移动。

具体操作步骤如下:
1. 初始化状态 - 动作对表格,赋予小的随机值,并初始化每个状态 - 动作对的更新次数为 0。
2. 开始一局游戏,根据 $\epsilon$-贪心策略选择动作。
- 以 $1 - \epsilon$ 的概率选择具有最高归一化值的动作。
- 以 $\epsilon$ 的概率随机选择动作。
3. 完成一局游戏后,根据游戏结果(胜、平、负)和移动次数 $r$ 更新状态 - 动作对的未归一化值:
- 胜利:未归一化值增加 $\gamma^{r - 1}$。
- 失败:未归一化值减少 $\gamma^{r - 1}$。
- 平局:未归一化值不变。
4. 更新每个状态 - 动作对的更新次数。
5. 计算状态 - 动作对的归一化值,即未归一化值除以更新次数。
6. 重复步骤 2 - 5,进行多局游戏,直到达到满意的学习效果。

5. 深度学习的作用及一个简单算法示例

5.1 传统方法的局限性

上述井字棋算法没有使用神经网络或深度学习,许多传统的强化学习算法也是如此。$\epsilon$-贪心算法的总体目标是学习每个状态 - 动作对的内在长期价值,因为奖励通常在有价值的动作执行很久之后才会收到。训练过程的目标是执行价值发现任务,即确定在特定状态下哪些动作从长远来看真正有益。

然而,这种方法的主要问题是,在许多强化学习场景中,状态的数量太多,无法明确地制表。例如,国际象棋中可能的状态数量非常大,人类已知的所有位置集合只是有效位置的极小一部分。实际上,前面提到的算法是一种改进的死记硬背学习形式,其中使用蒙特卡罗模拟来细化和记住已见过状态的长期价值。在井字棋中,只有当之前的蒙特卡罗模拟多次从那个确切的棋盘位置获得胜利时,我们才会了解到一个陷阱的价值。在像国际象棋这样的大多数具有挑战性的场景中,我们必须将从先前经验中学到的知识推广到学习者未见过的状态。所有形式的学习(包括强化学习)在将已知经验推广到未知情况时才最有用。在这种情况下,以表格为中心的强化学习形式是远远不够的。

5.2 深度学习的作用

深度学习模型充当函数逼近器。我们不是通过基于奖励的试错来学习和制表所有位置的所有移动的值,而是基于使用先前位置结果训练的模型,将每个移动的值学习为输入状态的函数。没有这种方法,强化学习就无法应用于像井字棋这样的玩具场景之外。

5.3 一个简单的国际象棋算法示例

一个简单(但不是很好)的国际象棋算法可能会使用前面提到的 $\epsilon$-贪心算法,但动作的值是通过将棋盘状态作为输入传递给卷积神经网络来计算的。网络的输出是对棋盘位置的评估。使用输出值模拟 $\epsilon$-贪心算法直到结束,并根据胜负平情况和游戏完成的移动次数 $r$ 从集合 ${\gamma^{r - 1}, 0, -\gamma^{r - 1}}$ 中选择模拟中每个移动的折扣真实值。

具体操作步骤如下:
1. 初始化卷积神经网络的参数。
2. 开始一局游戏,根据 $\epsilon$-贪心策略选择动作:
- 以 $1 - \epsilon$ 的概率选择神经网络输出评估值最高的动作。
- 以 $\epsilon$ 的概率随机选择动作。
3. 完成一局游戏后,根据游戏结果(胜、平、负)和移动次数 $r$ 确定每个移动的折扣真实值。
4. 将每个移动的棋盘位置作为输入,将神经网络的输出与折扣真实值进行比较,使用反向传播更新神经网络的参数。
5. 重复步骤 2 - 4,进行多局游戏,直到神经网络收敛或达到满意的性能。

在推理时,可以使用具有最佳输出分数(结合一些极小极大前瞻)的移动。

5.4 深度学习在实际中的优势

虽然上述方法比较简单,但像 Alpha Zero 这样使用蒙特卡罗树搜索的复杂系统已经成功地用于训练玩国际象棋。例如,在与传统国际象棋程序 Stockfish 的比赛中,Alpha Zero 能够做出一些策略性的精明移动,即使它可能在训练期间从未遇到过这些特定的位置。其深度学习模型能够从其他棋盘位置的先前试错经验中提取相关特征和模式。在现实生活中,状态通常使用感官输入来描述,深度学习模型可以使用状态的输入表示来学习特定动作的价值,而不是依赖于状态 - 动作对的表格。即使状态的输入表示(如像素)非常原始,神经网络也擅长提取相关信息。深度学习范式将巨大的状态 - 动作值表格转换为一个参数化模型,将状态 - 动作对映射到值,这个模型可以通过反向传播轻松训练。

综上所述,强化学习是一个充满挑战但又极具潜力的领域。尽管面临着功劳分配、模型泛化、探索与利用权衡以及数据收集等诸多挑战,但通过结合深度学习等技术,我们可以在复杂的场景中取得更好的效果。无论是在游戏领域还是在现实世界的应用中,强化学习都有着广阔的发展前景。

下面是一个简单的 mermaid 流程图,展示了强化学习中智能体与环境交互以及深度学习训练的整体流程:

graph LR
    A[智能体] -->|动作 $a_t$| B[环境]
    B -->|奖励 $r_t$| A
    B -->|新状态 $s_{t+1}$| A
    A -->|状态 $s_t$、动作 $a_t$| C(深度学习模型)
    C -->|评估值| A
    C -->|根据奖励和评估值更新参数| C

通过这个流程图,我们可以更清晰地看到智能体、环境和深度学习模型之间的交互关系以及训练过程。同时,前面提到的表格和列表也帮助我们更有条理地梳理了强化学习的相关概念和操作步骤。

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值