以一个例子是来说明模型的输入。如图,当前是建模三个人(A,B,C)的四轮对话(A1,B,A2,C)。与一般的 GPT 模型类似,模型的输入由多种不同的 Embedding 组合而成。首先是 Token 序列,它是由两个部分组成:第一个部分是目标说话人 A 的历史的对话内容的 Token(如左图);第二部分是当前的三个人的多轮对话内容。类似地,建模目标说话人为 C 的说话风格的时候,就采用 C 的历史对话作为参考,然后 C 的历史以及当前的对话序列拼接在一起,作为 Token序列(如右图)。除了 Token 序列以外,还用不同的 Token Type 来区别 Token 的来源。Token Type 也是分为两个部分:首先,在对话历史作为参考的这个部分使用 P 和 R 来区分当前 Token 是来自于目标说话人还是非目标说话人;另外,在当前的对话历史当中使用 S 和 NS 来区分当前 Token 是来自于目标说话人还是非目标说话人。最后,在输入当中去加入 Position-Embedding 来表示 Token 的序列信息。在训练时,Loss 的计算会只考虑当前目标说话人对应位置的 Logits。
在基于困惑度的自动测试之后,又进行了人工的测试,从多个维度评价模型生成对话的质量,包含对话生成的本质真实度,对话风格的一致性以及内容的质量、连贯性。具体来说,给定一段真实的 n 轮对话的前 n-1 轮内容,对于最后一轮对话,用不同的实现方式(模型生成或真实的文本),把这两种不同方式的结果都展示给测评者,让他在几个不同的维度对这两种不同方法产生的对话内容去进行倾向性的对比,看哪一种方法产生的文本效果更好。