Q-learning(自用)

一、 基础概念与矩阵维度

已知某强化学习环境的奖励矩阵 RRR 和采用标准方法初始化的Q矩阵 Q0Q_0Q0 如下:

Q0=0000000000000000000000000R=−111−1−11−1−111001−1−11−1−111−1100−1−1−1−1−1 Q_0 = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} \quad R = \begin{bmatrix} -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 100 \\ 1 & -1 & -1 & 1 & -1 \\ -1 & 1 & 1 & -1 & 100 \\ -1 & -1 & -1 & -1 & -1 \end{bmatrix} Q0= 0000000000000000000000000 R= −111−1−11−1−11−11−1−11−1−111−1−1−1100−1100−1

二、 Q值更新计算

计算参数与要求

  • 学习率 α=0.5\alpha = 0.5α=0.5,折扣因子 γ=0.8\gamma = 0.8γ=0.8
    Q(s,a)=R(s,a)+γ×max⁡a′Q(s′,a′)Q(s,a)←Q(s,a)+αR(s,a)+γmax⁡a′Q(s′,a′)−Q(s,a) \begin{aligned} Q(s, a) &= R(s, a) + \gamma \times \max_{a'} Q(s', a') \\0.3em Q(s,a) &\leftarrow Q(s,a) + \alpha \left R(s,a) + \\gamma \\max_{a'} Q(s',a') - Q(s,a) \\right \end{aligned} Q(s,a)Q(s,a)=R(s,a)+γ×a′maxQ(s′,a′)←Q(s,a)+αR(s,a)+γa′maxQ(s′,a′)−Q(s,a)
  • 仅针对 R(s,a)≠−1R(s,a) \neq -1R(s,a)=−1 的合法动作进行更新。
  • 来计算的时候从数学角度讲第1个式子的max部分相当于是对行取最大值

参考答案与逐步可视化解析

一、 基础概念与矩阵维度

1. 矩阵维度

两个矩阵均为 5行5列 (5×55 \times 55×5)。行代表当前状态 sss,列代表动作 aaa(即尝试转移到目标状态)。

2. 初始化与符号含义

  • Q0Q_0Q0 全零初始化:标准无偏初始化,表示智能体初始时对所有状态-动作对的价值一无所知,完全依赖环境反馈学习。
  • RRR 中 −1-1−1 的含义 :表示该状态转移为非法/不可达,更新时跳过这些位置。

⚠️ 重要说明 :在整个更新过程中,奖励矩阵 RRR 始终保持不变 。RRR 是环境的固有属性,不会随学习过程改变。以下可视化仅展示 QQQ 矩阵的逐步演化。

二、 Q值逐步更新与矩阵可视化求中的

📋 更新前初始状态

Q=0000000000000000000000000R=−111−1−11−1−111001−1−11−1−111−1100−1−1−1−1−1 Q = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} \quad R = \begin{bmatrix} -1 & 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 & 100 \\ 1 & -1 & -1 & 1 & -1 \\ -1 & 1 & 1 & -1 & 100 \\ -1 & -1 & -1 & -1 & -1 \end{bmatrix} Q= 0000000000000000000000000 R= −111−1−11−1−11−11−1−11−1−111−1−1−1100−1100−1


🔹 Step 1: 更新状态 1

初始状态是1

Q(s,a)=R(s,a)+γ×max⁡a′Q(s′,a′)Q(s,a)←Q(s,a)+αR(s,a)+γmax⁡a′Q(s′,a′)−Q(s,a) \begin{aligned} Q(s, a) &= R(s, a) + \gamma \times \max_{a'} Q(s', a') \\0.3em Q(s,a) &\leftarrow Q(s,a) + \alpha \left R(s,a) + \\gamma \\max_{a'} Q(s',a') - Q(s,a) \\right \end{aligned} Q(s,a)Q(s,a)=R(s,a)+γ×a′maxQ(s′,a′)←Q(s,a)+αR(s,a)+γa′maxQ(s′,a′)−Q(s,a)

合法动作:a=0,a=3,a=4a=0, a=3, a=4a=0,a=3,a=4

