从“教小孩”到“AI成精”:一文聊透AI中的机器学习(上)

从“教小孩”到“AI成精”:一文聊透AI中的机器学习(上) 先问你一个问题假如你想让一台电脑学会识别“猫”你会怎么做最简单的办法是你写一万条规则——有胡子的是猫会喵喵叫的是猫喜欢踩键盘的是猫……结果来了一只没胡子的无毛猫电脑当场死机。这就是传统编程的困境人得把所有规则都想好写进代码里机器就是个听话的“执行者”。但机器学习换了个思路——不教规则直接喂数据让机器自己学。这就像教一个小孩认猫。你不会给他念《猫科动物鉴别手册》你只是指着路上遇到的猫说“这是猫。”指几次之后小孩自己就明白了——哦毛茸茸的、有尾巴的、会发出呼噜声的那个东西叫猫。机器学习干的其实就是这活儿。它为什么会出现说到底是被“逼”出来的。传统编程在几个问题面前基本是束手无策的1. 规则根本写不完比如垃圾邮件过滤。垃圾邮件的套路一天变八回今天用“恭喜中奖”明天变成“恭喜您获得大奖”后天又换成“您有一笔待领取奖金”。你要是靠人来写规则得养一个团队天天追着垃圾邮件跑累死也赶不上。2. 有些事人自己也说不清楚规则你怎么让电脑识别一张照片里有没有狗你自己看一眼就知道有狗但让你把这个判断过程写成代码你写不出来。你总不可能写“如果有个湿漉漉的鼻子且会摇尾巴那就是狗”——太扯了照片里狗可能根本没露鼻子。人类很擅长“认出”但很不擅长“说出我是怎么认出的”。3. 数据太多了人处理不过来每天全世界产生海量数据医疗影像、用户行为、交易记录……靠人一条条分析等于用勺子挖游泳池。这些问题凑在一起催生了一个想法不如让机器自己从数据里找规律。 这就是机器学习诞生的根本原因——不是因为它“酷”而是因为“人搞不定了”。机器到底是怎么“学”的别被“学习”这个词唬住它本质上就是一个找规律、做预测的过程。你可以把它想象成解一道数学题但答案不是算出来的而是从例子中“猜”出来的。举个例子你给机器一堆房子的数据面积、卧室数量、位置、成交价格。机器就开始在背后疯狂计算找到一个公式价格 ≈ 面积×A 卧室数×B 位置×C然后你问它“一个100平、3个卧室、位置在市中心的新房子该卖多少钱”机器把数字往里一代给你一个预测结果。就这么简单。学习的本质就是从已知数据里找到一个函数然后用这个函数去预测未知。当然实际的机器学习比这复杂得多——它要考虑“这个公式准不准”“会不会过拟合”“数据够不够”等等问题。但核心就是这个从例子中总结规律然后用规律去应对新情况。那机器怎么知道自己“学对了”靠“反馈”。还是拿小孩认猫举例。你指着猫说“这是猫”小孩记住了。然后他看见一只老虎也喊“猫”。你说“不对那是老虎不是猫。”小孩就调整了自己的判断标准。反复纠正之后他的准确率越来越高。机器也一样。它会给自己一个“损失函数”——说白了就是个“犯错扣分机制”。猜对了不加分猜错了扣分扣得越多说明错得越离谱。然后它不断调整自己内部的参数试图让扣分越来越少。这个过程就叫训练。等训练得差不多了扣分降不下去了再用一批它从来没见过的数据来测试。如果在新数据上也表现不错说明它真的“学会了”而不是把训练数据死记硬背下来了。到这里你可能已经发现了机器学习的本质其实就是一句话让机器从经验数据中自动改进而不是靠人把规则写好。它之所以会出现是因为人类遇到了一个根本矛盾——我们面对的问题越来越复杂、数据越来越多但靠人工写规则这条路已经走到头了。那机器学习到底有哪些类型每种又是干什么用的它们在实际生活中能解决什么问题这些问题我们放在下篇来聊。