『终极算法』摘抄笔记-算法和机器学习概述

『终极算法』摘抄笔记-算法和机器学习概述

什么是算法

算法就是一系列指令,告诉计算机该做什么。计算机是由几十亿个微小开关(称为晶体管)组成的,而算法能在一秒内打开并关闭这些开关几十亿次。

最简单的算法是触动开关。一个晶体管的状态就是一个比特信息:如果开关打开,信息就是1;如果开关关闭,信息就是0。

第二简单的算法是:把两个比特结合起来。克劳德·香农以“信息论之父”而为人所知,他第一个意识到晶体管的活动就是在运算,因为晶体管开了又关,是对其他晶体管的回应。

如果A晶体管只有在B和C晶体管都打开时才打开,那么这时它就是在做小型的逻辑运算。如果A晶体管在B和C晶体管其中一个打开时才打开,就是另外一种小型逻辑运算。如果A晶体管在B晶体管任何关闭的时候打开,或者反过来,这又是第三种运算。所有算法,无论多复杂,都能分解为这三种逻辑运算:且,或,非。

一种算法不仅是简单的一套指令,这些指令必须精确且不能模糊,这样计算机才能够执行。我们平时用到的菜谱就不能称之为算法。

算法是一套严格的标准。人们常说,你没法真正了解某样东西,直到你能用一种算法来将其表达出来(理查德·费曼曾说,“如果我无法创造某样东西,那么也就无法理解它”)。

设计算法这个过程充满陷阱,什么事都不能想当然。如果你的一些构建已经出错,就得找其他方法。设计算法最重要的一点就是用一种计算机能理解的语言来将算法记录下来,接下来对其进行纠错:找出每个误差并修正,直到计算机能够运行程序。

算法复杂性的三个层面

空间复杂性

即为了储存在计算机内存中,一个算法所需信息的比特数量。如果计算机无法提供该算法所需的内存,那么这个算法就没用,必须忽略。

时间复杂性

该算法运行多长时间,也就是说,在产生想要的结果之前,算法利用及重新利用晶体管的步骤有多少。如果算法运行时间太久,我们等不了,那么这个算法也没用。

人类的复杂性

当算法变得很复杂以致人类大脑已无法理解,当算法不同部分的交互过多且过于深入时,误差就会悄然潜入。我们找不到这些误差,也就无法纠正它们,算法也就不会做我们想做的事。即便我们让它运行起来,它也会停下来。对使用它的人来说,它没必要那么复杂,而且它和其他算法也合作得不好,这为日后埋下隐患。

初步理解机器学习

今天为止,人们能编写许多计算机无法学习的程序。可令人更为惊讶的是,计算机却能学习人们无法编写出来的程序。

我们会开车、会辨认字迹,但这些技能都是潜意识发挥出来的,无法向计算机解释这些事情是如何完成的。但是,如果我们把关于这些事情的足够多的例子交给学习算法,该算法会很乐意弄明白怎样独立完成这些事情,这时我们就可以放手让算法去做了。

学习算法是种子,数据是土壤,被掌握的程序是成熟的作物。机器学习专家就像农民,播下种子,灌溉,施肥,留意作物的生长状况,事事亲力亲为,而不是退居一旁。

一旦我们这样看待机器学习,随即也会发生两件事。

  • 我们掌握的数据越多,我们能学的也越多。没有数据什么也学不到。有了大数据很多东西可以学习。这也是机器学习无处不在的原因,因为有飞速增长的数据。

  • 机器学习是一把剑,利用这把剑可以解决多种复杂性问题。只要有足够的数据,一段只有几百行代码的程序可以轻易生成拥有上百万行代码的程序,而且它可以为解决不同问题不停产生不同的程序。这可以显著降低程序员工作的复杂度。

学习算法的区别和地位

有些学习算法学习知识,有的则学习技能。例如:“所有人都会死”是知识,骑单车是技能。

在机器学习中,知识往往以统计模型的形式出现,因为多数知识都是可以统计的:所有人都会死,但只有4%是美国人。技能往往以程序的形式出现:如果马路向左弯曲,那么向左转动车头;如果一只鹿跳到你面前,那么立刻刹车。

