共赢街亭(二):从FSM模型出发
1. 前言
在上期里,基于反事实思考(Counterfactual Thinking)而提出孔明练兵的替代方案:让王平当主将,并由马谡担任总参谋(副将)。并且透过AI的模拟演练,能让孔明的<后悔变成预见>。于是,本文就来建立一个仿真演练模型,首先从系统的大环境出发,也就是建立街亭的模型。在本范例中,将采取有限状态机(finite-state machine, 简称:FSM)技术(图1):

图1
状态机(State Machine)是一种行为模型。它是由有限数量的状态(State)组成。它根据当前状态和输入,而执行状态转移(Transition),并且产生输出。所以,状态机是对系统行为进行建模,其通常应用于对有限个状态的系统。因此,常被称为有限状态机 (FSM)。状态机(或称有限状态机)是对事件驱动型反应系统的表示,当控制状态转换的条件满足时,系统会从一个状态转换到另一个状态。大多数状态机都用图表表示,其中包括4个重要元素:
• 状态(state):用于区分流程的不同步骤、任务或操作模式。
• 事件(event):会触发状态变化的条件。
• 动作(action):「事件发生后」要执行的动作。
• 转移(transition):在不同状态之间转换的方法。
在本范例中,这有限状态机 (FSM)将与强化学习 (RL)结合。由FSM表达行为结构,而 RL则用于优化这些行为或做出更好的决策。这样可以让王平马谡智能体兼具决策的结构性和对未知环境的适应性,来实现共迎街亭的美好目标。
2. 建立<街亭FSM>模型
2.1 表达环境规律
依据使书记载,于公元228年蜀汉第一次北伐,参军马谡因违背诸葛亮「靠山近水」的部署、拒听王平建议、舍水上山,接着被魏军断水围困,导致缺水、军心涣散,最后街亭失守。其中,<缺水>是关键性的因素,所以建立出如下的街亭FSM模型(图2):

图2
FSM里,<状态>表达:系统现在处于什么局面。而<事件>表达:什么事情导致局面改变。 例如,<失去水源>属于事件,使得原来正常生活的状态,转变为缺水状态;于是可知<正常>与<缺水>都属于状态。当处于<缺水>状态时,如果采取放自然演变的决策&动作(属于事件),将有3种可能的状态转移:
1) 可能发生自然事件而恢复正常饮水,例如下大雨,而短暂转移到<正常>状态。
2) 可能因放任无为,自然演化而继续缺水。
3) 可能因放任无为,而自然演化为缺水更加严重,只能撤离街亭(失街亭)。
这种可能性的FSM,通称为:机率性状态机(Probabilistic FSM,简称:PFSM)。它能够模拟更真实、更不确定的事物和环境。在状态转移方面,每个(状态, 事件/动作)都会对应一组可能的<下一状态>及其<机率>,例如:
("缺水", "自然演化") ➜ [("正常", 0.1), ("缺水", 0.2), ("失街亭", 0.7)]
这些状态转移模拟了<缺水>而放任不管,而恢复正常的可能性很渺茫,而极可能导致彻离人员而失街亭。然而,这个模型只是真实环境(即街亭城市)的抽象性表示;所以依据不同视角,而设计出不一样的街亭FSM图。从这图中,可以看出:基于供水视角的街亭大环境(世界)的变化规律。在强化学习领域,又俗称为:世界规则。
2.2 增添外来事件
刚才的FSM表达了街亭的一般规律(世界规则),然而世界是往往是动态的,所以这FSM需要增添外来事件的干扰和影响其状态的转变。例如,敌军入侵(事件),控制了水源,导致街亭进入<缺水>状态。如果敌军进一步施压,局势就从缺水危机升高到敌军压迫<战况升高>状态;若接着军心动一摇,就进入更危险的<军心涣散>状态;一旦这个状态持续(自然)演化,就会直接走向<失街亭>状态了(图3)。

