大家断断续续讨论了一两周,都猜测,也许是因为编程过程与人类逐步解决任务的过程非常类似。
很多难题都不是可以一步到位的,问题也比较复杂,并不能简单进行答复。
很可能需要分多个层次进行分析,讨论各种可能性。
这就和编程当中的if语句有些类似。
模型很可能从代码的方式中触类旁通,学会了对不同的假设场景给与不同的应对策略。
而比较整体的代码项目,又会将一个相对复杂的任务,拆解为数个简单任务,做成不同的功能。
这一点很可能是大量代码对大语言模型有很强效果的一大原因。
总得来说,孟繁岐觉得这件事情还是非常有趣的。
这些代码别说普通人了,他自己都有很多根本看不懂。
因为收集代码数据集,涉及的各种不同语言太多,光是比较知名的就有十来种。
大部分程序员能写个三四种语言,就已经相当不得了了。
并且,即便一位懂得某个语言,他的实力也未必就能看得懂具体的项目。
孟繁岐非常怀疑大模型是否真的理解了每个项目的具体意义,但唯一肯定的是,大量代码对模型的效果帮助的确很大。
而等到【指令微调】和【代码训练】都做完之后,孟繁岐就需要做一种基于人类反馈的强化学习(RLHF)了。
ChatGPT与此前各种测试版本的达芬奇3.5模型相比,一个很大的区别就是它经过了RLHF。
ChatGPT后来很多新的能力,那些显得非常智能的能力,都是基于人类反馈而诞生的功能。
比如相对详实的回应,ChatGPT相比原始的大语言模型显得有些啰嗦,它会倾向于给出更为全面的回答。
并且,对于涉及多方利益的事情,它很喜欢端水,以免显得过于偏向某一方,显得是在【站队】。
以及拒绝不当问题的能力,这也相当程度上依赖人类的反馈去调整模型。
Bing大小姐显得那么傲娇,主要就是因为微软的人在人类反馈上显得更加傲娇。
最为神奇的部分,就是ChatGPT拒绝回答新事件的能力。它会经常说,自己只知道2021年之前的事情,基于人类的反馈使得ChatGPT能够模糊地知晓那些东西在这个时间范围内,哪些东西并不在内。
虽然ChatGPT并不是每一次都能够判断正确,但这仍旧是相当神奇的事情,人们至今无法知晓,它究竟是通过什么方式来判断某些话题是否在时间范围内的。
经过前世和现在的大量测试和实验,CloseAI认为绝大部分【能力】和【知识】,都是在初次训练之后,模型已经具备了的。
这章没有结束,请点击下一页继续阅读!
不论是【指令微调】还是【RLHF】,都只是【解锁】了模型的能力。
得出这个结论是因为,对比训练时候使用的无敌庞大数据来说,做【指令微调】又或者是【RLHF】,所使用的数据和计算量都是相对要小很多的。
换句话来说,这种微调工作,其实最大的一个效果是【让模型知道它不知道什么】。
这句话可能有些拗口,但是对一个大语言模型来说,让模型清楚的知道自己懂什么,不懂什么,其实是一件非常困难的事情。
研究人员们很难想到一种逻辑类型的规则去约束模型,他们也不知道模型到底知道什么,不知道什么。
在人类用户的使用当中,不怕模型说不懂,就怕模型它不懂装懂。
所谓【知之为知之,不知为不知,是知也!】
如果用户询问了一个非常刁钻的问题,模型不知道,它老老实实地说了,反而会给人一种,【有点分寸,有点东西】的感觉。
可若是一通瞎说,驴唇不对马嘴,那就显得异常愚蠢了。
RLHF最初的目的是让模型尽可能生成符合人类预期的回答,但却意外地让模型有分寸了很多。
对自己懂的问题更自信,对自己不懂的问题也大概有了数。
“经过【指令微调】,【代码训练】和【RLHF】三部曲之后,我这款350亿参数的ChatGPT差不多能够做到原版1750亿参数的ChatGPT大约9成的水平了。”
由于孟繁岐熟知GPT4和同期其他大模型的优势地方,350亿参数大概是够用的。
ChatGPT本身的进化过程,还是走了弯路踩了坑的。
但ChatGPT虽然是现象级的产品,却也存在着自己的问题,它并不是完美的。
等到孟繁岐今年完成初版之后,他就不得不面对这类的难题。
比如模型奇奇怪怪的信念。
ChatGPT可能会非常坚信某件事,即便它显然是错误的。
甚至,当你举出反例的时候,它会赞同你的反例,但还是坚信这件事。
这件事情非常的微妙。
比如它会说,81是一个质数。这显然是错误的,你对它说,九九八十一,它会大方地承认的确如此。
但与此同时,它仍旧会坚持,81是一个质数。
这就是一个非常让人恼火的场景,一方面,它能够非常清晰地说出质数的定义,甚至比人类更加严谨客观。
可同时,它却没有办法遵从这种严格的定义,自己发觉自己做了一个非常错误的判断。
当然了,这种信念的程度在不同的问题上会有程度的差异,如果用户执意要挑逗试探模型的话,就会发现它有时候会坚持,有时候你说什么他都会怀疑自己错了。
这种通用的大模型,暂时没法进行特别严格的推理证明。
举一个更加简单的例子,它甚至会做错简单的数学运算。
“不过好在算术这方面的问题2023年已经有解决的思路了。”GPT4的更新思路是插件,GPT不擅长做算术,会把简单的东西算错,既然如此,那就引入插件,让专门的程序去负责专业领域的任务。