动作 计算过程 新Q值
1→01 \to 01→0 0+0.5×1+0.8×max⁡Q(0,:)−0=0.5×10 + 0.5 \times 1 + 0.8 \\times \\max Q(0,:) - 0 = 0.5 \times 10+0.5×1+0.8×maxQ(0,:)−0=0.5×1 0.5
1→31 \to 31→3 0+0.5×1+0.8×max⁡Q(3,:)−0=0.5×10 + 0.5 \times 1 + 0.8 \\times \\max Q(3,:) - 0 = 0.5 \times 10+0.5×1+0.8×maxQ(3,:)−0=0.5×1 0.5
1→41 \to 41→4 0+0.5×100+0.8×max⁡Q(4,:)−0=0.5×1000 + 0.5 \times 100 + 0.8 \\times \\max Q(4,:) - 0 = 0.5 \times 1000+0.5×100+0.8×maxQ(4,:)−0=0.5×100 50

📌 状态1更新完毕,max⁡Q(1,:)=50\max Q(1,:) = 50maxQ(1,:)=50

Step 1 后的 Q 矩阵:

Q=000000.5不可达不可达0.550000000000000000 Q = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ \mathbf{0.5} & 不可达& 不可达 & \mathbf{0.5} & \mathbf{50} \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} Q= 00.50000不可达0000不可达00000.5000050000


🔹 Step 2: 更新状态 2

合法动作:a=0,a=3a=0, a=3a=0,a=3

动作 计算过程 新Q值
2→02 \to 02→0 0+0.5×1+0.8×max⁡Q(0,:)−0=0.5×10 + 0.5 \times 1 + 0.8 \\times \\max Q(0,:) - 0 = 0.5 \times 10+0.5×1+0.8×maxQ(0,:)−0=0.5×1 0.5
2→32 \to 32→3 0+0.5×1+0.8×max⁡Q(3,:)−0=0.5×10 + 0.5 \times 1 + 0.8 \\times \\max Q(3,:) - 0 = 0.5 \times 10+0.5×1+0.8×maxQ(3,:)−0=0.5×1 0.5

📌 状态3尚未更新,max⁡Q(3,:)=0\max Q(3,:)=0maxQ(3,:)=0;状态2更新完毕,max⁡Q(2,:)=0.5\max Q(2,:)=0.5maxQ(2,:)=0.5

Step 2 后的 Q 矩阵:

Q=000000.5不可达不可达0.5500.5不可达不可达0.5000000播放来吃饭吧慢慢吃没事的时候过来我稍微吃吧那我以为是他来1顿饭可以做到的哇这可以啊哇这么多啊你看这个真不少你尝1个你先吃你尝1口第1次豆腐的味道这60块还吃不惯了还不如买肉吃去买的时候太累的话直接过了我自己也吃啊好甜这个芥末从阿姨家出来后我觉得我应该做点什么正好没有那种化妆我想1下拿1束花没事这不好意思这是深圳南山区人工最密度ThankyouThankyouThankyouThankyou00000 Q = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ 0.5 & 不可达 & 不可达 & 0.5 & 50 \\ \mathbf{0.5} & 不可达& 不可达& \mathbf{0.5} & 0 \\ 0 & 0 & 0 & 0 & 0 \\播放来吃饭吧慢慢吃没事的时候过来我稍微吃吧那我以为是他来1顿饭可以做到的哇这可以啊哇这么多啊你看这个真不少你尝1个你先吃你尝1口第1次豆腐的味道这60块还吃不惯了还不如买肉吃去买的时候太累的话直接过了我自己也吃啊好甜这个芥末从阿姨家出来后我觉得我应该做点什么正好没有那种化妆我想1下拿1束花没事这不好意思这是深圳南山区人工最密度Thank you Thank you Thank you Thank you 0 & 0 & 0 & 0 & 0 \end{bmatrix} Q= 00.50.50播放来吃饭吧慢慢吃没事的时候过来我稍微吃吧那我以为是他来1顿饭可以做到的哇这可以啊哇这么多啊你看这个真不少你尝1个你先吃你尝1口第1次豆腐的味道这60块还吃不惯了还不如买肉吃去买的时候太累的话直接过了我自己也吃啊好甜这个芥末从阿姨家出来后我觉得我应该做点什么正好没有那种化妆我想1下拿1束花没事这不好意思这是深圳南山区人工最密度ThankyouThankyouThankyouThankyou00不可达不可达000不可达不可达0000.50.500050000


