Hero for 书评:生活准则
· Risk & Decision Making · 10 分钟阅读
中文(简体)

书评:生活准则

摘要

算法是一个明确的流程,必须遵循以获得期望的结果。我们的生活很大程度上都被算法决定。知道该遵循哪些算法,可以带来更高效、更有效的决策。

生活中的算法

我最近又重读了一遍 Algorithms to Live By这是一本由Brian Christian和Tom Griffiths合著的书,讲述算法如何帮助我们提升生活中的效率。去年开始学习编程后,这次我收获更多。

算法是一个过程,你可以把它看作是完成某个任务时需要遵循的指令。例如,学习如何将数字相加是一个简单的算法 1.

更复杂的指令可以计算生活中其他问题的结果。利率、网络搜索排名或社交媒体信息源都基于算法的结果。书中介绍了许多此类算法,并将其与你个人可能遇到的问题联系起来。

要解释他们提到的每一个算法都太难了 2所以我会做一些简短的重点介绍,通常会重点放在定性而非定量的收获上。

此外,大多数算法依赖某些假设;阅读时不要每次都指定这些假设,而是默认。我会在脚注中补充一些假设,供感兴趣的人参考。

讨论的一些问题包括:

  • 什么时候该停止面试,以获得最佳结果
  • 当你应该停止探索新选项,去享受你已经熟悉的选项时
  • 如何根据你的目标安排任务

让我们来看我们的第一个算法,关于何时应该停止解决一个问题。

最优制动

如果你在评估各种选项(求职者、住房报价、停车位等),选择时间和选择“最佳”选项的机会之间存在权衡。这被称为 secretary problem - 假设你在雇秘书,应该面试多少次,才能获得找到最佳秘书的最佳机会?

在这种情况下,有一个精确的百分比。你应该在看到37%的申请者后,再选下一个表现最好的申请者 3.比如,如果你有100个申请者,等你看完前37个后,再选一个比你目前看到的申请人更好的。

那是数学上最优的点,最有可能选出最适合这份工作的人选。如果你太早停止,可能会错过后续面试的人。如果太晚停止,你就会浪费时间 4.

post

探索漏洞

类似于最优的停机情况,信息收集(探索)和享受(利用)之间存在权衡。假设你在赌场,想决定玩哪些机器。你想最大化你的奖金,但不知道机器的确切赔率(如果知道,你会选择最好的那个)。

在这种情况下,有一个数字,称为 Gittins Index,这给你提供了最优的游戏机制 5.如果你知道赢、输的次数以及你对未来收益的价值,就能精确计算每个选择的价值。一些有趣的特性:

  • 如果你玩的是最优机器并再次获胜,继续玩那台机器是合理的
  • 如果你玩的是最优机器并且输了一次,继续玩那台机器可能仍然有意义
  • 一台完全陌生的机器可能比那些经常赢的机器更有利,而你越看重未来收益,这种未知机器的价值也会越高

其他相关含义:

  • 探索对年轻时影响更大;从他们的角度来看,婴儿把所有东西都放进嘴里是合理的
  • 剥削在晚年影响更大;因此老年人减少社交网络,更倾向于回到喜欢的餐厅

分院

书中举了一些排序算法的例子,这些算法在编程中很常见。例如,返回搜索结果需要筛选出对你来说最相关的排序。

关于排序算法的详细讨论我留到以后再说,因为它们需要理解 time complexity.以下是一些定性结论:

  • 有些排序方式效率远高于其他方式(>快10倍)
  • 有些情况不仅仅需要排序效率。例如,制定体育赛季比赛日程还需要考虑赛季的精彩程度。你可以优化排序效率,但赛季会显得不那么精彩
  • 排序越高效,它可能越容易因意外失误而脆弱。例如,“最强”的队伍可能在单败淘汰赛(本质上是排序算法)中意外被淘汰,比如世界杯 6.

缓存与内存

缓存的理念是:1)一个小而快速的内存(存储)部分,2)一个大型、较慢的存储部分。然后根据我们的意图,在这两者之间交替使用。这样我们既能获得所需的活动速度,也能获得一定的规模。

比如,你衣柜里有你最喜欢的衣服,阁楼里有未穿的衣服。你可以快速拿到最常用的衣服,同时如果想的话,还能留下那件难看的圣诞毛衣。储藏听起来复杂,但你会发现我们日常生活中自然而然地这样做。

你如何决定哪些物品应该放进快区,哪些放慢板?你可以随意放物品,最新的物品,最大的物品等等。

在这种情况下,将最近使用的物品放在小而快速的区域是最佳选择,因为有一种叫做 temporal locality.你更可能需要再次使用最近用过的软件。比如,Google Drive会高亮你常用的文件以便快速访问。

post

排程

我们大多数人都必须决定如何优先处理待办事项。这通常需要在响应速度(响应速度)和吞吐量(能完成多少工作)之间做出权衡。

