1. 首页
  2. 项目

手把手教你写一段人工智能代码

点金课堂是MAI创智公链原创的语音直播课程,旨在分享交流区块链技术的发展及应用。点金课堂第12课主讲嘉宾|MAI创智公链联合创始人张翼主题|手把手教你写一段人工智能代码大家好,我是张翼,很高兴又跟大家见面了,上一期聊了我的创业,这一期我给大


点金课堂是MAI创智公链原创的语音直播课程,旨在分享交流 区块链 技术的发展及应用。

点金课堂第12课

主讲嘉宾|MAI创智公链联合创始人张翼

主题|手把手教你写一段人工智能代码

大家好,我是张翼,很高兴又跟大家见面了,上一期聊了我的创业,这一期我给大家聊一聊代码。好长时间没有给大家讲技术了,很多人,包括一些做技术开发的朋友都在问我,所以借此机会,来跟大家聊一聊技术。上周我参加了一些会议,是关于互联网、人工智能、开发者的会议。在会议上大家都有一个问题:你们公链听起来不错,很棒,创意也非常好,你们到底用了什么人工智能来结合的呢?我们的人工智能确实写了一些比较复杂的代码。不过我今天要给大家讲一讲:如何用一些简单的代码来实现人工智能的小程序。

1

人工智能理论

我先给大家讲一讲理论方面的,像我们在电视剧或者电影里看到的,像真人一样的人工智能,这在人工智能界被称为“广义人工智能”。这种人工智能技术在未来的什么时间段会出现,我们还不知道。现在大家用的都是“狭义人工智能”,而狭义人工智能的本质就是人们常说的“机器学习”。而所谓“机器学习”,也不是说机器有思想,它学会了一项技能。机器学习其实是用一组数据建立一个统计模型,这个统计模型能对新的数据做出预言。输入的数据越多越精确,模型能做的预言就越准确,就好像是它在不断地“学习”一样。这样的工作原理我们就称之为机器学习。

2

机器学习

数学家把这个叫做“统计模型”,计算机科学家给它起了个更值钱的名字叫“机器学习(Machine Learning,经常习惯性地缩写为“ML”),记者有时候也把它叫“大数据”,而这些其实就是现在科技大佬们在发布会上声称的“人工智能”。机器学习其实不是真正的机器在学习,机器学习到底是怎么样的呢?我们今天会给大家讲一个例子,比如我们做一个小的程序,来判断泰坦尼克号上哪些乘客可能会存活,哪些乘客可能会遇难。这个例子其实在一些网站上,也可以找到类似的教程和代码。

我今天就把这些代码重新整理一下,然后给大家讲一讲这里面最基本的一些含义和数据。我们可以从这里找到一部本相的数据,如果我们去找一些语音语义的数据,像科大讯飞他们是不会给你的,如果我们想找一些图像识别的数据,FACE++和旷视科技也不会给你的。我们来找一些大家在市面上可以找到的相关数据,来做一个比较OK的、比较好的计算,能让大家最真实的体会到人工智能的存在。



3

Python语言

首先我先给大家讲一讲Python语言。首先,你需要在你的电脑上装上Python 语言的数据库包和函数包,你只要写几十行的代码,就可以把整个项目做出来。但是如果你想把整个项目研究明白,则大概需要花费一个晚上的时间去研究。

我先来讲一讲思路。如果说你懂编程的话,你会发现这件事情非常简单。如果你不懂编程的话,我也可以帮你理一下思路。目前机器学习是美国最值钱的技能!行家一年能挣四五十万美金。今天讲的这个例子,会让你觉得机器学习是一个牛逼的事情,同时你也可以理解我们MAI是如何使用人工智能作为我们的一个核心特点,去运用到我们的项目中的。

如果你说我一点技术都没有,怎么可能一下子就写一个机器学习的程序呢。那当然是因为你站在了“MAI”的肩膀之上,站在谷歌或者一些大牛的肩膀之上。现在机器学习的算法已经非常成熟,谷歌已经把AlphaGO的算法开源了,连专业人士都不需要自己从头到尾写一个算法,网上都有现成的算法存在。常用的机器学习算法大概有十几个,都做成了 Python 的库函数,我们可以直接调用。

如果说你真的非常非常想学习,而且非常想严肃地自学机器学习。我会在讲课完之后给大家发两个网站,大家一定要问我要,不要的话我就不发了。去学习参考和研究一下,这种机器学习和人工智能算法到底是怎么做的。

我们开始之前,首先需要一个数据,泰坦尼克号的所有旅客名单和他们的各项统计资料,网上都有现成的数据,我们可以直接调用这些数据。这里我要提前讲一件事情。

4

操作步骤

我们将使用 Python 编程语言。如果你想学编程,Python 是最直观最漂亮最简单的编程语言。