通常,这些程序都很简单,复杂的是它们的核心知识。如果你能判断哪些邮件是垃圾邮件,那么你也就能判断该删除哪些邮件。如果你能在象棋游戏中判断这盘棋自己的优势在哪里,那么你也就懂得该怎么走。

在信息处理这个生态系统中,学习算法是顶级掠食者。数据库、网络爬虫、索引器等相当于食草动物,耐心地对无限领域中的数据进行蚕食。统计算法、线上分析处理等则相当于食肉动物。

食草动物有必要存在,因为没有它们,其他动物无法存活,但顶级掠食者有更为刺激的生活。数据爬虫就像一头牛,网页相当于它的草原,每个网页就是一根草。当网络爬虫进行破坏行动时,网站的副本就会保存在其硬盘当中。索引器接着做一个页面的列表,每个词都会出现在页面当中,这很像一本书后的索引。数据库就像大象,又大又重,永远不会被忽略。在这些动物当中,耐心的野兽飞快运转统计和分析算法,压缩并进行选择,将数据变为信息。学习算法将这些信息吞下、消化,然后将其变成知识。

算法在科学研究中的作用

机器学习是“打了类固醇”的科学方法,也遵循同样的过程:产生假设、验证、放弃或完善

科学家可能会花费毕生精力来提出或验证几百个假设,而机器学习系统却能在一秒钟内做完这些事。机器学习使科学的发现过程自动化。这既是商业领域的革命,也是科学领域的革命。

有了大数据和机器学习,你就能弄明白比之前复杂很多的现象。在多数领域,科学家一般只使用种类很有限的模型,例如线性回归模型,在这个模型当中,你用来适应数据的曲线总是一条直线。遗憾的是,世界上的大多数现象都是非线性的(或者说这也是一件幸事,如果是线性的,生活会变得非常乏味。实际上,那样就不会存在生命了)。

机器学习打开了广阔、全新的非线性模型世界。这就好比在只有几缕月光照射的房间,打开了明亮的灯。在生物学领域,学习算法的研究成果包括:DNA分子中基因的位置;在蛋白质合成前,多余的核糖核酸在哪里进行绞接;蛋白质如何折叠成各自的特有形状;不同条件如何对基因的表达造成影响。用不着在实验室对新药进行测试,机器学习就可以预测这些药物是否有效,只有最有效的药品才会受到测试。学习算法还会剔除那些可能产生严重副作用(甚至导致癌症)的药物,备选药物无须在经过人体试验被证明无效后才被禁止使用,从而避免了代价昂贵的失败。

算法如何影响选举

奥巴马总统雇用了拉伊德·贾尼(机器学习专家,他是奥巴马竞选中的首席科学家)。贾尼研究的是如何整合最伟大的分析运算,并将其应用到政治史中。他们将所有选民的信息整合成单个数据库,然后将该数据库和他们能在社交网络、市场营销等领域找到的资源结合起来。

之后着手对每个选民做四种预测:

  • 支持奥巴马的可能性有多大
  • 会不会参加民意调查
  • 会不会回应竞选宣传并照做
  • 对特定问题进行对话之后,他们会不会改变选举决定。

基于这些选民的例子,奥巴马团队每个晚上进行66 000场选举模拟,并用这些结果指导奥巴马竞选的志愿者大军:该给谁打电话,该拜访谁,该说什么。

机器学习的终极影响

2011年,“大数据”的概念流行起来,机器学习被明确归入全球经济未来的中心。当今,似乎没有哪个人类钻研的领域不受到机器学习的影响,甚至包括看起来没有多大关系的领域(如音乐、体育、品酒)。尽管机器学习发展很明显,但这也仅仅是未来的预告。虽然它有用,但实际上当今在工业上起作用的学习算法的生成还是受到了很大限制。如果现在实验室的算法能在各领域的前线使用,比尔·盖茨说机器学习的突破产生的价值将相当于10家微软,其实这个说法有点保守了。如果这些观点让研究人员真正觉得眼前一片光明,而且收到效果,那么机器学习带来的就不仅仅是新的文明时代,还是地球生命进化的新阶段。


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×