|
发表于 2023-5-8 10:05:51
|
显示全部楼层
来谈谈我的看法:)
首先说人工智能编程这件事情,很多答案都不约而同的提到了两个项目:
虽然DeepCoder的技术水准和技术意义明显高于AI Programmer,但从本质上来说现阶段的人工智能自动编程还是一个“在有限时间内搜索最优解”的优化问题,只是不同的项目采取了不同搜索方法,距离程序员失业还有很远的距离。
现阶段的算法依赖使用者给出程序的期待输入和输出,甚至还需要给出评估方法,然后使用机器找到程序实现这个目标。举例,我们需要一个加法计算器,那么我们给出一系列输入和期待的输出:
- 输入(2, 2),输出2+2=4
- 输入(1.5, 3),输出1.5+3=4.5
- 输入(1.25, 5),输出 1.25+5=6.25
但我们很难完美定义所有的输入输出,这会造成学习中的歧义。举例,上面的这3个输出输出也可以用乘法计算得到,大家可以试试。所以现阶段的人工智能自动编程算法面临的最大的困难就是需要大量的人工时间来完成简单的任务,且随着任务难度上升,需要的运算时间会以指数甚至更高的速度增长。以AI Programmer为例,正确输出“hello world”所需要的时间是"hello"的5倍,而字符串长度仅上升1倍。
打个不恰当的比方,现阶段的自动编程更像“猴子打字”,学术叫法是“无限猴子定理”:让一只猴子在打字机上随机地按键,当按键时间达到无穷时,几乎必然能够打出任何给定的文字,比如莎士比亚的全套著作。 --中文维基百科 所以现在的智能编程有一点像“随机撞大运”,期待在有限时间中“撞到”正确的代码符合我们期望的“输入和输出”,而智能的部分主要是降低搜索时间。换句话说,现在的算法主要还是观测和学习“输入和输出之间的关系”。上面提到的两项工作只是用了不同的搜索方法,比如DeepCoder限制了搜索域并用神经网络来辅助搜索过程,而AI Programmer使用了遗传算法(Genetic Program)来搜索最优解。客观的说,在这个阶段,没有人知道这个思路对不对。或许我们从一开始就不该期待用搜索来解决自动编程问题,甚至“自动编程”也可能是一个伪需求。
前两天从技术角度分析了一下AI Programmer,感兴趣的朋友可以看:如何评价arXiv上的最新论文:“可自动编程”的人工智能程序员(AI Programmer)?
<hr/>至于人工智能是否可以获得自我学习能力,自我进化。这其实是脑洞题:)
我赞同大部分答主的观点,如果人工智能需要自我学习的话,百分之九十九不是通过自我编程。程序语言是我们把人类语言转为机器语言,给没有推断能力(Inference)的机器使用的。当机器有了自我学习能力的时候,那么是不需要编程语言这个“代理人”的。
但从互联网搜索资数据来自我更新,这似乎谈不上是天方夜谭。如果允许我开个脑洞的话,我觉得初级的机器学习能力的关键是有数据整合能力(Data Integration)和初级的推理能力(Inference),这个或许不需要高级的人工智能就可以实现。
脑洞是这样的:有一天你告诉你的人工智能助理,我想和你下象棋,它说:“好的,我现在就去学习。”于是它很快的连接到网络(信息库)上,搜索象棋需要对应的输入和输出,比如棋局的复盘信息。在足够的信息量下,它很快就可以成为一个厉害的棋手。
又比如有一天你女神说:“王二,生日的时候送给我这个口红!” 说着还发来一张图片。作为宅男的你连“斩男色”都没听说过,于是赶快问你的人工智能助理这是什么品牌多少钱,它说:“好的,我现在就去搜索。” 于是它从茫茫互联网图片中找到了那一只口红的色号原来是 YSL 218,顺道还学会了口红色号和颜色之间的推断关系以及口红之间的相似度。结果你发现这口红价值你一个月的工资,当时就急了,问人工智能助理:“有没有颜色相近,但便宜点的?” 这时你的AI邪魅一笑,向你推荐了 DBT 945。
讲这个段子的原因是,一步走到强人工智能并不现实,但基于数据整合和推断的弱人工智能并非遥不可及,甚至正在发生。而我们生在这个时代最大的乐趣就是,每天都有新的科技发明出现。这些发明不仅冲击着我们的世界观,也刷新了我们对人类创新能力上限的认知。而让人类与众不同的就是好奇心,那对不可知世界的好奇心。
用一句我很喜欢的话结束这篇文章:ʕ•ᴥ•ʔ |
|