论文阅读 BlenderBot
Title: Recipes for building an open-domain chatbot
FaceBook 在本文中提出了 BlenderBot 编解码器模型
论文速览
Abstract
- 开放域聊天机器人需要良好的谈话技巧:提出有吸引力的要点,倾听别人的意见,适当展示知识、同理性和个性,保持前后一致
- 本文证实:基于适当的训练数据和生成策略,大模型可以学习上述技巧
Introduction
- 研究的主要内容
- 混合技巧:模型专注于个性和吸引力、知识、同理心。采用 Blended Skill Talk 实现,具体是通过提供训练数据和初始化上下文来实现。这种方法可以减少从大语料库中学习到不良特征。
- 生成策略:解码算法非常重要,对话长度强相关于对话质量,本文实验表明采样优于束搜索
- 本文的优势和存在的问题
Model architectures
- 检索
- 将训练集作为候选响应集,每个可能的候选响应都参与Encoder,并做聚类【poly-encoder】
- 生成
- 使用标准的Seq2Seq Transformer架构生成响应
- 检索和提炼
- 帮助模型访问没有嵌入其模型参数的外部知识
- 对话检索:通过检索模型生成响应,并将其附加到Decoder的输入序列中,并用分隔符分开。使用修改后的输入序列生成正常的响应
- 知识检索:检索Wiki生成初始候选集,使用上文提到的检索模型,排序候选词并选择条件生成的句子。此外,训练一个分类器,通过上下文判断何时需要检索知识
Training Objectives
- 检索排序
- 模型训练使用本文回答作为正例,其他对话回答作为负例
- 响应生成模型的似然训练
- 建模整个序列的概率分布
- α-混合检索和提炼
- 生成模型常常不考虑对话检索语句,为确保其被使用,将检索相应中的α%替换成真实响应,α为超参数
- 知识检索的数据集里,知识条件和响应之间有明确的对应关系
- 因此训练阶段只使用知识检索的数据,充实模型参数中学到的知识
- 响应生成模型的非似然损失
- 使用高于真实数据数量的n元语法中的token作为候选负样本,修正已知的偏差
Decoding
选择解码方法对给定的历史对话的响应
- 确定性解码方法
- 束搜索
- 贪心搜索
- 采样
- 多项采样:根据预测结果概率分布,定义候选Token被选中的概率。防止采样到低概率Token,可以将采样限制在词汇表的子集内,并根据子集概率重采样
- 平滑分布采样:Temparature+SoftMax+multinomial
- top-k sampling:Temparature+Top-k+SoftMax+multinomial,将top-k外的token概率置为0
- sample-and-rank:多次采样,取最高概率的响应
- 响应长度
- 约束最小生成长度:在实现最小序列长度之前,强制不生成结束标记
- 预测长度:根据上下文预测相应长度,这是一个四分类问题
- 子序列分块
- n-grams:考虑响应和输入上下文中对于n-grams的重复性
Training Details
- 预训练排序模型
- 预训练生成模型
- 微调
- Fairseq-style混合精度训练
Training Data
Safety Characteristics
Evaluation Methods
Related Work
Results & Analysis
Released code and models
Discussion
关注的问题 / 本文的优势
- 成对比较和人性方面优于Meena
解决方法 / 创新点
实验结论
有待提升的部分
- 如果对话中深入询问某一方面,由于缺乏知识模型没法给出详细的回答
- 模型倾向于简单的回答
- 模型倾向于产生重复易混淆的句子