60、探索L学习算法:从基础到应对不可预测性

探索L学习算法:从基础到应对不可预测性

1. 引言

在学习如何玩Flippers游戏的过程中,我们构建了一个名为L学习(L - Learning)的系统。这里的“L”代表“lousy”(糟糕),因为这个初始版本的算法表现欠佳,但它是我们迈向更优算法的一块垫脚石。

2. 基础设定

2.1 奖励系统

为了简化问题,我们采用了一个非常简单的奖励系统:在Flippers游戏中,除了赢得游戏的最后一步,每一步的即时奖励都为0。由于Flippers是一个简单的游戏,每一局都能获胜。例如,我们可以将起始棋盘上所有显示点的瓷砖翻转,使没有点显示,然后再翻转任意一行或一列的三个瓷砖,就能赢得游戏,且最多不超过12步。

我们的目标不仅是获胜,还要用最少的步数获胜。最后一步的奖励取决于游戏的长度:如果一步就赢得游戏,奖励为1;随着步数增加,最终奖励会迅速下降。

2.2 L表

系统的核心是一个名为L表(L - table)的数字网格。L表的每一行代表棋盘的一种状态,每一列代表针对该棋盘状态可以采取的九种行动之一。每个单元格中的内容是一个单一的数字,称为L值。

L表共有512行(对应棋盘的512种可能配置),每行有9列,总计4608个单元格。我们将使用L表来帮助我们为每个棋盘状态选择奖励最高的行动。在开始为L表赋值之前,我们将每个单元格初始化为0。在游戏过程中,我们会记录每一步的行动,游戏结束后,会为每一步确定一个值,并将其与该单元格中已有的值结合,产生该行动的新值,这个结合新旧值的方式称为更新规则。

2.3 确定行动得分与更新规则

  • 确定行动得分 :使用总未来奖励(Total Future Reward,TFR)。在游戏过程中,除最后一步外,每一步的即时奖励为0,最后一步的奖励基于游戏长度,因此每一步的TFR都等于最后一步的奖励。
  • 更新规则 :每局游戏结束后,计算出的每个单元格的TFR直接替换该单元格之前的值。

2.4 行动选择策略

当我们面对一个棋盘状态时,会查看L表中对应行的九个条目,通常选择L值最大的行动。如果有多个单元格具有相同的最大值,则随机选择一个。

3. L学习算法流程

3.1 初始化

代理拥有一个512×9的L表,初始时所有单元格的值都为0。

3.2 游戏过程

  • 第一步:代理看到一个棋盘,在L表中找到对应行,由于初始时所有值都为0,随机选择一个行动。
  • 后续步骤:通常选择对应行中L值最大的行动,但有时为了探索会选择其他行动。环境根据选择翻转瓷砖,返回奖励和新的棋盘状态。代理记录每一步的起始棋盘、行动、奖励和结果棋盘,形成一个包含四个值的小捆绑包,并添加到行动列表中。
  • 游戏结束:获得基于游戏步数的最终奖励,游戏结束,开始学习。

3.3 学习过程

  • 计算TFR:查看行动列表中的捆绑包,为每一步计算TFR(由于除最后一步外即时奖励为0,每一步的TFR等于最终奖励)。
  • 更新L表:使用简单更新规则,将每个行动的TFR放入L表中对应单元格,替换之前的值。

3.4 训练与实战

  • 训练:重复上述游戏和学习过程,L表会逐渐填充TFR值。
  • 实战:根据L表选择行动,即找到当前棋盘对应行中L值最大的单元格,选择对应的行动。

4. 算法测试

4.1 3000局训练

我们先进行3000局Flippers游戏的训练,让L表充分填充。训练后进行一局游戏,结果并不理想。存在一个简单的两步解决方案(翻转左中单元格,然后翻转左上单元格),但算法似乎随机游走,最终在六步后才偶然找到解决方案。

4.2 6000局训练

将训练局数增加到6000局后,算法表现明显改善,能够找到简单的解决方案并直接执行。

4.3 算法评价

虽然在训练后算法表现良好,但它仅适用于完全可预测的环境。在现实中,大多数环境是不可预测的,逻辑型单人游戏(如Flippers)是少数完全确定性的活动。一旦环境不是完全确定性的,L学习算法就会陷入困境。

5. 应对不可预测性

5.1 引入随机因素

