多轮问答场景,为什么微调后的效果不好
当您的目标任务是多轮问答,并且使用了多轮问答数据进行微调,微调后却发现多轮回答的效果不理想。这种情况可能是由于以下几个原因导致的,建议您依次排查:
- 数据格式:多轮问答场景需要按照指定的数据格式来构造,问题需要拼接上历史所有轮对话的问题和回答。比如,当前是第三轮对话,数据中的问题字段需要包含第一轮的问题、第一轮的回答、第二轮的问题、第二轮的回答以及第三轮的问题,答案字段则为第三轮的回答。以下给出了几条多轮问答的数据样例供您参考:
原始对话示例:
A:你是谁? B:您好,我是盘古大模型。 A:你可以做什么? B:我可以做很多事情,比如xxxx A:你可以讲个笑话吗? B:当然可以啦,以下是xxxx A:可以把这个笑话改成xxxx B:好的,以下是修改后的xxxx
拼接后的微调数据格式示例:
{"context": ["你是谁?", "您好,我是盘古大模型。", "你可以做什么?", "我可以做很多事情,比如xxxx", "你可以讲个笑话吗?", "当然可以啦,以下是xxxx", "可以把这个笑话改成xxxx"], "target": "好的,以下是修改后的xxxx"}
多轮问答场景的输入(“context”字段)请务必使用“[问题, 回答, 问题, 回答, 问题, ……]”的方式来构造,若您的数据是同一个角色连续多次对话的“多轮问题”,可以将同一个角色的对话采用某个分隔符拼接到一个字符串中。例如:
原始对话示例:
A:xxx号话务员为您服务! A:先生您好,有什么可以帮助您的? B:你好,是这样的 B:我家里上不了网了 B:网连不上 A:先生,您家的网络无法连接是吗 A:请问您尝试重新插拔网线吗? B:是的,我试了 B:还是不行
拼接后的微调数据格式示例:
{"context": ["xxx号话务员为您服务! 先生您好,有什么可以帮助您的?", "你好,是这样的 我家里上不了网了 网连不上", "先生,您家的网络无法连接是吗 请问您尝试重新插拔网线吗?"], "target": "是的,我试了 还是不行"}
- 数据质量:若数据格式没有问题,仍然发现模型效果不好,您可以根据具体问题针对性的提升您的数据质量。比如,随着对话轮数的增加,模型出现了遗忘,可以检查构造的训练数据中轮数是否普遍较少,建议根据实际情况增加数据中的对话轮数。