写作本文的目的是用最简单易懂的语言说明白机械学习算法技术到底是什么,有什么用处,有哪些局限性等等。以科普为目的帮大家解答一些疑惑,是入门类的文章。写作此文的原因有两点:
自己也曾参加过不少国内的创业活动,看到一些朋友们把自己的技术说得有些天花乱坠,脱离了实事求是的科学精神,让人无法看清真正的创新在哪里。
Machine Learning(机械学习,以下简称ML)是目前美国硅谷最火的技术,也是工程师最吃香的技能之一,随便举几个应用:
Netflix通过ML发现你可能喜欢什么样的影片;
Goldman Sachs用ML识别你在支票上的手写数字到底是多少钱。
Google News通过ML自动识别两个报道是否报道了同一件新闻事件。
机械学习 – 新的方法论
而对于ML来说,很多ML算法是非逻辑性的,它将A作为输入放到了一个黑盒子里面,通过黑盒子的运算,得到了B的结论(Fig. 2)。当然这个黑盒子是有一个数学模型在后面的,数学模型不一定有任何直观逻辑性,但是模型中有足够多的待定参数可以调整,从而使预测足够准确,这些参数通常要用一个已知的数据库去训练。举个于上面对应的例子,随便给一张照片,我们的任务是让计算机去判断这张照片里面的人是男是女。计算机看到的图片可和人不一样,计算机看不到鼻子眼睛耳朵,只能看到的是一个数字矩阵,图片中的每个像素点都变成了矩阵中的一个数。面对着这种数字矩阵,要去判断这个矩阵是男是女,很多算法都是没有直观逻辑可言的,我们且不去关心这些算法细节,把它暂时当成一个黑盒子吧。好处在于,这个黑盒子是一个数学模型,而模型中的很多参数都是待定的。那么如何决定这些参数呢?我们会需要一个已经人工识别好的数据库,即一堆图片,且我们知道图片中是男是女。这个数据库叫做训练数据库(training database),会有一套算法用这个数据库去训练得到黑盒子里面的参数。等决定了这些参数,再给黑盒子一个照片,黑盒子就可以告诉你到底照片是男是女了。这个过程就像学习一样,先学习一些已知的材料,再将学习到的知识运用于未知的材料上。所以这些算法叫做机械学习算法。
nerror="javascript:errorimg.call(this);">
ML在教育界的前景
知道一个小学一年级孩子的成绩、行为模式等等,他是否适合跳级以节省时间,不让他接受用处不大的二年级教育呢?
对于数学教育,一个孩子做了一些三角代数的题目,我是否有可能知道如果让他去学向量,他会不会觉得困难呢?
这里面有太多的想象空间。技术和数据已经可以让我们做出客观标准下最科学的决策。
附录:一个简单的例子 — 微博的评价是“顶”还是“踩”?
微博(或Twitter)用户在随便一条更新下面写了一条回复,我们如何通过ML大规模地知道这个用户的态度是偏向“顶”还是“踩”呢?
如何表达这种语言评价作为输入?
如何将上诉两者联系起来(即ML模型是什么)?
如何表达这种语言评价作为输入?
这里使用的是一种bags of words的方法,即我准备一个词汇集合(dictionary, 如[“好”,“差”,“喜”,“讨”,“欢”,“厌”]),然后对于一个评价,我们将这些字出现的次数映射到机会集合里面,比如评论“好喜欢”就成了向量[1,0,1,0,1,0],我们称这个向量为X=[x1,x2,…,xn].
我们评价的输出记作y,如果是“顶”,那就是+1,如果是“踩”,那就是-1。
如何将上诉两者联系起来(即ML模型是什么)?
从上面可以看出,这个点乘的数学模型是没有任何逻辑的,用bags of words的方法表达语义也没有任何逻辑。但是笔者可以告诉各位,硅谷用的就是这种简单的方法,而且算法的表现也是尽如人意的。
总之,当你训练好a1,a2,…,an后,再来一条评论,你再将它映射成X,并做点乘AoX^T,如果AoX^T>0,计算机就知道这是一条正面评论(反之亦然)。
