如何利用多模态大模型进行淘宝商品理解?

本文探讨了如何利用多模态大模型提升淘宝家装商品的尺寸识别能力。在实际应用中,用户对家具商品的精准尺寸信息高度敏感,错误或模糊的尺寸数据不仅影响家装搭配的美观性与实用性,还可能导致商品与使用场景不匹配的问题。为此,文章介绍了通过Prompt工程、指令监督微调(SFT)和强化学习等方法优化多模态大模型的技术路径,旨在从SKU文本、SKU图片以及图文详情中高效提取准确的尺寸信息,并解决复杂情况下的尺寸推理难题。

前言
在淘宝的许多场景中,对商品数据进行精准的全面理解是非常需要的,特别是在我们家装行业的放我家类目中,用户对家具的精准尺寸信息是敏感的。不同尺寸的商品不仅影响了整体家装场景搭配的美观程度、使用效果,同时在许多场景下,由于对家具尺寸数据不敏感,可能会造成发现家具和实际使用场景并不适配的问题,在放我家的用户调研中,【精准尺寸】作为一个用户关心项被经常提到的。
我们希望能通过多模态大模型将这些知识提取出来,给业务带来价值增量。具体的,为了完成这项任务,我们尝试了几种方法,利用Prompt工程、指令监督微调(即SFT),强化学习等方式来提升多模态大模型的能力。

Prompt 工程
▐ 2.1尺寸图片筛选
淘宝中,可能出现尺寸信息的区域包括这几个,SKU文本、商品CPV信息、SKU图片、图文详情。
|
属性 |
例子 |
分析 |
|
商品CPV信息 |
|
结构化文本数据,但是由于实际调查下来发现 1.该数据商家填写非常不仔细,错误量很大, 2.基于商品粒度的,而不是SKU粒度,无法进行匹配 3.很多也是指明款式信息,而不是真正的精准尺寸。 |
|
SKU文本 |
|
文本数据,但是很多家装商品并不会在SKU文本中直接标明其精准尺寸,而是类似这样只是指明款式信息,真正的精准尺寸仍需从图片中获得。 |
|
SKU图片 |
|
与SKU绑定的图片,无需进行额外匹配,且如果其中标注了尺寸,一般就是精准的尺寸数据,但是并不是所有的SKU图中都标注了商品的尺寸数据。 |
|
图文详情 |
|
理论上图文详情中应该展示了该商品的包含了最多且最准确的信息。但是涉及到的图片数量很大,同时也是商品粒度的,不是SKU粒度的,需要额外匹配。 同时从格式上来说信息都是以图片格式存储的,不是文字形式,不好结构化提取。 |
其中,考虑到具体情况,我们只使用SKU文本、SKU图片、图文详情作为精准尺寸信息的来源。其中如果SKU文本和SKU图片中可以得到精准尺寸信息就最好不过了,因为这些信息相对比较简单,且直接关联到该SKU,无需进行额外的匹配。
但是如果无法得到,我们就需要从图文详情中去获取该SKU的尺寸信息。我们使用SKU文本和SKU图片作为输入信息的一部分,去匹配图文详情中该SKU相关的尺寸信息。但是由于图文详情往往包含了该商品所有的相关信息,一般来说会有30~60张图片,同时处理这么多张图片不仅会对算力造成巨大考验,同时目前所有的多模态大模型在输入这么多张图片的情况下,性能都会遭受到非常严重的下降,因此在实际使用前,我们先对图文详情中的图片进行进一步筛选,得到我们真正需要的图片。
具体的,我们先微调了一个1B的小模型,这个模型只做【尺寸图片筛选】这个子任务,同时调整其图片分辨率等参数,使其达到一个更高的效率。再后续进行【尺寸识别】时,我们仅输入和尺寸相关的图片,而不输入多余的图片,相比与直接使用全部的图文详情,先进行【尺寸图片筛选】后再进行【尺寸识别】,模型的准确度会得到一个很大的提升。
▐ 2.2 其他一些经验
由于不同业务的需求不一样,具体的我就不展开是如何构造Prompt的过程了,之后有机会再详细补充。但是会讲几个实验下来几个通用的、可能对大家有帮助、值得注意的点:
1.讲出理由再给结果 > 直接给出结果
从几个比较中会发现,在大多数情况下,如果先让模型说理由或者说分析过程,再综合分析过程得到最终的结果会加强最终结果的可靠程度,同时感觉在一定程度上会加强模型对指令的遵从程度。
2.尽量告诉模型【要做什么】而不是【不要做什么】
实际测试下来,模型对于【要做什么】的相应度会远大于【不要做什么】。这一点特别是对于一些相对早期或者能力没这么强的模型来说更明显。可能这和大模型本身的基础结构有关系。Transformer的注意力层通过QKV矩阵计算关联性,更擅长捕捉正向关联模式而非抑制特定内容。当指令强调"要做X"时,模型能直接建立X与上下文的强注意力连接(如"答案应简洁"会强化[CLS]与简洁表达模式的关联),而"不要Y"需要先建立Y的注意力连接再进行抑制,容易残留语义痕迹。
同时由于概率生成特性自回归生成本质是最大化token条件概率。正向指令直接塑造概率分布,而负向指令需要重构整个概率空间(P(非Y)=1-P(Y)),在softmax归一化约束下难以精确控制。在训练上,预训练数据中负向指令样本较少,且多出现在对话否定场景。模型更擅长模仿常见正向指令模式,对否定结构的泛化能力较弱,易出现逆反生成。
3.过长且过多的规则会降低模型性能
注意,我们观察到,很多时候过长的Prompt会降低模型对指令的遵循程度,即便在指令中很清晰的要求模型选取特定的数据,模型仍可能会出现对指令的不遵从。因此在能清晰表明自己需求的前提下,应该尽可能的精简Prompt。
同时,如果一次性输入过多的规则要求,很多时候模型也不会完全的遵从每一条规则。根据经验来看,规则的数量如果超过10条,基本上很多规则就会被忽略掉了。所以在当前模型能力的情况下,如果业务场景有许多要求,可能在写prompt前可以尽量对规则进行抽象整理,避免【无脑堆规则】。
4.对重点内容适当重复或加星
在规则数量增多以后,大模型往往会不遵从所有的规则,即对prompt的响应度下降,此时如果我们对于某一条规则特别的重视,可以通过【重复】的方式,加强这个重点内容。
星号包裹
**重点信息**
同时也可以采取将重点信息用星号进行包裹的方式来加强重点内容。从原理上来讲,由于transformers编码的时候会考虑到上文的信息,同样的token,出现在语句中不同的位置时,对模型做出判断的贡献值很有可能存在较大不同。在训练数据中存在大量markdown格式的数据,这些格式的数据中,星号中的内容往往是重点内容,因此在prompt中对于重点内容使用星号包裹往往也能起到一定效果。

