芥末堆芥末堆

Machine Learning,那些你不可不知的秘密

作者:戎子钦 发布时间:

Machine Learning,那些你不可不知的秘密

作者:戎子钦 发布时间:

摘要:教育是一个依靠“经验”决策很严重的行业,所以好的老师很难得。但也正是因为如此,笔者相信ML会有很大的前景应用,如果我们现在随便乱想,举几个例子:知道一个小学一年级孩子的成绩、行为模式等等,他是否适合跳级以节省时间,不让他接受用处不大的二年级教育呢?

写作本文的目的是用最简单易懂的语言说明白机械学习算法技术到底是什么,有什么用处,有哪些局限性等等。以科普为目的帮大家解答一些疑惑,是入门类的文章。写作此文的原因有两点:

经常被投资人朋友问到一些技术算法上的问题,比如这个项目的算法到底靠不靠谱,有没有创业者吹得那么牛逼,该问他一些什么样的技术性问题比较好等等。想来干脆写一篇文章,独乐乐不如众乐乐。

自己也曾参加过不少国内的创业活动,看到一些朋友们把自己的技术说得有些天花乱坠,脱离了实事求是的科学精神,让人无法看清真正的创新在哪里。

机械学习简介

Machine Learning(机械学习,以下简称ML)是目前美国硅谷最火的技术,也是工程师最吃香的技能之一,随便举几个应用:

LinkedIn通过ML发现什么工作适合你,给你发邮件推荐工作;

Netflix通过ML发现你可能喜欢什么样的影片;

金融界的高频交易公司通过ML识别推断一些大银行交易员的买卖模式,并从中牟利。他们中有些号称自从公司创办的第一天以来,没有一天是亏损的。

Goldman Sachs用ML识别你在支票上的手写数字到底是多少钱。

Amazon可以用过ML得知你对某商品的评价是表扬还是批评。

Google News通过ML自动识别两个报道是否报道了同一件新闻事件。

……

机械学习 – 新的方法论

ML作为人工智能技术(Artificial Intelligence)的一种,在学术界有非常严格的定义,在此不细细阐述。我更想传达的是将ML作为看待世界和问题的方法论与哲学观。作为人,我们通常是有逻辑的,看到了A,想到了B(AB),中间很可能经历了从A想到C,从C想到D,从D想到B的逻辑过程(Fig. 1)。比如你看到了一张奥巴马照片(A),想到了这张照片里面的人是男性的结论(结论B),从AB的过程就是你看照片的过程,你看到了奥巴马的头发,眼睛,鼻梁,整体脸的表情等等,从而判断了这个照片是个男人,而所有中间过程都是有逻辑的。

而对于ML来说,很多ML算法是非逻辑性的,它将A作为输入放到了一个黑盒子里面,通过黑盒子的运算,得到了B的结论(Fig. 2)。当然这个黑盒子是有一个数学模型在后面的,数学模型不一定有任何直观逻辑性,但是模型中有足够多的待定参数可以调整,从而使预测足够准确,这些参数通常要用一个已知的数据库去训练。举个于上面对应的例子,随便给一张照片,我们的任务是让计算机去判断这张照片里面的人是男是女。计算机看到的图片可和人不一样,计算机看不到鼻子眼睛耳朵,只能看到的是一个数字矩阵,图片中的每个像素点都变成了矩阵中的一个数。面对着这种数字矩阵,要去判断这个矩阵是男是女,很多算法都是没有直观逻辑可言的,我们且不去关心这些算法细节,把它暂时当成一个黑盒子吧。好处在于,这个黑盒子是一个数学模型,而模型中的很多参数都是待定的。那么如何决定这些参数呢?我们会需要一个已经人工识别好的数据库,即一堆图片,且我们知道图片中是男是女。这个数据库叫做训练数据库(training database),会有一套算法用这个数据库去训练得到黑盒子里面的参数。等决定了这些参数,再给黑盒子一个照片,黑盒子就可以告诉你到底照片是男是女了。这个过程就像学习一样,先学习一些已知的材料,再将学习到的知识运用于未知的材料上。所以这些算法叫做机械学习算法。

