"); //-->
大数据文摘作品
作者:诸葛越
来源:《未来算法》
盛夏来临,又到了毕业季。每年的秋招,互联网和科技大厂的应届生薪资基本都是应届生们最关心的问题。良禽择木而栖,应届生在选择第一份工作的时候,除了平台自身水平与职业发展前景之外,薪酬也是非常重要的参考因素。
CSDN论坛里,一篇2021届互联网大厂薪资对比帖显示,算法工程师一职当属最炙手可热的岗位。其中,一些拿到special offer的算法应届毕业生居然可以拿到高达60万的年薪!
互联网大厂新入职员工各职级薪资对应表(技术线) 图片数据来源:知乎
算法,这个听起来高深又晦涩的概念,仿佛逐渐支配了我们日常生活的方方面面,依托这个概念而衍生出的工作行业,也逐渐成为兼具“前途”与“钱途”的香饽饽。
其实要搞清楚“算法”为什么值钱,看看我们的日常生活就知道。从早上出门打车用的打车软件、导航软件,上班用的电脑、文件和在线工具,点外卖咖啡的App(应用程序)和快递调度,到手机支付,孩子上的网课,在淘宝、京东购物,看微信,刷抖音,用语音助手,和机器人聊天,这些行为背后全是强大的算法在操纵。
未来是人和机器一起仰望星空的时代,而算法是打开未来世界的钥匙。普通人需要深度了解算法吗?答案当然是肯定的。或许你已经听倦了“我们生活在算法操控的时代”这样一种说辞,那以下的几个生活场景,会让你意识到将算法思维为我所用是多么重要。
可以被算法优化的生活场景
时间管理大师
最近几年,“时间管理大师”一词逐渐走入大家的视野中,一开始只是用作调侃,但放在认真生活的语境之下,提升时间管理效率其实是许多职场人的必修课。世界著名的“艾维·利时间管理法”教会上百万人如何利用“优先级”管理自己的时间:
(1)写下你明天要做的6 件最重要的事。
(2)用数字标明每件事的重要性次序。
(3) 明天早上第一件事是做第一项,直至完成或达到要求。
(4)然后再开始完成第二项、第三项……
(5)每天都要这样做,养成习惯。
这其中,第二步,也就是排序,是最重要的,它帮助人们遵从两个重要原则:(1)先解决最重要的问题,(2)每次只解决一个问题。
我们在生活中常常看不清楚的优先级问题,比如工作和生活的平衡,该去同学聚会还是在家里看书,都是没有想清楚要按什么来排,什么对你最重要。每天的时间对于每个人都一样多,用排序思维来管理时间可以让你的每一天更高效。
解除焦虑,安心躺平
哪怕现在众多人呼吁“躺平”,不得不承认的是,焦虑感依然充斥在每个人的生活当中。在斯蒂芬·柯维(Stephen Covey)的《高效能人士的七个习惯》中,他写了两个我们思考的圈子:关注圈子和影响圈子。
我们可以关注自己的健康、职业、人际关系,我们关心环境保护,关心孩子的教育,我们也可以影响这些事,这些都属于我们的关注圈子和影响圈子。但如果我们关注别人的成功,隔壁家孩子的考分,经济是否下滑,这些事情我们基本上影响不了,它们属于关注圈子,但不属于影响圈子,而它们是造成人们焦虑的主要原因。
你如果感到焦虑,可以试试下面的三步法。第一步,坐下来把你想到的所有的事情写下来,然后分类成“我能影响”和“我不能影响”的两类。仅仅这样的分类,就能让你看清楚自己是否花了太多的时间在担心不能影响的事。第二步,对“我能影响”的那些事,你可以积极主动地去改变,比如改变自己对他人的态度。第三步,对“我不能影响”的那些事,你可以问自己:“我自己能做些什么?”比如你担心经济下滑,你是否可以储蓄更多?把自己担心却不能影响的事,变成自己可以执行的行动,可以减少没有意义的焦虑。
是做海王,还是从一而终?
谈恋爱应该多谈几个,还是从一开始就选定对象,从一而终?多谈几个是否有成为“海王”的风险,从一而终给是否会错失更佳的伴侣?
找伴侣,在计算机领域是一个典型的优化问题。这个优化问题叫作最佳停止问题(optimal stopping)。最佳停止问题的场景是你有一系列的可能选择的目标,你可以一个一个地检验,记住它们的特点和优劣,给它们打分。但是你看过了就不能回头了。问题是:你在什么时候做决定,是最佳的选择呢?
这个最佳选择有一个答案:37%。也就是说,在你所有的可能的选择中,前面37%不要选,用来积累数据,建立你对选择对象质量的评估标准,让你知道什么是好的,什么是不好的。从第38%位对象开始,你转变成开放的可以做决定的状态。这时候,你如果遇到比前面看到的都更好的选项,你就可以做出选择。
找餐厅可以做类比,如果798园区有10家餐吧,那么前面4 家(接近37%),你可以看看而不要进去。从第5家开始,只要看着比前面的都好,你就进去吃午饭吧,这可能就是你的最优选择。
找伴侣的例子也一样。假设你在18岁到36岁之间,每年可以交一个异性朋友,那么你可能一共就有18个人可以交往。在这种情况下,对前面7个人(接近37%),你只需要交往一下,了解一下异性,看看交朋友是怎么回事。在第7个人之后,也就是在你25岁的时候,你要转变策略,再碰到一个合适的就要抓住时机定终身,进入人生下一个阶段。
这个最佳停止的问题和答案,被誉为优化算法里最完美的算法之一。它的问题简单易懂,使用场景很多,答案也很清晰。最佳停止问题和答案在20世纪60年代被提出来后,广泛应用于统计学、经济学、计算机科学、金融学等领域。
如果你仔细思考,它可以对我们人生中做的决定产生深远的影响,因为在我们的生活当中有特别多的问题是“你什么时候停止观望,做出选择”。
像算法工程师一样思考
以上的生活场景,是否让你意识到“计算思维”的重要性?现在你大概知道了,为什么“算法工程师”们的思维模式有价值,值得每个普通人去学习。女性计算机科学家诸葛越博士在她的新书《未来算法》中,详细解释了普通人为什么要训练计算思维,以及如何训练计算思维的办法。
首先,计算思维会对你的每日生活和工作有帮助。了解了算法思维后,你会发现生活中处处是算法,会从一个全新的角度看待日常的问题。除了管理时间,接触焦虑,寻找伴侣之外,生活中的千万个问题都可以用算法思维给出答案。比如如何找到去公司的最短路径,如何管理时间,如何加密你的信息,机场人流是怎么回事,骗子是怎么利用简单算法让很多人上当的。
其次,计算思维也能帮你了解日常应用是怎么工作的。比如为什么滴滴知道你要去哪里,朋友圈为什么可以一直刷,淘宝为什么随时随地都能向你推送你想要的东西。
还有,计算思维还会帮你做事,帮你更有效地利用这些强大的计算机应用。比如了解搜索引擎的原理后,当你要找一份工作,你就知道如何缩小范围去找到合适的结果。再比如你想提高自己淘宝店商品的排名,你如果了解其分类和排序的规则,你的商品就有可能排到前面。
最后,计算思维也可以帮助你解决人生的复杂问题。计算思维是一套方法论,一套解决复杂问题的方法论,这套方法论可以迁移到生活当中,给你指导:如何做好一名CEO(首席执行官)?如何让孩子上好大学?如何在享受现在的生活和探索新的机会之间找到平衡?这些问题的本质是如何优化,如何做选择,如何做成一件大事。
我们都知道人生的难题不能用一个算法来解。计算思维会教你分解问题,找出规律,教给你直觉和框架。这对我们了解复杂的世界,做正确的人生决策有很大的帮助。
那么如果把计算思维拆解开来,它,到底是什么?它的底层逻辑有哪些?
计算思维的4个方向
目前业界公认,计算思维包含4个方面:分解问题、抽象、算法、模式识别。其中,算法是直接用来解决问题的方法,而其他几个概念能帮助人们用算法来表示生活中的问题,从而让计算机来解决这些问题。
第一,拆解复杂问题,直到复杂问题成为可重复的简单问题(分解问题)。
用计算思维解决问题,首先就要拆解。分解问题是把原问题分解成子问题,解子问题,再把子问题的解合成原问题的解。无论多么强大的计算机应用,背后都是把原问题分解成可以解的子问题,只是规模不同。
以抖音为例,抖音的成功依赖于它强大的个性化推荐算法。在计算机看来,“探究用户喜欢哪种视频”可以拆解成:(1)把所有的视频按内容分类和排序;(2)根据所有用户(包括你)以前各自的观看习惯,推导出喜好;(3)把视频内容和用户喜好进行匹配,按匹配程度排序。也就是说,你用抖音刷视频对计算机来说分三大步,每一步都可以继续拆解,直到每一步都可以用算法来完成。
第二,把生活中的问题抽象化,用约定俗成的算法来解(抽象)。
我们生活在一个物理世界里,计算机生活在一个数字世界里。计算机并不像人一样理解真实的事物,我们需要把真实的世界表达成它能理解的语言。然后在计算或操作后,它才能在真实世界中把结果展示出来。
比如,抖音需要用ID(身份标识号)或者名字把视频表示成计算机可以理解的形式,也要把视频内容表示成计算机可以理解的形式。同样,淘宝需要把商品的名字、内容、价格等表示成计算机可以理解的形式。被计算机排序后,这些物品需要转换回人能够看见的视频或者商品。这个把真实物理世界和计算机数字世界对应的过程就是抽象。
一旦问题被抽象成计算机可以理解的形式,比如转化为上面提到的排序问题,那么,这个问题就有约定俗成的解法了。而一些常用的排序算法,比如冒泡排序、插入排序等,都可以帮助我们提升解决问题的效率(这些算法在《未来算法》中都有介绍)。这些算法是计算机科学家研究出来的正确而高效的算法,是放之四海而皆准的算法。我们不需要重新去发明它们,就好比造房子的时候有其他公司已经能做出世界一流的窗户,那我们只需要知道是哪家公司有这个能力,把尺寸要求给它,让它造窗户就行了。
第三,算法是流程化的、可调用的、逻辑清晰的(算法)。
计算机的算法就是一系列的指令,而指令是计算机能理解的语言。
人类的语言本身是复杂的、模糊的、会意的,比如“空山鸟飞绝”这句诗,看到的人会“脑补”这个画面。而计算机语言像小孩的语言,你必须给它所有精确的信息,它才能懂。计算机需要数过每一棵树,不多也不少,才知道这是一片有几棵树的森林。计算机的指令需要清晰、流程化,就像做一杯咖啡的指令,不管谁拿到这个指令,都可以做出同样的咖啡。
清晰的语言表达是计算思维的要点。拆解使语言变得清晰。比如,计算机把物体从小到大做一个排序队列,它的办法是:(1)拿一个新的物体;(2)从队列第一个开始比较,直到找到这个物体合适的位置;(3)把这个物体插入这个位置。这3个步骤非常清晰,没有歧义,对任何数目的物体都会奏效。
这个算法叫插入排序算法。抖音排视频可以用这个算法,淘宝排商品也可以用这个算法。无论是抖音需要每天推荐1亿个短视频,还是淘宝同时服务1000万名用户,当它们做到最后一步,需要向用户展示一个排好序的清单的时候,它们用的都是排序算法。
可以说,现代和未来的数字世界就搭建在这些算法之上。算法是约定俗成的好方法,一个算法可以解不同的问题,一个问题可以由不同的算法来解。我们需要知道各种算法的存在,懂得它们的原理,学会调用它们,让算法为我们服务。
第四,可重复性带来规模效应(模式识别)。
计算机的算法不是用来解一个问题的,而是用来解一类问题的。这个解是可以重复的。比如,抖音不是给一个人推荐视频,它的算法可以给一亿人推荐视频,每个人看到的内容是不一样的,形式和方法却是一样的。再比如,一个人脸识别算法不是只能识别某个人,而是可以把每个人的身份证照片和实际的影像进行匹配。
可重复性带来规模效应,这是计算机强大的根本原因。所谓模式识别,就是识别出哪些问题有共性,可以用同一个方法(比如排序)来解,这样我们就可以把这些问题交给计算机算法,让它重复做,做成千上万遍。
计算世界是精美和巧妙的。现在入行做程序员或许已经来不及了,但我们依然可以训练“算法工程师”们看世界的方法,学习如何用非常优美的、极其聪明的、超常简洁的办法去解决复杂的难题。希望在计算思维之下,我们都能拥有一个不同的看世界的视角。
本文综编自《未来算法》,诸葛越著,中信出版集团2021年6月出版。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。