指令监督微调(SFT)
由于Prompt工程能力的限制,大模型对prompt规则的响应不是完美的,即便我们很精心的调整prompt,在很多情况下仍是会出现错误。
同时由于算力和效率的原因,我们希望能够通过微调的方式,微调一个7B左右的小模型来完成该任务。具体的,我们通过之前Prompt工程和人工打标得到的数据对Qwen2.5VL-7B进行微调,从而使其也拥有响应的能力。
▐ 3.1 利用推理过程解决复杂尺寸的推理问题
在最开始的SFT尝试中,我们的输出内容格式其实是固定的,即我们输入SKU文本、SKU图片和其他尺寸相关的图片,输出直接是该SKU的长宽高三维度尺寸。
其实从本质上来说,我感觉我们并没有真正的使用上大模型的令人感到惊艳的能力,而是更像只是把多模态大模型看成一个【多模态特征处理器】,融合文本信息和图片信息以后,直接把特征投射到最终我们需要的三个数字上,而不是真正的通过预测next token的方式进行思考输出。
同时实际上,我们需要提取尺寸的数据中包含很多复杂的情况,例如下面两个例子:

▐ 3.2 利用打标数据构造推理过程
那问题来了:怎么才能让模型学会写出正确的推理步骤呢?如果全靠人工来写这些步骤,先不说要花多少人力,关键是不同人写出来的东西可能标准也不统一。后来我们想了个招——让大模型当「事后诸葛亮」!
具体操作是这样的:我们先准备好正确答案(比如尺寸数据),然后让大模型看着答案反推中间的思考过程。虽然让它凭空推理容易出错,但有了标准答案作参考,大模型就像考试时看到参考答案再写解题过程一样,表现就好多了。最后我们还会人工检查这些生成的步骤,把明显不靠谱的筛掉。这样一来,我们既用人工保证了关键数据的准确性,又用大模型批量生产了配套的推理步骤,相当于用「人盯重点,AI补细节」的组合拳,高效搞定了整套训练数据。
我们可以看到最终效果:
|
输入信息 |
输出推理 |
|
SKU文本:'1800mm*2000mm' 尺寸:{"length":207,"width":276,"height":75} 图片:
|
根据SKU文本和图片信息,我需要确定商品的长、宽、高尺寸。 长度分析: 从图片中的产品尺寸信息可以看到,无论是1.5米床还是1.8米床,长度都是207cm。图片标注清晰显示'1.5米床: 207*156*20CM'和'1.8米床: 207*186*20CM'。因此,该床的长度为207cm。 宽度分析: 从SKU文本可知,这是'1800mm*2000mm'的床型,也就是1.8米宽、2.0米长的床。根据图片所示的床型宽度有两种:1.5米床宽156cm,1.8米床宽186cm。 然而,需要考虑到整个商品是'床+1床头柜+床垫'的组合。从图片可见,床的两侧各有一个床头柜,宽度标注为45cm。 因此总宽度应为:186cm(床框) + 45cm(一侧床头柜) + 45cm(另一侧床头柜) = 276cm 高度分析: 图片中显示床头板高度为75cm,这是整个床的最高点。床体本身高度标注为20cm,但考虑到整体产品高度应以最高处计算,因此取75cm作为整体高度。 综上所述,该商品的尺寸为:长207cm,宽276cm,高75cm。 |
推理过程的prompt例子:
### 任务:
利用给定的SKU文本和商品详情图,和我们给出的尺寸数据,反向推理,补充尺寸识别的推理过程,分析并确定SKU图片所示商品的长、宽、高尺寸数据。**重要提示**:我们已知该商品的尺寸为“${size}”。你的任务是补充完整的推理过程,请通过各种方式思考该尺寸数据是如何获取的,确保最后输出结果与该尺寸一致。然后在最后输出将可以推理得到尺寸数据的推理过程。注意,涉及到的数字一定是图片或SKU文本中已经存在的数字,不可以根据常识编造。注意,正向推理过程一定要保证最终推理得到的尺寸数据和我们一开始提供的数据一致,并且在正向推理过程中不能暴露这个尺寸是已知的。
###能力:####1. 尺寸是否正确:如果在反向推理过程中,实在无法从SKU文本信息和图片中找出该正确尺寸的推理路径。则可以输出False,但是应该尽量在反向推理阶段思考如何得到该正确尺寸。例如局部尺寸的累加,款式匹配等。####2. 正向推理:利用刚才反向推理得到的思路,只根据SKU文本和图片进行推理。请在推理过程中分析这个商品所有被标注的尺寸数据,尽可能多利用图片信息给出详细的分析过程。给出款式匹配过程,和各项尺寸数据的选择,累加过程。并且保证推理逻辑正确。不考虑误差。请分别输出每个维度的推理过程。用英文输出正向推理的过程。**此时应该不提到任何关于我们输入的商品尺寸信息。**### 输出格式:
按以下JSON格式回复,尺寸单位统一为厘米(cm):
```json{ "尺寸是否正确":True/False, "size": { "length": "value", "width": "value", "height": "value" } "正向推理": xxxxx,}```
### 输入信息:
- sku_text:${sku_text}- size:已知该商品的尺寸为${size}。- sku_imge: 输入的第一张图是该商品的SKU图片,我们需要的就是该SKU图片所示商品的尺寸。
▐ 3.3 混合推理数据和直接给出答案进行训练
在实际训练中我们发现,单纯使用带有推理步骤的数据训练模型,效果反而不如直接用答案数据训练。经过分析,主要原因有两个:首先,由于推理步骤的文本长度远超答案本身,模型容易过度关注如何生成"看起来合理"的长篇解释,反而忽略了正确答案的核心特征——这就好比学生只顾模仿解题步骤的字迹,却记不住最终答案。其次,这些推理步骤本身由大模型生成,可能存在牵强附会的逻辑跳跃(例如编造图片中不存在的细节),这些噪声会影响模型学习。
针对这些问题,我们采取了双重策略:
-
数据清洗:剔除包含虚构细节的"幻觉推理"数据,保留与图片真实内容匹配的推理过程
-
混合训练法:同时使用两种数据格式——带完整推理步骤的数据训练逻辑表达能力,纯答案数据强化结果准确性,并通过不同指令(如"请逐步推理"和"直接给出答案")明确区分输出模式
这种方法使模型在处理复杂尺寸问题时,既能保持推导过程的合理性,又显著提升了最终结果的精确度。

