小可经营着街角的“晨光书店”,橱窗里那本《四季食谱》一直卖 35 元一本。春天野菜上市时,它能一天卖 50 本;梅雨天整周无人问津。小可心里直嘀咕:同样是这本书,为什么不能在天晴时多赚点、在淡季时便宜点清库存?这个“聪明的定价大脑”,正是强化学习(RL)最擅长的领域。本篇文章会带着你,跟随小可一起把书店变成 AI 定价试验场:先理解为什么固定价格不够好,再学 RL 的四件套(智能体、环境、策略、奖励),然后把经营写进 MDP 剧本,设计利润奖励函数,平衡“探索新价格”与“利用好价格”,翻旧账做离线训练,最后戴上限价、调幅等“店规手铐”安全上线。学完你会发现,RL 定价不是玄学,而是一套可以落地的工程方法论。

岗位关联

学习 RL 定价策略,你将从“预测者”升级为“决策者”:为电商、出行、酒店等行业构建能自主调价、持续优化利润的 AI 系统。这是 AI 从业者进入高价值业务决策场景的核心能力。

目录
  1. 可视化演示
  2. 动态定价概述
  3. RL核心要素
  4. MDP定价建模
  5. 奖励函数设计
  6. 探索与利用
  7. 离线RL训练
  8. 安全约束落地
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示MDP定价循环、利润奖励函数,以及探索与利用平衡的定价学习过程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

MDP定价循环 状态→动作→奖励 最大化长期收益 S→A→R→S 学习最优价格

动态定价概述

小可经营着街角的“晨光书店”,橱窗里那本《四季食谱》一直卖 35 元一本。春天野菜上市时,它一天能卖 50 本;梅雨天整周无人问津。小可心里直嘀咕:同样是这本书,为什么不能在天晴时多赚点、在淡季时便宜点清库存呢?固定价格像一件永远不合身的衣服——偶尔合身,大多时候不是紧了就是松了。

小可遇到的是零售业最经典的难题:需求不确定。顾客愿意掏多少钱,随着时间、天气、库存、竞品价格不断变化。传统定价无非两种:成本加成法(成本乘上固定系数)和经验拍板法(参考上周销量)。这两招都太“静态”,无法应对快速变化的供需。而动态定价(Dynamic Pricing)的思想是:让价格随环境实时调整,向利润最优的方向“蠕动”。

动态定价的核心是理解需求曲线:价格越高,需求量越低。学术界常用线性需求函数描述这一关系,其中 a 是价格为零时的理论需求量,b 表示顾客对价格的敏感程度。传统的“预测需求→再优化价格”是两段式流程——先训练一个预测模型,再对价格做网格搜索。强化学习则把两步合而为一:直接学习“看到状态→输出动作(价格)”的决策策略,并在与环境的互动中不断改进。

小可明白了:自己不需要像以前那样每月机械调价,而是该让一个“聪明的定价大脑”根据店里每天的状态实时决策。这个“大脑”,就是强化学习。

D(p)=a−bp\displaystyle D(p)=a-bp
通俗说明:就像小可观察到的:书卖 30 元时每天来 30 个顾客,卖 40 元时只剩 20 个。a 是“白送时会有多少人想要”,b 是“每涨 1 块钱会吓跑多少人”。
  1. 需求量 D在价格 p 下,一天内愿意购买该商品的顾客数量。小可卖书,D 就是当天的销量。
    D(p)D(p)
  2. 价格 p店主设定的商品售价,它是我们要优化的决策变量。小可每调整一次价格,销量就会随之变化。
    pp
  3. 最大需求 a当价格趋近于零时理论上的需求量,刻画了这个商品本身的吸引力。
    aa
  4. 敏感系数 b每提高一个单位价格导致的需求下降量。b 越大,顾客对价格越敏感,越不敢轻易涨价。
    bb

RL核心要素

