当然不是因为 AI 编程火…
先有强代码模型,才能支撑 AI 编程爆火。
编程代码是今天所有「语言」里,唯一有「正确答案」的语言。
这里有俩问题:
1) 编程代码是语言
2)编程代码是一种有答案的语言
解释完这俩问题,标题里的问题也就有答案了。
从 GPT 开始我们用的 AI 开始变成“大语言模型”。
它的原理是给模型投喂大量文本(语言)训练语料,让它在里面找规律,学会这种我们所投喂“语言”资料的表达方式。
对于语言这个东西,我们唯一能判断“对错”的只有语法这个东西。
比如,“我叫张佳”是对的,但是“张佳我叫”就是错的。
除此之外,我们对语言的判断标准就只有“文笔好不好”、“表达得不得体”这类空泛的规则了。
所以,对大语言模型的训练来说,除了常规的事实性错误外,你很难评价它好不好。
说 GPT 比文心一言好,也只是“感觉”那个洋玩意儿的回答读起来更舒服。
既然“文无第一”,那咱就比比理科。
于是 AI 公司们开始卷“推理”、“数学计算”。
但是,一卷发现,这玩儿根本没得卷:基于语言训练的模型,“推理”全靠死记硬背…
你能让它被九九乘法口诀,但不能背微积分和线代。
纯理科干不动,于是 AI 公司们找到了一个文理科的中间态:编程。
哪怕你不会编程也知道,编程有好多“语言”,从我们最早认识的 C 语言,到现在流行的 Python 语言、JavaScript 语言。
他们之所以被称为“语言”,是因为这是一种跟计算机「交流」的方式。
程序员们通过指定的语法规则写一堆花花绿绿的内容,通过计算机的“编译器”翻译给电脑,变成电脑理解的二进制语言,在它的“二极管”里运行。
人类的语言,被别人接收后最终的形态是在脑子里变成“画面”。
这个画面,人人不一样,哪怕每个人能用相同的词描述出来。
这就是人类语言不可评判的根本原因,因为人类语言本身就是不准确的(如果你突然对此产生了兴趣,可以阅读一些语言学相关的书,非常有意思)
但是计算机的语言最重被翻译的结果是非常精确的“0”和“1”(也就是计算机的二进制)
所以,编程语言是有正确与否的。
每一段代码不管它优雅不优雅,最终一定要可以被执行、实现某个功能,否则都白扯。
这对于“大语言模型”训练来说,太爽了!
之前常规的“文科式”语言训练,最终调优阶段,人类工程师们只能给出事实性判断和非常模糊的“表达不够优雅”这样的评价。