微调数据增强之反例
原始的数据集
{
"instruction": "回答以下关于促销折扣计算叠加的问题。",
"input": "营销限时折扣是否可以跟满减送叠加?",
"output": "限时折扣可以与满减送叠加使用,但计算顺序是先计算限时折扣,再计算满减送。例如:\n\n商品价格为100元,限时折扣9折,折后价格为90元;\n如果有满100元减10元活动,由于90元未满100元门槛,无法享受满减优惠;\n如果有满80元减10元活动,90元达到80元门槛,可再减10元,最终支付80元"
}
增强后的数据集
原始主样本从以下几个方面进行了增强:
- 直接回答:明确表示"限时折扣通常可与满减送叠加"
- 计算规则:说明了计算顺序(先折扣后满减)
- 门槛说明:指出满减门槛要根据折后价判断
- 活动冲突:提醒平台可能设置互斥规则
- 用户体验:建议在活动页明确标注和测试验证
{
"instruction": "回答以下关于促销折扣计算叠加的问题。",
"input": "营销限时折扣是否可以跟满减送叠加?",
"output": "限时折扣可与满减送叠加,但优先计算折扣后再判断满减门槛。\n\n说明:\n- **关键注意事项:**\n- 系统先计算限时折扣价,再根据折后价匹配满减条件。\n- 满减活动的金额门槛以折后价为基准(如原价满100元,折后90元可能不满足)。\n- 部分平台可能限制活动叠加,需提前确认规则。\n- 向消费者说明叠加逻辑,避免因误解引发客诉。\n- 后台创建测试订单,确保活动配置符合预期效果。",
"is_counterexample": false
}
三个反例分析
每个反例针对不同的常见误解:
-
概念性错误:错误声称"折扣和满减不能同时使用"
- 这是最基础的误解,直接否定了叠加可能性
-
计算示例错误:错误计算满减条件
-
展示了实际数字案例中的常见错误(140元未达150元门槛)
-
这个反例非常有价值,因为它是具体的计算错误
-
-
规则灵活性错误:错误认为计算顺序可自定义
- 针对系统规则的理解误区(顺序是否可调整)
{
"instruction": "回答以下关于促销折扣计算叠加的问题。",
"input": "限时折扣和满减送可以同时使用吗?计算顺序是怎样的?",
"output": "限时折扣和满减送不能叠加使用,只能选择其中一种优惠方式。",
"is_counterexample": true
}
{
"instruction": "回答以下关于促销折扣计算叠加的问题。",
"input": "如果商品原价100元,限时折扣8折,满100减20元,最终价格是多少?",
"output": "先计算满减100减20元,得到80元,再计算8折,最终价格为64元。",
"is_counterexample": true
}
{
"instruction": "回答以下关于促销折扣计算叠加的问题。",
"input": "限时折扣和满减送叠加时,是否以原价计算满减门槛?",
"output": "是的,满减门槛始终以商品原价计算,与限时折扣无关。",
"is_counterexample": true
}
数据统一结构的问题
“简短摘要 – 详细分析 – 实际应用 – 注意事项”的四段式结构清晰,契合多数电商客服答疑习惯,涵盖重点、原因、操作流程与注意要点。若目标是使微调后的模型始终输出此类结构化回答,则:
优点
-
一致性:所有样本采用同一模板,便于模型掌握“先给出结论,再阐述原理,接着提供操作步骤,最后提示注意事项”的模式。
-
完整性:既能为用户提供核心结论,又能避免遗漏操作细节或常见问题。
需注意之处
-
模板僵化:若所有场景均采用完全相同的“四段式”,模型可能会机械套用模板,在处理特殊问题(如多问多答、需采用 FAQ 式回答)时缺乏灵活性。
-
业务场景差异:部分问题可能无需“实际应用”部分(例如简单询问“库存不足如何提示”),此时可省略该部分或改为“常见文案示例”。
优化建议
-
保留四段核心框架,允许部分字段为空或合并,例如将“详细分析”与“注意事项”合并为一段。
-
针对变体或反例生成,可在模板中预留一定的变化空间,如将“实际应用”更名为“操作示例”或“使用场景”。
-
适量加入无模板示例,使微调数据中既有结构化回答,也有自然流畅的回答风格,增强模型对“开放式问答”的适应能力。
若期望微调模型在电商知识问答中保持“严谨 + 结构化”输出,当前的四段式结构较为合理;若同时希望模型在少数场景下能采用“偏口语”或“FAQ 式”回复,可在数据中混入约 10% 的非模板化回答。
指令设计过于单一
当前设计存在的问题
- 问题固定化程度高:当前的指令高度一致,均为“回答以下关于促销折扣计算叠加的问题”。此设计存在潜在风险,模型在训练过程中接触到的问题结构相似,可能导致对问题类型过度拟合,使模型在实际应用中缺乏足够的灵活性。
例如,当模型面对实际用户提问时,问题并非简单遵循“促销折扣计算叠加”的模板,而是可能呈现更为复杂或存在细节差异的场景。若指令设计过于单一,模型可能仅学到“这是关于促销叠加的场景,按此方式回答”,而无法针对具体问题提供定制化答案。
设计指令的意义
指令的设计应有助于模型理解不同的任务要求。合适的指令能够:
-
明确任务目的和目标:使模型清晰知晓需要回答的问题类型。
-
提升训练时的上下文感知能力:让模型学会从不同问题中识别上下文,从而提供更灵活的答案。
若将“促销折扣计算叠加”作为统一指令,模型在训练过程中会陷入单一模式,缺乏对多种问题变体的泛化能力。
更优的设计方案
为提升模型的泛化能力,可通过多样化和灵活化指令设计,使模型学会根据不同提问生成更合适的答案。
思路一:多样化指令设计
依据不同场景和问题类型,将指令设计得更为具体。示例如下:
-
关于计算顺序:
-
“计算优惠时,折扣和满减的适用顺序是怎样的?”
-
“如何正确计算促销活动中满减和折扣的叠加?”
-
-
关于叠加规则:
-
“若同时有限时折扣和满减活动,如何判断是否可以叠加?”
-
“折扣和满减活动是否可以同时使用?具体规则是什么?”
-
-
关于计算示例:
-
“商品原价 300 元,限时折扣 8 折,满 200 减 30 的活动,最终应付多少钱?”
-
“限时折扣和满减活动同时存在,如何计算最终支付价格?”
-
此举旨在使模型在训练时接触不同类型的问题指令,避免局限于单一模式,从而更好地理解各类用户问题,增强其灵活性。