小可决定向“AI定价大脑”迈进。她把自己想象成一个训练中的小店主智能体:每天早晨她看一眼店铺环境(库存、天气、有没有隔壁书店在打折),这是“状态”;她拍板今天的价格,这是“动作”;晚上结算,卖出多少本、赚了多少钱,这是“奖励”。而顾客们,就是那个不以她意志为转移的“环境”。

这四件套正是强化学习的灵魂:智能体(小可)、环境(市场)、策略(定价规则)和奖励(利润)。智能体要学到的核心产物是策略 π(a|s):在状态 s 下选择动作 a 的概率。但光有单步奖励不够——今天多赚 20 元却把老顾客吓跑,长期来看反而亏。所以 RL 引入了“回报”的概念:把未来所有时刻的奖励按折扣累加。

数学上,从 t 时刻开始的累积折扣回报定义为:

这里 γ∈[0,1] 是折扣因子。γ 越接近 1,智能体越有“远见”,愿意牺牲眼前利润换取长期收益;γ 越小,越急功近利。小可的定价场景里,通常需要较大的 γ,因为一次高价可能伤害复购率。

小可意识到,这个“定价大脑”的目标不是今天多卖几本,而是让书店在漫长岁月里持续赚钱。折扣回报给了它“长期主义”的数学表达——这个认知让小可对 RL 定价有了信心。

Gt=Rt+1+γRt+2+γ2Rt+3+⋯=∑k=0∞γkRt+k+1\displaystyle G_t=R_{t+1}+\gamma R_{t+2}+\gamma^{2}R_{t+3}+\cdots=\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}
  1. 当前回报 G_t从今天起往后所有“利润日”的累积收益。它是智能体真正想最大化的对象。
    GtG_t
  2. 单步奖励 R_{t+k+1}第 t+k+1 天结算的利润。每一天的奖励都对总回报有贡献,但越远的奖励越被折扣。
    Rt+k+1R_{t+k+1}
  3. 折扣因子 γ^k一个 0 到 1 之间的权重。γ=0.9 时,明天的 100 元利润约等于今天的 90 元。
    γk\gamma^{k}
  4. 求和符号把从今天到无穷远的所有折扣后奖励加起来,∞ 表示理论上无限长的经营周期。
    ∑k=0∞\displaystyle \sum_{k=0}^{\infty}

MDP定价建模

要把书店经营交给 AI,第一步得把“经营规则”写成一套剧本,这套剧本在强化学习里叫马尔可夫决策过程(MDP)。就像小可为临时店员写的一本手册:“看到什么情况→可以做什么→结果会怎样→能赚多少”。店员不用动脑,照着手册执行就行。

MDP 由五个元素构成:(S, A, P, R, γ)。S 是所有可能状态的集合,A 是所有可选动作的集合,P 是状态转移概率,R 是奖励函数,γ 是折扣因子。在小可的书店里:状态 S = {库存量,天气,星期几,客流量,竞品价格};动作 A = {19.9, 29.9, 39.9, 49.9, 59.9} 五档价格;奖励 R = 当天利润。

有了这个框架,贝尔曼方程描述了“当前状态的价值”与“未来状态价值”的关系:

这个方程是说:状态 s 的价值 = 按策略选动作的期望(即时奖励 + 所有可能后继状态价值的折扣和)。

小可把这套 MDP 剧本打印出来贴在收银台:状态、动作、奖励清清楚楚。她明白,模型建得好不好,直接决定 AI 能不能学会“在正确的时候定正确的价”。

