NO.1416 懂点算法才能赢


你好,这里是罗胖精选。

最近我们得到上新了一门重磅课程,吴晶辰老师的《算法通识课》。

咱们生活在这个计算机互联网的时代,普通人不懂算法,确实是心中的一个隐痛,那这门课就来了。这门课的主理人吴晶辰老师是亚马逊的资深算法科学家,他自己就拥有很多项算法专利。学了他这门课,虽然不能让你成为算法科学家,但是,学完这16讲,你对“算法”底层逻辑的理解,就算是登堂入室了。

吴晶辰老师说了,“算法”可不等于写代码,“算法”最有价值的地方,恰恰是算法工程师的思维方式。有了这套思维方式,你就能重新定义你的业务问题,找到比别人更高效的解决方案。那算法究竟是怎么解决问题的呢?

接下来,让我们听听吴晶辰老师是怎么说的。

你好,欢迎来到《算法通识课》,我是吴晶辰。

咱们既然要学习算法,那就先要搞清楚,算法到底是什么?在算法科学家眼里,这个问题很简单,算法就是有输入、有输出的解决问题的计算步骤。可记住这句话你就懂什么是算法了吗?并没有。

所以说,我们想讨论的其实并不是“算法是什么”,而是“什么是算法”。

请注意,这两者是有区别的,前者告诉你一个知识,给你一个算法的定义。后者带你理解算法,让你识别出计算机做事与人类做事的核心差异。理解了这个核心差异,我们自然就懂了算法是什么。

1. 算法对明确性有极其严苛的要求

在课程第一讲,我们先来讲讲,什么是算法。要理解这个问题,我们要先追问,计算机做事与人做事的核心差异是什么。咱们来看这么一个案例。

有一位特别厉害的媒婆,王婆,牵线搭桥的成功率特别高。隔壁村的赵婆听说之后,来跟王婆取经。

王婆告诉她,“我给人介绍对象就看四要素:双方离得近不近,年龄相差大不大,爱好匹不匹配,性格合不合得来。这几条大都满足就合适。其中性格最重要,只要性格合得来,其他条件可以适当放松。”

赵婆学完,果然牵线搭桥的成功率显著提升。

王婆的孙子是程序员,他跟王婆说:“您把方法告诉我,我给您写一套算法,自动匹配,不用挨家挨户跑去看了。”王婆听了高兴坏了,这孩子太有出息了,于是把这四要素如数家珍似的讲了一遍。

结果,王婆的孙子很失望,“您这四要素不是算法,计算机实现不了,要不您再想想?”

这“四要素”明明帮赵婆也提高了业务能力,为什么不是算法呢?算法要求有输入、输出、计算过程,这“四要素”方法也有啊。这输入是男女生的住址、年龄、爱好、性格四个维度的信息,然后做匹配计算,输出就是匹配的人选呀。

问题出在,这“四要素”的方法不够明确。是输入也不明确,计算过程也不明确。

就拿离得远近来说,表面上看很明确,输入双方住址,计算距离呗。但就算你把经纬度都要来,也解决不了“近不近”的问题。

我们来分析一下,多近算近?方圆几十公里算近吗?你可能有过这样的经验,住在市中心,3公里以外都懒得去,嫌远。住在郊区呢?10公里,开车也就一脚油的事,都算近。所以,什么叫近,不明确。

其次,离谁近?是男生和女生的家?还是包含工作地点?如果有好几套房子呢?怎么算?这也不明确。当出现多个地点,多个距离,怎么处理优先级呢?也不明确。

你可能想,有这么复杂吗?的确,王婆亲自来干,或者教给赵婆,都没这么复杂。但要交给计算机来干,那对不起,这些问题必须明确,一个都不能少。

你看,这就是算法和人的核心差异,人做事可以接受一定程度的模糊,算法却对明确性有极其严苛的要求。

再拿我举个例子。我在美国难得回家,每次回家爸爸会给我做鱼香肉丝,妈妈会给我烤蛋糕。他们跟我说,我们也是算法工程师,按照菜谱做菜就是执行一套算法。

听起来是这样,做菜也是有输入和输出的计算过程。鱼香肉丝要输入猪肉、泡姜、木耳,要猪肉切丝、盐少许、酱油少许。烤蛋糕要输入15克黄油,30克面粉,要放进200度烤箱,烤20分钟。

但你仔细回忆一下,鱼香肉丝的辅菜稍微有点变化,或者换个人做,味道可能就不一样了。但烤蛋糕只要严格遵照菜谱,谁来烤都一样。所以从这个角度来说,鱼香肉丝的菜谱不是算法,烤蛋糕的才是。因为烤蛋糕的菜谱可以无数次复现,谁来干都一样。

到这里总结一下,算法要求极其明确。当一个解决方案足够明确,必然可以让这个算法无数次再现,同一个算法,相同的输入必然可以得到相同的输出。不会因为执行的计算机不同、人不同,就导致不同的结果。

能不能复现也是我们衡量明确性的标准。当你有一个问题要交给算法解决,就要不断明确每个细节,保证算法执行之后能够复现。所以本质上来说,算法就是一套通过确定性保证解决问题的工具。

2.模型化是算法优势的本质

好,算法需要明确,可只靠严苛的明确性,就能叱咤人类社会吗?

你可能有这样的感觉,算法在今天已经侵入我们工作和生活的方方面面了。找对象,可以上王婆的红娘系统;想网购,下单一个保温壶,购物网站会一直推荐保温壶;想看电影,搜索一个《风声》,各种谍战片扑面而来。

