附加章四:人工智能
复习
- 指令执行:计算机能高速执行人明确写好的每一条指令
- 并行计算:并行计算让机器可以同时处理海量数据
TL;DR
- 人工智能研究如何让机器完成原本需要人类智能的任务
- 机器学习让程序从数据中总结规律,而不是逐条编写规则
- 神经网络把大量简单单元层层组合,从例子中逼近复杂关系
- 模型的输出可能自信却错误,不能代替人的判断
正文
前面我们造的计算机,只会老老实实执行人写好的命令:你让它加,它就加;你没写的,它一步也不会多做。可有些任务,人自己也说不清规则——比如“认出照片里是不是猫”。你很难写出“猫 = 有尖耳朵 + 有胡须 + 会喵喵叫”这样一套永远成立的规则。
让机器学会做这类事,就是人工智能(AI,Artificial Intelligence)关心的问题。
从“写规则”到“看例子”
传统程序靠人把规则一条条写清楚。但很多任务的规则,人根本写不全,甚至写不出。
于是思路一转:与其告诉机器规则,不如给机器大量例子,让它自己总结规律。 这就是机器学习(machine learning)。你喂给它成千上万张标好“猫/非猫”的图片,它从中调整自己的判断方式,直到面对没见过的图片也能大致猜对。
训练出的这套“判断方式”,可以看成一堆可调的参数。学习的过程,就是不断调整这些参数,让输出越来越接近正确答案。规则不再写死在代码里,而是从数据中“长”出来。
一层层搭起来的神经网络
要让机器从数据里学出复杂规律,神经网络(neural network)是常见的做法。它由大量简单的计算单元层层连接:第一层提取一些简单特征,后面几层把它们组合成更抽象的特征,越往上越接近最终的判断。
这种“多层组合”的思想,其实我们早就见过——计算机本身就是用简单的逻辑门,一层层搭出复杂功能的。用大量简单部件层层组合,去逼近复杂行为,是贯穿计算机科学的老办法。
训练贵,推理快
要留意训练和使用的区别。训练需要海量数据和大量算力,往往耗时很久;而训练好之后的推理(用模型做判断),则要轻快得多。这也解释了为什么并行计算、专用硬件在这里如此重要——训练本质上是极其庞大的并行数值运算。
它很能干,但它不懂
最后要清醒一点。人工智能模型本质上是在从数据中找统计规律,它并不真正“理解”自己在说什么。
这带来几个后果:训练数据里的偏见会被学到;模型可能一本正经地给出错误答案;它也无法为结论承担道德责任。所以,把 AI 当作一个很强的工具可以,把它当作不会犯错的权威则很危险。它能告诉我们“数据里更像什么”,但不能替我们决定“什么才是对的”。
思考题
为什么“从数据中学习”比“逐条编写规则”更适合识别猫、翻译语言这类任务?
小结
知识点
- 人工智能研究需要智能的任务
- 机器学习从数据中总结规律
- 神经网络用多层简单单元组合复杂关系
- 训练与推理、算力需求与模型局限
参考资料
- Wikipedia(zh):人工智能:让机器完成智能任务的研究领域
- Wikipedia(zh):机器学习:让程序从数据中学习的方法
- Wikipedia(zh):人工神经网络:由多层简单单元构成的模型
思考题答案(仅供参考)
因为这类任务的规则极其复杂、充满例外,人很难写全。比如“猫”的形象千变万化,没有哪套固定规则能覆盖所有情况。但从大量例子中,模型可以自动捕捉那些难以言传的共性,从而在没见过的样本上也能判断。与其费力描述结果,不如让机器从大量结果里反推规律。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