关于调度和优先级设定的一个关键点是定义你的目标指标,因为它决定了你想使用的算法 7.最大化响应速度是以牺牲你能完成的工作量为代价:

如果你想尽量减少所有项目的最大延迟 8, Earliest Due Date 算法告诉你从最早截止的项目开始。

如果你想最小化总完成时间,可以 Shortest Processing Time 算法告诉你先做最快的任务。

如果任务重要性不相等,那么给每个任务加权并计算所需的时间权重比,有助于你决定做哪个任务;选择时间权重最高的项目。

实际上,这意味着你应该和经理讨论一下团队如何看待这种权衡,以及他们更希望你采用哪种方法。

排程中还有一个重要概念,那就是 context switching - 每当你需要在任务间切换时。切换上下文是浪费时间,因为它不是真正的工作,但会占用你的时间和精力。

例如,如果你正在写邮件,突然被Slack消息打断,你需要时间既回复邮件,又想起邮件内容。

最糟糕的时候,语境切换变成了激流金属,因为你忙着切换,什么都做不了。避免激流金属的方法包括:

  • 对任务说不,尽管作者也承认我们常常无法做到
  • 工作变得更愚蠢且效率低下。与其思考完成任务的最佳方式,不如直接开始做点什么并完成它

贝叶斯规则与分布

解释贝叶斯定律可能单独写一篇文章,所以我们就把它当作一条帮助你预测某事发生概率的规则 9.作者想强调的是,这取决于你的事件来自的分布。主要有三种分布需要考虑:

  • 幂律:某件事持续的时间越长,我们对它持续增长的时间就越长。例如,如果一家公司已经成长很长时间,我们会预期它会持续增长
  • 正常:早期事件令人惊讶,晚期事件是预期中的。例如,我们会对早逝的人感到惊讶,而晚年去世的人则不会感到惊讶。
  • Erlang:事件从不更令人惊讶或更不惊讶。例如,轮盘的无记忆分布,或者 the coin flips we discussed last week

post

博弈论

我们大多数人可能都听说过博弈论,这是一种思考博弈时最优策略的方法。一些亮点:

  • 如果你比对手高出太多等级,你会认为他们掌握了其实没有的信息,他们就无法理解你想让他们相信的那种想法。换句话说,你不想获得 也 策略要聪明
  • 每款双人游戏至少有一个 Nash Equilibrium, 双方玩家都在为自己选择最优策略
  • 然而,寻找纳什均衡是一个难以解决的问题,这意味着博弈论的实用性存在局限性
  • 这种均衡也可能不是对所有玩家都最好的结果。 It may be optimal for an individual to compete, but optimal for the group to cooperate. 我们可以量化这点为“无政府状态的代价”,衡量合作与竞争之间的差距。
  • 还有一个反直觉的概念,叫做 mechanism design,这表明 情况恶化 每一个结果实际上都可能让所有人受益,因为均衡的转移

除了上述算法外,作者还包括:

  • 当你可能过度拟合你的决策过程以及你可以做些什么时
  • 当现实世界的问题不如理论有趣时该怎么办,以及为什么应该放宽限制
  • 如何思考信息网络以及互联网的运作方式

总体来说,我觉得这本书值得一读,可以全面了解算法在生活中的有趣表现方式。我确实更好地理解了它 之后 不过我学了一些计算机科学,所以要记住这一点。我也希望他们能包含更多实用的例子 10因为当你必须基于不同的假设来处理这些发现时,试图将这些发现应用到生活中可能会很困难。

Footnotes

  1. 教孩子们很容易,告诉他们记住数字和何时带数字,但当尝试在电脑上实现时,却并不明显,参见 full adder logic gate ↩

  2. 你可能会说,等我解释完一切,我也差不多已经说完了 written the entire book ↩

  3. The percentage is 1 divided by e, euler’s number. 随着申请人数增加,概率不会改变,但会随着你获得的不同信息州而变化 ↩

  4. 基地秘书问题假设你不能回头看你放弃的候选人,但有些变体更接近现实生活。 ↩

  5. 如果机器收益的概率随时间变化,则该问题是无法解决的;本质上意味着它无法解决。有些问题是无法解决的。在这种情况下,放松一些约束并接受“足够接近”的解,极大地帮助我们构建问题。 ↩

  6. 或者说,美国人的三月疯狂 ↩

  7. 只有9%的调度问题能够高效解决。 ↩

  8. 也就是说,把所有迟交的项目都拿出来,然后是最多的。这就是你要最小化的指标。 ↩

  9. 参见 here 为了一篇解释贝叶斯的文章。贝叶斯不直观(至少对我来说是这样),这也意味着知道它很重要 ↩

  10. 公平地说,脚注中有大量信息详细说明 ↩

讨论

What did I miss?

欢迎深思熟虑的反驳、补充证据,以及看待问题的不同角度。

正在加载讨论…

想要私下交流吗? 给 Leon 发邮件.