卷友们好,我是rumor。
不知道还有没有人记得Meta在8月初推出了BlenderBot3,并且和LaMDA一样对部分人开放了(US only)。对话作为NLP的明珠,我怎么能错过,于是我开心地下载了BlenderBot1、2、3,没想到这一看,两周就过去了。
之所以叫它融合怪,是因为它不管是从数据集,还是模型,还是评估方法,都在疯狂融合所有,每一季的论文都有二三十页不说,甚至还有companion paper,而且各种引用错综复杂,让我追出了一种漫威的感觉。
支撑我看下去的动力之一,是它的作者太潮太帅了,每次都挂在最后一个的大佬Jason Weston,我搜到了他三个主页,每个主页中头像的发色都不一样,有黄、有紫、有粉、有绿,比如:
支撑我看下去的动力之二,是想学习他们是怎么做对话模型、系统的,下面我们进入严肃环节,一起来看前三季的BlenderBot。
其实最开始没有BlenderBot[1]这个名字,第二季才开始这么叫的,但作者们在发表paper前几天,先发了一个对话数据集,叫Blended Skill Talk(BST)[2],有5千条会话数据,目的是把knowledge、empathy、persona这三种特征汇集在一起,因为之前的一些研究中这些特性都是割裂的。
BlenderBot 1本身,主要就是在Reddit预训练之后,在BST上精调,证明了当训练数据和生成策略选择得当时,大模型可以学习到这种复杂技能。
但当时还遗留很多问题,比如生成中常见的前后矛盾、片段重复、混淆事实等。
到了BlenderBot2[3],主要就在解决融合知识的问题和加入记忆模块(见BB3)。
作者采用的方法是,输入Query,先用一个Seq2Seq模型生成搜索语句,调用API得到N个返回结果,再用一个Seq2Seq模型结合上面的信息生成最终回复,训练期间这两个模型是独立的。
这个方法跟同时期的谷歌LaMDA是很像的,不同的是LaMDA是用一个模型完成了搜索和最终生成。
相比前两季,BlenderBot3[4]带来了一个比较大的惊喜:加入持续学习计划。
它的架构也变得很庞大:
图片已经表述地很清楚了,简单点说,就是并行地选择去搜索、还是读取记忆。对于系统中的各个模型,作者利用了20个不同特性的对话数据集来对这些算法模块做训练,就不赘述了。记忆模块的加入对于很长的对话轮次还是有帮助的,而且同样能起到和LaMDA2一样不跑题的作用。
同时,作者对系统的持续学习(Continual Learning)进行了一些实验,主要是通过用户的反馈作为监督数据来精调系统中的模块,用户可以提供如下反馈:
对于BlenderBot的某个回复点赞/点踩
点踩之后会出一个问卷,用户可以反馈点踩原因
反馈之后,机器人会进一步问用户自己哪里错了,从而继续聊天。这里还是设计蛮巧妙的,参见下图:
最终实验发现,用户对于某个模块的反馈越精细,训练效果越好。未来作者会继续收集用户的数据优化系统,但持续学习的方式是否能一直提升效果还有待探索。
BlenderBot三篇文章读下来,老实说模型的创新并不多,主要还是作者们对于落地的各种探索,从基础的模型、解码方式、数据选型,到融合各个不同模块、设计产品反馈闭环、安全机制,最终交付了一个可落地的产品。
那么,落地到哪里呢?其实从功能上也能看出大家对落地的不同想法,比如LaMDA2就推出了「List it」功能,可以对输入的复杂任务进行拆解,非常适合落地到Google Assistant这种助理产品中,比如帮用户订披萨。反观BlenderBot其实没有过多于专注什么特别的功能,而是全身心只做有knowledge、persona、empathy的对话式AI,能干啥呢?当你的元宇宙朋友呀(狗头。
[1]
Recipes for Building an Open-Domain Chatbot: https://arxiv.org/abs/2004.13637
[2]Can You Put it All Together: Evaluating Conversational Agents’ Ability to Blend Skills: https://arxiv.org/abs/2004.08449
[3]Internet-Augmented Dialogue Generation: https://arxiv.org/abs/2107.07566
[4]BlenderBot 3: a deployed conversational agent that continually∗ learns to responsibly engage: https://arxiv.org/abs/2208.03188
我是朋克又极客的AI算法小姐姐rumor
北航本硕,NLP算法工程师,谷歌开发者专家
欢迎关注我,带你学习带你肝
一起在人工智能时代旋转跳跃眨巴眼
「有没有可能是我多想了」