![高能效类脑智能:算法与体系架构](https://wfqqreader-1252317822.image.myqcloud.com/cover/767/38894767/b_38894767.jpg)
2.2.2 强化学习
与监督学习不同,在强化学习任务中没有明确的监督信号指示神经网络的输出。与监督学习和无监督学习相比,强化学习是一门相对成熟和独立的学科。本节只讨论强化学习中与神经网络紧密相关的几个方面,有兴趣的读者请参阅强化学习的教科书来获得更多的细节[9]。
图2.8说明了许多强化学习算法试图解决的问题。一个agent与它周围的环境进行交互,在每个时刻t时,agent能够观察到环境的状态x(t)和奖励信号r(t)。agent的目标是选择正确的动作a(t),使其在未来获得的累积奖励最大化。举个例子,假设强化学习问题是教一个agent如何玩篮球。在这种情况下,状态x(t)可以是持球球员的位置、防守球员的位置以及球员和球筐之间的距离等。动作信号a(t)可以是前进、左移或者投篮等动作,奖励信号r(t)可以被设计为团队的当前得分。在这种情况下,agent能够学习如何根据篮球运动员拥有的信息来控制篮球运动员使得分数最大化。
![](https://epubservercos.yuewen.com/DA231B/20422784301680706/epubprivate/OEBPS/Images/2a8.jpg?sign=1738993013-nVCuzUv8T2XKOinjGlXF1ZlEwECME4Cg-0-8879eea8105ebb7e38e0c046657dc369)
图2.8 强化学习任务的结构说明。agent根据对状态x和奖励r的观察,通过采取动作a与周围环境进行交互。agent的目标通常是最大化它从环境中获得的总奖励
假设和agent交互的离散时间系统可以通过以下方式建模:
![](https://epubservercos.yuewen.com/DA231B/20422784301680706/epubprivate/OEBPS/Images/028-i.jpg?sign=1738993013-wS0Uox4AOQyx8qTRpyBPkTxL6BqeqQ1E-0-78e647283453a79ad12eb6406f404440)
其中x(t)是一个在时间t的n维状态向量,a(t)是一个m维的动作向量,f(·)是系统的模型。算法的目标是最大化奖励J,这能够被表示成:
![](https://epubservercos.yuewen.com/DA231B/20422784301680706/epubprivate/OEBPS/Images/028-2-i.jpg?sign=1738993013-hlqlG1r1Gr9cMVIfpx041ocDWLd0mNel-0-5c451faa6464bdf9b9430a862cf2927b)
其中折扣系数γ用来抵消长期的奖励对现在的影响,而r[x(t)]是在状态x(t)收到的奖励。
强化学习的目的是最大化式(2.10)中的奖励函数。这个函数能够通过解贝尔曼方程来算出:
![](https://epubservercos.yuewen.com/DA231B/20422784301680706/epubprivate/OEBPS/Images/028-3-i.jpg?sign=1738993013-Fv1wjXtOERDMa9tZh19NCMQTPYgukiBf-0-ebf65140efa8c643754bee58601a7ed6)
解贝尔曼方程是一个困难的问题。它可以通过动态规划[10]直接解决,也可以通过自适应动态编程(ADP)[11-12]、Q学习[13-14]和Sarsa[15]等方法近似解决。解决强化学习问题的一个困难是如何为最终奖励分配奖励积分。例如在下棋的任务中,奖励在游戏结束时显示,也就是只有在赢得游戏的情况下agent才能获得奖励。如何将这种延迟奖励分配给每个状态并不容易,这要求agent具有一个内部评估系统,该系统可以从特定状态开始估算其可以收到的潜在奖励积分。通常有两种方法来获取或学习用以内部评估每个状态的信息:蒙特卡罗(MC)方法和时间差(TD)学习。在MC方法中,agent简单对从一个状态开始的所有奖励简单地进行平均化处理,然后使用该平均值来近似预期的奖励,对于每次更新,agent都需要运行完整的测试。而TD学习是一种增量学习,agent可以在知道最终结果之前学习。TD学习使用新的估计值来更新旧的估计。
强化学习本身是一门独立的学科,可以完全独立于神经网络。尽管如此,在强化学习框架中神经网络通常用作通用函数逼近器。在具有离散状态空间的问题中,用于预测将要获得奖励的值函数被存储在查找表中。然而这种方法难以解决大状态空间或连续状态问题,这被称为维数灾难[16]。为了解决这个问题,可以使用函数逼近器来表示状态值函数。图2.9说明了这种想法。在表格方式中,agent需要更新查找表中的条目以更新状态值函数。但是,由于查找表中每个状态都有一个条目,因此表的大小会随着状态数或状态尺寸的增加而快速增长。另一方面,在函数逼近器的方法中,agent会更改参数化函数中的系数(在我们的示例中是与神经网络关联的权重)以更新状态值函数。从某种意义上说,函数逼近器方法利用状态之间的相关性来压缩模型以避免维数灾难。为了帮助理解基于神经网络的强化学习,在2.2.4节中有一个具体示例。
![](https://epubservercos.yuewen.com/DA231B/20422784301680706/epubprivate/OEBPS/Images/2a9.jpg?sign=1738993013-ICwbhvkuWQqum4gjmBUH8Of5WctXTkhm-0-67ea21aeb27f18c3369018a6b2a9ff67)
图2.9 存储在强化学习任务中所需的状态值函数的两种方式。在表格方法中,估计的待获得奖励J被存储并保存在表格中。表的大小随着问题的大小和维度而迅速增长。在函数逼近器方法中,使用函数逼近器(比如神经网络)来拟合函数J。这种方法可以显著减少大多数实际问题的内存需求