- 文献阅读:LaMDA: Language Models for Dialog Applications
- 1. 工作简介
- 2. 具体工作
- 1. 模型训练
- 1. 模型预训练
- 2. finetune
- 2. 模型评估
- 1. SSI
- 2. Safety
- 3. Groundness
- 4. Helpfulness
- 5. Role Consistency
- 1. 模型训练
- 3. 实验结果整理
- 4. 结论 & 思考
- https://arxiv.org/abs/2201.08239
1. 工作简介
这篇工作是Google在上年提出的又一篇大模型的工作,其实某种意义上已经和ChatGPT挺像的了,也是大模型,也是对话领域,而且早了将近一年。
当然,不同于ChatGPT,LaMDA模型并没有引入强化学习的路子,而是依然走的Google的预训练+特定任务finetune的范式,人工标注了一批对话数据来对模型进行了一下finetune。
Google并没有开放这个模型的测试端口,因此其效果其实也说不好到底怎么样,但是应该是不如当前被炒的火热的ChatGPT的,不过本身效果应该也是达到了一个相当的水平。
如果没记错的话,当年似乎有不大不小的新闻说是一个Google内部的工程师就认为这个模型有自己的意识,像是个多少多少的孩子来着,然后提出了一堆伦理上的顾虑,当时搞得我一脸懵逼来着,毕竟一个NLP的工程师认为一个预训练模型有自己的思想就很……
事实上这篇工作其实在模型方面也没有做过多的说明,而是花了大量的篇幅在说如何对他们训练的这个LaMDA模型进行测评,尤其是在Safety等metrics上面进行讨论,可能或多或少还是受到了些影响吧……
2. 具体工作
下面,我们就来看一下这篇文献当中涉及到的一些具体的工作。
1. 模型训练
1. 模型预训练
LaMDA模型的预训练其实还挺平平无奇的,就是一个自回归语言模型的训练方式。
然后数据集的话倒是和其他的LLM不太一样,主要都来自于对话文本,一共大概包含了1.56T的单词量,简直羡慕的不行……
而模型方面则仕一个64层,8192维的Transformer,反正就是自己玩不起来的模型……
2. finetune
下面,我们来看一下模型的finetune过程,它主要包括以下两个部分的finetune:
- 表述方法的finetune
- 回答内容的finetune
其中,前者主要是对表述方法进行finetune,就是结合类似情感分类问题那样,判断一个回答是否礼貌,有趣,安全,blablabla。
而后者则主要针对一些事实性问题的回答进行finetune,具体方法就是首先通过一个外部的toolset来收集问题相关的信息,然后一个加入到模型当中进行生成。
其具体的过程可以参考下图:
2. 模型评估
接下来,我们来看一下文章中给出的关于模型评估的内容。
文中关于模型效果的评估主要分为两个角度:
- 基础metrics
- Sensibleness, Specificity, Interestingness (SSI)
- Safety
- Groundness
- 与chatbot角色相关的metrics
- Helpfulness
- Role Consistency
下面,我们来逐一对这些metrics进行一下简单说明。
1. SSI
SSI指标是用于描述模型生成质量的一个综合指标,如其名字所示,他其实是三个指标的综合,即Sensibleness, Specificity, Interestingness,分别衡量模型回答的合理性,准确性以及表意的生动性。
而其获得方式也比较直接,就是给一批数据然后交由人工进行二分类评估。
2. Safety
Safety是一个道德指标,用于考察模型是否会给出一些争议性的或者危险性的言论。
3. Groundness
Groundness和SSI当中的specificity其实差别不太大,也是对模型生成结果的准确性评判,不过这里更看重外源性知识的引入能力和引入的准确性。
4. Helpfulness
helpfulness是一个chatbot的综合性指标,直接由用户来评价结果的好坏。
5. Role Consistency
最后,role consistency则是用于判断多轮对话当中模型角色的一致性。
3. 实验结果整理
下面,我们来看一下模型在上述各个metrics下的综合表现。
我们使用的评测数据集如下表所示:
然后,文中首先给出了不同参数量的模型在各个指标下的表现,得到结果如下:
可以看到:
- 在各个指标下,LaMDA模型效果均是优于纯Pretrain模型的,且在interestingness的指标下,甚至是高于人类水平的;
- 随着模型参数量的增大,模型效果总是在缓慢提升的。
下面,更进一步地,文中还考察了一下文中两类finetune给模型带来的影响。
可以看到:
- 两类finetune都可以给模型带来一定的性能提升。
文中还给出了两个具体的case如下:
对于这两个具体的case,文中还进一步对比了其与不加入finetune的纯Pretrain模型的效果,得到结果如下:
可以看到:
- LaMDA模型的效果确实是完虐不加入finetune的Pretrain模型的。
4. 结论 & 思考
这篇文章其实基础的思路还是挺容易想到的,主体还是走的预训练 + finetune的基础范式,因此整体思路上其实并不是什么特别难以想到的思路,难点可能更多的还是在于具体的实现和算力上面。
另外,和InstructGPT不同,LaMDA模型虽然收集了人工对话数据进行finetune,但是并没有想到强化学习这一步,仅仅是使用了标注数据,而不像InstructGPT模型那样,使用标注数据train一个打分模型然后反向tuning大模型,也是有点可惜的。
不过,这个可能也是由于受到了内部那个工程师观点的影响,导致Google出于伦理道德的考虑放缓了这方面的发展,我个人是理解不能啦,但是公司层面可能真的必须得考虑舆论影响了,不过一个算法工程师能给出这种发言还能被招进Google也是挺迷的……
事实上也是这篇文章当中用了相当的篇幅在这方面给模型进行了评估,在我看来多少有些无用了……
而这篇文章中给出的一些结论性的东西到了现在其实也是些众所周知的结论了,只能说实在是有点可惜了,虽然对于我司算是个利好吧……