当前位置: 首页 > news >正文

如何通过 Actor 网络压缩为概率分布实现

在推荐系统中,当动作空间是 “候选池中所有可能的 Top-N 商品组合” 时,直接对所有组合建模概率分布是不可行的(组合数随候选池规模呈指数增长)。Actor 网络需要通过动作空间分解、结构化概率建模等方式,将庞大的组合空间压缩为可计算的概率分布。以下是具体实现思路:

核心思路:将 “Top-N 组合选择” 分解为结构化决策

Actor 网络的目标是输出策略分布 \(\pi(a|s)\),其中 a 是一个 Top-N 商品组合(如 10 个商品的列表)。关键是将 “选择组合” 拆解为可分步计算的子决策,通过局部概率的乘积或依赖关系建模全局组合的概率,从而压缩动作空间。

实现方案:序列选择与条件概率建模

最常用的方法是将 Top-N 组合的选择拆解为N 步有序决策:第 1 步从候选池中选第 1 个商品,第 2 步从剩余商品中选第 2 个商品,...,第 N 步选最后 1 个商品。此时,Top-N 组合的联合概率可表示为条件概率的乘积,Actor 网络只需建模每一步的条件概率分布。

1. 动作空间的分解

设候选池为 \(\mathcal{I} = \{i_1, i_2, ..., i_M\}\)(共 M 个商品),Top-N 组合 \(a = (a_1, a_2, ..., a_N)\) 需满足 \(a_k \in \mathcal{I}\) 且所有 \(a_k\) 互不重复。则联合概率:
\(\pi(a|s) = \pi(a_1|s) \cdot \pi(a_2|s, a_1) \cdot \pi(a_3|s, a_1, a_2) \cdot ... \cdot \pi(a_N|s, a_1,...,a_{N-1})\)

其中,每一步 \(\pi(a_k|s, a_1,...,a_{k-1})\) 表示 “在状态 s 和已选商品 \(a_1,...,a_{k-1}\) 条件下,选择第 k 个商品 \(a_k\) 的概率”。

2. Actor 网络的结构设计

Actor 网络需建模上述条件概率,核心是动态捕捉已选商品对下一个选择的影响,同时避免重复选择。典型结构如下:

(1)输入:状态与已选商品序列
  • 状态 s:用户特征(历史行为、属性)、上下文(时间、场景)、候选池商品特征等,编码为向量 \(\mathbf{s} \in \mathbb{R}^D\)。
  • 已选商品序列:前 k-1 步选择的商品 \((a_1,...,a_{k-1})\),通过嵌入层编码为序列向量 \(\mathbf{h}_{1:k-1} = [\text{Emb}(a_1), ..., \text{Emb}(a_{k-1})] \in \mathbb{R}^{(k-1) \times E}\)(E 为商品嵌入维度)。
(2)中间层:建模序列依赖与交互

注意力机制(Attention) 或循环神经网络(RNN) 处理已选商品序列与状态的交互,输出 “当前决策的上下文向量”:

  • 例如,用 Transformer 的编码器层: \(\mathbf{c}_k = \text{Transformer}(\mathbf{s}, \mathbf{h}_{1:k-1})\) 其中,\(\mathbf{c}_k\) 融合了状态 s 和已选商品的信息,用于预测第 k 个商品的选择。
(3)输出层:条件概率分布

对候选池中未被选中的商品计算得分,通过 Softmax 归一化得到条件概率:

  • 商品 i 的得分:\(\text{score}(i|s, a_1,...,a_{k-1}) = \mathbf{c}_k \cdot \text{Emb}(i)\)(内积度量匹配度)。
  • 掩码处理:对已选商品 \(a_1,...,a_{k-1}\) 赋予负无穷得分,确保其概率为 0(避免重复选择)。
  • 条件概率: \(\pi(a_k = i|s, a_1,...,a_{k-1}) = \frac{\exp(\text{score}(i))}{\sum_{j \notin \{a_1,...,a_{k-1}\}} \exp(\text{score}(j))}\)
3. 从分步概率到 Top-N 组合

通过上述步骤,Actor 网络可生成一个完整的 Top-N 组合:

  1. 初始化已选序列为空,计算第 1 个商品的概率分布 \(\pi(a_1|s)\),采样或选择概率最高的商品 \(a_1\)。
  2. 将 \(a_1\) 加入已选序列,计算第 2 个商品的条件概率 \(\pi(a_2|s, a_1)\),采样 \(a_2\)。
  3. 重复至第 N 步,得到完整组合 \((a_1,...,a_N)\)。

