纳瓦尔说模型训练是新编程:

刚好我大前天写到这个:

再翻翻写作记录,发现2023年2月9号就写过比较完整的思路,刚好快三年。摘录如下:
AI训练,是另一种编程方式
它用数据跟算力代替了程序员的部分编码劳动。
“手工”编程是怎么个章程呢?根据《如何设计程序》(htdp),大体上:
- 2. 写出输入、输出的数据类型;目的;函数定义(函数体暂时为空)
- 3. 单元测试。拿出个别输入的例子,计算输出。一来确认自己理解问题,二来后续给自己后续的编码反馈
- 6. 跑单元测试,测试覆盖不全则回到步骤3,有不通过则回到步骤4
而AI又是怎样编程的?
- 2. 写出输入、输出的数据类型,取得大量输入、输出的数据
- 4. 调整参数,如最大训练轮次、用于验证的数据占比、学习率等
- 5. 启动AI训练程序,基本思想是“函数拟合”,有固定流程,需要大量计算。
对比“手工”编程,AI不需要人写一大堆if else去区分各类情况,甚至具体的函数都不用写。而它需要大量的格式化数据,以及用来训练的算力。
也就是之前说的,它用数据跟算力代替了程序员的劳动。同时,算法、调参也不是普通程序员负责,而是“算法工程师”。
如果把讨论范围扩展到某公司的研发流程,它可能把某些产品、测试的工作也替代了,转而需要大量的GPU硬件、数据标注员(或者直接对接数据公司)。
至于采不采用AI的研发模式的问题,关键在于同样产出的情况下,这个算力数据跟算法工程师更便宜,还是程序员的劳动更实惠。
在前些年的实践中,发展出诸多用AI分类、回归的解决方案,比如将图片分类、文本情感分析。这些场景下,手工写出的的代码将极度复杂,各种if、else嵌套、难以维护。
这里要着重提到“创造力”这点,程序的“创造力”是什么意思呢?
同一个问题,可能有不同答案。比如画一个美女,画古装、正装、漫画都可以,只要好看就行;再如聊天聊到山,接下来说一段记叙文、说明文或者相声都可以。
想法很粗暴,随机嘛。首先,输入加个random相关的值,让输出不固定。
然后用“演化”的方式,确保足够的输出满足某种条件。
打个比方,要写文章。于是弄了两种AI,一个是作者AI,另一个是编辑AI。以下是大致描述:
- 2. 训练出编辑AI v1,它看过很多高质量作品,然后看作者AI的产出。要求它将接下来作者AI的大部分产出标记为次品。这可以转换为先前说的分类问题,利用现有成熟方案
- 3. 作者v1 根据编辑v1,训练出能通过编辑v1的作者v2
- 4. 编辑v1根据作者v2与高质量作品的数据集,再次训练出将编辑v2
这或许是真·敏捷开发,如果有足够数据跟算力的话。
三年后的补充
如果说“古典编程”要构建的,是确定性函数。加上人类思考、表达、阅读带宽限制,只能处理低维度问题。比如,可以上传图片,但难以理解图片。
“模型编程”的输入跟输出则是高维的。任意文字、图片、视频……还有随机相关参数。
应用场景绝对更加广阔。