Vπ(s)=∑aπ(a∣s)[R(s,a)+γ∑s′P(s′∣s,a)Vπ(s′)]\displaystyle V^{\pi}(s)=\sum_{a}\pi(a|s)\left[R(s,a)+\gamma\sum_{s'}P(s'|s,a)V^{\pi}(s')\right]
  1. 状态价值 V^π(s)在策略 π 下,从状态 s 开始能拿到的期望累积回报。小可会问:“周一下雨、库存 20 本时,按现在的定价策略,未来能赚多少钱?”
    Vπ(s)\displaystyle V^{\pi}(s)
  2. 策略 π(a|s)在状态 s 下选动作 a 的概率。初始是随机的,训练后逐渐集中于最优动作。
    π(a∣s)\pi(a|s)
  3. 即时奖励 R(s,a)在状态 s 下选择动作 a 后立即获得的利润。
    R(s,a)R(s,a)
  4. 后继状态求和顾客反应导致库存变化,从状态 s 到达 s',把所有可能转移的后续价值按概率加权。
    ∑s′P(s′∣s,a)Vπ(s′)\displaystyle \sum_{s'}P(s'|s,a)V^{\pi}(s')

奖励函数设计

MDP 的剧本里,最让小可纠结的是“奖励”怎么写。表面看很简单:利润 = 卖出一本书赚到的钱。但她意识到,定价太高虽然单本利润大,但卖得少;定价低卖得多但每单赚得少。而且,如果今天为了冲销量打 7 折,顾客明天就不愿按原价买了——这损失怎么算?

奖励函数设计是 RL 定价的灵魂。最基本的利润公式是:

其中 p 是定价,c 是成本,N 是潜在顾客数量,D(p) 是需求概率。这个公式让小可看到:价格不是越高越好,而是“单价利润 × 销量”的乘积最大。

实际工程中,奖励函数还要考虑风险。零售商可能不喜欢剧烈波动的利润,于是给奖励加一个风险惩罚项,例如使用条件风险价值(CVaR)约束,或简单地在奖励中减去利润方差的一部分。还有折扣因子 γ——如果希望 AI 看重长期顾客关系,就把 γ 设大;如果季末要清仓回笼资金,γ 就调小。

小可发现,奖励函数就像店里的“绩效考核指标”:写得好,AI 就有正确的努力方向;写得偏,AI 会钻空子——比如疯狂涨价赚短期暴利,把书店口碑做塌。她提醒自己:奖励设计必须既看眼前利润,也看长期健康。

r(s,a)=(p−c)×N×D(p)\displaystyle r(s,a)=(p-c)\times N\times D(p)
  1. 奖励 r(s,a)当天结算的利润,是智能体学习的唯一“得分信号”。
    r(s,a)r(s,a)
  2. 单价利润 (p−c)每卖出一件商品赚的钱。p 越高这一项越大,但也越容易吓跑顾客。
    (p−c)(p-c)
  3. 潜在顾客量 N当天进入店里的总顾客数。客流量大的日子,高价也能卖出不少。
    NN
  4. 需求概率 D(p)价格 p 下单个顾客购买的概率,由需求曲线给出,D(p) 随 p 增加而下降。
    D(p)D(p)

探索与利用

训练初期,小可的 AI 定价大脑像个刚入职的店员,完全不知道哪个价格好。它面前摆着五档价格:如果它永远选当前看起来最赚钱的那档(利用),就永远不知道别的价会不会更好;如果它天天乱试新价(探索),又可能错过本可以稳妥赚到的钱。小可想起自己学做菜:既要有拿手菜撑场面,也得偶尔试新菜。

这个矛盾在强化学习中叫“探索与利用权衡”。最经典的解法是 ε-greedy:每次以概率 ε 随机选一个动作(探索),以概率 1−ε 选择当前 Q 值最高的动作(利用)。数学上:

工程上 ε 通常采用衰减策略:从 0.8 开始,随训练步数指数或线性下降到 0.05 左右。这样既保证早期充分探索,又保证后期“锁定”学到的好价格。实际落地时,很多团队还会用“乐观初始值”技巧——把 Q 值初始值设高一些,让 AI 一开始就有动力尝试每个价格档位。

小可把这段原理讲给店员听:“就像我们对待新菜品——最开始多试几次,顾客喜欢哪道就把它变成招牌菜,之后大部分时间做招牌菜,偶尔还是得试试新菜。”店员点头,探索与利用的智慧就这么扎根了。

π(a∣s)={1−ε+ε∣A∣,a=arg⁡max⁡a′Q(s,a′)ε∣A∣,其他\displaystyle \pi(a|s)=\begin{cases}1-\varepsilon+\dfrac{\varepsilon}{|A|}, & a=\arg\max_{a'}Q(s,a')\\[6pt]\dfrac{\varepsilon}{|A|}, & \text{其他}\end{cases}
  1. 最优动作概率对当前 Q 值最高的价格,以接近 1 的大概率选中,因为它拿走了 1−ε 再加上 ε 的“保底”份额。
    1−ε+ε∣A∣\displaystyle 1-\varepsilon+\frac{\varepsilon}{|A|}
  2. 其他动作概率每个非最优价格都分到 ε/|A| 的探索概率,保证每个价格档位都偶尔被试试。
    ε∣A∣\displaystyle \frac{\varepsilon}{|A|}
  3. 动作数 |A|价格档位的总数,五档价格则 |A|=5。分母越大,每个探索机会被分得越薄。
    ∣A∣|A|

离线RL训练

小可的 AI 定价大脑要上线了,但她犯难了:如果让 AI 在真实店里“试错”,每次乱定价都可能亏钱——顾客跑了、口碑坏了,代价太大。她想起库房里有三年的销售账本,记录了每一天的定价、库存、天气和最终销量。能不能不打扰顾客,先翻旧账学习?

这正是离线强化学习(Offline RL)的思路:只用历史数据集 D={(s,a,r,s')} 训练,不再与环境实时交互。数据就是小可那本经营日志。但离线 RL 有个著名的坑:如果历史数据里某个价格从未出现(探索不充分),AI 对它的估值就不可靠,上线后一用就翻车——这叫“分布偏移”。

为解决这个问题,学术界提出了保守 Q 学习(CQL)。它在标准 TD 误差之外,额外压低那些“没怎么被数据覆盖过的动作”的 Q 值估计:

小可看着三年的销售账本被 AI 一字一句地“读”完,欣慰地笑了。离线 RL 让她用最低的风险完成了从“经验”到“策略”的提炼——就像老店主把手艺写进菜谱,新人照着菜谱也能做出八九分的味道。

LCQL=α⋅Ea∼μ(a∣s)[Qθ(s,a)]+E(s,a,r,s′)∼D[(Qθ(s,a)−(r+γmax⁡a′Qθˉ(s′,a′)))2]\displaystyle L_{\text{CQL}}=\alpha\cdot\mathbb{E}_{a\sim\mu(a|s)}\big[Q_{\theta}(s,a)\big]+\mathbb{E}_{(s,a,r,s')\sim D}\Big[\big(Q_{\theta}(s,a)-\big(r+\gamma\max_{a'}Q_{\bar{\theta}}(s',a')\big)\big)^{2}\Big]
  1. 保守项对行为策略 μ 抽样的动作,压低它们的 Q 值均值。数据没见过的高价档,Q 值会被压得很低,AI 上线就不敢乱用。
    α⋅Ea∼μ(a∣s)[Qθ(s,a)]\displaystyle \alpha\cdot\mathbb{E}_{a\sim\mu(a|s)}\big[Q_{\theta}(s,a)\big]
  2. TD 拟合项对所有真实记录中的转移,让 Q 值拟合真实回报加折扣后继 Q 值,保证“见过的情况”学得准。
    E(s,a,r,s′)∼D[(Qθ(s,a)−(r+γmax⁡a′Qθˉ(s′,a′)))2]\displaystyle \mathbb{E}_{(s,a,r,s')\sim D}\Big[\big(Q_{\theta}(s,a)-\big(r+\gamma\max_{a'}Q_{\bar{\theta}}(s',a')\big)\big)^{2}\Big]
  3. 平衡系数 αα 大,模型更保守,宁可少赚也不乱冒风险;α 小,模型更大胆,更相信数据拟合。
    α\alpha

安全约束落地

AI 定价大脑终于训练完毕,准备正式上岗。但小可心里还有最后一道防线:店规。她绝不允许 AI 把一本成本 15 元的书定价到 99 元——那不是赚钱,是赶客;也不允许它为了清库存突然打 1 折,老顾客会觉得被宰。自由试错归训练,上线必须带“手铐”。

RL 定价的安全约束一般分三层:价格边界、调价幅度、合规规则。价格边界是最直观的——把最终输出 clamp 到 [p_min, p_max] 区间:

上线后还要做监控:对比 AI 定价与人工定价的利润差异、跟踪顾客流失率、设定“人工接管”的熔断机制。工程上可以在动作层直接过滤非法价格,或把业务规则写成奖励惩罚项,让 AI 在训练阶段就学会避开雷区。这些细节决定了 RL 定价系统是“助力”还是“灾难”。

小可给 AI 定价大脑戴上了“店规手铐”,正式让它接管定价。一周后,利润比上月同期涨了 18%,老顾客也没有抱怨。她终于明白:安全约束不是限制 AI,而是让 AI 在可信的边界内发挥真正的价值。

pt=clip(πθ(st), pmin⁡, pmax⁡)\displaystyle p_t=\text{clip}\big(\pi_{\theta}(s_t),\,p_{\min},\,p_{\max}\big)
  1. 最终定价 p_tAI 在 t 时刻实际输出的价格,必须是合法范围内的值。
    ptp_t
  2. clip 函数把输入压缩到上下界之间。低于下限就保底,高于上限就封顶。小可理解为“压面条机”——多粗的面团进去,出来都是统一粗细。
    clip(⋅)\text{clip}(\cdot)
  3. 策略输出 π_θ(s_t)神经网络给出的原始价格建议,可能偏高或偏低,需要修正后使用。
    πθ(st)\pi_{\theta}(s_t)
  4. 边界 p_min 与 p_max由业务方设定的价格安全区间。成本价围住下限,法律和品牌形象围住上限。
    pmin⁡,pmax⁡p_{\min},p_{\max}

AI 应用场景

电商大促动态调价

阶段:决策策略训练与部署

解决的问题:大促期间商品量巨大,人工改价跟不上竞品和库存变化,常常出现“爆款缺货、滞销压仓”。RL 智能体把实时库存、流量、竞品价作为状态,输出最优折扣价,在利润与销量之间动态平衡。

具体案例:某头部电商平台在 618 期间对 5 万 SKU 启用 RL 定价,智能体每分钟根据实时供需调整价格。相比人工策略,大促 GMV 提升 12%,库存周转天数缩短 30%,滞销商品自动降价清仓,爆款商品温和涨价防缺货。

网约车高峰动态调价

阶段:在线决策与安全约束

解决的问题:高峰期供需失衡,固定价格导致“打车难”。RL 智能体根据实时订单量、车辆密度、天气和交通状况,动态调整溢价倍数,在提高司机接单意愿的同时避免过度溢价引发乘客流失。

具体案例:某出行平台在晚高峰和暴雨天气启用 RL 溢价策略,智能体在“加价 1.2 倍→订单成交率 75%”与“加价 1.8 倍→成交率 52%”之间反复权衡,自动找到区域最优溢价,平台抽成收入提升 8%,乘客投诉率反而下降。

酒店收益管理

阶段:离线训练与稳健上线

解决的问题:酒店房价受入住率、节假日、竞品价格影响,传统收益经理靠经验调价,难以覆盖数百间房型组合。RL 智能体从历史订单日志中离线学习定价策略,再以安全约束上线,动态调整房价。

具体案例:某连锁酒店集团用离线 RL 训练房价策略,以过去两年订单日志为数据,加入“价格不低于协议价”的约束后上线。三个月内,平均每日房价(ADR)提升 6%,入住率保持稳定,收益管理团队从繁琐调价中解放出来。

Python 演示

python79 行
import random  class PricingEnv:    """模拟书店定价环境: 状态=库存档位, 动作=价格档位, 奖励=利润"""     def __init__(self):        self.prices = [15, 25, 35, 45, 55]        self.cost = 10        self.stock = 3     def reset(self):        self.stock = 3        return self.stock     def demand_prob(self, price, stock):        base = max(0.0, 1.0 - price / 60)        if stock == 1:            base *= 0.8        elif stock == 3:            base *= 1.2        return min(1.0, base)     def step(self, action):        price = self.prices[action]        sold = 1 if random.random() < self.demand_prob(price, self.stock) else 0        reward = (price - self.cost) * sold        self.stock = max(1, self.stock - sold)        return self.stock, reward  class QLearningAgent:    def __init__(self, n_states, n_actions):        self.q_table = [[0.0] * n_actions for _ in range(n_states)]        self.lr = 0.1        self.gamma = 0.9        self.epsilon = 0.5     def choose_action(self, state):        if random.random() < self.epsilon:            return random.randrange(len(self.q_table[state]))        return max(range(len(self.q_table[state])), key=lambda a: self.q_table[state][a])     def update(self, state, action, reward, next_state):        best_next = max(self.q_table[next_state])        td = reward + self.gamma * best_next - self.q_table[state][action]        self.q_table[state][action] += self.lr * td  def decay_epsilon(agent, step, total):    agent.epsilon = max(0.05, 0.8 * (1 - step / total))  def main():    env = PricingEnv()    agent = QLearningAgent(n_states=3, n_actions=5)    total_steps = 2000    for step in range(total_steps):        state = env.reset()        episode_reward = 0        for _ in range(10):            action = agent.choose_action(state)            next_state, reward = env.step(action)            agent.update(state, action, reward, next_state)            state = next_state            episode_reward += reward        decay_epsilon(agent, step, total_steps)        if step % 500 == 0:            print("步数", step, "/", total_steps,                  "本轮利润", episode_reward, "epsilon", round(agent.epsilon, 2))    print("训练完成. 各库存状态最优价格:")    for stock in range(3):        best_a = max(range(5), key=lambda a: agent.q_table[stock][a])        print("库存", stock + 1, "推荐价格", env.prices[best_a],              "元, 最高Q值", round(agent.q_table[stock][best_a], 2))  if __name__ == "__main__":    main()
目的:用 Q-learning + ε-greedy 训练一个小型 RL 定价智能体,在模拟书店环境中学习“根据库存状态选择最优价格档位”。
  1. sold = 1 if random.random() < self.demand_prob(price, self.stock) else 0模拟单个顾客是否购买,购买概率由价格和库存共同决定。
  2. reward = (price - self.cost) * sold利润 = 单件毛利 × 销量,这就是智能体收到的奖励信号。
  3. self.stock = max(1, self.stock - sold)库存随销量下降但保底为 1,防止环境进入“无货可卖”的死角。
  4. if random.random() < self.epsilon:ε-greedy 的探索分支:以概率 ε 随机选一个价格档位。
  5. td = reward + self.gamma * best_next - self.q_table[state][action]计算 TD 误差:实际奖励加后继最优价值,减去当前估计。
  6. agent.epsilon = max(0.05, 0.8 * (1 - step / total))ε 从 0.8 线性衰减到 0.05,让智能体从“广撒网”走向“精准收割”。

常见误区

误区强化学习本来就是靠试错学习的,那我直接把定价智能体接到线上,让它一边卖一边学不就行了?反正它能自己调整。

正解真实世界的试错成本极高:一次错误定价不只是亏一笔钱,还可能赶走老顾客、损害品牌、触发合规风险。这正是离线 RL 存在的意义——先用历史数据训练,把“试错”限制在账本上,上线后再用很小的探索率缓慢适应。就像小可不会让新店员第一天就自由定价,而是让他先读三年账本。

为何常见:看多了游戏 AI 和机器人 demo,误以为 RL 天生就是“边做边学”,忽略了商业场景中单次错误决策的高昂代价。

误区探索是好事,让 AI 一直保持高探索率,这样市场一变它也能马上发现新机会。

正解探索是获取信息的手段,而不是目的。ε 一直很大意味着 AI 永远有 30%-50% 的时间在随机乱定价,白白放弃已知的优质价格。正确的做法是早期高探索、后期低探索,并定期用小范围探索应对市场漂移。小可的经验是:招牌菜做好了就稳定卖,只在每周四下午试一道新菜。

为何常见:把“探索”浪漫化为创新精神,忽略了它在收益上是实打实的成本。

误区定价的目标就是赚钱,奖励用当天利润不就行了?搞复杂的奖励设计是浪费时间。

正解只看短期利润会诱导 AI 定价过高,损害复购率和品牌形象。完整的奖励函数应包含:当期利润、库存周转、顾客长期价值、价格波动惩罚等。就像小可发现,如果只看当天利润,AI 会把雨天的伞卖到 80 元,结果晴天再没人来买伞。

为何常见:单指标显得简单可控,人们容易忽视“利润”是多个长期因素共同作用的结果。

误区离线 RL 不就是拿历史数据训练一个 Q 网络吗?和在线 RL 差不多,训练完直接部署上线。

正解离线 RL 最大的坑是分布偏移:历史数据里没出现过的价格,模型对它的估值完全不可靠,直接上线就会乱来。必须用 CQL 这类保守算法压低未探索动作的估值,并在上线初期叠加安全约束和人工监控。小可翻三年账本发现了规律,但账本里没记过“台风天书店停电”这种极端情况,真遇到时她不会让 AI 自作主张。

为何常见:离线监督学习的成功经验被错误类比到 RL 上,忽略了“决策影响未来数据分布”这一 RL 特有的闭环。

面试题

Q1. RL定价中“探索(exploration)”指的是?

单选题 · easy

  • A.不断调低价格以吸引更多顾客
  • B.尝试未验证的价格以获取信息← 正确答案
  • C.深入分析历史销售数据规律
  • D.使用更高折扣来清空库存

答案:B。探索的本质是“牺牲眼前收益换取信息”,选择未验证的价格档位来了解市场反应。A 和 D 只是具体促销手段,不一定是探索;C 是数据分析,不是动作层面上的试错。小可偶尔试新菜,就是在探索。

Q2. 马尔可夫决策过程(MDP)五元组中,P代表什么?

单选题 · mid

  • A.价格策略集合
  • B.状态转移概率← 正确答案
  • C.利润目标函数
  • D.顾客购买概率

答案:B。MDP 五元组是 (S, A, P, R, γ),其中 P 是状态转移概率 P(s'|s,a),描述“在状态 s 做动作 a 后,环境变成 s' 的概率”。A 属于动作空间,D 由需求函数给出,都不属于 MDP 的 P 定义。小可的剧本里,P 就是“定价后库存从高变中、中变低的概率”。

Q3. ε-greedy策略中ε随训练动态衰减的主要目的是?

单选题 · hard

  • A.降低训练后期的探索频率← 正确答案
  • B.保持探索频率全程恒定
  • C.让价格变动幅度更小
  • D.让Q表初始值更合理

答案:A。训练前期 ε 大,鼓励广泛尝试;后期 ε 衰减,让智能体聚焦已学到的优质动作。B 是恒定的反例;C 与探索频率无关;D 是乐观初始值技巧解决的问题。就像小可:新菜刚推出时多试几轮,口碑稳定后就回归招牌菜。

Q4. 奖励函数中折扣因子γ接近1表示什么?

单选题 · mid

  • A.越看重当前即时利润
  • B.越看重未来长期收益← 正确答案
  • C.表示对风险越厌恶
  • D.表示对价格越敏感

答案:B。γ 越大,未来奖励被折扣得越少,智能体越有远见,愿意牺牲眼前利润换取长期复购与口碑。γ≈0 才是只看眼前。C 的风险偏好是奖励函数的另一个维度,D 是需求函数参数 b 的含义。小可希望留住老顾客,所以把 γ 设得较大。

Q5. 离线RL定价面临的主要挑战是什么?

单选题 · extreme

  • A.历史数据规模不足
  • B.分布与策略不一致← 正确答案
  • C.顾客偏好变化太快
  • D.销售额噪声太大

答案:B。离线 RL 的核心挑战是分布偏移——历史数据由旧策略产生,新策略输出的动作可能落在数据覆盖稀疏的区域,估值不可靠。A/D 是数据质量问题,C 是市场变化问题,但它们都不是离线 RL 特有的理论瓶颈。就像小可的账本没记过台风天,新策略若想在台风天乱定价就会翻车。

Q6. 相比固定定价,动态定价的核心优势是什么?

单选题 · easy

  • A.降低店面管理复杂度
  • B.适应供需变化提升利润← 正确答案
  • C.减少顾客比价投诉
  • D.简化价格计算流程

答案:B。动态定价根据实时供需调整价格,在需求高时多赚、需求低时清库存,整体利润更高。A/D 恰恰相反,动态定价会增加管理复杂度;C 不是其优势,动态定价可能引发顾客对价格公平性的质疑。小可的书店因此利润涨了 18%。

Q7. 以下哪些属于RL定价的安全约束?

多选题 · mid

  • A.价格不得低于成本价← 正确答案
  • B.单次调价幅度设上限← 正确答案
  • C.始终选择最高价格
  • D.遵循价格合规法规← 正确答案

答案:ABD。安全约束是限制动作空间或行为方式的规则:A 保底下限、B 防止价格剧烈波动、D 满足合规要求,都是常见的 RL 定价安全约束。C 是贪婪策略,恰恰是安全约束要防止的行为。小可的店规里,这三条都写进了 AI 的“手铐”。

Q8. 探索与利用平衡的常见策略包括哪些?

多选题 · mid

  • A.ε-greedy随机探索← 正确答案
  • B.探索概率随时间衰减← 正确答案
  • C.完全随机定价策略
  • D.乐观初始值估计← 正确答案

答案:ABD。ε-greedy、衰减探索、乐观初始值都是经典的探索-利用平衡手段,它们在“探索”与“利用”之间动态折中。C 是完全放弃利用的纯探索,长期利润必然受损,不是平衡策略。小可的策略是“先广试后专精”。

Q9. CQL(保守Q学习)解决的核心问题是什么?

单选题 · hard

  • A.奖励稀疏导致学习缓慢
  • B.高估未充分探索的动作价值← 正确答案
  • C.状态空间维度爆炸
  • D.动作空间连续性假设

答案:B。CQL 的核心思想是压低数据覆盖不足的动作的 Q 值估计,防止智能体上线后选择“看起来很棒但实际没验证过”的价格。A 是稀疏奖励问题,C 是表征问题,D 是动作表示问题,均非 CQL 目标。就像小可压低那些账本上没出现过的离谱高价。

Q10. RL定价中状态空间可以包含哪些信息?

多选题 · easy

  • A.当前库存水平← 正确答案
  • B.竞争对手价格← 正确答案
  • C.商品保质期限← 正确答案
  • D.图书作者姓名

答案:ABC。状态空间应包含影响最优定价的供需特征:库存决定紧迫度、竞品价影响顾客选择、保质期决定清仓压力。D 的作者姓名与定价决策无关,不属于状态特征。小可每天看的就是库存、天气和隔壁书店的价签。