为了模拟现实中的不可预测性,我们在Flippers游戏中引入一个“大卡车”模型。大卡车偶尔会经过游戏区域,震动棋盘,导致一个或多个瓷砖随机翻转。

5.2 问题产生原因

L学习算法的策略和更新规则的组合导致了问题。在学习开始前,L表每行的初始值都为0。当一局训练游戏获胜时,所有行动根据游戏长度获得相同的分数。当再次遇到相同的棋盘状态时,我们会选择L值最大的行动。

假设在一局训练游戏中,我们看到一个曾经作为起始棋盘并在两步内获胜的棋盘,对应行动的L表值很高,我们选择高分行动准备下一步获胜。但在第一步之后,大卡车经过震动棋盘,导致后续需要很多步才能获胜。这使得该行动的TFR降低,并且这个较小的值会覆盖导致这一长局游戏的每个单元格中的先前值。

5.3 问题示例

  • 无随机事件 :当没有不可预测事件时,算法表现良好。例如,从一个有三个点的棋盘开始,L表对应行中最大的值为0.6,对应翻转中心方块的行动。执行该行动后,如果下一步也选择得当,两步内即可获胜,奖励为0.7,该值会覆盖第一步行动对应单元格中的0.6,巩固了该行动的地位。
  • 有随机事件 :当引入大卡车震动棋盘的随机事件时,情况变得糟糕。例如,翻转中心瓷砖后,大卡车使右下角瓷砖翻转,导致后续需要五步才能获胜,奖励为0.44。这个较小的值会覆盖所有导致这一成功的单元格中的值,使得原本的最佳行动被遗忘,下次遇到该棋盘时会选择更差的行动。

5.4 总结

L学习算法在完全可预测的环境中表现尚可,但在面对不可预测性时会出现问题。后续我们需要探索如何改进该算法以应对现实世界中的不确定性。

表格:L表结构示例

棋盘状态 行动1 行动2 行动3 行动4 行动5 行动6 行动7 行动8 行动9
状态1 0 0 0 0 0 0 0 0 0
状态2 0 0 0 0 0 0 0 0 0
状态512 0 0 0 0 0 0 0 0 0

mermaid流程图:L学习算法流程

graph TD;
    A[初始化L表] --> B[开始游戏];
    B --> C[查看棋盘状态];
    C --> D{选择行动};
    D -- 随机选择 --> E[执行行动];
    D -- 选择L值最大行动 --> E[执行行动];
    E --> F[环境反馈];
    F --> G[记录行动信息];
    G --> H{游戏是否结束};
    H -- 否 --> C;
    H -- 是 --> I[计算TFR];
    I --> J[更新L表];
    J --> K{是否继续学习};
    K -- 是 --> B;
    K -- 否 --> L[使用L表进行游戏];

列表:L学习算法步骤总结

  1. 初始化L表,将所有单元格置为0。
  2. 开始游戏,查看当前棋盘状态。
  3. 根据策略选择行动(初始时随机选择,后续通常选择L值最大的行动)。
  4. 执行行动,环境反馈奖励和新的棋盘状态。
  5. 记录行动信息(起始棋盘、行动、奖励、结果棋盘)。
  6. 判断游戏是否结束,若未结束,返回步骤3;若结束,进入下一步。
  7. 计算每一步的TFR。
  8. 使用更新规则更新L表。
  9. 判断是否继续学习,若继续,返回步骤2;若停止,使用L表进行游戏。

6. 深入分析L学习算法的局限性

6.1 数据更新的单一性

L学习算法的更新规则是每局游戏结束后,直接用计算出的TFR替换单元格之前的值。这种方式没有考虑到历史经验的积累和不同游戏之间的差异。例如,在一次偶然的随机事件影响下,一个原本表现良好的行动可能因为一次较差的结果而被大幅降低L值,且后续很难恢复。这就导致算法缺乏对不同情况的综合判断能力,过于依赖当前游戏的结果。

6.2 缺乏对不确定性的适应机制

在面对不可预测的环境时,L学习算法没有相应的机制来处理随机事件带来的影响。如前面提到的“大卡车”模型,算法无法区分是正常的游戏进展还是随机事件导致的结果变化。当随机事件发生后,算法只是简单地根据新的结果更新L表,而没有考虑到这种变化的偶然性,从而导致最佳行动的丢失。