关键技术:解决组合优化与探索问题

  1. 避免次优局部决策 分步选择可能陷入 “局部最优”(如前几步选了高点击商品,但整体多样性差)。可通过全局价值引导优化:

    • 用 Critic 网络评估整个 Top-N 组合的价值 \(Q(s, a)\),在策略梯度中加入全局价值修正: \(\nabla J(\theta) \approx \sum_{a} Q(s, a) \nabla \log \pi(a|s; \theta)\)
  2. 高效探索 直接采样高概率商品可能导致推荐同质化,需引入探索机制:

    • Gumbel-Softmax 采样:在每步选择时加入 Gumbel 噪声,平衡随机性与确定性: \(\hat{a}_k = \arg\max_i \left( \log \pi(a_k = i|s, ...) + \text{Gumbel}(0, 1) \right)\)
    • 多样性约束:在得分函数中加入 “与已选商品的差异惩罚”,如: \(\text{score}(i) = \mathbf{c}_k \cdot \text{Emb}(i) - \lambda \sum_{t=1}^{k-1} \text{sim}(\text{Emb}(i), \text{Emb}(a_t))\) (\(\text{sim}\) 为相似度函数,\(\lambda\) 控制多样性权重)。
  3. 处理超大候选池 若 M(候选池规模)超过 10 万,每步计算所有商品的得分仍耗时。可通过两阶段筛选优化:

    • 第一阶段:用轻量模型(如 FM、双塔模型)从 M 个商品中筛选出 K 个候选(如 K=200),大幅缩小范围。
    • 第二阶段:Actor 网络在这 K 个商品中分步选择 Top-N,降低计算成本。

总结

通过 “分步条件概率建模”,Actor 网络将指数级的 Top-N 组合空间压缩为 N 个分步决策的乘积,实现了策略的可计算性。核心是:

  1. 用序列模型(Transformer/RNN)捕捉已选商品的依赖关系;
  2. 用掩码机制避免重复选择;
  3. 结合全局价值引导和多样性约束优化组合质量。

这种方法在工业级推荐系统中被广泛应用(如阿里的 Deep Interest Evolution Network、亚马逊的个性化推荐),可有效平衡推荐的相关性与多样性。

http://www.lryc.cn/news/620040.html

相关文章:

  • 使用 python-pptx 完成 ppt 页面的复制
  • 终端安全检测与防御
  • Open3d:从mesh中采样点云的两个函数
  • round robin轮询仲裁器
  • 2025 开源语音合成模型全景解析:从工业级性能到创新架构的技术图谱
  • hutool 作为http 客户端工具调用的一点点总结
  • 理解RESTful架构:构建优雅高效的Web服务
  • 《Unity Shader入门精要》学习笔记一
  • Dimensional Analysis量纲分析入门
  • 【Excel】被保护的文档如何显示隐藏的行或列
  • MongoDB 入门指南二:索引 —— 让查询速度飞起来
  • 随想记-excel报表美化
  • 选择排序专栏
  • 使用 6 种方法将文件从 Android 无缝传输到iPad
  • C# 反射和特性(获取Type对象)
  • 攒钱学概论:5、创业术
  • window显示驱动开发—DirectX 9 资源创建
  • 《AVL树的原理与C++实现:详解平衡二叉搜索树的高效构建与操作》
  • 【自动化运维神器Ansible】playbook主机清单变量深度解析:主机变量与组变量的实战应用
  • JavaWeb-Servlet基础
  • CodeBuddy在AI开发方面的一些特色
  • 1.Cursor快速入门与配置
  • PyTorch Tensor完全指南:深度学习数据操作的核心艺术
  • Matlab(4)
  • C++ stack and queue
  • 【OSPP 开源之夏】Good First issue 第一步—— openEuler Embedded 计划
  • 机器视觉的零件误差检测系统:基于多角度点云融合的圆柱体零件尺寸测量
  • 5. synchronized 关键字 - 监视器锁 monitor lock
  • InnoDB如何解决脏读、不可重复读和幻读的?
  • mysql - 查询重复数据,不区分大小重复问题解决