这就是所有Python的爱好者为什么会加入的原因。我本身在大学的时候也是选择Python语言进行学习的。好,接下来我们说回主题。

泰坦尼克乘客的数据已经被上传到了一些网站,大家可以随便下载 ——


数据已经被分成了两个文件。第一个文件叫train,我们要用这个文件里的数据来训练一个统计模型,然后再用第二个文件,叫test,检验这个模型的有效性。

以下所有操作都是针对 train 文件的。如果大家看不懂代码可以直接忽略,只听文字讲解就行。打开训练数据,你会发现它是一个12位的数组,对每个乘客都包含以下这些项目 ——

乘客编号,乘客是否存活,乘客姓名,舱位是头等舱、二等舱还是三等舱, 乘客的性别,年龄,在泰坦尼克号上有没有兄弟姐妹或者配偶,在泰坦尼克号上有没有父母或者子女,乘客的船票号码,买的船票价格, 在船上住的房间编号,在英国哪个口岸上的船。

训练数据库中一共包含891个人,但是其中只有714个人的年龄记录。使用 Python,我们只要用一些简单的命令就可以对数据做各种操作。比如我们想知道各个舱位都有多少乘客,我们就可以用一种方式来呈现,这个图片呈现方式如下:


结果发现头等舱有216名乘客,二等舱有184名,三等舱有491人。再用这个代码,就知道这819名乘客中有549人遇难,342人幸存,遇难率是61.6%。其实现在你就可以做一次预言了。随便指定一位乘客,让你预测他是遇难还是存活,你应该预测他遇难 —— 这个预测的准确率高达61.6%。现在我们要让这个预测更准确。我们看电影知道上救生艇是女士和孩子优先,那么性别对于存活的影响应该很大。我们在代码中简单做个统计操作 ——


就知道男女各自的存活和遇难人数了。女性的存活率是74%,男性的存活率只有18%。这就是一个更准确的预测。要想进一步提高准确度,我们就要上机器学习算法了。我们学习的这个算法叫“决策树(Decision Tree)”,你现在不需要知道它的细节,直接调用就可以,调用方法是一行代码,如下图所示:


下面的思路非常简单。刚才我们说了,乘客的性别对存活与否影响很大。那为了更精确地预测,你能不能想想,还有哪些因素对存活可能有比较重要的影响。我们要做的就是把所有这些因素都交给“决策树”算法,让算法自动用这些因素的数据行成一个模型。

比如像姓名和编号这些数据,你能想到肯定没啥用。我们选取四项指标:

1、舱位,据说头等舱有上救生艇优先权;

2、性别,女士优先;

3、年龄,小孩优先;

4、船票费用。

其实每一项因素具体起到什么作用你都不用管,你只要能猜测出来大概这几个因素有用就行,然后一切都交给算法自动发现。现在有个问题是,算法要求每个数据都得有数值,可是“年龄”这一项只有714个人的数据。为此我们还得把剩下一百多个人的年龄数据给补上,就用所有乘客年龄的中位数来代替。这种事情在实际操作中非常常见,我们先对付对付用上再说。OK,我们现在就形成一个模型,也是整个机器学习的核心部分,只要以下这么短短几行代码,如下:


基本上就是你告诉程序要预测的目标是乘客是否存活,影响目标的四个因素是舱位、性别、年龄和船票价格,你选取的机器学习模型是“决策树”。最后生成的这个“my_tree_one”,就是预测模型。OK了,我们再来看看这个模型的性质 ——模型性质的一些图片:


结果显示四项指标在统计上的重要程度分别是什么,船票花费占33.7%,性别占31.3%,年龄占23%,舱位占12.3%。注意这只是一个综合的统计性质,模型内部非常复杂,并不是对这几个数据做什么加权平均。反正我们现在知道,船票花费是个比性别更重要的存活因素。

好,现在看看这个模型的预测准确度。利用现有的训练数据,做一次操作——未来我们会把这种这种代码也发上来。


模型的预测准确率高达97%。这是一个非常好的成绩,但是可以理解,因为毕竟你的模型就是用这组数据训练出来的。对模型的真正考验是使用刚才说的那个“测试”数据。测试数据里只有11项指标,不包含存活信息。接下来我们把这个 test 数据拿过来,用刚才训练好的模型直接预测这些,我们完全没接触过的乘客的存活情况!具体的步骤我就不写了,直接告诉你结果。结果是,我们这个模型用于测试数据的准确度仍然高达97%!那么大家设想一下。我们只知道泰坦尼克号上一半旅客的存活信息,我们根据这些信息做了一个预测模型,然后就能用这个模型以97%的准确度,预测另一半旅客中每个人是否活了下来!


我们来回顾一遍,整个步骤是这样的:

1. 把所有数据分成两组,一组用于训练,一组用于检验;

2. 数据都是数组,其中包括你想要预测的目标信息(是否存活),以及可能影响这个目标的各种信息;

3. 选择几个你认为最有可能影响目标的信息(舱位、性别、年龄、票价);

4. 选择一个机器学习算法(“决策树”);

5. 把目标和可能影响目标的几个信息作为数组变量输入算法,训练得到一个预测模型;

6. 把预测模型用于检验数据,看看这个模型的准确度。

好,到目前为止,你现在已经实现了一次人工智能的编写了。你是不是觉得自己非常厉害了,那么你可能会想,代码,我还没有看到,是怎么实现的。那么在和这篇文章同步发送的时候我会把这些代码,都加到我刚刚讲解的步骤中,大家可以去实际操作一遍。

所以大家都可以看到,学会了这个方法,使用现成的工具,只要有足够好的数据,你立即就能开发几个人工智能应用。比如说一个信用卡公司,有十万个用户的详细数据,包括年龄、收入、以往的购买记录、信用得分、还款记录等等,那你就可以预测,其中每一个人下个月按时还款的可能性。不过我们今天的主要目的还是体会现在所谓的“人工智能”到底是怎么回事儿。它仅仅是一个统计模型而已。从这个实操例子中我们可以得出两点结论。

第一点:每个模型都会带来歧视。

泰坦尼克模型中对生死影响,最重要的变量是船票价格。船票越贵,你存活的可能性就越高。那假设你是一个卖保险的,现在既然你知道买了高价票的人存活率高,将来他们不太可能找你理赔,那你为了多卖几分保险,是不是可以少收一点他们的保险费?这就是区别定价,这就是价格歧视。你并不是歧视穷人也不是更爱富人,只不过为了多赚点钱而已。那么请问一件事情,多赚点钱的这件事是不是对的?你就会多收穷人的保险费,少收富人的保险费,这完全是合理的 。但是,请问这个事情是道德的吗?


第二点:人工智能可能是真的是不够人性。

说白了,我们今天要做的就是用四项指标去预测一项指标。到底有多少可能的因素对在泰坦尼克号上存活的人很重要,但是我们还是会有些考虑不周的地方。比如说,放救生艇的时候,船长的命令是“让女人和孩子上救生艇”,但是两侧放救生艇的人对命令的理解不一样。一个人的理解是*优先*让妇女儿童上,如果周围的妇女儿童都上了救生艇还有空位,那就让男的也上。另外一个人的理解则是*只*让妇女儿童上救生艇,妇女儿童上完哪怕还有空位,也不让男性上,就直接把救生艇放下去。那如此说来,一个男人能不能存活,跟他当时距离的救生艇也很有关系!而我们根本就没有这项数据来证明我们刚才的信息。

其实还有一件事情,就是说船即将沉没的时候,你可以站在船头猛跳下去,这样你存活下来的概率也很高,如果你根本不跳,那么你根本就没有存活概率。这一跳和不跳,其实这个人工智能和机器学习也无法预测,因为他跳和不跳,没有包含在这个模型里面。模型对泰坦尼克号上发生的一切都不知道,他根本不理解自己在干什么,本质上的一切所有的预测都是猜的,所谓机器学习,只不过是增加他猜对的概率而已。

5

总结

最后我总结一下,其实人工智能的很多研究员,看待这件事情都是,我们居然能做到97%的准确率预测。不合理的准确,如此这种模型还能准确率这么高,其实是一种非常非常unreasonably 的事情。

其实你有可能会想,手机能识别你的语音语意,然后AlphaGo能够赢李世石。其实你也有这样的感慨:他们的人工智能是不是更厉害,更牛?其实本质都是一样的,我们都是采用了这种算法,然后让他的预测更加准确。破除迷信和战胜恐惧的最好的方法,就是自己亲自做一遍。至少你可以感受得到。现在的人工智能,就是用统计方式猜预测的准确性,人工智能就是机器学习,机器学习就是传统的统计模型,人工智能未来的突破性发展应该在更加高纬度的层面上所展开的,就我们目前而言,还只是一些机器学习的层面。

我讲了这么多,第一次跟大家讲代码,有点小小的语无伦次,我也不知道该如何讲代码,因为我确实不是一个比较好的老师。所以我不知道这堂课讲完之后,大家有没有听明白,有没有对人工智能有一个深刻理解。过段时间我们可能也会出一个关于人工智能的小应用,给大家体验一下到底什么是人工智能。今天的分享就到这儿吧,在下一次的课程,如果大家还有兴趣的话,我会给大家继续讲人工智能的。谢谢大家。


本文来自投稿,不代表【区块情报站-http://www.qkzq.com】立场,如若转载,请注明出处:【当前页面链接】