6.3 对环境变化的敏感性

由于L学习算法是基于确定性环境设计的,它对环境的微小变化非常敏感。一旦环境出现不确定性,算法的表现就会急剧下降。在实际应用中,大多数环境都存在一定的不确定性,这使得L学习算法的适用范围受到了很大的限制。

表格:L学习算法局限性分析

局限性 具体表现 影响
数据更新单一性 直接用TFR替换旧值,不考虑历史经验 易丢失优秀行动,缺乏综合判断能力
缺乏不确定性适应机制 无法区分随机事件和正常游戏进展 最佳行动易被遗忘,算法表现不稳定
对环境变化敏感 环境稍有变化,算法表现急剧下降 适用范围受限

7. 改进思路探讨

7.1 优化更新规则

可以考虑引入一个加权平均的方法来更新L表。例如,在每次更新时,将新计算的TFR和旧的L值按照一定的权重进行加权平均。这样可以避免单一游戏结果对L值的过度影响,使L值更能反映行动的长期表现。公式如下:
新L值 = α × 新TFR + (1 - α) × 旧L值
其中,α 是一个介于0和1之间的权重系数,α 越接近1,新TFR的影响越大;α 越接近0,旧L值的影响越大。

7.2 引入不确定性处理机制

可以为算法添加一个随机事件检测模块,当检测到随机事件发生时,对L表的更新进行特殊处理。例如,在随机事件发生后,不立即更新L表,而是等待一段时间,观察后续的游戏结果,或者对受影响的行动的L值进行微调,而不是大幅降低。

7.3 增加探索与利用的平衡

在行动选择策略上,可以进一步优化探索和利用的平衡。除了偶尔随机选择行动进行探索外,可以根据游戏的进展和L表的状态动态调整探索的频率。例如,在游戏初期,增加探索的频率,以便发现更多的潜在优秀行动;在游戏后期,减少探索频率,更多地利用已经发现的优秀行动。

mermaid流程图:改进后的L学习算法流程

graph TD;
    A[初始化L表] --> B[开始游戏];
    B --> C[查看棋盘状态];
    C --> D{选择行动};
    D -- 随机选择 --> E[执行行动];
    D -- 选择L值最大行动 --> E[执行行动];
    E --> F[环境反馈];
    F --> G{是否发生随机事件};
    G -- 否 --> H[记录行动信息];
    G -- 是 --> I[特殊处理L表更新];
    I --> H[记录行动信息];
    H --> J{游戏是否结束};
    J -- 否 --> C;
    J -- 是 --> K[计算TFR];
    K --> L[加权更新L表];
    L --> M{是否继续学习};
    M -- 是 --> B;
    M -- 否 --> N[使用L表进行游戏];

列表:改进L学习算法的步骤

  1. 采用加权平均的方法更新L表,确定合适的权重系数 α。
  2. 添加随机事件检测模块,当检测到随机事件时,对L表更新进行特殊处理。
  3. 动态调整行动选择策略中的探索频率,在游戏不同阶段平衡探索和利用。

8. 总结与展望

8.1 总结

L学习算法为我们提供了一个学习如何玩Flippers游戏的基础框架。它通过L表记录行动的奖励信息,并根据一定的策略选择行动。然而,该算法在面对不可预测的环境时表现不佳,主要原因在于其更新规则的单一性、缺乏对不确定性的适应机制以及对环境变化的敏感性。

8.2 展望

通过对L学习算法的深入分析,我们提出了一些改进思路,如优化更新规则、引入不确定性处理机制和增加探索与利用的平衡。这些改进有望使算法在更复杂、更不确定的环境中表现更好。未来,我们可以进一步研究和实验这些改进措施,不断完善算法,使其能够应用于更多实际场景,如多玩家游戏、机器人控制等领域。

表格:L学习算法优缺点对比

优点 缺点
提供了基本的学习框架 数据更新单一,易丢失优秀行动
适用于确定性环境 缺乏对不确定性的适应机制
对环境变化敏感,适用范围受限

列表:未来研究方向

  1. 深入研究加权平均更新规则中权重系数的选择方法,以达到更好的学习效果。
  2. 完善随机事件检测模块,提高对不同类型随机事件的识别和处理能力。
  3. 探索更智能的探索与利用平衡策略,根据环境的实时状态动态调整探索频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值