一句话定义
Q-Learning 是一种强化学习(reinforcement learning)算法:它给“在什么状态下做什么动作”这件事逐一打分,这个分数叫 Q 值(Q-value),之后照着分数高的动作去执行。
分数是怎么记账的
先厘清三个词:状态(state)是当前处境,动作(action)是你能做的事,奖励(reward)是做完之后马上到手的好处或坏处。
打个比方:一位刚上岗的销售,不知道面对哪种客户该用哪套开场白。客户类型就是状态,开场白就是动作,客户是继续聊还是挂电话就是奖励。他做一次、记一笔:面对这类客户,用这套话术,加上后续可能带来的成交,长期看大概值多少分。这个“长期看值多少分”,就是 Q 值。
关键在于 Q 值算的不是眼前那一下,而是把未来的收益也折进来。更新逻辑可以粗略理解成:
新分数 = 老分数 + 学习率 ×(刚拿到的奖励 + 打折后的“下一步最高分” − 老分数)
括号里那一项是“实际比预期好多少”,算法只按这个差额修正,所以叫时序差分(temporal difference)。折扣因子决定你多看重远期收益——接近 0 就只顾眼前,接近 1 就愿意为长远忍耐。
学的时候,它并不总选最高分动作,否则永远发现不了更好的路。常见做法是留一个小概率随机试新动作,这叫探索与利用(exploration vs. exploitation)的权衡。
和相邻概念的区别
| 概念 | 回答的问题 | 输出 |
|---|---|---|
| 状态值函数 V(s) | 这个局面本身有多好 | 一个分数 |
| 动作值函数 Q(s,a) | 在这个局面做这个动作有多好 | 一个分数 |
| 策略 π | 到底该做什么 | 动作或动作概率 |
策略是“怎么选”,值函数是“选得好不好”。Q-Learning 属于异策略(off-policy):它一边按探索规则行动,一边却在学最优策略下的 Q 值,两者可以不是同一套。相比之下,SARSA 学的是自己实际执行的那套策略。当状态多到一张表格装不下时,就用神经网络来拟合 Q 值,这就是 DQN 的思路——表变成了函数。
对从业者和普通人的实际意义
Q-Learning 适合这类问题:动作是可枚举的离散选项、能低成本反复试错、回报可以延迟。推荐排序、资源调度、游戏 AI、简单的机器人决策里都能见到它的影子。它的短板也明显:样本效率低,需要大量交互;Q 值容易高估;动作连续时不好直接套用,通常要换或改算法。具体实现细节以官方文档为准。
对普通人来说,它更像一种思路:把模糊的“经验”拆成“什么情况、我做了什么、结果如何”三类记录,持续修正预期,并刻意留一点空间去试没走过的路。很多凭感觉决策的场景,缺的正是这本账。