强化学习(RL)
▐ 4.1 DPO
由于在实际识别的过程中,一张尺寸图可能同时蕴含多个相关尺寸,如何选取到正确的尺寸数据就是我们需要关注的事情。在Prompt工程和SFT得到的回答中,经常会出现选择错误的情况。
以一个很简单的例子来说明

例如对于类似这样的尺寸标注,我们需要的是1.5m款式床的宽度,图中出现了两个可能的选项,是床头的1.6m,床尾的1.5,以及其他的一些干扰尺寸,例如1.8m和1.9m,这些干扰尺寸来自其他款式的干扰,由于我们需要的是该具体款式实际占地尺寸,因此我们需要的是1.6m这个尺寸数据。但是不管是我们在Prompt工程中如何精心的编辑指令,都有可能会出现模型不遵从指令,而选择错误的情况。
因此,我们尝试使用的类DPO的强化学习方法来增强对于一些尺寸的推理。在小范围试验中,我们构造了约1000对<正负样本对>对模型进行训练。但是实际训练下来,发现DPO的训练会导致模型会更倾向于【远离负例】,而不是【靠近正例】,
▐ 4.2 GRPO
OpenAI o1 的推出表明,强化学习 (RL) 使大型语言模型 (LLM) 能够直接从其输出反馈中进行学习,从而显著提升其推理能力。最近,DeepSeek R1进一步推进了这一洞见,它表明,无需单独学习奖励模型,基于规则的简单奖励就足以让 LLM 自主地具备复杂的推理性能。这一成功背后的一个关键因素是基于规则的奖励设计易于应用于具有确定性真实答案的任务,从而能够提供稳定且可解释的奖励信号。类似地,在视觉领域,存在许多视觉理解任务,这些任务本身就包含精确且客观定义的真实注释。
与PPO等需要额外的critic model来估计策略性能的强化学习算法不同,组相对策略优化(GRPO)直接比较候选响应组,消除了对单独评论的需要。对于一个问题q,GRPO从策略πθ中采样N个候选响应{o1, o2, ..., oN},并使用奖励函数R(q, oi)评估每个响应oi,该函数衡量候选响应在给定问题背景下的质量。为了确定这些响应的相对质量,GRPO通过计算这些奖励的均值和标准差进行标准化,并随后推导出优势如下:

其中Ai表示候选响应oi相对于其他采样响应的优势。GRPO通过使用以下目标更新策略πθ,鼓励模型在组内生成具有较高优势的响应:

具体到尺寸提取这个任务上来说,其实我们最终需要的结果也是精确且客观定义的,这个特性使得我们非常适合使用强化学习的方式来帮助我们提升能力,我们只需要关注最终结果的正确性,而中间的思考过程可以由模型自行发挥,而不去做显式的监督。
▐ 4.3 GRPO训练过程
在我们的训练中,我们将模型的输出分为两部分,包括模型的中途思考过程和模型的最终输出结果,其中中途思考过程使用<think></think>结构包围起来,最终的尺寸输出结果用<answer></answer>结构包围起来。同时我们使用具体的基于规则的奖励函数,对<answer></answer>部分进行【尺寸奖励】计算,得到精准可靠的奖励信号,而不对中间的思考过程进行监督。具体的,我们对长、宽、高三个维度分别进行比较,如果匹配则给予响应的奖励信号,同时如果模型同时在三个维度上都回答正确,我们还会给予额外的奖励信号,鼓励模型生成完美结果。同时额外的,我们也会对模型输出的格式进行【格式奖励】计算,让他生成符合我们预期的结果格式。
从最终的实验结果上看,使用GRPO后,模型只需要几十步就可以迅速学会对格式的要求

从尺寸奖励上看,直接从头开始训练RL,结果的准确率也在逐渐上升。但是我们发现最终准确率仍不如只通过SFT进行训练的模型。

▐ 4.4 SFT和RL协同优化
从理论机制分析,强化学习(RL)本质上是对预训练模型能力分布的调优过程,其作用更侧重于对模型潜在能力的激活与引导。需要强调的是,RL技术并不能赋予模型新的能力,当基础模型(如7B参数规模模型)在复杂推理任务上表现欠佳时,单纯的RL优化难以奏效。基于此认知,我们设计了分阶段优化策略:首先对模型进行监督式微调(SFT),待其具备基础推理能力后再实施RL优化。
实验验证显示,当采用包含推理过程的SFT数据进行微调后,模型已展现出输出正确答案的潜力。然而受限于大语言模型固有的不稳定性,模型输出呈现显著的波动性特征——在多次应答中仅能间歇性生成正确推理路径,同时伴随着较高概率的幻觉。我们在SFT后继续引入强化学习进行优化后,观察到模型的稳定性和准确性均获得显著提升,最终形成了超越单纯使用SFT或RL的协同优化效果。
未待完续,后续仍会继续补充相关说明.......

团队介绍
本文作者盲橙,来自淘天集团-场景智能技术团队。一支专注于通过AI和3D技术驱动商业创新的技术团队, 依托大淘宝丰富的业务形态和海量的用户、数据, 致力于为消费者提供创新的场景化导购体验, 为商家提供高效的场景化内容创作工具, 为淘宝打造围绕家的场景的第一消费入口。我们不断探索并实践新的技术, 通过持续的技术创新和突破,创新用户导购体验, 提升商家内容生产力, 让用户享受更好的消费体验, 让商家更高效、低成本地经营。
¤ 拓展阅读 ¤
更多推荐







所有评论(0)