算法是靠什么优势,成功“入侵”人类社会的呢?我的答案是,模型化。你可能不会想到,刚才那些看起来完全不相关的程序,背后可能是一套算法。

什么叫模型化?简单来说,模型化就是对不同的问题,用同样的方式来看待,用同一套算法来解决。

购物网站、搜索引擎,没有“红娘四要素”这个理论,甚至还需要调用不同行业的背景知识,但数学模型可能完全是一样的。

比如,在红娘算法中,人与人之间的匹配分数,可以被看成是一个“距离”问题。匹配度高,距离近;匹配度低,距离远。距离,可以定义人和人的远近,也可以定义商品和商品的相关性,可以定义搜索词和电影之间的相关度。

表面上,这是红娘牵线问题、商品推荐问题、搜索引擎问题,但在算法工程师的眼里,这全是“距离”问题。这就是模型化。模型化最大的价值,就是赋予算法超乎寻常的问题迁移能力。

我看过一个这样的研究,慕尼黑工业大学用算法预测《权力的游戏》的剧情。你看过这部美剧肯定知道,剧中人物常常意想不到就送命了。这谁活谁死,能预测吗?还真别不信,这个团队在最后一季上映之前就预测,龙妈是所有角色中最可能活下来的。

正确与否,咱先不论,就说说这个团队预测用的模型。他们用的是保险公司的寿命预测模型,是不是又出人意料,又合情合理?保险公司分析的什么?是人的寿命和性别、遗传病史、是否吸烟等等之间的统计关系。而剧情里同样包含了角色的寿命和他们所处的家族、配偶、联盟信息等关系。

脱去现实描述,里面隐藏的是就用多个变量来估计一个目标变量的统计预测模型。

你看,模型就是一个问题脱去现实描述外衣之后的逻辑内核。同样一种逻辑内核可以在不同的问题中穿梭,来描述不同的现实关系。正是这种穿梭的能力,让算法能在不同领域中快速迁移。

3.算法没有好坏之分,背后都是人的思想

你可能也听到了一些不同的声音,算法带来了歧视、排斥、不公平。怎么有的算法“好”,有的算法“坏”呢?我想给你送达的最后一个认知是,算法没有好坏,背后都是设计者的思想。

咱们还是从一个案例来讲。机器学习领域有一个很经典的算法,叫K临近算法,在解决分类问题上很好用。比如,在做肿瘤活体实验之前,用K临近算法可以通过肿瘤的特征信息,判断它是良性的,还是恶性的。

那具体K邻近算法是怎么实现的呢?我们每看到一个新肿瘤,就把它的特征和数据库里和它最相近的那几个肿瘤进行比较。比如说,有10个最相近的,里面8个是良性的,2个是恶性的。于是医生可以预判,患者有20%的可能性,得的是恶性肿瘤。

同样一套算法,也被用到对简历进行评分上。结果,申请人的性别成了影响预测结果的主要因素。同样的简历内容,把名字改成男性的名字,算法就给出高分,改成女性,得分就较低。这是赤裸裸的歧视啊。

同一套算法,怎么一会“好”,一会“坏”呢?

其实,如果你把这套算法再用回到肿瘤的预测,也可能有类似的问题。把患者的性别从女性改成男性,那么预测出是恶性肿瘤的概率也会高一些。因为男性得癌症的几率高一些,这时候,我们不会认为算法歧视吧。

在算法抽象模型的迁移当中,我们能接受肿瘤预测中的“歧视”,但容忍不了简历筛选中的“歧视”,这是算法出了错吗?不是。问题出在了,应用K临近算法的算法设计者对问题的理解上面。

K临近算法认为,要预测的数据和已有的数据在分布上是类似的。也就是说,在诊断肿瘤的时候,数据库中的男性更容易患癌症,那么预测的时候,男性患癌症的概率也更高。

但在简历预测的问题中,这个假设就不一定成立,或者说不应该成立,可能过去职场就存在歧视,又或者采集的数据中男女性别不平衡出现了问题。

不是算法错了,只是在不同场景里,我们需要的价值偏好和设计思想不同。

所以,不要对算法评判对错、评判好坏,算法的模型只是人思想的体现,如果算法出了问题,请回到人身上找问题。

算法永远不会完美,在这里,我借用统计学家乔治·博克斯的一句名言:“所有的模型都是错误的,但有些是有用的。”算法也一样,没有好坏,有用就好。

总结一下,这一讲我们从三个问题出发,理解了什么是算法:

1.算法和人做事最核心的差异是对明确性的要求不同,算法对明确性有着极其严苛的要求。

2.算法的优势在于模型化,模型化让算法能在不同领域之间快速迁移。

3.算法本身没有好坏,背后体现的都是人的思想。

下一讲,我们说说为什么算法工程师格外关注效率。我是吴晶辰,咱们下一讲见。

内容听完了,我是罗胖。

感谢吴晶辰老师给我们带来这样一门《算法通识课》。有了这门课,得到App通识类课程的版图,就又拼上了很重要的一块。

我们都知道,现在是智能时代。可能你的工作看起来跟计算机好像没什么关系,比如销售、咨询、教育、管理,但实际上,算法的力量、算法指挥下的人机互动已经无处不在了。

要搞懂算法的秘密,推荐你在得到App首页搜索“算法”两个字,现在就加入吴晶辰老师的这门《算法通识课》。懂点算法,做这个时代的赢家。

罗胖精选,明天见。