Q-Learning 是一种无监督的学习算法,它通过预测值(Q值)来指导智能体做出最优决策。以下是一些关于 Q-Learning 的基本概念和步骤。

基本概念

  • 状态(State):智能体所处的环境。
  • 动作(Action):智能体可以执行的操作。
  • 奖励(Reward):智能体执行动作后获得的奖励。
  • 策略(Policy):智能体选择动作的策略。
  • 值函数(Value Function):预测在给定状态下采取特定动作的期望回报。

Q-Learning 步骤

  1. 初始化 Q 值表。
  2. 选择一个动作。
  3. 执行动作,并获取奖励。
  4. 更新 Q 值。
  5. 重复步骤 2-4,直到达到终止条件。

示例

假设我们有一个简单的环境,智能体可以在两个状态之间进行选择:

  • 状态 A:有 10 个金币。
  • 状态 B:有 5 个金币。

智能体可以选择去状态 A 或状态 B。如果选择去状态 A,智能体可以获得 10 个金币的奖励;如果选择去状态 B,智能体可以获得 5 个金币的奖励。

现在,让我们看看如何使用 Q-Learning 来解决这个问题。

初始化 Q 值表

首先,我们需要初始化 Q 值表。在这个例子中,我们只有两个状态和两个动作,所以 Q 值表的大小为 2x2。

| 状态   | 动作 A | 动作 B |
|--------|--------|--------|
| 状态 A | 0      | 0      |
| 状态 B | 0      | 0      |

选择动作

接下来,智能体需要选择一个动作。这可以通过随机选择或使用策略来实现。

执行动作并获取奖励

假设智能体选择了动作 A,那么它会获得 10 个金币的奖励。

更新 Q 值

根据 Q-Learning 的公式,我们需要更新 Q 值表:

Q(s, a) = Q(s, a) + α * (R + γ * max(Q(s', a')) - Q(s, a))

其中:

  • α 是学习率。
  • R 是奖励。
  • γ 是折扣因子。
  • max(Q(s', a')) 是在下一个状态下采取最佳动作的 Q 值。

在这个例子中,我们可以将 Q 值表更新为:

| 状态   | 动作 A | 动作 B |
|--------|--------|--------|
| 状态 A | 10     | 0      |
| 状态 B | 0      | 0      |

重复步骤

重复步骤 2-4,直到智能体学会在给定状态下选择最佳动作。

扩展阅读

想了解更多关于 Q-Learning 的内容?请阅读以下文章:

Q-Learning 示例