一些有意思的策略与思考
很久以前就知道这本书了,不过看着"算法"两字实在没兴趣。直到某天翻Google Talks, 发现作者的讲座很受欢迎,看了看才发现确实很有意思
放在国内的语境下,这本书叫"心智模型",或model thinker可能好一点
介绍里写 "A fascinating exploration of how insights from computer algorithms can be applied to our everyday lives, helping to solve common decision-making problems and illuminate the workings of the human mind", 重点并不在于algo, 而是生活常见场景中的decision-making、一些有意思的策略(而algo通常认为是机械、重复性或非常技术性的东西)
适合人群
- 大一、大二理工科背景的学生。思辨性强,有意思且很实际(我希望我本科时就读过)
- PM, Data Scientist,因为工作场景类似,需要想各种策略、权衡各类指标,从不同的角度解决问题,读来能有所启发
阅读建议
- 先看Google Talks,https://www.youtube.com/watch?v=OwKj-wgXteo . 因为内容比较抽象,直接读不一定能读进去,听作者讲更快(如果能出系列讲座就好了,会比读书快不少)
- 直接选择感兴趣的一章读,因为各章各自独立(像Overfitting我研究生做了大半年做吐了的自然就不读了...);一边读一边思考,看有什么启发(比了解具体细节更重要)
我感兴趣的部分记录如下
一、Explore/Exploit (第2章)
(1) 问题
吃饭是去熟悉、喜欢的店,还是探索新店?
即新的 (有风险) vs. 老的 (已知最好的), 探索全局最优解 vs. 采用局部最优解
(2) 解决方案
- Gittins index: 假设未来收益成比例下降。好于 lose-shift. 适合比较相近的选择
- Upper Confidence Bound: 即minimize regret,考虑最好的结果,不让自己后悔. 适合比较非常不同的选择
现实中,并不能在确定最优解后就不断的exploit, 因为环境会变化的,始终需要explore
书中提到了adaptive design, ECMO,但对于contexual bandit没给确定的结论
二、Optimal stopping (第1章)
(1) 问题
怎么招聘人、找对象?(给offer早了可能错过了之后更好的,但也有可能前面的人确实更好)
类似ee问题,但有了时间、资源的限制,因为ee后可以换,这个选定后更换成本很高
(2) 解决方案
- 在看过37%的人之后,选择最好的候选人 (但也并不能保证能选到最佳)
- 根据具体条件进行调整,比如
-- 如果有"拒绝", 需考虑拒绝概率。假设50%拒绝,则需在25%时决策,最优率降为25%
-- 如果能找回之前的人,能提高最优率,且能推迟决策时间。假设召回的成功率50%,则在61%时决策,最优率61%
-- 如果有客观条件(比如考试分数),58%最优率
学到最多是让我接受现实,就是即便采用最优的方法,也只有一定可能得到最优结果
三、贝叶斯(第6章)
(1) 问题
怎么估算柏林墙存在的时间?一个人的寿命?一部电影票房?我还要多久才能赢一把游戏?
即根据当前的值推算未来值
(2) 解决方案
贝叶斯
关键在于采用什么样的prior (即先验概率模型) 估算,可简单分成3类
- power-law: 适合无自然尺度、网络效应的现象,也是uninformative的(即结果差别可能很大),比如电影票房. 预测的方式是乘一个比例。比如现在电影票房是1m,那么可能最终票房是1.5倍(结果也就是大者愈大)
- normal: 适合有预期平均、范围的,比如年龄、电影的播放时长。预测基于平均值,大致在这个范围内,如果超过,则会稍微多一点。比如预测6岁小孩的寿命是77,90岁人的寿命是94
- erlang: 介于power-law, normal之间,即未来与过去无关。比如下一次赢牌的概率,只取决于这次牌局的概率,和过去的胜率无关. 预测的方式也是每次预测增加一个固定值(即和历史值无关)
对个人而言,不同的背景、经验会导致用不同的prior决策。比如著名的棉花糖测试,可能只是穷人家的孩子的prior都是大人说话不算数,还不如吃了糖;而家里富有的孩子,家长行事有规矩,因此孩子也乐意遵守规则
四、Scheduling (第5章)
(1) 问题
怎么安排工作任务、优先级,让其有效进展?(时间管理)
本质是一个调度、运筹学问题
(2) 解决方案
取决于要优化什么目标/指标
- 逾期时间: 即要到期的任务先完成.
- 逾期数量: 任务完不成时,放弃消耗最多资源、时间的任务
- 总完成时间: 先做能做完的事情(shortest processing time),也能减小认知负单. 需对事情加权,区分重要性。
影响因素
- 优先级继承:即一些看起来不起眼的小事,可能影响最重要的事,要及早解决
- 场景切换(context switch): 切换任务会有巨大的成本. 解决方案之一是 interrupt colaesing. 即安排时间一次解决许多不重要的小事. 比如一天回复一次邮件; 早会统一更新进度; 安排office hour等
五、排序与缓存(第3-4章)
重点在于识别什么场景适合排序 vs. 搜索
一般的排序采用least recently used即可,即按“最近查看、修改”排序
最后,我最喜欢本书的地方
- 第1、2章是对“How to take risk”很好的思考。不过还是差了些内容
- 设计系统、机制时,考虑减小人的认知负担。比如会议时间安排(search vs. verify),排队、候车方式(告知需等待多久、上次公交车离开的时间,而不是让人时刻查看有空位、车的来临)
以及跟着作者一起思考的过程
比较遗憾的是,这本书居然没讲entropy...