图3
从这FSM图可以看出来,街亭的状态演变,并不是一条注定失败的单一路径。如果在敌军施压的<战况升高>状态下,若其激发背水一战的斗志,而击退敌军,就能恢复<正常>状态。这是很关键的一步,因为它让街亭FSM不再只是“悲剧叙事”的表达,而是成为可以被学习的动态系统。也就是说,局势不是只会往坏处走,而是存在一些小机率的挽回可能。这正是可利用RL来训练智能体 ( Agent)的地方。
刚才提到了,这个模型只是真实环境(即街亭城市)的抽象性表示;所以依据不同视角,而设计出不一样的街亭FSM图。所以,这图-3是基于马谡的<舍水上山>策略视角而设计出来的街亭FSM。在与司马懿决战之前,也能基于孔明(即王平)的<要道扎寨>策略视角而设计出街亭FSM,来进行RL学习,而训练出智能体,来提供给马谡参考,就很有机会让马谡的后悔成为预见。
3. 复用<街亭FSM>架构:以红绿灯(交通号志)为例
刚才的街亭 FSM范例展示出:在人类故事里的局势,也可以被当成系统状态,而且会在事件推动下演化。同样地,我们也可以把
其架构迁移复用到<红绿灯FSM>模型,也展示出:交通号志系统会依照规则,在几个明确状态之间切换转移。
3.1 表达环境规律
换言之,上刚才的范例中,街亭是目标系统,我们建立FSM来表达其基本运作规律(在RL里,俗称:世界规则)。现在,把它对应到交通到路中的红绿灯(交通号志)系统。于是,建立出<红绿灯FSM>模型(图-4):

图4
这个红绿灯FSM表达了交通号志系统的世界规则,其实就是在说:目前状态 + 发生事件 = 下一个状态。例如:
· OFF + TURN_ON -> GREEN
· GREEN + TIME_OUT -> YELLOW
· YELLOW + TIME_OUT -> RED
· (更多)
这就是交通号志平时世界的基本法则。它的意思不是:Agent想怎么做就怎么做。而是:这个世界本来就这样运作。在RL训练Agent时,这些规则即是规范出:每个状态下的合法事件。例如:
OFF 状态只能接受 TURN_ON
RED / YELLOW / GREEN 才能接受 TIME_OUT 或 TURN_OFF
这表示 FSM 除了描述世界怎么转移之外,更在描述:这个位置(状态)现在可以做什么,不可以做什么。所以,在Agent进行RL学习时,这FSM能提供给Agent:世界规则的「可行动边界」。
3.2 增添突发(外来)事件
上图-4的红绿灯FSM,已经含有世界规则了,接着就来添加异常(外来)事件。于在此基础上,原本世界规则不变,额外加入1项突发事件:
n 紧急通行(EMERGENCY_PASS / EMERGENCY_CLEAR)
这样可以表达出:现实世界不只有正常流程,还会遇到外部扰动。于是扩充的FSM(图5):

图5
在这异常世界不是想怎么处理就怎么处理。一旦进入EMERGENCY_GREEN (紧急绿灯)状态,合法的路不是随便挑,而是只能先解除紧急状态。所以图-5的扩充FSM不是在增加混乱,而是在增加「异常时也有规则」。在训练Agent时,也让它知道:即使加入了突发事件,平时世界仍然存在。这FSM表达了:进入突发模式有规则,离开突发模式也有规则。于是,让Agent掌握正常世界还是照原本规则跑,只是现在多了面对异常的能力。
由于这FSM不是推翻平时规则,而是在平时规则外,再加上危机处理规则。所以,让Agent学会了,不仅能让系统能平时轮转,还会进入异常模式、处理危机、再回到正常世界。
4. 结语
这是本文提出的<孔明练兵模式>的起点:从FSM模型出发。首先,透过基本FSM先表达「平时世界」的基本规则。然后,在这个既有世界规则上,添加入突发事件或异常处理的规则。所以,在本文里先街亭山水先表达于基本FSM里;而司马懿进攻事件,则表达于扩充的 FSM中。也就是说,环境本身的规则没有消失,但当外部扰动进入时,Agent指挥的系统必须有能力进入异常模式、处理危机,并在危机解除后回到正常运作。
此外,也让Agent知道,当外部扰动来临时,原本的平时路径可能会被打断,因此新增了 EMERGENCY_PASS(紧急通行)规则,把系统带入异常状态。等到紧急事件解除后,再透过 EMERGENCY_CLEAR事件回到 YELLOW状态,重新返回到正常世界。其中,不同类型的异常事件,不只会进入不同状态,也会有不同的恢复路径。简而言之,持续扩充FSM的价值,并不是增加混乱,而是让Agent能指挥系统,即使面对异常,也仍然可活在一套有边界、有秩序的规则之中。在下一期,将会把这FSM映像到知识图(Knowledge Graph),以便汇入更多专家智慧,让Agent学习到更多能力。


评论