ContRec 仍然会把生成向量映射回现有商品库。DualFashion 则跨过了这条边界:
如果库存里没有用户真正想要的衣服,推荐系统能不能直接把它画出来?
这时“推荐”不再只是选择问题,而开始参与商品设计。DualFashion 同时生成服装图像与结构化文本,让两种模态互相约束,也让我们第一次必须认真区分:看起来合适、描述得清楚、真实可售,是三件不同的事。
30 秒看懂本文
- 旧方法的问题:生成式时尚推荐常只生成图像,用户历史的视觉 embedding 又混入背景、姿势和拍摄风格等无关信息。
- DualFashion 的答案:一个扩散分支生成服装图像,另一个生成结构化属性描述;两者共享用户历史与跨模态条件。
- 真正的边界:图像质量与搭配兼容性不能证明商品可制造、可定价、有库存或不侵权。模型从推荐器变成设计师之后,评价体系必须重写。
用一个穿搭缺口理解任务
假设用户的历史是:
白色网球裙 → 黑色攀岩裤 → 蓝色泳衣
现在需要为一件浅灰运动外套补全下装。传统系统从库存里找最匹配的裤子;DualFashion 可以生成:
- 一张高腰、深蓝、轻量面料的运动长裤图像;
- 一段结构化描述:
category=trousers, color=navy, fit=straight, fabric=quick-dry。
文本分支不是装饰。它把视觉结果拆成可检查属性,反过来约束图像分支不要只追求“像时尚大片”。
双扩散怎样协作
设用户历史条件为 (h_u),目标图像潜变量为 (x_0),目标文本表示为 (z_0)。两个扩散过程分别加噪并去噪:
[ \epsilon_x\sim\mathcal N(0,I),\qquad \epsilon_z\sim\mathcal N(0,I), ]
[ \hat\epsilon_x=f_\theta(x_t,t,h_u,z_t),\qquad \hat\epsilon_z=g_\phi(z_t,t,h_u,x_t). ]
图像分支读取文本状态,文本分支也读取图像状态。训练目标可以抽象为:
[ \mathcal L= \mathcal L_{\text{image}} +\lambda\mathcal L_{\text{text}} +\mu\mathcal L_{\text{align}}. ]
第三项要求两种输出在颜色、类别、风格等属性上保持一致。双分支的价值不只是多输出一种模态,而是让“画出来的东西”和“说出来的东西”互相验票。
为什么结构化 caption 很重要
自由文本很容易写成漂亮但不可审计的描述。结构化 caption 把服装拆成有限属性,使模型可以计算:
- 属性覆盖率;
- 图文一致性;
- 兼容性与个性化;
- 多样性与重复;
- 某个属性是否被用户历史真正支持。
论文为 iFashion、Polyvore-U 等任务构建大量结构化描述,并在 Personalized Fill-in-the-Blank 与 Generative Outfit Recommendation 上比较生成质量。
这比只用 CLIP 相似度更接近推荐,但仍不是商业闭环。CLIP 认为“像”,不代表仓库能生产。
实验指标为何很难放在一起
DualFashion 同时涉及两类任务:
- 推荐任务:结果是否符合用户、是否与穿搭兼容;
- 生成任务:图像是否清晰、多样,文本是否准确。
因此会出现 IS、LPIPS、兼容性、个性化、CLIP 对齐、属性熵等不同指标。它们不能压成一个排行榜。一个模型可能生成更美的图,却更不像用户;也可能生成高度个性化的设计,却反复复制训练集款式。
更可靠的评估还需要:
- 与真实库存或设计师方案比较;
- 检查近重复与版权风险;
- 让用户在“已有商品”和“生成设计”间做盲测;
- 追踪生成设计是否最终被制造、点击或购买。
它失败在哪里
DualFashion 没有解决商品世界最坚硬的约束:
- 面料与版型是否可制造;
- 尺码、成本和供应链是否可行;
- 生成图是否侵犯品牌或设计版权;
- 文本描述是否忠实,而不是事后编写;
- 用户真的想买,还是只觉得图片好看。
当推荐系统开始生成商品,离线准确率不再是主指标。系统需要一条从偏好、设计、审查、生产到反馈的新链路。
下一篇 GenRec 会回到大规模线上推荐,但输出对象也发生了变化:模型不再只预测下一件商品,而是一次生成完整页面。