# 二阶段任务

### **1. 实验简介**

Daw et al. (2011) 在《Neuron》上发表的论文中，设计了一个名为“two-stage task”（二阶段任务）的实验，用于研究人类在决策过程中如何平衡利用（exploitation）和探索（exploration）策略。二阶段任务是强化学习研究中常用的范式，该实验的核心目的是理解大脑如何在面对复杂、不确定的环境时做出决策，并区分基于模型的（model-based）和无模型的（model-free）学习过程。简单介绍实验流程：

<figure><img src="/files/zibFJTWSKDvIa0v0me49" alt="" width="563"><figcaption><p>图1 二阶段任务流程图</p></figcaption></figure>

实验分为两个阶段，参与者通过选择获得奖励。实验通过操纵环境中的不确定性来测试参与者的决策策略。

**第一阶段（Stage 1）**

* 参与者在每次试验开始时有两个选择（A 或 B）。
* 选择 A 或 B 后，参与者会进入第二阶段。

**第二阶段（Stage 2）**

* 第二阶段由两个状态构成（S1 和 S2），每个状态下有两个选择（C 或 D，E 或 F）。
* 每个第一阶段的选择都倾向于将参与者带入特定的第二阶段状态。例如，选择 A 通常会带领参与者到 S1 状态，而选择 B 通常会带领参与者到 S2 状态。然而，这种对应关系并非确定不变，而是具有一定概率的（例如 70%）。
* 在第二阶段，参与者可以选择 C、D、E 或 F，然后获得相应的奖励。每个选择的奖励概率会动态变化，使得参与者需要不断调整他们的策略。

我们对应实验流程来构建MDP环境：

