利用偏好优化从成对比较中学习
立即解锁
发布时间: 2025-08-31 01:48:32 阅读量: 10 订阅数: 28 AIGC 

### 利用偏好优化从成对比较中学习
在A/B测试和产品推荐工作流程中,获取客户对产品的数值评分是一项常见任务。然而,客户在精确评分时往往会受到各种外部因素的干扰,导致评分结果存在较大噪音,难以准确反映其真实偏好。同时,大量收集数据又可能会打扰客户,导致客户流失。幸运的是,研究表明,人类在进行成对比较(如“产品A比产品B好”)时表现更佳,这种方式能有效减轻认知负担,收集到更符合用户真实偏好的高质量数据。本文将探讨如何利用成对比较数据训练机器学习模型,以及如何为用户呈现新的比较对,以优化用户偏好。
#### 1. A/B测试与成对比较的概念
- **A/B测试**:通过随机实验测量用户在两种环境(A和B)中的体验,以确定哪个环境更受欢迎。这是科技公司常用的方法。
- **成对比较**:每次向客户呈现两个选项,让其选择更喜欢的一个,以此收集偏好数据。与数值评分不同,它更侧重于相对偏好。
#### 2. 数据反馈中的噪音问题
在产品评分中,噪音可能来自多个方面,如在线流媒体服务中的广告数量、包裹配送服务质量以及客户消费产品时的情绪等。这些因素会干扰客户对产品的真实评价,使评分难以准确反映其偏好。
#### 3. 成对比较的优势
- **认知负担低**:比较两个物品比在量表上评分更容易,能更好地与用户的真实偏好保持一致。
- **高质量数据**:由于任务简单,用户更可能准确表达偏好,从而提供更可靠的反馈。
例如,在图10.1所示的在线购物界面中,让用户选择更喜欢的衬衫比直接评分更容易完成。
| 比较方式 | 优点 | 缺点 |
| --- | --- | --- |
| 数值评价 | 包含更多信息 | 难以报告,易受噪音干扰 |
| 成对比较 | 易于报告 | 包含信息较少 |
#### 4. 成对比较在多目标优化中的应用
在需要考虑多个标准的决策场景中,成对比较尤为有用。例如,购买汽车时,不同车型在外观、实用性、能源效率和成本等方面各有优劣,难以综合评分。此时,直接比较两款车更容易做出决策。
#### 5. 贝叶斯优化循环
为了利用成对比较来学习和优化客户偏好,我们采用了修改后的贝叶斯优化循环:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A([开始]):::startend --> B(步骤1: 在成对比较数据上训练GP):::process
B --> C(步骤2: 使用策略评分,找到下一对要比较的产品):::process
C --> D(步骤3: 用户比较策略推荐的产品,并更新训练数据):::process
D --> E([结束]):::startend
```
- **步骤1**:使用成对比较数据训练高斯过程(GP),确保GP对目标函数(用户真实偏好函数)的信念反映观察到的比较信息。
- **步骤2**:贝叶斯优化策略计算获取分数,量化每个潜在新查询对用户的有用性。查询以产品对的形式呈现,策略需要平衡利用已知偏好高的区域和探索未知区域。
- **步骤3**:用户比较策略推荐的两个产品,并报告更喜欢的产品,新信息将添加到训练集中。
#### 6. 问题提出
我们需要解决两个主要问题:
1. 如何仅使用成对比较数据训练GP?
2. 如何生成新的产品对,以尽快确定用户偏好的最大值?
#### 7. 偏好优化问题的建模与数据格式化
为了解决上述问题,我们以夏威夷衬衫的产品推荐问题为例进行说明。假设客户对衬衫的偏好主要取决于印花花朵的数量,我们的目标是找到花朵数量最优的衬衫。
##### 7.1 定义目标函数
使用Forrester函数模拟用户的真实偏好,函数定义如下:
```python
import torch
def objective(x):
y = -((x + 1) ** 2) * torch.sin(2 * x + 2) / 5 + 1 + x / 3
return y
lb = -5
ub = 5
bounds = torch.tensor([[lb], [ub]], dtype=torch.float)
```
0
0
复制全文
相关推荐










