无模型学习

• 20 min read • 3815 words
Tags: Re-Le
Categories: Introduction to Artificial Intelligence

无模型学习

无模型学习(Model-Free Learning)是一类无需了解环境模型(转移函数 TT 和奖励函数 RR)的强化学习算法。代理直接通过与环境的交互经验来学习价值函数或策略。

无模型学习主要分为两大类:

  • 被动强化学习 (Passive Reinforcement Learning):代理遵循一个固定的策略 π\pi,并学习在该策略下各状态的价值。直接评估时序差分学习属于此类。
  • 主动强化学习 (Active Reinforcement Learning):代理在学习过程中利用获得的反馈来不断更新和优化其策略,最终目标是找到最优策略。Q学习属于此类。

1. 直接评估

直接评估(Direct Evaluation)是一种最简单的被动强化学习方法。它通过在固定策略 π\pi 下运行多个回合(episodes)来收集经验。

该方法的核心思想是:

  • 记录访问次数:统计每个状态 ss 被访问的次数。
  • 累积总回报:记录从每个状态 ss 开始直到回合结束所获得的总效用。
  • 计算平均值:通过将总效用除以访问次数来估计状态的价值。

状态价值的估计公式如下: Vπ(s)=从s获得的总奖励s的访问次数V_\pi(s) = \frac{\text{从s获得的总奖励}}{\text{s的访问次数}}

尽管直接评估最终能够收敛到真实的状态价值,但它存在一个显著缺点:收敛速度慢。因为它忽略了状态之间的转移信息,没有充分利用经验数据中蕴含的结构关系。

2. 时序差分学习

时序差分学习(Temporal Difference Learning, TD Learning)通过利用状态间的转移关系,解决了直接评估收敛慢的问题。它不再等到一个回合结束后才进行学习,而是在每一步经验后都进行价值更新

TD学习的核心是使用后续状态的当前价值估计来更新当前状态的价值。

  1. 获取样本:在状态 ss 执行策略 π(s)\pi(s) 后,转移到新状态 ss' 并获得奖励 R(s,π(s),s)R(s, \pi(s), s')。我们构造一个样本值,作为 Vπ(s)V_\pi(s) 的新估计:
sample=R(s,π(s),s)+γVπ(s)sample = R(s, \pi(s), s') + \gamma V_\pi(s')
  1. 价值更新:使用指数移动平均(exponential moving average)将新样本融合到现有的价值估计中。
Vπ(s)(1α)Vπ(s)+αsampleV_\pi(s) \leftarrow (1 - \alpha) V_\pi(s) + \alpha \cdot \text{sample}

其中,α\alpha 是学习率(learning rate),用于控制新旧估计的权重。

TD学习的优越性体现在:

  • 即时学习:在每个时间步都利用转移信息进行学习。
  • 指数衰减权重:更新规则的展开形式表明,越早的样本权重越低,这有助于模型更快地适应基于新策略的估计。
  • 更快的收敛速度:相比直接评估,能用更少的回合数收敛到真实的状态价值。

3. Q学习

直接评估和TD学习都只能学习一个固定策略下的状态价值。为了找到最优策略,我们还需要知道Q值。Q学习(Q-Learning)通过直接学习Q值,彻底摆脱了对模型(TTRR)的依赖,是一种完全无模型的主动强化学习算法。

Q学习的更新过程与TD学习类似,但其目标是Q函数。

  1. 获取Q值样本:从状态 ss 采取行动 aa,转移到 ss' 并获得奖励 R(s,a,s)R(s, a, s')。Q值样本的计算利用了下一个状态所能带来的最大未来收益。
sample=R(s,a,s)+γmaxaQ(s,a)sample= R(s, a, s') + \gamma \max_{a'} Q(s', a')
  1. Q值更新:同样使用指数移动平均来更新Q值。
Q(s,a)(1α)Q(s,a)+αsampleQ(s, a) \leftarrow (1 - \alpha) Q(s, a) + \alpha \cdot \text{sample}

Q学习的革命性在于它是一种**离策略(Off-Policy)**算法。这意味着,即使代理采取的是次优甚至随机的探索性动作,它依然能够学习到最优策略的Q值。只要保证充分的探索,Q学习就能收敛到最优的Q函数 QQ^*

4. 近似Q学习

对于具有海量状态(如数百万个)的复杂问题,使用表格来存储所有Q值是不现实的。近似Q学习(Approximate Q-Learning)解决了这个问题,它不再为每个状态存储具体值,而是学习一个能够泛化到相似状态的函数。

其核心思想是基于特征的表示(Feature-Based Representation)

  • 状态特征化:将每个状态 ss 或状态-动作对 (s,a)(s, a) 表示为一个特征向量 f(s)\vec{f}(s)f(s,a)\vec{f}(s, a)
  • 线性价值函数:Q值被表示为特征的线性组合,由一个权重向量 w\vec{w}定义。
Q(s,a)=w1f1(s,a)+w2f2(s,a)+...+wnfn(s,a)=wf(s,a)Q(s, a) = w_1 f_1(s, a) + w_2 f_2(s, a) + ... + w_n f_n(s, a) = \vec{w} \cdot \vec{f}(s, a)

学习的目标不再是Q表,而是权重向量 w\vec{w}

  1. 计算差值 (Difference):计算当前估计与样本之间的差距。
difference=[R(s,a,s)+γmaxaQ(s,a)]Q(s,a)difference = [R(s, a, s') + \gamma \max_{a'} Q(s', a')] - Q(s, a)
  1. 权重更新:根据差值和特征值来调整权重。
wiwi+αdifferencefi(s,a)w_i \leftarrow w_i + \alpha \cdot \text{difference} \cdot f_i(s, a)

近似Q学习的优势在于:

  • 内存效率:只需存储一个权重向量,而不是一个巨大的Q表。
  • 泛化能力:能够将从少数几个状态学到的知识推广到大量相似的、甚至从未访问过的状态。