* 第一阶段：Agent从初始状态开始，在两个动作（左或右）之间选择。
* 第二阶段：选择的动作将Agent带到第二阶段状态之一，每个第一阶段的动作都有不同的概率分布（ $$P(s'|s,a)$$）来过渡到第二阶段状态。
* 奖励：在第二阶段，Agent在到达第二阶段状态中选择两种动作之一，这个动作的结果决定了Agent获得的奖励（ $$R(s')$$）。

### **2. 无模型的学习（Model-Free Learning）**

无模型学习不依赖于环境动态的模型，而是通过直接的经验学习动作和状态的价值。常见的无模型学习算法是Q学习。由Sarsa算法得到：

$$
Q^\pi\_{MF}(s\_t,a\_t)=Q^\pi\_{MF}(s\_t,a\_t)+\alpha(r+\gamma{Q^\pi\_{MF}(s\_{t+1},a\_{t+1})}-Q^\pi\_{MF}(s\_t,a\_t))
$$

两阶段任务中，可以得到的数据为s1，a1，s2，a2，r2，根据任务数据Q值更新过程：先更新第二阶段，标准写法如下：

$$
Q^\pi\_{MF}(s\_2,a\_2)=Q^\pi\_{MF}(s\_2,a\_2)+\alpha\_2(r\_2+\gamma{Q^\pi\_{MF}(s\_{3},a\_{3})}-Q^\pi\_{MF}(s\_2,a\_2))
$$

因为，没有s3、a3，简化公式得到：

$$
Q^\pi\_{MF}(s\_2,a\_2)=Q^\pi\_{MF}(s\_2,a\_2)+\alpha\_2(r\_2-Q^\pi\_{MF}(s\_2,a\_2))
$$

再更新第一阶段，标准写法如下：

$$
Q^\pi\_{MF}(s\_1,a\_1)=Q^\pi\_{MF}(s\_1,a\_1)+\alpha\_1(r\_1+\gamma{Q^\pi\_{MF}(s\_{2},a\_{2})}-Q^\pi\_{MF}(s\_1,a\_1))
$$

因为，第一阶段没有奖励，且假定折扣因子=1，简化公式得到：

$$
Q^\pi\_{MF}(s\_1,a\_1)=Q^\pi\_{MF}(s\_1,a\_1)+\alpha\_1({Q^\pi\_{MF}(s\_{2},a\_{2})}-Q^\pi\_{MF}(s\_1,a\_1))
$$

```python
class model_free:
    '''Sarsa-λ learner 
    '''

    def __init__(self, nS, nA, rng, params):
        self.nS = nS
        self.nA = nA
        self.rng = rng
        self.Q   = np.zeros([nS, nA]) / nA 
        self.alpha1 = params['alpha1'] # learning rate of the first stage
        self.alpha2 = params['alpha2'] # learning rate of the second stage
        self.beta1  = params['beta1'] # inverse temperature of the first decision
        self.beta2  = params['beta2'] # inverse temperature of the second decision
        self.lmbda  = params['lmbda'] # influence of PE2 to update in Q in stage 1

    def make_move(self, s): # define policy pi
        q = self.Q[s, :]
        beta = self.beta1 if s==0 else self.beta2
        pi = softmax(beta*q)
        return self.rng.choice(self.nA, p=pi)
    
    def learn(self, s1, a1, s2, a2, r2):
        q_hat2 = self.Q[s2, a2].copy()
        q_hat1 = self.Q[s1, a1].copy()
        # calculate prediction errors
        delta2 = r2 - q_hat2 # prediction error in the second stage
        delta1 = q_hat2 - q_hat1 # prediction error in the second stage
        # update Q in state 1
        self.Q[s1, a1] = self.Q[s1, a1] + self.alpha1 * (delta1 + self.lmbda*delta2)
        # update Q in stage 2
        self.Q[s2, a2] = self.Q[s2, a2] + self.alpha2 * delta2
```

### **3. 基于模型的学习（Model-Based Learning）**

基于模型学习涉及构建环境动态（转移概率和奖励函数）的模型，并使用该模型做出决策。这种方法涉及规划，代理使用模型模拟未来结果并选择能够最大化预期奖励的动作。由动态规划中状态-动作价值函数更新的贝尔曼方程得到：

$$
Q^\pi\_{MB}(s\_t,a\_t)=\sum\_{s\_{t+1}}p(s\_{t+1}|s\_t,a\_t)\[r+\gamma{\max\_a}{Q^\pi(s\_{t+1},a)}]
$$

两阶段任务中，可以得到的数据为s1，a1，s2，a2，r2，根据任务价值更新过程：先更新第二个阶段：

$$
Q^\pi\_{MB}(s\_2,a\_2)=Q^\pi\_{MB}(s\_2,a\_2)+\alpha\_2(r\_2+\gamma{Q^\pi\_{MB}(s\_{3},a\_{3})}-Q^\pi\_{MB}(s\_2,a\_2))
$$

因为，没有s3、a3，简化公式得到：

$$
Q^\pi\_{MB}(s\_2,a\_2)=Q^\pi\_{MB}(s\_2,a\_2)+\alpha\_2(r\_2-Q^\pi\_{MB}(s\_2,a\_2))
$$

再更新第一个阶段：

$$
Q^\pi\_{MB}(s\_1,a\_1)=\sum\_{s\_2}p(s\_2|s\_1,a\_1)\[r+\gamma\max\_a{Q^\pi\_{MB}(s\_{2},a)}]
$$

假定折扣因子=1，公式展开简化后得到：

$$
Q^\pi\_{MB}(s\_1,a\_1)=p(s\_2|s\_1,a\_1)\max\_a{Q^\pi\_{MB}(s\_{b},a)}+p(s\_2|s\_1,a\_1)\max\_a{Q^\pi\_{MB}(s\_{c},a)}
$$

```python
class model_based:
    '''Q learning
    '''

    def __init__(self, nS, nA, rng, params):
        self.nS = nS
        self.nA = nA
        self.rng = rng
        self.Q   = np.zeros([nS, nA]) / nA 
        self.P   = np.array([[0, .7, .3],
                             [0, .3, .7]]) 
        self.alpha2 = params['alpha2']
        self.beta1  = params['beta1'] # 第一个softmax beta
        self.beta2  = params['beta2'] # 第二个softmax beta
        self.p      = params['p'] # preservation probability
        self.rep_a  = np.zeros([self.nA])

    def make_move(self, s):
        q_mb = self.Q[s, :]
        beta = self.beta1 if s==0 else self.beta2
        q = q_mb + self.p * self.rep_a
        pi = softmax(beta*q)
        a = self.rng.choice(self.nA, p=pi)
        return a 
    
    def learn(self, s1, a1, s2, a2, r2):
        q_hat2 = self.Q[s2, a2].copy()
        delta2 = r2 - q_hat2
        # update 
        # level 2
        self.Q[s2, a2] = self.Q[s2, a2] + self.alpha2*delta2
        # level 1
        self.Q[s1, :] = (self.P@np.max(self.Q, axis=1, keepdims=True)).reshape([-1])
        # update perserveration
        self.rep_a = np.eye(self.nA)[a1]

        # for a in [0, 1]:
        #     q = 0
        #     for s_next in [1, 2]:
        #         q += self.P[a, s_next]*np.max(self.Q[s_next, :])
        #     self.Q[s1, a] = q
```

在实践中，智能体可以结合这两种方法，使用无模型学习来处理直接经验，使用基于模型学习进行规划和决策。这种结合通常会导致更高效的学习和更好的性能。所以，大部分都是hybrid learner，同时更新两个系统。

$$
Q^\pi\_{net}=wQ^\pi\_{MB}+(1-w)Q^\pi\_{MF}
$$

代码实现如下：

```python
class hybrid:
    '''SARSA + Model-based
    '''

    def __init__(self, nS, nA, rng, params):
        self.nS = nS
        self.nA = nA
        self.rng = rng
        self.Q_mf = np.zeros([nS, nA]) 
        self.Q_mb = np.zeros([nS, nA])  
        self.P    = np.array([[0, .7, .3],
                              [0, .3, .7]]) 
        self.alpha1 = params['alpha1']
        self.alpha2 = params['alpha2']
        self.beta1  = params['beta1']
        self.beta2  = params['beta2']
        self.lmbda  = params['lmbda']
        self.w      = params['w'] # weigting between MF and MB
        self.p      = params['p'] # perservation probability
        self.rep_a  = np.zeros([self.nA]) 

    def make_move(self, s):
        q_mf = self.Q_mf[s, :]
        q_mb = self.Q_mb[s, :]
        q_net = self.w*q_mb + (1-self.w)*q_mf
        beta = self.beta1 if s==0 else self.beta2
        q = q_net + self.p*self.rep_a
        pi = softmax(beta*q)
        return self.rng.choice(self.nA, p=pi) 
    
    def learn(self, s1, a1, s2, a2, r2):
        # model-free update 
        q_hat2 = self.Q_mf[s2, a2].copy()
        q_hat1 = self.Q_mf[s1, a1].copy()
        delta2 = r2 - q_hat2
        delta1 = q_hat2 - q_hat1
        self.Q_mf[s2, a2] += self.alpha2*delta2
        self.Q_mf[s1, a1] += self.alpha1*(delta1 + self.lmbda*delta2)

        # model-based update
        # level 2 is identical to model-free
        self.Q_mb[s2, a2] = self.Q_mf[s2, a2].copy()
        self.Q_mb[s1, :] = (self.P@np.max(self.Q_mb, axis=1, keepdims=True)).reshape([-1])
        # self.P is the transition matrix
        
        # update perseveration
        self.rep_a = np.eye(self.nA)[a1]
        # for a in [0, 1]:
        #     q = 0
        #     for s_next in [1, 2]:
        #         q += self.P[a, s_next]*np.max(self.Q[s_next, :])
        #     self.Q[s1, a] = q

```

我们试着模拟二阶段任务中三种不同决策模型的行为差异，尤其是model-free、model-based以及混合模型（hybrid model）在“停留概率”（stay probability）上的表现。由模拟结果可知，对于model-free模型，个体在获得奖励后，无论事件是常见（common）还是稀有（rare），都倾向于重复相同的行为，表现出高停留概率；而在未获得奖励的情况下，停留概率显著下降，表明该模型主要受即时奖励驱动。相比之下，model-based模型更加依赖对任务结构的理解，个体在常见和稀有事件上的停留概率呈现更灵活的变化，尤其是在未获得奖励时，稀有事件的停留概率较高，体现出该模型对环境的长期回报进行推理的能力。而混合模型则结合了两者的特点，在有奖励的情况下，对常见和稀有事件的停留概率介于model-free和model-based模型之间，而在无奖励的情况下，对稀有事件的停留概率较高，反映出该模型结合了习惯性学习和基于模型的规划决策。

<figure><img src="/files/IAqrgsHycdlk3DtAIGzB" alt=""><figcaption><p>图2 model-free、model-based以及混合模型（hybrid model）在“停留概率”（stay probability）上的表现</p></figcaption></figure>

### **4. 大脑中的无模型强化学习**

无模型强化学习（Model-free RL）是大脑中决策过程的一个关键机制，它基于过去的经验做出选择，而无需构建对环境的显式模型。这种学习方式依赖大脑通过反复试验和错误来关联行为与奖励。大量研究致力于识别大脑中执行这些计算的神经基础。

#### **4.1 中脑多巴胺神经元：无模型强化学习的神经基础**

理解无模型强化学习的一个重大突破来自对猴子中脑多巴胺神经元的研究，这些研究揭示了这些神经元如何编码奖励预测误差（RPE）——即期望的奖励与实际获得的奖励之间的差异。这一概念最早由Houk等人（1995）、Montague等人（1996）和Schultz等人（1997）的研究提出，中脑多巴胺神经元对意外奖励有强烈反应，而当实际奖励低于预期时，神经元活动减少。这个RPE信号对于驱动无模型强化学习的试错学习过程至关重要，它帮助大脑根据过去的结果调整未来的行为。

多巴胺神经元，特别是在腹侧被盖区（ventral tegmental area，VTA）和黑质致密部（substantia nigra pars compacta，SNc）的神经元，调节下游结构的活动，强化导致正向结果的行为。RPE信号向这些神经元提供信息，以便根据过去的奖励来增加或减少重复某一行为的可能性，从而塑造无模型学习模式。多巴胺神经元以这种方式充当了时间差分学习的神经执行器。

**4.2 腹侧纹状体和前额叶皮层：行为适应与价值学习**

无模型强化学习中另一个关键组成部分是**腹侧纹状体**（Ventral Striatum），该区域参与编码奖励的价值并基于过去的经验引导行动选择。腹侧纹状体，特别是**伏隔核**（nucleus accumbens），整合了多巴胺信号，帮助介导基于奖励的学习。腹侧纹状体与**前额叶皮层**（prefrontal cortex，PFC）协作，支持通过将特定线索或行动与奖励结果联系起来的行为适应。

Hare等人（2008）的研究表明，前额叶皮层，尤其是**眶额皮层**（orbitofrontal cortex，OFC），参与跟踪不同选择的主观价值。前额叶皮层还参与解决竞争目标或奖励之间的冲突等更复杂的决策方面。在无模型强化学习中，这些区域帮助根据收到的奖励更新不同刺激的价值，从而促进最大化正向结果的行为。

**4.3 生物因素的调节：帕金森病、多巴胺替代疗法与成瘾**

无模型强化学习对多巴胺能信号传导的变化高度敏感，这在神经退行性疾病、药理学干预和成瘾的研究中得到了验证。例如，**帕金森病**（Parkinson’s disease，PD），其特征为黑质多巴胺神经元的逐渐退化，为理解多巴胺功能障碍如何影响强化学习提供了实验证据。Frank等人（2004）研究表明，帕金森病患者在学习正反馈和负反馈时表现出缺陷，尤其是在没有接受**多巴胺替代疗法**（dopamine replacement therapy，DRT）的情况下。这表明多巴胺不仅对从奖励中学习至关重要，而且对从惩罚中学习也具有重要作用。Shohamy等人（2005）对帕金森病患者的多巴胺替代疗法的进一步研究表明，虽然DRT可以减轻运动症状，但也可能通过改变奖励敏感性而损害决策能力。这种矛盾现象表明，多巴胺调节可以微调强化学习中的探索与利用之间的平衡，而药物干预可能会破坏这一平衡。

最后，**药物成瘾**为无模型强化学习的病理性适应提供了有力证据。在成瘾过程中，滥用药物劫持了大脑的奖励系统，产生异常高水平的多巴胺，强化了寻求药物的行为。Redish（2004）提出，成瘾可以被视为无模型强化学习中的计算过程失调，在这种情况下，药物相关刺激的病理性过度估值驱动了强迫性行为，尽管存在负面后果。在这种背景下，无模型系统未能适当地更新行为的行动价值，导致持续且不适应的行为模式。

<figure><img src="/files/pOsFcp7IwxEtY03ceItM" alt="" width="375"><figcaption><p>图3 多巴胺系统的解剖结构</p></figcaption></figure>

### **5. 大脑中的基于模型的强化学习**

基于模型的RL与无模型的RL不同，它涉及使用内部模型来模拟未来可能的结果，并指导决策。这种系统允许灵活的规划和适应，超越了简单的刺激-反应模式。多项研究强调了基于模型的RL的重要性，表明它与基于模型的机制相互补充，二者在大脑的多巴胺能和海马体回路中并存。

**5.1 拒绝基于模型的强化学习作为行为的完整解释**

基于模型的RL可以解释习惯形成和仅基于过去经验的强化学习，然而，随着研究的深入，越来越多的证据表明这种方法不足以解释行为的复杂性，特别是在需要灵活性和适应性控制的任务中。在早期的导航任务中，Tolman（1948）提出了“认知地图”的概念，表明动物可以根据对环境的内部模型来规划路线，而不仅仅是遵循强化习得的习惯。之后，Gläscher等人（2010）通过实验证实，当面对复杂或变化的环境时，个体往往依赖于基于模型的策略，而简单的价值缓存系统将显得次优。同样，Dickinson 和 Balleine（2002）指出，目标导向行为不能仅通过基于模型的过程来解释，还强调了整合基于模型的元素以解释适应性、目标导向行为的必要性 。此外，损伤研究进一步挑战了基于模型的解释。Daw和O'Doherty（2013）的研究表明，对特定大脑区域的损伤会削弱基于模型的决策能力，但对基于模型的决策影响较小，强调了存在一个独立的神经系统负责基于模型的计算。

**5.2 多巴胺系统中两种学习系统的共存**

尽管无模型的RL通常表现为习惯性、自动化的行为，但基于模型的RL涉及认知控制和计划。研究表明，大脑中的多巴胺系统中这两种学习系统共存并相互作用 (Daw et al., 2011)。例如，在不确定或认知负荷较高的情况下，个体可能更多地依赖基于模型的策略，而在需要灵活性和适应性计划的环境中则使用基于模型的学习 (Cushman & Morris, 2015)。

神经影像和计算研究表明，多巴胺信号，传统上与基于模型的RL中的奖励预测误差相关，也在基于模型的RL中起到状态预测和结果的作用。这种双重功能表明，多巴胺系统可能作为这两种学习系统之间的桥梁，既支持缓存的奖励信号，也支持前瞻性计划 (Solway & Botvinick, 2015)。此外，Sadacca等人（2016）提出，这两个系统并非完全独立，而是可以动态交互，使大脑根据任务需求选择最合适的策略。

**5.3 海马体作为潜在的重要角色**

除了多巴胺系统，海马体在基于模型的RL中也被认为是潜在的重要角色。以往研究中，海马体被认为与记忆和空间导航相关，但现在已知它在构建环境内部模型中起着重要作用。Stachenfeld等人（2017）提出，海马体通过形成环境的预测地图来支持基于模型的学习，从而实现灵活和适应性的决策。在时间差分学习的过程，海马体可能模拟可能的未来状态，将感官信息与记忆整合，并根据预测的结果指导行为。这种功能对于需要计划和在新情境中灵活调整行为的任务尤为重要。因此，海马体通过提供基于模型计算所需的空间和上下文信息，补充了多巴胺系统，进一步支持了多种大脑系统共同作用于复杂决策的观点。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ruyuanzhang.gitbook.io/compmodcogpsy/di-ba-zhang-qiang-hua-xue-xi/er-jie-duan-ren-wu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
