作者:人工智能人话翻译官,飞翔的肥羊
前言
本系列文章能带给你什么
这两年AI(人工智能)变成了新的投资风口,各种各样的产品分分打上AI的标签,好像不这样就和这个时代脱节了。
本系列文章,旨在给新人做一个科普,能够搞清楚啥是AI,如果你还有一定的编程功底,那应该能让你够掌握常见的机器学习模型。如果你凑巧高中的数学还没忘光,那你将收获更多。
当然如果你已经是此道中的大拿,那就到此打住吧,去https://arxiv.org看论文更适合你。
本系列文章的适合人群
机器学习与深度学习的初级爱好者
产品经理(对,你没看错,不懂AI的产品经理还能在这个时代存活下去吗?)
前文链接
unit1 AI的核心是“学习”
unit2 最简单的AI实例
我们通过一个极简的demo来让大家有一个直观的感受什么是AI。我们来制造一个自动审核信用卡的AI小程序。
回顾一下我们对学习的定义:“ 机器 通过大量的观察,积累直觉经验,获得某项技能。 ” so接下来,我们先准备好一台具有观察功能的计算机,准备好数据一会喂给机器让它观察,最后让其获得审核信用卡申请的技能。
2.1 准备好一台具有观察功能的计算机
这一步很简单,准备好一台计算机,不管你使用的是windows,mac或者linux都可以。
安装anaconda教程戳这里
准备好anaconda环境以后,创建开发环境就可以了。
注意:即使你不是开发人员也没关系,接着往下看,没有开发环境也不太影响你的阅读理解。
2.2 准备好数据
还记得我们在申请信用卡时,填写的那一堆表格信息吗?接下来我们创建一个excel表格来模拟这些信息,为了方便演示,我们只需要几个简单的维度。
为了表达方便我们先进行几个名词的约定:
train_D:表示训练集合,用来训练你的算法
test_D: 表示测试集合,用来测试你的算法
X:train_D / test_D 集合中的申请人历史信息,是X的一个维度
Y:train_D / test_D 集合中的申请人的偿还情况,1代表偿还,-1代表未偿还
这里的数据只是随便瞎写的,理解意义即可。
2.3 赋予你机器能够学习的能力
这步是最重要的,让你的计算机拥有学习的能力。使用训练集合中的数据训练算法,赋予机器学习的能力。
2.3.1 从文件中读取数据的能力
因为数据在文件中,这是计算机获取信息最简单的方式,不用听觉,也不用视觉就能搞定,几行代码就搞定了。
2.3.2 赋予机器拥有学习能力的魔力——算法
这里是整个机器学习的核心。你需要让你的机器能够在读取一条申请记录以后判定申请人是否通过申请。这个能力怎么获得呢?
我们先回到人类本身,你如果让一个人去做这件事情怎么做?
比较直觉的方式是准备好两个数据集,一个训练集合,一个测试集合。从训练集合中给他一堆申请人的历史信息,同时有这些申请人的偿还情况。通过观察,让他积累经验。再从测试集合中给他一个人的申请信息,让他预测这个人的偿还情况。
2.3.2.1 如何实现判断
我们先来观察某一个人的X,为了简单我们从训练集合只拿出来该人的两个维度的信息。
在一个坐标系中,两个维度就能决定第一个点。那么整个测试集合里面的数据就是平面上一些点,根据此人的Y值,我们分别把其表示为叉子(-1, 未偿还)或者圆圈(+1, 已偿还)。
我们把所有人的点描绘出来:
直觉的方法就是先猜一条直线,它能够把图中的点完美的分开。见下图
图一的直线没有分开所有的点
图二的直线完美的分开了所有的点
这里明确一问题:
为什么不直接画出直线,答案不是很明显吗?
那是因为你忽略了你的眼睛和大脑帮你做了判断。
其实你的眼睛和大脑先尝试帮你画了若干条直线,如果这条直线不能把所有的点分开,你就丢掉这个解决方案,重新再画一条。直到找到那条完美的线。
所以这里详细的步骤是:
- 提出假设——随便画一条线
- 验证你的假设——这条线是否分开所有点
- 如果找到答案,就停止,否则重复以上两步
2.3.2.2 机器学到的是什么
这部分内容有点抽象:
如果用数学语言描述,你学到的技能其实就是一个函数——这个函数就是能够根据你提供的X,预测对应的Y。
2.4 评测你的学习技能
那你学到的技能是否靠谱呢?人是通过考试来验证你的学习结果,同样机器也是通过考试才验证学习结果,考试题就是测试集合里面的数据。
现在把测试集中的数据画到平面上,如下图(图中带黄圈的点就是新加的点):
然后把我们刚才学到的“知识”画到平面上
看起来结果不错,我们把测试集中的所有点都分对了。测试集中有4个点,你把所有点都分对了,就意味着你算法的正确率是100%,简直是完美!
这里大家思考一下:
如果你分对了3个点,你这个算法的正确是多少?那你训练的“智能有价值吗?”
如果你分对了1个点,你这个算法的正确是多少?那你训练的“智能有价值吗?”
欢迎大家在评论区回复讨论
2.5 展示你的人工智能
现在就可以把你训练的人工智能展示给世人了。按照数据集合中的X维度制作一张调查问卷,让你的信用卡申请客户填写(注意只是X的维度就够了,不需要Y,那个是你要预测的)。然后把问卷中的数据灌给你的人工智能,你的人工智能将根据它的技能给出一个预测值,如果这个是+1,你就可以认为这个人有极大的概率会偿还信用卡的债务,此人就可以通过审核。否则就不通过审核。
总结
so,你看到了其实人工智能的训练很简单,基本上有一个固定的套路:
1准备数据,并把数据分成训练集合测试集。集合中的每条数据由X,Y组成。
2把训练集合中的数据灌给你的算法模型,算法模型提出假设解决方案,验证这个假设,失败则重新提出假设,成功则结束。
3用测试集合中的数据来评测你的学习结果,如果评测结果可以接受就可以接受这个学习结果,否则需要回到第二步。
以上三步正好符合之前的学习定义:观察-积累经验-获得技能。
如果你是一个产品经理,你希望你的产品用上人工智能,一定先想好去哪里搞数据。去年有一个非常火的小视频,一名产品经理和开发人员干架,据说原因是产品经理提出一个需求:“要求根据用户手机壳来改变APP主题颜色手机的屏保颜色”。其实这个问题能不能解决?希望你看了本章节以后能够有自己的答案,欢迎在评论区讨论。