也许各位还没有想到这种算法激动人心之处在哪里。有很多问题,我们不知道怎么去应对,是因为我们根本连问题是什么,问题背后的逻辑是什么都搞不清楚。这些问题人通常依靠着“直觉与经验”。而ML告诉你,我不需要知道背后的逻辑是什么,只要给我最够多的已知的例子,我就可以学习这种“经验”(当然是用计算机的方式),并且把这种经验大规模地自动化地应用于新的实践中。如果你曾经总是以试图搞清楚事物背后逻辑的方式去看世界,试试看用这种新的“黑盒子+大数据”的方式去看待世界吧,你会发现一个新的世界。

ML在教育界的前景

教育是一个依靠“经验”决策很严重的行业,所以好的老师很难得。但也正是因为如此,笔者相信ML会有很大的前景应用,如果我们现在随便乱想,举几个例子:

知道一个小学一年级孩子的成绩、行为模式等等,他是否适合跳级以节省时间,不让他接受用处不大的二年级教育呢?

能否根据过去每个大学的高考录取分数线,预测今年的录取分数线呢?

对于数学教育,一个孩子做了一些三角代数的题目,我是否有可能知道如果让他去学向量,他会不会觉得困难呢?

……

这里面有太多的想象空间。技术和数据已经可以让我们做出客观标准下最科学的决策。

教育领域中有太多等着我们去改变了,当你周围的创业者都在谈着教育闭环,线上线下等等的时候,投眼看看硅谷吧,美国的青年才俊们正用自己的青春去投资5~10年以后的梦想,他们用新的技术和理念让周围人的生活更加不同。笔者经验尚浅,但却是坚定的技术派。不管你信不信,未来5~10年,你的生活都会因为各种各样的技术而发生天翻地覆的变化。

附录:一个简单的例子 — 微博的评价是“顶”还是“踩”?

为了告诉大家ML其实一点也不神秘,笔者想在这里举个简单却又无比强大的例子,会涉及到一点点简单的数学,不喜欢数学的还请跳过这段。

微博(或Twitter)用户在随便一条更新下面写了一条回复,我们如何通过ML大规模地知道这个用户的态度是偏向“顶”还是“踩”呢?

解决这个问题的方法很简单,先收集一堆已知正负面的评价作为训练数据库。然后我们要解决如下问题:

如何表达这种语言评价作为输入?

如何表达“顶”还是“踩”?

如何将上诉两者联系起来(即ML模型是什么)?

我们一个个简单说说:

如何表达这种语言评价作为输入?

这里使用的是一种bags of words的方法,即我准备一个词汇集合(dictionary, 如[“好”,“差”,“喜”,“讨”,“欢”,“厌”]),然后对于一个评价,我们将这些字出现的次数映射到机会集合里面,比如评论“好喜欢”就成了向量[1,0,1,0,1,0],我们称这个向量为X=[x1,x2,…,xn].

如何表达“顶”还是“踩”?

我们评价的输出记作y,如果是“顶”,那就是+1,如果是“踩”,那就是-1。

如何将上诉两者联系起来(即ML模型是什么)?

我们使用的是一个很简单向量点乘,需要找的是一个向量A=[a1,a2,…,an],其中的参数a1,a2,…,an会选择保证当训练数据库中的评价是“顶”时A∙X^T>0,评价是“踩”时A∙X^T≤0.

从上面可以看出,这个点乘的数学模型是没有任何逻辑的,用bags of words的方法表达语义也没有任何逻辑。但是笔者可以告诉各位,硅谷用的就是这种简单的方法,而且算法的表现也是尽如人意的。

至于具体如何训练a1,a2,…,an这些参数,本篇文章不深入,感兴趣的读者请参考Linear Regression, Logistic Regression, Perceptron Algorithm等。

总之,当你训练好a1,a2,…,an后,再来一条评论,你再将它映射成X,并做点乘A∙X^T,如果A∙X^T>0,计算机就知道这是一条正面评论(反之亦然)。

欢迎通过邮箱shaun@ltgexam.com与作者交流。

1、本文是 芥末堆网原创文章,转载可点击 芥末堆内容合作 了解详情,未经授权拒绝一切形式转载,违者必究;
2、芥末堆不接受通过公关费、车马费等任何形式发布失实文章,只呈现有价值的内容给读者;
3、如果你也从事教育,并希望被芥末堆报道,请您 填写信息告诉我们。
来源: 芥末堆
芥末堆商务合作:010-5726 9867
  • Machine Learning,那些你不可不知的秘密分享二维码