人工智能课预习 : 7.4 Q - Learning 算法
Q - Learning 算法
定义
Q-learning 算法 是一种基于价值的强化学习算法,用于解决具有明确奖励的马尔可夫决策问题。其基本思想是通过学习一个 Q 函数来选择最优的行为。
对所有的状态 —— 动作对下的最优 Q 值 \(q^*(s,a)\) 进行估计,对于任意状态 \(s\),令 \(q^*(s, a)\) 最大的 \(a\) 即为最优动作
最优动作:
最优 Q 值:
算法特点:
-
依据贝尔曼方程对最优 Q 值进行迭代更新
-
动作空间必须离散
-
当动作维度增大时,神经网络规模指数增加
Q函数,也称 动作价值函数(Action-Value Function) ,是一种特殊的价值函数。
-
Q函数用来评估每个状态和每个行为的预期奖励(即Q值)。Q值越大,说明在该状态下采取相应行动越有利。
-
Q-Learning 算法通过迭代地更新Q值来逼近最优Q函数。
Q 值更新公式
Q 值的更新公式
Q 学习算法的核心在于更新 Q 值的公式,该公式基于贝尔曼方程,并用于迭代地更新状态-动作对的价值估计。
Q 值的更新公式如下:
\[Q(s, a) \leftarrow Q(s, a) + \alpha [ r + \gamma \max_{a'} Q(s', a') - Q(s, a) ] \]
- \(Q(s_t, a_t)\) 是时间步 \(t\) 的状态下采取动作 \(a_t\) 的 Q 值。
- \(\alpha\) 是学习率,它决定了新信息对 Q 值更新的影响程度。
- \(r_{t+1}\) 是在采取动作后获得的即时奖励。
- \(\gamma\) 是折扣因子,它反映了未来奖励相对于即时奖励的重要性。
- \(\max_a Q(s_{t+1}, a)\) 是在新状态 \(s_{t+1}\) 下所有可能动作的最大 \(Q\) 值,代表了对未来奖励的最大预期。
这个公式结合了即时奖励和对未来奖励的预期,通过不断地更新 Q 值,智能体可以学习到在每个状态下应该采取哪个动作以最大化长期累积奖励。
最优策略下的Q 值
贝尔曼方程描述了一个状态的价值可以通过即时奖励和未来价值的综合来计算。对于 Q 学习来说,贝尔曼方程用来计算最优策略下的 Q 值,即:
\[Q^*(s, a) = R(s, a) + \gamma \sum_{s' \in S} P(s' \mid s, a) \max_{a' \in A} Q^*(s', a') \]
- \(Q^*(s, a)\) 是在最优策略下状态 \(s\) 采取动作 \(a\) 的最优 Q 值。
- \(R(s, a)\) 是在状态 \(s\) 下采取动作 \(a\) 获得的即时奖励。
- \(\gamma\) 是折扣因子。
- \(P(s' \mid s, a)\) 是从状态 \(s\) 采取动作 \(a\) 转移到状态 \(s'\) 的概率。
Q 学习的目标(最优策略)
Q 学习的目标是找到使 Q 值最大化的策略,即:
这意味着在给定状态下,最优策略是选择能够使 Q 值最大的动作。通过不断迭代地更新 Q 值,Q 学习算法能够收敛到最优 Q 值,从而学习到最优策略。
与值迭代的关系
共同点
- 基于贝尔曼最优方程,两者都通过迭代逼近 最优价值函数(\(V^*\) 或 \(Q^*\)),最终目标是找到最优策略 \(\pi^*\)。
值迭代:
Q-learning:
-
本质上,Q-learning 是贝尔曼方程的随机采样版本,而值迭代是精确期望计算版本。
Q-Value Iteration Q-Learning $$ Q(s,a) ;\leftarrow; \mathbb{E}!\left[, R + \gamma \max_{a'\in\mathcal{A}} Q(S',a') ;\big\vert; s,a ,\right] $$ $$ Q(S,A) ;\stackrel{\alpha}{\leftarrow}; R + \gamma \max_{a'\in\mathcal{A}} Q(S',a') \quad x \stackrel{\alpha}{\leftarrow} y ;\equiv; x \leftarrow x + \alpha(y - x) $$ -
迭代收敛性
在理想条件下(如无限次访问所有状态-动作对),两者均能收敛到最优解。
区别
| 特性 | 值迭代 | Q-learning |
|---|---|---|
| 模型需求 | 已知状态转移概率 \(P(s'/s,a)\) 和奖励函数 \(R(s,a)\)(如网格世界、规划问题) | 环境模型未知,需通过试错交互学习(如游戏、机器人控制) |
| 更新方式 | 需遍历所有状态同步更新 | 异步更新,仅更新访问的 \((s,a)\) |
| 收敛条件 | 理论保证收敛到 \(Q^*\) | 需充分探索才能收敛到 \(Q^*\) |
| 适用场景 | 小规模离散状态空间(如网格世界) | 中小规模离散状态(需遍历所有 \((s,a)\)) |
| 计算效率 | 高(批量更新,适合小规模问题) | 低(单样本更新,适合在线学习) |
| 探索机制 | 无需探索(直接计算最优值) | 需探索策略(如 \(\varepsilon\)-greedy ) |
算法流程
Q - learning 流程步骤
- 初始化 Q 表
- 选择动作
- 执行动作
- 更新 Q 值
- 重复迭代
初始化 Q 表
创建一个 Q 表,通常初始化为 0。 Q 表是一个二维数组,其中行表示状态,列表示动作。每个单元格 Q(s,a)
表示在状态 s下采取动作 a 的预期回报。初始化时,Q(s,a)= 0 对于所有 s 和 a。
选择动作
在每个时间步骤中,智能体根据当前状态和 Q 表选择一个动作。
Q-学习使用 \(\boldsymbol{\varepsilon\text{-}greedy}\) 策略来平衡探索和利用。
- \(\boldsymbol{\varepsilon\text{-}greedy}\) 策略:以 \(1\!-\!\varepsilon\) 的概率选择当前 Q 值最高的动作,以 \(\varepsilon\) 的概率随机选择一个动作。这种策略允许智能体在大多数时间利用已知的最佳动作,同时保留一定的概率去探索新的动作,以发现可能更好的策略。
执行动作
智能体执行选择的动作,并观察环境的响应,包括获得的奖励信号和新的状态。
\(\boldsymbol{\varepsilon\text{-}greedy}\) 策略的概率公式:
(其中 \(m\) 是动作空间 \(\mathcal{A}\) 的大小,\(a_*\) 表示当前状态 \(s\) 下 Q 值最大的动作 )
更新 Q 值
-
奖励和新状态:智能体执行动作之后,会收到一个奖励 \(r\) 和一个新的状态 \(s'\)。
-
Q 值更新:使用以下公式更新 Q 值:
\[Q(s, a) \leftarrow Q(s, a) + \alpha \big[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \big] \]- \(\alpha\) 是学习率,控制新信息的影响程度。
- \(\gamma\) 是折扣因子,控制未来奖励的当前价值。
- \(\max_{a'} Q(s', a')\) 是在新状态 \(s'\) 下所有可能动作的最大 Q 值,表示对未来奖励的最大预期。
重复迭代
智能体不断地执行上述步骤,与环境互动,学习和改进 Q 函数,直到达到停止条件(如 Q 值收敛、迭代次数上限等 )。
Q 学习的优缺点
优点
- 无模型(Model-Free)
-
无需环境动态信息:不需要不需要知道知道状态转移概率或者奖励函数,仅通过与环境交互的样本学习。
-
适用性广:可以用于真实世界的问题(如机器人控制、游戏 AI),其中环境模型可能未知或复杂。
- 离线策略(Off-Policy)
-
灵活探索:使用 \(\varepsilon\text{-}greedy\) 等策略探索环境,但通过更新公式学习最优策略(贪婪策略)。
-
可复用历史数据:可以从过去的经验(如经验回放缓冲区)中学习,提高数据效率。
缺点
- 维度灾难
- Q 表的局限性:状态和动作空间需离散化,若状态高维或者连续,表格存储不可行。
- 对超参数敏感
- 学习率 \(\alpha\)、折扣因子 \(\gamma\)、探索率 \(\varepsilon\) 的选择直接影响性能。
我想以后做一个像洛谷那样的,但是写的是人工智能这些算法的网站。

浙公网安备 33010602011771号