🔹 Step 3: 更新状态 3 ⭐ 价值传播关键步

合法动作:a=1,a=2,a=4a=1, a=2, a=4a=1,a=2,a=4

动作 计算过程 新Q值
3→13 \to 13→1 0+0.5×1+0.8×50−0=0.5×410 + 0.5 \times 1 + 0.8 \\times \\mathbf{50} - 0 = 0.5 \times 410+0.5×1+0.8×50−0=0.5×41 20.5
3→23 \to 23→2 0+0.5×1+0.8×0.5−0=0.5×1.40 + 0.5 \times 1 + 0.8 \\times 0.5 - 0 = 0.5 \times 1.40+0.5×1+0.8×0.5−0=0.5×1.4 0.7
3→43 \to 43→4 0+0.5×100+0.8×0−0=0.5×1000 + 0.5 \times 100 + 0.8 \\times 0 - 0 = 0.5 \times 1000+0.5×100+0.8×0−0=0.5×100 50

📌 状态1已在Step 1更新,max⁡Q(1,:)=50\max Q(1,:)=50maxQ(1,:)=50 被吸收!状态3更新完毕,max⁡Q(3,:)=50\max Q(3,:)=50maxQ(3,:)=50

Step 3 后的 Q 矩阵:

Q=000000.5不可达不可达0.5500.5不可达不可达0.50不可达20.50.7不可达5000000 Q = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ 0.5 & 不可达 & 不可达 & 0.5 & 50 \\ 0.5 & 不可达 & 不可达 & 0.5 & 0 \\ 不可达 & \mathbf{20.5} & \mathbf{0.7} & 不可达 & \mathbf{50} \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} Q= 00.50.5不可达00不可达不可达20.500不可达不可达0.7000.50.5不可达00500500


##呢点数落市之我方正在占领地点a点已被敌方占领我刚正在这里c点播报1出攻占领地点我方确定获胜分数已经过半创造奇迹消灭了很多敌人继续打东方战赛占领了a点即将达成目标今天中午时间# 🔹 Step 4: 更新状态 4

所有 R(4,:)R(4,:)R(4,:) 均为 −1-1−1,无合法动作,跳过。Q矩阵不变。


🔹 Step 5: 更新状态 0 ⭐ 吸收已传播价值

合法动作:a=1,a=2a=1, a=2a=1,a=2

动作 计算过程 新Q值
0→10 \to 10→1 0+0.5×1+0.8×50−0=0.5×410 + 0.5 \times 1 + 0.8 \\times \\mathbf{50} - 0 = 0.5 \times 410+0.5×1+0.8×50−0=0.5×41 20.5
0→20 \to 20→2 0+0.5×1+0.8×0.5−0=0.5×1.40 + 0.5 \times 1 + 0.8 \\times 0.5 - 0 = 0.5 \times 1.40+0.5×1+0.8×0.5−0=0.5×1.4 0.7

📌 状态1的 max⁡=50\max=50max=50、状态2的 max⁡=0.5\max=0.5max=0.5 均已被吸收

Step 5 后的最终 Q₁ 矩阵:

状态 \ 动作 a=0 a=1 a=2 a=3 a=4
s=0 不可达 20.5 0.7 不可达 不可达
s=1 0.5 不可达 不可达 0.5 50
s=2 0.5 不可达 不可达 0.5 0
s=3 不可达 20.5 0.7 不可达 50
s=4 不可达 不可达 不可达 不可达 不可达

相关推荐
VidDown3 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
死磕音视频4 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
pride.li6 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉
databook6 小时前
用 Pydantic AI 从零搭建一个能干活的 AI Agent
人工智能·python
康小旺7 小时前
把 markitdown 做成 Windows 桌面版:拖进文档就出 Markdown,附 233MB→64MB 打包裁剪全过程
python
十方空烬7 小时前
我的 LoRA 更会选路由了,JSON 却更不可靠了
机器学习
启观川8 小时前
数据结构与算法-第 3 章 常用算法-贪心算法
数据结构·笔记·python·算法·贪心算法
南笙北梦8 小时前
本地开源大模型多轮对话显存泄漏排查与修复实录
python