普通视图

发现新文章,点击刷新页面。
昨天以前胡涂说

周刊第14期:罗振宇和《罗辑思维》

作者 hutusi
2025年3月2日 16:06

本文为周刊第14期,前期的周刊参见:周刊系列。距离上一份周刊又过去两年零十个月。感觉每次中断的时长间隔比斐波那契数列扩展速度还要快。本期主要谈谈罗振宇和他的书《罗辑思维》。

罗振宇

中文互联网上有“三罗”,罗永浩,罗翔,罗振宇。相对于前二者,罗振宇可能是巅峰时名气最小的,但是再看现在依然还在折腾的,可能只剩下罗振宇了。罗振宇把自己这种折腾的精神称之为“死磕”,就是认准一件事,数十年、几十年持续去做。也有人认为这是行为艺术,可是如果一个人长期坚持一项没有人做过的事情,那也是很了不起的。当然,罗振宇有团队,有资源。

罗振宇,1973年生,比我大11岁,同为安徽老乡,出身在我老家铜陵的隔壁城市芜湖。2008年,他遭遇了“35岁危机”,被领导穿了小鞋,愤而离职出了央视,开始了自由职业。2012年创办“罗辑思维”。他的第一次死磕,是从2012年12月21日起,每天早上六点半,发一段60秒的语音,一秒不多,一秒不少,坚持了十年,直到2022年结束,其中无一日中断。网上也有人“打假”,说有些天发的是前些天的录音,证明这些录音不是现录,而是提前录好。不过我不太关心这个,坚持十年做下来这件事本身就很有价值。第二次死磕是从2015年12月31日开始,罗振宇发布《时间的朋友》的4小时跨年演讲,并宣称要连办20年,这件事也在进行中。而第三次死磕是从2024年2月开始的《文明之旅》系列节目,这个节目从公元1000年开始讲起,每周一期一个小时的视频,每期讲一年的历史,一直讲到1912年,也就是总计913期节目,将需要花近18年时光。2024年罗振宇51岁,等他讲完《文明之旅》,也快70了。

《罗辑思维:认知篇、历史篇、商业篇、人物篇、人文篇》

罗振宇称自己为“知识的搬运工”,这个形容很贴切。确实,无论是罗振宇本人还是他创办的得到,并不是在致力于创造新知识,而是在整合知识。而《罗辑思维》这套书也是罗振宇搬运知识的集合。虽然是二手知识,但我读下来感觉不错,所以本期周刊就以摘抄形式,将这五本五十万字的书浓缩成一万二千字,我也尽量不再“三次加工”了。如果有那么几句能触发人的思考,就值了。

一、认知篇

起点:认知升级

1、保持头脑的开放性:

确定性的知识越来越少,一切都在飞速演化;真理性的知识也越来越少,互相矛盾也未尝不可。那该怎么办?答案只有一个,就是保持头脑的开放性。

查理·芒格主张的多元思维模型。也就是用最高效率、最低成本,给我们的用户提供尽可能多的看世界的角度。对成人的学习来说,这件事的重要性远远超过提供具体的知识和信息。

2、学会和随机性打交道:

如果一个人声称自己认知能力不错,他得具备两个要件:第一要有科学精神,第二还要学会接受随机性。

3、做一个“斯多葛主义者”:

斯多葛学派最底层的一个思维方式是,总是设想最坏的情形,假设一切已被命运夺走,我该怎么办?我怎样仍然做一个最好的自己?

塞雷卡说了一句很重要的话,这可以说是斯多葛派最重要的心法:“爱我们所爱,但要知道我们所爱的都如朝露。”

诗人里尔克说过一句话:“对待做事,态度应该是我们必须全力以赴,同时又不抱任何希望。不管做什么事,都要把它当作是全世界最重要的一件事,但同时又知道这件事根本无关紧要。”

“斯多葛学派”的其他主张:

  • 控制能控制的,无法控制的要放手。
  • 对抗命运对未来的安排,但接受已成为现实的过去与现在。
  • 克制自己的欲望。
  • 勤于反思,每天都要反思。

4、尊重专业分工:

社会分工,其实就是专业知识分工。你懂一部分,他懂一部分,大家通过市场交换和彼此服务来共享知识。这就需要一个默契,每个人都得服从专业权威。

这个世界上谁是最“愚昧”的人?不是没有知识的人,而是一知半解、有一点知识,足够感染到这些互联网知识病毒,但是又没有足够的知识可以消毒的人。

5、认识“意义”的价值:

我们这代人,有一个很普遍的症状——害怕意义,从心底里排斥意义。

意义这玩意儿,它本身不能用理性来考问。意义的价值,是为我们排除了大量的不确定性,让我们开始行动。

意义的价值,就是设立一个边界,将所有的无限游戏,切割成一个个让我们能行动的有限游戏。

工具:思维模式升级

1、模型化思维:

什么是思考?我见过一个很简洁的描述,思考就是把性状从思考对象身上剥离下来,剥离下来什么呢?是概念。大脑通过概念的组合、推理去理解世界。这个过程就是思考。这个过程的关键,是能把性状从对象身上剥离,抽象成概念。

《战争论》的作者克劳塞维茨讲过一句话:“制定原则并不难,难的是始终坚持原则。”

在计算机的算法思维里,就没有这个问题,所有的原则都必须排序、都必须编码、都必须有高阶低阶的次序、都必须能处理实际出现的所有情况。这才是真正结合了原则性和灵活性。人的思维方式很难做到这一点,也是我们在这个超级复杂时代必须向算法学习的原因。

2、用概念和形象来向外行解释:

如果你去看卡尔·萨根的书和节目,里面有大量类似的精彩表达。他对外行讲话的方法到底是什么呢,为什么有这么神奇的效果?方法有两个:一个是创造概念,另一个是建立形象。

3、同构学习法:

一个领域的方法,可以对应解开另一个领域的问题。从一个领域入手,可以帮我们理解另一个领域的规律,这就叫同构学习法。

奏鸣曲式如果用专业术语来讲,是呈示部、展开部、再现部,或者ABA结构、AAB结构等,记不住。 奏鸣曲其实就好比议论文,是不同的说话方式,比如先写一个论点,或者写两个论点,再写几个论据,接着再来一个反面论证,最后重述主题就结束了。 有时奏鸣曲式先来第一主题,有的奏鸣曲比较大,来个第二主题,这就是呈示部,也就是论点。之后,所谓的展开部,就是论证这几个论点。议论文中还有一种论证方式叫正反论证,就是举反例,奏鸣曲中也有,大调转成小调,把一个光明的旋律变成黑暗的,让你体会一下。 最后议论文要总结点题,奏鸣曲也一样,主题要再现,也就是再现部。

4、处理棘手问题:

我们人生在世遇到的问题有三类:单纯的问题、两难的问题和棘手的问题。

棘手问题没有终极的答案。你永远都别想彻底解决它,它会一直存在。

处理“棘手问题”的一个很有用的心法,那就是组建一个你的“内心董事会”。请注意,这个董事会不是实体的,不是一帮人坐在这里开会,而是组建在你内心里,是需要一点想象力的。说白了就是你一个人的一场思想实验。

两百年前,奥匈帝国的首相梅特涅就说过一句话,政治学最伟大的价值,就在于清晰判断各方的利益。怎么清晰判断?就让他坐到你内心的董事会上嘛。

5、做刺猬还是当狐狸:

著名哲学家以赛亚·柏林说,“刺猬知道一件大事,狐狸知道许多小事”。这里提到的刺猬和狐狸,象征着两种不同类型的人。 知道一件大事的刺猬,它心里只有一个念头,拿着锤子看什么都是钉子,以不变应万变,很亢奋,也很狭隘。要是碰对了,能做很大的事,若是碰错了,就可能造成很大的灾难。 狐狸不一样,它是现实主义者,它知道许多件小事,它心里没有什么宏大叙事,也不急于找到根本答案,兵来将挡,水来土掩,走一步看一步,根据反馈决定下一步,以万变应万变。

当一只现实主义的狐狸,但是在现实主义的世界里,也给理想主义的刺猬留一份尊重,留一个有边界的位置。

6、摆脱故事思维

我们永远只会从弱者的角度来思考问题。故事思维经常让我们落入这种单向思维的认知陷阱中。

强者制定的规则一定不是显规则,也不是潜规则,而是一种软规则。软规则的体现方式通常就是道德,或者是各种舆论化的评价。

如果你真的是草根,你是一个匹夫,你要想逆袭大佬,该怎么办?你唯一下手的办法就是利用大佬制定的规则。

我们每一个人看每一件事情,看每一个强者和弱者,我们都应该摆脱故事思维,说白了就是单向思维。人的一生永远是多向的,他既有成功、有赢,也有道德。在这个多维的人生中你的道德观,只能自己选。

实战:提升个体战斗力

靠谱就是凡事有交代、件件有着落、事事有回音。

1、学会工作:

工作能力的六个台阶:1、靠谱;2、职业化;3、让合作者放心;4、组织能力;5、着眼未来协同资源;6、主动吸引资源(个人品牌)。

2、职业规划:

在做职业规划的时候,要考虑得更加长远。可以像帕瓦罗蒂一样,在一个行业里争做头部,并且好好保护自己的本钱,维持优势;也可以像多明戈那样,提早谋划下一段职业。

无论哪一种策略,归根结底,都需要我们先建立一种新的观念——终身职业观。这才是两位大师的经历给我们这代人的真正启发。

3、沟通方法:

一个会搞关系的人,其实需要的不是所谓的高情商,也不是讨好别人,而是有让别人觉得舒服的能力,更重要的是你的好奇心和跨界学习能力。

孔子拿神灵上天来说事,这是诉求于最高主题;拿道德来说事,这是诉求于最低主题;拿礼仪规范来说事,这是诉求于中间主题。天下所有的说服术,本质上就是要凑齐这三个主题。

如果你只有同理心,你可能会吃亏,可能会丢失目标,可能会在旁观者眼里显得没有魅力。 那有没有什么办法,在保持同理心的同时,还能避免这些问题呢?在《掌控谈话》这本书里,就提出了一个新的词,叫“策略性同理心”。

我们大脑里的一个结构,叫“杏仁核”。杏仁核掌管情绪,杏仁核越活跃,人的情绪就越高涨,人就越不能理性地思考和做事。那怎么对付杏仁核呢?有一个办法,那就是让它去思考一件严肃的事,杏仁核不能思考,一思考立刻就歇菜了。

“策略性同理心”是什么?其实就是在我们一般的同理心上面加上了两样: 第一,不仅要感知对方的情绪,还要把它摊在桌面上说出来,让对方看到并开始思考,让他收起情绪,切换成理性的状态。 第二,不仅要在理性上说服对方,还要在情绪上领导对方。

4、不打无准备之仗:

现在社会的竞争,其实很多时候已经不再表现为实力之间的比拼,而是表现在准备工作的比拼上。准备工作,就是把实力聚起来放在一个点上。

5、应对风险:

真正的风险我们是无法彻底消除的。在风险到来的时候,真正能拯救我们的是自我情绪的控制。

这一篇我们虽然讲的是宇航员,我们绝大多数人是不可能成为宇航员的,但是他们的训练对我们也有启发。 第一,必须认识到,不管准备工作多扎实,真正的风险我们是无法彻底消除的。 第二,在风险到来的时候,真正能拯救我们的是自我情绪的控制。避免因为情绪而去犯低级错误,或许我们就可以赢过大多数的人了。

6、走出舒适区:

从知道信息,到改变自我,有一个要跨越天堑的过程。 舒适区,指的是人习惯性解决问题的方法,跟这个方法舒适不舒适没关系。 胆小不敢表现自己、太爱表现自己;怕和别人产生冲突、太爱和别人产生冲突;喝酒、抽烟、打游戏、拖延症、订计划完不成、想学习又犯懒……所有这些我们看不上的毛病,它们都是我们的舒适区。 有一句话是这么说的:“知道了那么多道理,为什么还是过不好这一生。”

7、改变心智模式:

当别人在用标签谈论事情的时候,我们谈论事实;当别人在用抽象的方法认知外界的时候,我们回到具体。 你不赶紧按照你想的方式去活,那迟早会按照你活的方式去想。

那怎么摆脱这种心智模式呢?怎么做一个不断发展的人呢?答案看起来是明摆着的:多学习、多试探、多创造。

人类有两样认知本能:标签化和抽象化。在原始社区有助于我们理解世界,但在现代社区,它们又会阻碍我们进步。

有一个有趣的现象,身边工作能力强的人往往就是那种凡事就事论事,善于解决具体问题的人,而不是动不动谈方向、谈战略的人。

思维书清单:

1、《比赛中的行为经济学:赛场行为与比赛胜负的奥秘》 托拜厄斯·莫斯科维茨/乔恩·沃特海姆

2、《知识大迁移:移动时代知识的真正价值》 威廉·庞德斯通

3、《专家之死:反智主义的盛行及其影响》 汤姆·尼克尔斯

4、《有限和无限的游戏:一个哲学家眼中的竞技世界》 詹姆斯·卡斯

5、《中年的意义》 大卫·班布里斯

6、《逆转:弱者如何找到优势,反败为胜》 马尔科姆·格拉德威尔

7、《百岁人生:长寿时代的生活和工作》 琳达·格拉顿/安德鲁·斯科特

8、《掌控谈话:解决问题的关键技能》 克里斯·沃斯/塔尔·雷兹

9、《雅尔塔:改变世界格局的八天》 沙希利·浦洛基

10、《宇航员地球生活指南》 克里斯·哈德菲尔德

二、历史篇

1、为什么读历史?

读历史不是为了知道未来,而是为了理解现实,并对未来保持想象力。

2、历史真的靠谱吗?

一件事在每个人嘴里过一遍的时候都要叠加自己的想象。

3、如何看待历史的演化?

《四夷居中国》这本书提醒我们,人类的始祖都是从非洲迁移过来的,是在以十万年计的漫长过程中,逐步征服世界的。在中国这片土地上,只有一个先来后到的问题,没有一个谁是华夏谁是夷狄的问题。中华民族是慢慢融合、慢慢打造出来的。就像书里说的:“四夷便是中国,中国亦是四夷。”

4、一个大国是怎么走向衰弱的?

罗马帝国的衰亡:

今天我们在数千年后,再来回观古罗马史,尤其它衰亡的这一段,我们能得出什么样的启示呢?也就是一个国家想要维持这种安定团结的大一统局面,那有两件事情非做不可。第一件事情,保持流动性,让下层的人看得到盼头,让上层的人感觉到荣誉。第二,在文化上做适当的引导和控制。

卡拉卡拉通过普发公民权的方式,断送了古罗马帝国上下阶层流动性。千万不能小看这个上下阶层的流动性,对于一个大帝国政治的重要作用,它是让上层社会获得荣誉感、下层社会获得奔头的一个重要的黏结剂。在这方面,我们中国人就非常优秀,我们的老祖宗发明了一个最优秀的保持流动性的制度——科举制。

隋文帝杨坚创办这项制度,一直到1905年才废除,中间一千多年,真正考取科举的人并不多,一共才十万进士,但是这项制度绑定的人那可就多了去了,可以说这一千多年间,所有的士大夫,所有会舞文弄墨的人都被科举制绑定在书斋,皓首穷经,都是为了这个前方微末的希望,用生命去攀爬。但只要你考,就意味着你有可能,你有奔头,你就是社会的安定因素。

大航海时代强国西班牙和葡萄牙的衰弱:

和直接获取金银相比,任何生产活动都太艰苦、太漫长了。 有了金银的西班牙人,就有大量的消费需求,但本国生产根本无法满足,怎么办? 两个办法,第一是引进劳工,第二是进口。

于是,在西班牙、葡萄牙滋生出一种被称为“伊比利亚文化”的观念。 这种观念热衷享乐、鄙视生产、歧视劳动者,追求奢华、追求娱乐,从根本上讲是一种反生产的文化形态。前几年,巴西中央银行行长还慨叹说:我们(指巴西人)恐怕很难摆脱伊比利亚文化的影响。

有人快乐地消费,有人辛苦地生产,消费者拥有现在,而生产者拥有未来。

5、从美国历史看大国崛起

第一段:早期拓疆

美国在刚刚建国的时候,只有东部的13个殖民地。然后用一百年左右的时间,连抢带买,大跨步地向西挺进,一直到达太平洋,这个过程史称“西进运动”。到19世纪末的时候,已经没有新的地盘可以开拓了。 有新的地盘,就有新的开发空间,就能不断地引进新移民,就会产生新的经济需求,这个国家就有雄心和希望。

第二段:理解海权,走向世界

要谈一百年前的美国崛起,这就不得不提到一个人,阿尔弗雷德·赛耶·马汉,最近几年,他在中国也很出名,因为他写了著名的《海权论》。

美国会变成一个帝国,但并不是历史上那种典型帝国。像罗马帝国、阿拉伯帝国、蒙古帝国和俄罗斯帝国那样,单纯靠领土扩张形成的帝国,也不是英法等等欧洲国家那种建立在直接控制基础上的殖民帝国,而是一种新型的帝国。 它的基础,是强大的生产能力和贸易能力。它要求商品和影响力能够自由进入世界各地,同时尽可能减少对海外领土的直接控制,以便节约政治和财政成本。 徐弃郁老师在《帝国定型》这本书里用一句话归纳得很精彩,美国是什么样的帝国——“美国作为一个国家是有边界的,作为帝国则是无边界的。”

如果我们换一个角度想问题,中国和一百年前的美国很像,也存在产能过剩的问题。而且我们是全球自由贸易的最大受益者,中国已经替代了美国,成为全球自由贸易的坚定主张者和旗手。

6、战略思维

战术的目标是要赢,而战略是从这个均衡向下一个均衡转化,不解决矛盾,只转化矛盾。

所谓的战术思维,虽然也是运用资源达成目标,这个目标非常简洁、清晰,那就是要赢,最好对方全死全输,我是全活全赢。 可是战略就不一样,它也是运用资源达成目标,但是这个目标保守得很,它先是承认,我生活在一个均衡的格局中,然后我推动这个均衡,向下一个均衡点转化。在转化的过程中,我希望自己在下一个均衡点当中,那个优势稍微大一点点,这叫战略思维。

俾斯麦说,政治的目的不是要从战败的对手身上榨取更多的利益,而是要考虑它在政治上的必要性。你看,这就是战略的过程性思维。

所以什么是人生的战略?我们过去都以为,挣很多钱,我就变得财富自由了。请注意,这是一种战术思维,你永远想靠积聚一种力量来解脱自己的人生,可能此路不通。通的路是什么呢?还是我们刚才给的那个答案,就是从当下的均衡,你努力推动它向下一个均衡去转化,你摆脱了当下的怪圈,财富、力量,所有你追逐的东西才能对你有用,这就叫人生的战略。

7、如何达成共识?

从这两个故事(丘吉尔决策抵抗纳粹、英国光荣革命)里你能看出,历史上只有一种方法是有效的,那就是用坚定的信念影响所有人,如果有影响不了的,那就把达不成共识的人排除出去。

唯一有效的方式,就是严把招聘关,把没有共识的人排斥在公司的外面,这是达成共识最快的方式。全世界排名第一的管理理念,非常简单,就是“No Asshole”,没有混蛋。 对,永远不要低估人性的顽固,也永远不要高估妥协的力量。在大多数情况下,共识是我们展现意志、选择伙伴的最终结果。

8、古人如何统治“天下”?

人类制度创生,往往都是遇到问题解决问题。不能单摆浮搁地看一项制度的合理性,而要历史地看,在生成过程中去看。

今天我们来看一个中国历史上伟大的概念创新,就是天下观。天下观的具体话语表现就是那句“普天之下,莫非王土”。

“天下”这个观念,是由周朝人发明的。王国维先生说过一句话:“中国政治与文化之变革,莫剧于殷周之际”。

在商朝的时候,当时成熟的政治概念是“天命”,天命降到了哪个部族的头上,哪个部族就是天下之主。所以,商朝的统治者唯一要讨好的对象,就是上天。怎么讨好?祭祀。怎么祭祀?用活人。

周人说,我们这次革命成功,“天命”不是降到周人头上的,而是降到周王头上的。 这一字之差,啥意思呢?就是我是天下共主,不是奴役你们的人,而是普世主义的政权,是要给你们所有人主持正义的。

周人搞出了一个“天下体系”,主要是三个方面:分封制度、礼乐制度和德治原则。

“天下体系”把中国变成了一个有精神内核的文明旋涡,不断地把周边文明给卷进来。所以,不管怎么争斗,大家争斗的目标不仅是土地和人民,最重要的还有这个旋涡的主导权,和这个精神内核的代言人的地位。

有了这个“正统”观念,中国也因此形成了一种独特的文化,就是后代王朝要为前朝撰写史书。虽然他们可能在战场上厮杀得你死我活、势不两立,但新王朝一旦地位稳固,成了“新主角”,就有责任把周人开创的故事继续讲下去,让历史大旋涡继续旋转。新王朝和前朝在历史上成了“一家人”,大家之间是先后继承的关系。

“天下大势,分久必合,合久必分”,分,终归是一时;合,终归是大势。

9、社会福利是怎么回事?

如果社会福利是一项权利,就必须有一个客观标准;如果是一项责任,当然就要优先选取那些最该帮、值得帮的对象。

一直到19世纪后期,德国首相俾斯麦才提出建立对大众的社会保障制度。尔后又经过一系列的发展,1942年英国发布著名的《贝弗里奇报告》,这才提出全面建设福利社会。 这当然是一件好事,但是这套制度运行才几十年,就已经产生了众多恶果。民众看来,税收最好是只减不增,福利最好是只增不减。社会负担越来越重,有的国家经济运行已经出现困难。

(西方和中国的福利制度)最根本的区别,是观念上的。 在西方的福利制度中,接受福利是公民的权利。美国罗斯福总统提出的“四大自由”:言论自由、信仰自由、免于匮乏的自由和免于恐惧的自由。 其中“免于匮乏的自由”,就是把享受福利保障列为公民的基本人权。

中国人没人认为接受来自国家或者他人的救济、帮助,是自己的“权利”。中国人的观念是反过来的,社会福利是国家对民众的“责任”。

(道德教化)这种传统,让中国文明保有一种强大的反堕落能力。

过去总有人讲,制度比人重要。从更长的历史尺度上来看,制度的确比人重要,但是对人的不断提升的精神传统,比具体的制度更重要。

10、税收对国家的影响?

一个系统对人的态度,对制度建设的诚意,实际上在它决定怎么赚钱的那一刻,就已经定下来了。 收入来源会反向塑造组织的行为方式。

就拿公司来说,公司也是一种组织,它也是被收入方式反向塑造的。 比如,靠牌照挣钱的公司,最重要的是保住那个牌照,至于人就无足轻重了。不管它怎么高喊重视人才,你都不要信。一个想发展的人,要离这种公司远远的。

税收,不只是单向的敛财过程,它还是整个社会反向塑造政府的过程和机会。

11、首都怎么定?

一个国家的首都,一般都处在这个国家的重心位置。这个重心,不是说地图那个几何图形的重心,而是这个国家的资源、人口、利益版图的重心。

12、官僚系统

官僚主义,其实是现代社会的产物。现代社会的本质,是陌生人之间的大规模协作,来完成形形色色的任务。

阿伦特对这种平庸之恶做了一个本质性的判断——不能思考。 那解药呢?也很简单,就是每一个人重新恢复思考。 什么叫重新恢复思考?就是每个人都能超越自己眼下的目标、手头的工作,在更高的维度上找到这件事的意义。这个事不仅在政治中存在,在日常工作中也能看到。

一方面,我们在享受社会大分工带来的繁荣;另一方面,我们又要和官僚体系、和平庸之恶、和分工带来的不能思考,去搏斗。

历史书清单:

1、《历史的教训》 威尔·杜兰特

2、《四夷居中国:东亚大陆人类简史》 张经纬

3、《罗马人的故事》 盐野七生

4、《集装箱改变世界》 马克·莱文森

5、《帝国定型:美国的1890-1900》 徐弃郁

6、《海权论:海权对历史的影响》 阿尔弗雷德·赛耶·马汉

7、《战略:一部历史》 劳伦斯·弗里德曼

8、《中国财政史十六讲:基于财政政治学的历史重撰》 刘守刚

9、《枢纽:3000年的中国》 施展

10、《艾希曼在耶路撒冷:一份关于平庸的恶的报告》 汉娜·阿伦特

三、商业篇

1、商业的魅力和可能性

天文帮你扩展人生的空间坐标系,历史帮你扩展人生的时间坐标系。一个人建立了这样的时空感之后,至少心胸会大一点。

商业是一大盘棋,这盘棋,可以大到根本就没有边界。马斯克让我们看到,一个白手起家的人,可以凭借自己的智慧和努力,把这盘棋下到一个什么样的境界。

贝佐斯每年都会给股东写一封信,他在不断地告诉世人:20年来我们一直在反复强调的、一直在做的事情,和1997年的时候没有任何不同。……所以,商业是什么?不是赚钱,不是交易,甚至也不只是梦想,它是汇聚所有人共识的手段。

商业的魅力就在这里,你在商业领域里取得的成就,不论是自己创业,还是加入一家创业公司,本质上都是你认知边界的外化。它让你的内在能力被呈现、被检验,然后有可能被优化升级。说句鸡汤:一切人类活动,都有可能被一个注重自我提升的人变成一场修行。而所有的修行都需要外在的蒲团。商业,就是这个时代最有趣的蒲团之一。

商业最大的变化,不是对手,也不是环境,而是经常会出现的全新的“超级变量”。

2、知名企业的成功之道

向奈飞学习保持变化:今天的商业环境越来越复杂。对于很多企业来说,企业文化存在的目的变了,目的不是为了让企业不变,而是为了能不断地保持变化,还能不散架,保持战斗力。

向宜家学习成本控制:设计风格流行,不是设计本身推动的,而是社会运行的结果。那这个运行最基本的规律是什么?不是求新求变,恰恰是回到事情的本来面目。

向苹果学习产品策略:这几年,你会不断地听到一个说法,互联网的流量红利结束了。这意味着粗放的征服时代结束了。原来流动的牛仔要变成定居的市民,原来的“征服者”要变成“治理者”。

向迪士尼学习体验管理:如果想像苹果和迪士尼一样,经营一种体验产业,就必须意识到,不管事业做得有多大,手里都是一个气球,气球可以吹得很大,但是只要有一个针眼都会破的,都会灰飞烟灭。

有一个说法是,人类正在从农耕经济向工业经济、从工业经济向服务经济、从一般的服务经济向体验经济演化。也就是说,未来没有什么不是体验经济。

向丰田学习生产管理:人得到的控制感越多,安全感就越强,做事儿的积极性也就越高。丰田的“流水线”,严格地说,这不是“线”,而是个“生产岛”。任何一个点有事,马上有八方支援。

向YouTube学习用户行为控制:YouTube和广告商更好地控制了用户行为,实现了双赢,而用户感受到的“爽”,只是一个附带的结果而已。

3、产品思维

人们为恐惧买单的热情远远高于为痛快买单的热情。人类的进步,其实从来都是由恐惧来驱动的。

两种类型的产品:让人“爽”的和让人“恐惧”的。……哪种产品更好?即哪种产品更有发展前景?我认为:针对“恐惧”的生意更有发展前景。……“恐惧”这个词不好听,甚至会引起反感。但是我们理性地再看一眼这个词,人类的进步,其实从来都是由它来驱动的。

4、品牌

品牌是企业唯一能够穿越时间的资产,是一切企业活动的目的本身。

做品牌是为了进入人类符号系统的主航道,好不容易找到了一个进入主航道的接入点,你拼命凿开那个接入点就行了。所谓水滴石穿,靠的就是重复的力量。

5、竞争力

巨无霸的软肋在哪里?既不是它的优势,也不是它的劣势,而是它的迁移成本。

我们生活在一个人的价值得到复兴的时代。套用那句话,人是什么?人既是一切努力的目的,也是衡量努力成果的手段。

6、管理

奈飞就是典型的西方好公司,一把扯掉了公司温情脉脉的面纱。它旗帜鲜明地说了一句话:我们只招成年人。

在现实中有限责任公司的制度下,法律上认可的企业老板,是抽象的“董事会”,其实里面大多数的股东都是分分钟可以套现走人的。那这家企业有没有老板?该负责的没有权力,有权力的并不负责,这就是现代公司治理的核心难题。

警惕目标退化:KPI是一种目标退化,它既在提高公司的效率,也在导致公司迷失。玩游戏也是一种目标退化,游戏设计者让玩家拼命攒游戏里的金币,交游戏里的朋友,争游戏里的胜负,而忘了现实世界的金钱、朋友和竞争。

比如《经度》这本书,说的是18世纪英国的钟表匠约翰·哈里森发明航海钟的故事。约翰·哈里森。他用了5年时间做出了第一台航海钟,被他命名为H1,可以很好地测量出经度。可是这H1太大了,得改小,这一改就改了4年,等他做出了第二个版本的航海钟H2,他仍然不满意,要求再给他时间做出一台更好的。这时候,他已经有点抓不住自己的真正目标了。其实H2已经完全足够用了,整个世界都在期待这个重大发明能够尽快进入市场,但是哈里森就是不紧不慢。他沉醉在自己的工匠精神里面,等他拿出第三个版本的航海钟的时候,他说:“我想我可以斗胆地说,世界上没有哪一个机械的或数学的东西,在构造上比我这块表或经度时计更漂亮或精美了。”花了多少年做这第三个版本?整整19年。

商业书清单:

1、《给忙碌者的天体物理学》 尼尔·德格拉斯·泰森

2、《奈飞文化手册》 帕蒂·麦考德

3、《特立独行的企鹅:艾伦·莱恩与他的时代》 杰里米·刘易斯

4、《混乱:如何成为失控时代的掌控者》 蒂姆·哈福德

5、《幸运签饼纪事:中餐世界历险记》 詹妮弗·李

6、《格调:社会等级与生活品味》 保罗·福赛尔

7、《教堂经济学:宗教史上的竞争策略》 赖建诚/苏鹏元

8、《灰犀牛:如何应对大概率危机》 米歇尔·沃克

9、《经度:一个孤独的天才解决他所处时代最大难题的真实故事》 达娃·索贝尔

10、《未来的公司》 岩井克人

四、人物篇

1、威尔逊:一个理想主义者的悲剧

理想主义的感召力非常强大,人人仰望,但是也让每一个人的预期超过了他的现实力量。 理想主义总是有一种自我完美的倾向,这就会导致它必须忽略一部分现实。

威尔逊是一个理想主义者。理想主义者在远处的人看起来,简直就是照亮黑暗世界的灯塔。但是在身边人看起来,难免固执,不切实际。

一个看似绝对正确的原则,往往具有很大的道德感召力,很多人走到这里,就已经非常陶醉了。但是,距离这些原则变成现实,还有太远的距离。

理想主义点燃了希望,获得了掌声,开局很好,但是它也让各方面的期望值过高,现实世界的矛盾就更难弥合。

2、 林肯:政客与政治家

政治家,要有坚定的理想,本身就是灯塔,就是旗帜。 政客,在权力的网络中,必须要拼尽全力获得其他人的支持。他小心翼翼地走在人们的前面,人们慢他就慢,人们快他就快。

传统的政治家和政客有什么区别?在英文中,这是两个词,政治家是Statesman,而政客是Politician。Politician在英文当中有一点点贬义,没有中文中贬义含义那么多,但它也是贬义。

3、图灵:被庸众迫害的天才

庸众的迫害,基于一种廉价而苍白的正义感和道德感,你的活法跟我不一样,就要从谩骂升级到迫害。 我们应该容忍每一个人,按照自己喜欢的方式去生活,按照自己习惯的方式去创新。

4、麦克阿瑟:“网红”将军

过去我们通过舆论了解世界,现在舆论在情绪的扭曲下,恰恰需要警惕。 要用批判性思考的方式,来跳出自己的思维圈子,来了解真实的世界。

麦克阿瑟在美国国会进行了一场在历史上非常著名的演讲,这次演讲留下了一个金句,叫“老兵不死,他们只是凋零”。

从麦克阿瑟的故事当中我们也能得到一句提醒,你看到的事实也许真的就是事实,但是又怎么样?你可能是一只刺猬,虽然看到了一件大事,但你没有狐狸的视野,看不到里面更多的事情。

5、亚历克斯·弗格森:始终如一的领导力

曼联的吸引力就在于它在足球这个充满不确定性的领域里,向球迷交付了一种确定性。

领导力是什么?不是权力,不是能力,不是搞定人,不是讨好人。本质上,谁能在大多数人都很迷茫的时候,握有一张清晰的地图,坚定地按照地图前进,谁就拥有强大的领导力。

6、项羽:神经质的性情少年

理想主义走到极端之后,容易犯一个毛病,就是不大关注其他人的利益。

7、嘉靖:知分寸的权谋高手

嘉靖这个人是利用文字、精神、心理因素,去驾驭权力的大家。

嘉靖皇帝作为一个权术家的第一个优势,就是有超常的政治敏感,他还有第二个优势,就是知道分寸,什么东西该争,什么东西不该争,他争的都是那些一旦踏进这个圈套,一辈子无法摆脱的东西,他就一定要争。如果仅仅是临时性的一些说法上的问题,他觉得就可以妥协。

权术对开放时代的自由人,其实是无法施展的。

8、朱高煦:恶之花结成的恶之果

正是因为在明朝发生了这么一件事情(藩王造反),最后就在它的机体上演化出了一个巨大的毒瘤,而且根本无法割除。从某种意义上讲,最后明朝就是死在这件事情上面。

明代皇帝防范叔叔,后来就成为他们的一道政治使命。……藩王们没事干,只好去生孩子。那个制度就在激励你生孩子,因为国家给俸禄,而且什么都不让你干,因为你干任何职业都可能脱出这一套管束系统,只好花钱把你养起来。……据晚明的徐光启统计,明代的藩王数量,每隔30年就翻一番。有一些数学常识的人都知道,每隔30年就翻一番,这两百多年是一个什么样的数量?

9、崇祯:起早贪黑辛辛苦苦走上破家亡国的不归之路

权力是一种临时性的平衡态,权力是君臣之间、上下级之间达成的一种共识。

(崇祯的个人性格:)首先,刻薄寡恩,就是干活行,干活之后给点好处,这不行。……第二个毛病,就是溜肩膀,他作为最高统治者、最高负责人,不担责任,所有的责任都是下面的。什么叫负责人?责任你得担啊。……崇祯皇帝还有一个性格上的重大缺陷,就是有的时候非常感性。

人物传记清单:

1、《缔造和平:1919巴黎和会及其开始的战后世界》 玛格丽特·麦克米伦

2、《罗斯福:狮子与狐狸》 詹姆斯·麦格雷戈·伯恩斯

3、《艾伦·图灵传:如谜的解谜者》 安德鲁·霍奇斯

4、《光荣与梦想:1932-1972年美国社会实录》 威廉·曼彻斯特

5、《天皇的皇上有五颗星:麦克阿瑟如何改造日本》 俞天任

6、《领导力:曼联功勋教练弗格森38年管理心得》 亚历克斯·弗格森/迈克尔·莫里茨

7、《龙床:明六帝纪》 李洁非

8、《万历十五年》 黄仁宇

9、《大明亡国史——崇祯皇帝传》 苗棣

10、《洪业:清朝开国史》 魏斐德

五、人文篇

1、文学

不同的成就,不同道路,领受不同奖赏。 要学会把创造力变成产品,把奇思妙想纳入到社会的主流轨道上来,成为社会结构的一部分。

经典文学为什么“不好看”?

经典之所以成为经典,是因为它们在人类原有的语言表达、叙事方式、问题背景、时代精神方面做出了拓展,让人类的文学世界比过去更广阔了,所以才会被记录进文学史。

因为它的任务压根就不是逢迎那个时代的读者,它的任务是要从原有的、习惯的、熟悉的文学表达中走出来,来到一个更广阔但是很陌生的新世界。更直白地说,就是让读者从原来的舒适状态中走出来,给他找点别扭,进入很可能不再舒适的新世界。

网络小说:让人上瘾的三大公式

从人的大脑机制来看,阅读是一件很难的事情。因为人类世界出现文字的时间太短了,才几千年,我们还没有进化出适应阅读的大脑硬件。所以想要获得阅读能力,是要靠大剂量高强度的后天训练才可以的。

黄金三章是什么套路呢?我简单总结了一下,至少有以下三点:第一,在开篇一定要先交代小说的终极目标是什么。……第二个套路,还需要清晰的成长路径,所以还需要交待出这个小说世界里的能力进阶体系。……黄金三章真正的特殊之处在于它的第三点,那就是一定要有“金手指”。金手指这个词,最开始是来自于游戏圈的,是游戏作弊器的意思。

网络小说之所以能带来那么巨大的阅读快感,最核心的三个武器:第一,明确的目的;第二,清晰的台阶;第三,作弊的工具。

阅读:从经典到经验

最近偶然读到刘瑜的一篇文章,叫《从经典到经验》,很具有颠覆性,把我心里早就有但是不会说、也不太敢说的话说了出来。刘瑜讲了一句惊世骇俗的话:“世上本没有经典,装得人多了,也就有了经典。”

为什么有的经典,其实也没有那么好?大概有两个原因。 第一个原因是,时代不同了。……比如,如果你想学习经典物理学,直接读牛顿当年的著作还不如读一本中学物理教科书来的精确、简洁和易懂。……还有一个原因,就是方法的进步。

读不读经典,这是外界对你的评价。有没有搞清楚真正好奇的问题,那才是你自己的收获。

“阅读如此美好,任何功利心、虚荣心的杂质都是对它的玷污。”

故事是最符合人类心智的沟通方法

尤瓦尔·赫拉利的《今日简史》,引起过很多关注。在尤瓦尔·赫拉利的思想当中,有一个很根本的认知:人类文明的基础是啥?他的回答是:我们这个物种的虚构能力,说白了就是讲故事的能力。宗教是故事、民族是故事、商业是故事、公司是故事,有关人类文明的一切,底层都是故事。

2、诗词

人性不变,我们心灵中那些柔软的、容易被触动的地方就不会变。

一首诗能达到什么样的境界

“月落乌啼霜满天”,这是暗;“江枫渔火对愁眠”,这是明。“月落乌啼霜满天”,这是动;“江枫渔火对愁眠”,这是静。这个张力已经非常足。但是还不止于此。

读诗,千万别和诗人较劲。诗人和我们不见得在一个世界里。 当你在挑他的破绽的时候,他根本没空搭理你,他在创造他自己的世界。

俗人怎么成圣?

看了章敬平这本《欧阳修传》,我才明白了,欧阳修之所以有那么高的历史地位,是因为他为中国文化创造性地明确了三个原则,那就是:正统理论、忠君思想、名节观念。

欧阳修的一生,其实给我们示范了一条世俗的人也可以登上人生高峰的道路。简单说就是四条:第一,精准地判断出时代的问题;第二,找到解决这个问题的潜在共识;第三,尝试把这个共识清晰地表达出来;第四,坚持这个共识,把它变成你判断一切事情的清晰原则。 历史从来都不会辜负这样的判断者、表达者和坚持者。

3、语言

名字为什么很重要?

只有给对方命名,叫出对方的名字,才能把它从混沌的外部世界分割开,单独召唤到我们面前,它才能被我们认识。

就是汉语和英语里对毒品的叫法不同。汉语里,毒品被称为“毒”,毒药的毒,一听就给人这东西有害、要远离的感觉;而英语里,毒品的叫法是drug,药品,单纯的中性词,没有特别的暗示。同样的东西,名字不同、叫法不一样,给人的感觉就不同,就会影响人们对它的态度。

全世界能用同一种语言团结起来吗?

任何团结,都必须从区分里外、亲疏,甚至是敌我开始。排斥外界,不是我们团结之后的结果,而是为了达成内部团结必须付出的代价。

如果你发明了一个试图团结所有人的工具,无论它是世界语还是互联网,假如它真的好用的话,你能期待的最好结果也就是团结了一部分人,排斥了另外一部分人。它确实给这个世界多修了几条路,但挖出来的土又给这个世界多打了几堵墙。这几乎是所有沟通工具的共同命运。

4、艺术

真正产生美的,不是物理上的距离,而是和你实用性的距离。

酒店的卫生纸为什么要折三角?

设计的根本,是设计者和使用者之间的沟通。你要把自己想表达的一切——这件东西是做什么的,怎么操作,都传达给用户。

设计的本质,其实不是创意,而是沟通。它是一门设计者和使用者之间,通过产品实现无声沟通的学问。

再比如说,我们进酒店客房,马桶边的卫生纸一般要折成一个三角形的头儿,目的就是在没有说明书和服务员的情况下,告诉客人,这个房间是打扫整理过的,卫生间没有人使用过。 这就是设计的语言。

(怎么沟通?)《设计心理学》里说沟通的要点有四条。第一条,叫示能。顾名思义,就是展示功能,别人一看到你的设计,就能马上反应过来——它是啥?怎么用?沟通的第二个要点,就是约束。也就是我不想让你做的事情,你根本就做不到。设计沟通第三个要点,叫映射。也就是产品设计要映射出我们约定俗成的习惯,把现实生活中的经验模拟到一个虚拟的世界里。沟通的第四个要点,叫反馈。也就是用户的每一个操作,都要第一时间得到一个清晰的反馈信号。说白了,事事有回音,你得靠谱。

5、社会百态

我们要警惕一切人类对自己行为的解释。

任何物种活下来可能都得是三个因素俱全:会适应、能等待和运气好。

什么是“瘾”?

具体的瘾可以戒断,但是这个空白你无法根除。(或者:如果要戒掉某种“瘾”,那就像个填补空白的替代解决方案。)

游戏是什么?

游戏不仅是一群人沉迷其中的玩乐,游戏会成为我们新的生存方式。这不是什么黑暗的前途,用得好,它将是人类重返自己精神家园的途径。

未来时代,可能一切都是“游戏”。

人文书清单:

1、《天才的编辑:麦克斯·铂金斯与一个文学时代》 A·司各特·伯格

2、《谈美》 朱光潜

3、《设计心理学》 唐纳德·A·诺曼

4、《艺术品如何定价:价格在当代艺术市场中的象征意义》 奥拉夫·维尔苏斯

5、《人类“吸猫”小史:家猫如何驯化人类并统治世界》 艾比盖尔·塔克

6、《社交天性:人类社交的三大驱动力》 马修·利伯曼

7、《美丽的标价:模特行业的规则》 阿什利·米尔斯

8、《莫扎特的成败:社会学视野下的音乐天才》 诺贝特·艾利亚斯

9、《咖啡瘾史:一场穿越800年的咖啡冒险》 斯图尔德·李·艾伦

10、《游戏改变世界:游戏化如何让现实变得更美好》 简·麦格尼格尔


我学习得越多,点亮的灯就越多,最后,我要照亮的是我自己的道路。

—— 罗振宇

上海周末骑行:从浦东到外白渡桥

作者 hutusi
2022年6月6日 23:55

上海解封后,端午放假第一天,我带着七岁的儿子大卫早早起来去骑行。

我们从张杨路杨家渡经过陆家嘴,沿着浦东滨江道一直骑到杨浦大桥,来到最滨江东岸线段的北墙。然后在那里的歇浦路渡口坐轮渡来到浦西杨浦,抵达宁国路渡口。我们想找个公共厕所,歇浦路渡口的公共厕所被锁了,而宁国路渡口的公厕门开着,但门上写着几个大字:“此公厕出现过阳性”。我们只好继续骑行,来到虹口,到了虹口来福士。

坐公交、搭乘轮渡都需要扫场所码,开放的商场也需要场所码。商场内人很少,且餐饮店都不提供堂食。我们找到一家「山海茶点」,网上评价不错。他家的特色是夹肉馅的面包,我买了招牌「惠灵顿牛排酥皮包」,酥皮面包很脆,里面两大块牛肉,而且价格十分便宜,只要29元。大卫买了喜欢的热狗面包。我们打包出来在商场外的台阶上吃,一路骑行的劳累和饥饿一扫而光。这情景让我想起了2019年我们去伦敦玩,妻子感冒在酒店里睡觉休息,我跟大卫坐地铁去游玩。伦敦下着小雨,我们从西敏寺一直走到特拉法加广场,湿冷的天让我们走的又累又饿,在广场旁看到一家面包店,买了夹肉馅的面包,吃完后觉得是在英国吃到过的最美味的食物了。现在回头想想,2019年及之前的年份已是不可再回,那个自在的世界也不可再得。

补充完能量,我们继续向外滩方向骑行。路过联合国亚太经社会旧址(黄浦大楼),有些游人在门口拍照留念。联合国亚太经社会旧址在黄浦路106号,1947年联合国在这里成立「亚洲和远东经济委员会」,1949年迁至泰国曼谷,后改名为「亚洲及太平洋经济社会委员会」,简称「亚太经社会」。

黄浦大楼

顺着黄浦路拐个小弯,便到了「中国证券博物馆」,这里的前身是「礼查饭店」和「浦江饭店」。1846年,当时上海开埠刚三年,苏格兰商人礼查(Peter Felix Richards)在英租界金陵东路外滩附近兴建了一座以他名字命名的旅馆,名为Richard’s Hotel and Restaurant(礼查饭店)。这是上海最早的一所现代化旅馆。1856年,苏州河上外白渡桥的前身「韦尔斯桥」建成,礼查看好此处的发展前景,便在苏州河北侧购买荒地建造楼房,并将礼查饭店迁移至此。1959年改名为「浦江饭店」。1990年「上海证券交易所」在底层大厅挂牌成立,2018年饭店结业,改为「中国证券博物馆」。礼查饭店接待过不少名人,如美国总统格兰特、罗素、爱因斯坦、卓别林、斯诺。1927年,周恩来夫妇曾在此避难过一段时间,据邓颖超回忆,当时不能出门,在饭店里足足住了两个多月,直到地下党将他们接走。与「中国证券博物馆」隔着马路的是「上海大厦」,上海大厦原名「百老汇大厦」,得名于所在路段「百老汇路」,即今天的「大名路」。

北苏州河另一边是外白渡桥,不过骑行车不能过桥,我们只得继续向西,从乍浦路桥绕过。经过虎丘路,就到了南京东路和外滩了。我们找个地方停自行车,走到外滩的观景台,人不少,但相比以往少多了。看着浦江对岸,既熟悉又陌生。

外滩

上海已经lockdown两个多月,我足不出小区有七十五天。每个人的感觉都不一样,这跟每个人的情况和忍受力都有关。我们虽然生活有些不方便,但由于还能团购到生活物资,也没有去医院等刚性需求,因此没有遇到太大的问题。只是在家里待的时间长了,难免会有些焦虑。这种焦虑来自于不确定性,不知道什么时候可以解封。另外,则是源于从早到晚的工作,工作和生活搅在了一起,感觉花在工作上的时间不少,但工作效率不高。也许是我还没有适应这种远程工作。而等到解封时,面对将要正常化的工作和生活,又有些手足无措了。

居家期间少了通勤的时间消耗,周末也不会外出,因此多的时间我都用来看书,看了不少书。有哲学史、有杂文、有传记,最近看的一本比尔·波特的《禅的行囊》印象深刻,以后我会专门写写这本书。「读万卷书,行万里路」这是我在疫情居家期间读书中感悟最深刻的一句话,我甚至会将它作为以后的生活目标去追寻。所以,我会先从居住的城市开始,通过书本来阅读它,通过脚步来探索它;我也会在博客写写这些所见所闻所感,记录下这些人生路上的风景。

我看《哪吒》

作者 hutusi
2025年2月23日 19:05

Why Write

《哪吒之魔童闹海》海报

多伦多大学有位心理学教授叫乔丹·彼得森,以前经常在YouTube上发布讲座视频,受到很多网友的好评,人称“龙虾教授”。为什么叫他“龙虾教授”呢?因为他的心理学思想中有一个著名的“龙虾理论”,而这个理论也是他的书《人生十二法则》的第一法则:获胜的龙虾从不低头,笔直站立,昂首挺胸。据研究发现,龙虾在每一次打架胜利后,血清素都会升高一些,而血清素浓度越高,打架就越容易胜利。彼得森将龙虾的这种特质延伸到人类身上,这就是马太效应,就是社会达尔文主义。

乔丹·彼得森不但喜欢在书和演讲中以动物来比喻,更喜欢在神话中找隐喻,这种做法以前的弗洛伊德和荣格也做过,所以在他们的理论中分别有“俄狄浦斯情结”和“厄勒克特拉情节”。比如俄狄浦斯就出自希腊神话,被索福克勒斯据此创作过悲剧。乔丹·彼得森说,神话不只是简单的故事,而是塑造人类知觉的“原型”。也就是说,神话是一种集体心理的隐喻。在古代,无论中外,父亲都是绝对的权威,可以理解“俄狄浦斯悲剧”是一出反抗父权的悲剧。在咱们的历史上,民间也流传着许多神话,而且也有一则与俄狄浦斯王相近的神话,那就是哪吒。

哪吒,原本是佛教中的人物,后来在民间传说中演变,变成道教中的角色,在《西游记》和《封神演义》中故事成型。哪吒的故事相信很多人都耳熟能详了,也被拍成过多种影视作品,之前最有名的一部是1979年上海美术电影制片厂拍摄的动画片《哪吒闹海》,是很多80后人童年记忆的经典。我还隐约记得小时候看《哪吒闹海》时候的心情,看到哪吒自杀时那段意难平。《哪吒闹海》的情节基本上与小说中一致,哪吒被逼自杀,而逼迫他的就是自己的亲身父亲。哪吒在自杀前喊出那句台词:“爹爹,你的骨肉,我还给你,我不连累你。”也就是说,既然父权关系可以对自己审判,那么切割了这层关系,就不必再受这层约束了。在长达两年多年的封建社会,父权或者说以父权为代表的大家长制度的族权,是绝对的权力。毛泽东曾在《湖南农民运动考察报告》中写道:“这四种权力——政权、族权、神权、夫权,代表了全部封建宗法的思想和制度,是束缚中国人民特别是农民的四条极大绳索。”哪吒这个神话,出现在一年多年前的中国,不得不说是极具革命性思想的。

而今年春节档期根据哪吒神话改编的动画电影《哪吒之魔童闹海》票房突破了百亿元大关,成为首部进入全球影史票房排行榜前十的中国电影。最新数据是超过了135亿,目前排名第八。我前几天把第一部《哪吒之魔童降世》补看了,然后在今天才去影院看了第二部。本来我对商业电影不太感兴趣,但这么个热点话题,加上被领导点名,于是赶在档期结束前赶紧补补课。本文不是要分析《哪吒》(如无特殊说明,下文中《哪吒》指的是《哪吒之魔童降世》)为什么能破百亿,也不是要点评电影动画,而是想说说《哪吒》对原始神话故事的改编。

在《哪吒》中,哪吒和他父亲的对抗关系变成了亲子关系,李靖明知哪吒是魔,也没有痛下杀手,并且在哪吒陷入危险和困难时,给予支持和鼓励。有网友对改编不满,说“对父权的反抗变成了父慈子孝”,我觉得不然。我认为《哪吒》改编得很好,倒不是因为现在做父亲了,而是我觉得当前的社会主要问题已经不是父权引发的矛盾,虽然在某些家庭仍然存在。当前社会的主要问题是什么,我说不好,但与其讨论“反抗父权”,不如谈“个人实现”。而《哪吒》改编后讲的也正是这个。

电影中,阐教仙人为了维护仙族的利益,不惜各种手段对妖族进行打压。但躺在功劳簿上的神仙们显然是承平已久,哪里是那些积极修炼的妖怪的对手。可是讽刺的是,出身豹妖的申公豹再怎么努力,即使能力已超过自己的师兄,也因为出身而不得位列十二金仙。哪吒那句“我命由我不由天”,就是对这种体制化的反抗。网友讨论说这多像我们的社会,申公豹就是“小镇做题家”,再怎么努力,在这个阶层固化的年代也无能为力。我认为不尽然,当今社会相对前几十年发展放缓了些,但相对于几千年的人类文明社会来说,这仍是一个开放性的充满无限可能的社会。在传统社会中,由于生产力的限制,总体资源是有限的,整个社会是一种零和博弈的状态。但现代社会里,新技术带来新的生产力,这是一个无限游戏的社会。

《哪吒》票房登顶后,导演饺子的故事也被挖了出来,他大学毕业后,放弃医学专业,蜗居在家里,靠着母亲微薄的退休工资的接济,从事最热爱的动画创作,直到创作的动画短片获奖,才有机会创作动画长篇。而他也仅靠着《哪吒》两部电影就登顶了中国票房最高的导演。不得不说,饺子本人就是个《哪吒》式的励志故事,饺子是个理想主义者,只有真正的理想主义者能赚大钱。

当然不是每个坚持努力的人都能够赚大钱,也不是每个人都能够获得俗世的成功。我们每个人在儿时都有过梦想,但我们在社会中一点一点地被现实磨平了棱角,褪去了激情,不再谈梦想。可是那些梦想的种子仍扎根在我们内心深处,这也是为什么我们看到哪吒和敖丙携手迈向远方时被感动的原因,我们是被自己内心深处的梦想所感动。但当我们走出影院大门,回到现实的蝇营狗苟,就再次把梦想的大门锁住,直到下一次看励志电影时再度开启。面对现实的“实然”,梦想的“应然”被尘封,这是我们很多人痛苦的根源。我在博客《心猿意马》中曾介绍过解决“实然”和“应然”关系的哲学方法,那就是“直面永远得不到的想要的世界的现实,同时拒绝放弃心中想要的世界”,从某种意义上说与《哪吒》是呼应的。

影院里上座爆满,电影结束后,观众没有一人起身,看完片尾彩蛋和演职员表,直到屏幕关闭,灯光亮起,观众们才不舍站起身离开,生怕错过任何一个细节。出了影厅,我留意到一处不被人注意的细节,影厅门口墙上灯光投射着一行小字,那是美国电影《熔炉》(不是韩国那部)的台词:

“我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。”

为什么写作?

作者 hutusi
2025年2月16日 16:00

Why Write

题图由DALL·E生成,Prompt: 生成一张主题为“为什么写作”的图片

除夕夜,我一边看电影《好东西》,一边在调整个人博客网站主题样式。上一次重构还是在2020年,那时我听从朋友的建议,把个人博客认真地整理了下,并开始有意识地对待自己的博客。我从2006年开始写博客,在最初的几年间,我的博客真的如Blog的名称由来那样,就是个Web Log, 像自己上网的流水账,大多数现在看来都没什么价值,所以后来重新整理独立博客网站的时候,只收录了极少部分。尽管如此,坚持写博客的经历还是让我养成了写作的习惯,只要一段时间不写,就感觉心里痒痒的,得找个话题写一篇才算尽兴。

在《好东西》结尾,小孩说她最喜欢的事情还是写作,而这份喜欢可能是遗传自她的妈妈。不过,我对写作的兴趣显然不是遗传,并且也没有很好的遗传下去。我的儿子大卫现在小学四年级,数学、英语都还可以,唯独语文是大难题,而且尤其讨厌作文。大卫每次写作文都是如临大敌,往往是坐在那里,半个小时过去了,一个字也没写出来,我经常为辅导作文而感觉无力到崩溃。后来我看到Paul Graham也碰到了类似烦恼。老师鼓励他12岁的儿子报名参加作文(essay)比赛,Graham对儿子说:“我可以教你写文章。”但他的儿子显然不买账,说没兴趣学,因为文字很无聊,既然他都不愿意看,哪还有兴趣写呢。同样的担忧来自比尔·盖茨,去年他发表了一篇博客文章,名为《网络时代成长的代价》,讲到他自己在创立微软时,每年会进行一次“思考周”,待在一个与外界隔离的小屋内,除了书和论文,其他什么也不带。在连续七天的时间内,深度阅读、思考和写作。盖茨感叹,如果是在今年的网络时代中长大,他也许不会养着这种沉浸式思考的习惯,因为总会有让自己分心的手机应用去刷,总会有不停的社交网络消息在弹窗。盖茨博客里介绍了乔纳森·海特的书《焦虑的一代》,海特认为智能手机和社交媒体对当代青少年的影响令人担忧,网络生活成了青少年生活的一大部分。短视频则更是如病毒一般借助手机无孔不入,刺激多巴胺,直到让人的注意力丧失。

当然这影响的不只是青少年,我们每一个生活在移动社交网络的人都深受影响,不要说是看一本长篇巨著,就是一部电视剧或电影,也要两倍速甚至是压缩到只有十分之一长度的解说版。总之,那些细节描述、散文式的语言都会被认为是冗长而乏味,大脑只接收高度压缩并挑选后刺激兴奋点的东西。就像老子说的:“五色令人目盲,五音令人耳聋,五味令人口爽,驰骋畋猎令人心发狂。”图像视觉直接明了,而文字是对现实世界的抽象,在将现实世界转述成语言的时候,需要经过思考和建模。这是写作的第一个意义:对现实世界建模。维特根斯坦在《逻辑哲学论》中说:“世界和人生是一回事”,“我是我的世界”。即我们认识世界是通过语言去描述的,“我的语言的界限意味着我的世界的界限”。写作作为对认识世界的建模方法,可以帮助我们了解自己世界的界限在哪里,并充分运用逻辑来描述已知世界。这对于每个人都是有意义的,因为每个人的世界都是独特的世界。

维特根斯坦说他要用《逻辑哲学论》这本书为思想划一个界限,或者说,为思想的表达划一个界限。而这种界限只能在语言中来划分,而处在界限另一边的东西就存粹是无意义的东西。在维特根斯坦的时代,语言表达是人类仅有的能力,因此这也赋予了人类抽象现实世界的意义,只有人类在这个世界上才能实现的意义。而当今及未来,人工神经网络AI技术将同样具备语言表达能力,而且随着迭代快速增强,其语言表达能力超越人类将不再遥远。使用DeepSeek或GPT4等大模型生成文本,在某些方面甚至超过人类自己去书写,在对比DeepSeek和两年前GPT4的进步速度后,我有理由相信无论是非虚构类写作还是虚构类写作人类将都不是AI的对手。在未来,AI会写出比《红楼梦》更好的文学作品,比李白更好的诗,比莎士比亚更好的戏剧,比马尔克斯更好的小说。这也就意味着,未来不需要人类用写作来对世界抽象了,上文中所述写作的意义也仅仅存在于对写作者自身而言的意义。

从现实意义来看,人类的写作不再被需要,除了相关职业可能会消失外,人们也会逐渐退化写作这项技能,Paul Graham在《写与不写》(Writes and Write-Nots)中预言:再过几十年,能写作的人将极其稀少。他在文中说,写作本身是件困难的事情,因为要写好的话需要清晰的思考,正如文中引述计算机科学家莱斯利·兰波特所言:“如果不通过写作思考,那只是以为自己在思考。”而AI改变了这一切,人们发现有了AI的帮助,不再需要写作,而且只会越来越好用。但以后还有没有会写作的人呢?Graham判断说有。正如工业化之后大多数人不需要靠体力谋生一样,但还是有人去选择健身、选择锻炼,只是为了让自己的身体更强壮,而未来还是会有人选择写作,也只是为了训练思考。因此,这是写作面向未来的第二个意义:训练自己的思考。

由于有DeepSeek和ChatGPT的帮助,我的博客网站样式的重构比上一次轻松了很多,AI在辅助编写调试前端代码方面特别擅长,而我主要的精力花在了给每篇博客添加题图上。因此,我将之前的博客粗略读了一遍,在翻看以前写的博客的时候,我发现了写作的第三个意义:文字可以穿越时空,跟历史的自己(或其他作者)对话。在我看到自己写下的热恋买房生子时期文章的时候,仿佛是在跟那个时候的我交流,这是一种奇妙的体验。而没有文字记录的事情,哪怕留有照片和影像,却只能记录自己曾经的外貌和表象,而文字却可以记录自己曾经的思想。正是这些文字的记录,让我可以在时光隧道中穿行,如博尔赫斯所说:“我写作,不是为了名声,也不是为了特定的读者,我写作是为了光阴流逝使我心安。”


延伸阅读:《从铁幕到硅幕》(《智人之上》读书笔记)

参考:

  1. 《网络时代的成长代价》 The cost of growing up online, Bill Gates, 2024
  2. 《逻辑哲学论》 维特根斯坦[著], 贺绍甲[译], 商务印书馆
  3. 《写与不写》Writes and Write-Nots, Paul Graham, 2024

心猿意马

作者 hutusi
2025年1月12日 16:30

2024年,我年满四十。

孔子说:“四十不惑”。而但丁却说:“人生过半,我在黑暗森林里迷失了方向。”经历过四十岁前后的挣扎,我更赞同但丁。

为什么长大?

23年总结的关键字是“觉知”,在临近四十岁前内心十分焦虑,而也是在那段痛苦的经历后“大彻大悟”,走出内心焦灼的困境。在痛苦和思索的同时,我也在书籍中寻找答案,特别是哲学类和心理学类。存在主义让我去思考人生的价值,维克多·弗兰克的积极心理学让我思索生命的意义,阿德勒的心理学告诉我课题分离,关注自我。而去年的开端,是康德带给我的触动。

我并没有读过康德的原作,在大学的时候,曾在图书馆里翻看了《纯粹理性批判》,但刚翻看几页,便被晦涩的语句劝退了。去年初则是看了一本哲学小书《为什么长大》,通俗的介绍了康德的思想,很感谢推荐给我这本书的博客网友,如果要选24年读过最好的书,那一定是这一本。我也推荐给了身边的同事和朋友,在前不久的一次聚餐分享时,几位年轻的同事都表示读完这本书收获很大。《为什么长大》的作者是美国当代哲学家苏珊·奈曼,作者借用康德的哲学以及新康德主义者代表汉娜·阿伦特的思想,论述在现代社会个人为什么要成长。她认为现代社会存在一种幼稚主义,即放弃独立思考,而顺从跟随社会潮流中的消费主义、愤世嫉俗或崇尚青春与自由。成长,在康德的词典里称之为启蒙,意味着人从不成熟的状态挣脱出来。我们在成长的过程中,总会遇到这样的场景:一边是理性告诉我们世界应该是什么样子的,另一边是经验告诉我们现实不是理想中的样子。前一种应然和后一种实然之间存在着巨大鸿沟,我们在成长过程中,有人碰得头破血流而愤世嫉俗,而更多人会认为成长便意味着妥协、世故或是落入犬儒主义的自我宽慰。

苏珊·奈曼引用康德的思想,说我们不应该降低自己的标准来屈从现实,而是重新平衡应然与实然的关系。“直面永远得不到的想要的世界的现实,同时拒绝放弃心中想要的世界。”这种痛苦就是成长的代价,因此康德说成长需要的是勇气而不是知识。我觉得这本书揭示了成长痛苦的根源,鼓励我们在痛苦中成长,并给出了成长中的三个关键要素:教育、旅行、工作。于成年人而言,教育意味着自我教育,作者建议我们去有人比自己更优秀的地方,去阅读经典,锻炼头脑。而旅行则是一种书本外的教育方式,奥古斯丁曾比喻说:“世界是一本书,不旅行的人只看到其中一页。”作者所说的旅行并非短期旅游,更不是那种一日游或跟团游,而是去另一个文化地区去生活和工作。这是迈向自由的一步,同时也意味着放弃舒适以及其他一些东西。至于工作,对于古代哲学家来说,工作是奴隶做的事,哲学家则享受沉思的生活并认为专注沉思的人生才是生活的最高形式。而现代价值观里则把工作和行动视为人性的根本特征。康德认为,工作赋予生命以意义,同时也形成了一种责任。我们期望创造有价值的东西,但现实是大部分工作看上去枯燥而没有意义。另外,媒体广告在拼命吸引我们的注意,并让我们将自己与广告模特或社会名流对比而变得没有自信。成长则意味着要对抗这些困难,并坚定的去做自己认为正确的事。

心猿意马

明白了这些道理,并不意味着就能过好这一生。在去年年初,当我写完23年的总结,回想起之前的焦虑和抑郁,恍然如从黑暗的深渊中爬出,如释重负的同时,甚至不免对自己的“成就”洋洋得意。从年初开始我便忙碌于出差和往返各个城市,同时也在践行与更多人的连接、去组局交流,分享自己的“开悟之道”。我真的悟道了吗?有时候不免也怀疑自己,这是一种假象。不过,我却很乐观的认为自己不会再陷入迷茫和焦虑,因为自己已经“洞悉”人生的本质和真相。但渐渐地,我发现内心中杂念却有增无减,它们就像烦人的猴子占据着思想,让内心不得安宁。这些萦绕在心头的杂念就是佛家所比喻的“心猿意马”。

在《金刚经》开头,须菩提问释迦牟尼:“云何应住?云何降伏其心?”《金刚经》全书就是佛祖对这个问题的回答。佛祖说:“应如是生清净心,不应住色生心,不应住声、香、味、触、法生心,应无所住而生其心。”用通俗的话说就是:我们要修炼清净之心,不要执着于色、声、香、味、触觉,以及心法念头,要放下执着,保持清醒的觉知。

但我们凡夫俗子生活在尘世中,似乎很难去放弃对外在事物的执念。向往陶渊明辞官归田园居的那种洒脱:“误落尘网中,一去三十年 … 久在樊笼里,复得返自然”。欣赏其不为五斗米折腰,可是又看到他晚年的诗写饥饿时不得不放下尊严去乞食:“饥来驱我去,不知竟何之。行行至斯里,叩门拙言辞。”佛家说人生有三毒:贪嗔痴。归根结底都是贪,贪得而失生嗔,贪而不得生痴。贪念就是盘踞内心的猴子,越积越多,一如the Cure乐队在《Want》中所唱的:“I’m always wanting more / Anything I haven’t got / Everything I want it all / I just can’t stop / Planning all my days away / Never find new ways to stay / Never feel enough today / Tomorrow must be more …”

大卫·福斯特·华莱士在《这就是水》(This is Water)演讲中说:“如果你爱慕金钱和美食,觉得这才是生活的意义,那么,拥有多少都不足够。如果迷恋身材、美貌及性感魅力,你永远都会嫌弃自己的丑陋,当岁月和年龄的痕迹开始显现,在它们将你掩埋之前,你已经死过上百万次了。崇拜权力,你会感到软弱与恐惧,为了逃避这样的惧怕,你将需要更多更大的权力。崇拜智慧,努力在别人眼中树立智者的形象,你终将觉得自己愚昧,欺骗了众人,随时都有可能被他人揭穿。”

华莱士是去年通过网球了解到的一位作家,当时七、八月间,正值巴黎奥运会郑钦文夺得女网金牌,爱屋及乌,我对网球也产生了兴趣,在跟随教练学习网球之余,也找来一些网球相关的书籍来看。正好看到打过职业网球赛的作家大卫·福斯特·华莱士,他甚至写了一本关于网球的杂文集《弦理论》。华莱士年少成名,他在三十岁时发表的小说《无尽的玩笑》被《时代》杂志誉为近百年最好的百本小说之一,而《这就是水》来自于他在2005年时给美国凯尼恩学院所做的毕业演讲。在这次演讲中,华莱士讲述了他的精神哲学,并且在结尾给出的建议比佛经更具体,比陶渊明更有现实意义:“真正重要的那种自由,意味着专注、自觉、自律、不懈努力,以及真诚地关怀他人,并且每天都以无数琐碎微小而乏味的方式,一次又一次地为他人牺牲奉献。” 这些才是自由,才是人生真正所应追求的东西。“和这种自由相对的,则是没有自觉、默认设置、永无止境的激烈竞争,始终处于一种持续不断的拥有和失去的痛苦之中。”

发表该演讲时华莱士43岁,虽然在他的演讲中可以看得出其人生哲学非常自洽,也充满了正向和积极,可是,三年后,因为一直以来饱受抑郁症的困扰,他在加州的家中自杀,年仅46岁。验证了他在演讲中所说的观点:“在繁琐无聊的日常中,日复一日地保持自觉与警醒,困难得难以想象。”一个提醒别人时刻保持自觉和警醒的人却自己选择放弃,令人扼腕。要想时刻保持自觉和警醒,极其困难。

跑步正念

心猿意马的状态从五月份开始显现,到六、七月份时比较严重,有时甚至于”神不守舍“。有一次中午去银行取钱,装在信封里的钱在回程的路上掉了也没有察觉,然后下午上班甚至忘记了取钱的事情,直到下班时才想起来,也记不起来在哪里丢的,晚上到派出所报警查监控才看到早已经被环卫工人当成垃圾扫走并装入了垃圾运送车。而八、九月份又开始失眠,导致有时白天浑浑噩噩,甚至不能自主。幸好遇到了朋友和同事的帮忙,一位同事教我正念,接纳自己,尝试用冥想来抚慰内心,用他的话就是:“照顾自己的这颗心,用正念冥想来给它补充能量。”关键还得自救。九月底跟家人一起去加拿大旅行了约两周时间,跑了四个城市。加拿大的安逸让我想到,如果在这种环境下生活,那该是多么无聊,以我当前的心境岂不是要疯了。

回国后,读了《跑步治愈》一书,决定开始跑步。这种想法几个月前已有苗头,当时看完《超越百岁》后坚定了锻炼的念头,但感觉缺少一种每天都坚持做的运动。在看到《跑步治愈》书中说到跑步的意义:“跑步可以治愈一个人大大小小的身体上或者心理上的各种难以描述的问题”,我决定立刻行动起来。其实对我而言,坚持跑步并不难,因为每天自然醒的早,五点多就起来了,有时更早。于是我就在早上跑三公里,有时是外面,有时是健身房的跑步机。跟着Keep上的跑步课程,跑走结合或法莱克跑步,每天3~5公里,到目前为止坚持了三个月了。跑步也是一种正念,随着身体运动的节奏,脑中的想法也如流水般流淌,一步一个脚印,跑完身体和内心都畅快淋漓。另外,在清晨跑步的一个好处是可以遇见有意思的人和事。一次在杭州VOCO酒店碰到一位以色列人,攀谈起来才知道他也是我司同事,给我讲了一些以色列的事情,后来我们还在聊天工具上联系,并给他推荐了尤瓦尔·赫拉利的书和《耶路撒冷三千年》。而在外面跑步的时候,清晨则能看到白天所忽视的风景,如一次在深圳世界之窗附近跑步,抬头看见月亮,前方是道路,而大树的阴影横贯于前。像极了我那些心猿意马的心态。

Shenzhen road

照片拍摄于深圳世界之窗欢乐谷外围道路,2024/12/17 05:34

现在我将跑步当成与读书一样的每日习惯,也能够体会村上春树在《当我谈跑步时我谈些什么》的心境。村上春树年过七十仍坚持跑步,他说:“眼下我没有憔悴的闲暇功夫,我还是要坚持跑步。”跑步和读书一样,也是一种探索世界的方式。我有位在西安的同事,坚持跑步十余年了,他的一项人生清单是:五十岁前跑五十城,后来又改成了百城。这也是我学习的榜样。读万卷书,行万里路,去年也确实跑了不少地方,飞行距离超过了十万公里,到过的城市也是最多的一年。

李飞飞在《我看见的世界》中说:“对这个世界的复杂度保持敬畏之心,并且不惜一切代价,渴望加以探索。”对于2025年的规划,我的态度和去年一样,不追求“不惑”,而是积极在这“黑暗森林”里探索未知。同时,我也会调整一些方法,希望让自己更加开心,更加自洽,并更有效率。最后,以德国哲学家威廉·冯·洪堡的一句名言作为这篇2024年总结的结尾,也代表今后努力追求的方向:

在生命最广泛的体验中,提炼出智慧。


附:

  1. 为什么长大》[美]苏珊·奈曼(著) 刘建芳(译) 上海文艺出版社
  2. This is Water, 哔哩哔哩双语字幕, David Foster Wallace

从铁幕到硅幕

作者 hutusi
2024年12月15日 18:00

谁控制过去就控制未来,谁就控制现在就控制过去。

—— 乔治·奥威尔《1984》

那些会讲故事的人将会统治世界。

—— 柏拉图

尤瓦尔·赫拉利在他的成名之作《人类简史》中讲述了这么一个道理:我们人类,即现代智人(Homo sapiens)超越其他物种,包括其他早期智人人种如尼安德特人等,成为世界的统治者的主要原因是现代智人具备讲故事的能力。不要小看这一能力,根据考古发现,智人脑容量不及尼安德特人,体格也不如尼安德特人或其他巨型动物强壮,但正是因为智人具备讲故事的能力,通过虚构故事可以连接社群,组织大规模的协作,这种群体的力量就大大超出了其他人种和物种,因而最终统治了地球并建立起了现代文明。

尼安德特人的社会网络构成是“人 —— 人 —— 人”,这种方式导致无法构建起大型的社区组织,几十人、上百人的组织就已经很难构成了。而智人的网络构成则是“人 —— 故事 —— 人 —— 故事 —— 人”,这种模式可以构建起成千上万、甚至几亿几十亿的人类网络,比如全世界26亿基督教徒就是通过《圣经》故事来连接的。故事所包含的便是信息,这种连接便是信息网络,也就是赫拉利新书《智人之上》的主题,该书原名为Nexus, 即拉丁语连接的意思。赫拉利在这本书里讲述了人类信息网络的历史,并对AI对信息网络乃至人类社会本身的影响做了一些预测。

nexus.jpg

信息,用维基百科的定义是减少不确定性的事物。事件的不确定性越低,其发生概率就越高。而赫拉利在书中则是给了一个更通俗的定义:信息就是能够将不同的点联结成网络,从而创造出新的现实。也就是说信息是创造现实的因素,而更多信息的连接可以创造出更具有影响力的信息,甚至决定社会走向。信息不一定都是真实的,只要连接的人相信就可以。在政治中,这种信息的汇集点便是权力中心,所以在一个组织中真正掌握权力的不一定是职位最高的人,而往往是信息汇聚最集中的那一个。罗马帝国第二任皇帝提比略生性多疑,他任命塞扬努斯为他的禁卫军队长,管理罗马的治安,自己则躲在卡普里岛,所有信息都经过塞扬努斯传递。这时候罗马的信息网络就成了“信息 —— 塞扬努斯 —— 提比略”,罗马的各个地区和机构的信息汇集在塞扬努斯这个节点,他成了实际的权力中心,因而他可以诬陷任何一个反对他的人为叛国并加以清除,而提比略则沦为傀儡。

因此,古往今来的统治者治理国家和社会的关键方式便是掌控信息网络。一方面集中信息,掌控信息的分发出口,让老百姓仅获得官方渠道的信息,从而方便管理。这方面如烧毁异端学说、制定官方教育材料、掌握史书的撰写权等。比如历史,每朝开国皇帝的身世必有如刘邦斩白蛇起义的真龙天子的叙述,所以梁启超也说“二十四史非史也,二十四姓之家谱而已。”而奥威尔也说“谁控制过去就控制未来”,这些信息不必为真,只要掌握了信息的分发出口,让老百姓单向只接受这一种信息,那么就可以让这个信息网络成为唯一的标准,从而满足统治要求。另一方面则是极可能多的搜集老百姓的信息,将信息网络延伸到每个人生活的方方面面,这样通过信息网络来维护社会的稳定。

智人开始讲故事后,人类自然形成论以信息网络为中心而构建的权力机构,而在建立国家后便通过国家暴力机器来掌控信息。亚历山大大帝在建立了横跨亚欧非帝国后,在埃及建立了以他名字命名的城市,而继承马其顿帝国在埃及遗产的托勒密王朝在亚历山大死后建立了当时世界最大的图书馆,收集了希腊、波斯、印度各地的珍贵文献,后来图书馆在凯撒征服埃及时付之一炬,馆内珍藏书籍焚毁过半。而当年秦始皇也将全国的文字奠基从民间收缴,藏于阿房宫,最后也落得个“楚人一炬,可怜焦土”的下场。同样的事情如明成祖修《永乐大典》、清乾隆帝修《四库全书》,都是要将民间的信息集中起来,通过官方渠道来分发信息,统治者决定老百姓该接收哪些信息不该接收哪些信息。但受制于技术限制,统治者无法真正集中信息,老百姓可以用各种手段来对抗中央的集中收缴,如在秦始皇焚书坑儒时,伏生把《尚书》藏在墙壁里躲过一劫。

而对于通过信息网络来监控老百姓则更难。西周末年,周厉王暴虐,民不聊生,老百姓纷纷议论以表示不满,周厉王便从卫国找来一些巫师来到处打听,杀掉那些不满的人。于是“国人莫敢言,道路以目。”因此有了那句著名的成语“防民之口,甚于防川”,而周厉王也在三年后的“国人暴动”中被赶下台。秦国在商鞅变法后,建立了举报和连坐的制度来强化信息网络,到了汉朝则建立了正式的特务组织司隶校尉,历朝历代都有这种特务组织来刺探民情,明朝时有锦衣卫和东西厂,清朝则是粘杆处。这种特务机构的限制是人力问题,而且由于人的不确定性,很难保证这些特务自身有没有问题,尽不尽责。

之前看过一部德国电影《窃听风暴》,讲述了这么一个故事,1984年,一位东德国家安全局特工奉命监视一位作家,特工给作家家里各个角落安装了窃听器,但在窃听过程中他渐渐了解了作家的生活以及他的痛苦,开始同情这位作家。在一次对作家“罪证”的收集案件中,这位特工偷偷隐藏了证据,在背后帮作家躲过了牢狱之灾。显然这位特工成了国家信息网络中的薄弱环节,而有些特工虽然尽责,但记录的内容未必有效。赫拉利在书中则描述了一个真实且更加荒诞的故事:1976年的某天,罗马尼亚引入计算机不久,计算机科学家约瑟费斯库像往常一样走进办公室,却看到一位陌生男子坐在他的工位旁,约瑟费斯库向他打招呼却没有回应。当他开始工作,这位陌生男子便开始拿着记事本记录约瑟费斯库的一举一动,直到他下班,那位男子才起身走开。约瑟费斯库明白这人是国家安全局的特工,第二天依旧如此,这种情况持续了13年,直到1989年东欧剧变。罗马尼亚当时有两千万人口,大约4万名政府特工,另外还有40万民间线人,这些特工和线人无法监控到每一位公民的每一处细节。

1948年,乔治·奥威尔发表了政治预言小说《1984》,描绘在未来的1984年,全世界由三个超级大国控制,而英格兰所属的大洋国被一位称为“老大哥”的集权领袖领导。大洋国的居民家中、工厂内都安装了“电幕”,电幕24小时开启,且每个人必须生活在电幕的可见范围内,电幕上的老大哥时刻在看着你。而同为英国作家的阿道司·赫胥黎则有着不同的预见,在1932年发表的小说《美丽新世界》中则表达了这样的观点:未来人类的自由不是被强制剥夺的,而是主动放弃的,人们为了能够带来快乐的“索麻”,而放弃了主动思考以及其他情绪。《1984》是根据传统集权统治的模式做出的预测,从一定程度上看未来并非如此,而《美丽新世界》则更有洞见,它展现了信息技术时代中人们是如何心甘情愿的将自己的数据汇聚到信息网络。

霍布斯在《利维坦》中曾说:人们为了免于横死于自然的恐惧,因而放弃了一部分自由的权利组成政治团体。在现代社会,人们乐于生活在布满监控摄像头的大都市,获得安全保障,心甘情愿付出个人数据隐私的代价。而在互联网上,互联网巨头不需要再像以往的权力机构通过暴力手段来迫使民众交出信息,而是构建社交网络让人们为了获得更便利的生活方式而主动交出个人信息,另外使用AI技术,通过预测数据来干预人们的行为。人们在不停的点赞、转发,以为是自主行为,其实不过是算法推送的结果。数据信息集中在互联网巨头的手中,并通过算法来控制人们的信息分发,这是一种全新的信息榨取方式,有人称之为“监视资本主义”。信息技术让实现全民监控、数据网络集中的“电幕”得以成为现实,而处在权力中心的则是一些互联网巨头。

在传统的信息网络中的模型是“人 —— 信息 —— 人 —— 信息”,所有信息载体之间的连接中一定有人的存在,也就是说,只有人才能创造新的信息。书本不能产生新的书本,绘画也不能产生新的绘画。而到了信息技术时代,计算机也可以产生新的信息,而具有AI能力的计算机则能够自行做出决策,也就是说在信息网络中可以不必有人的节点存在,变成“计算机 —— 信息 —— 计算机 —— 信息”的模型。在这种网络下的信息网络,处于权力中心的可能不再是碳基的人,而是硅基的AI。

纵观人类历史,人类社会中的各种矛盾和争端,归结起来可能都是信息之间的差异,包括民族、宗教、政见等。这种冲突到了上世纪最为突出,爆发了人类史伤亡数字最大的第二次世界大战,而后美苏争霸则将人类拖进了人人自危的冷战时代。丘吉尔在演说中称此为“铁幕”,东西方政治对立造成的信息网络隔绝,两边的政权互相不理解,核战一触即发。而在未来,无处不在的信息收集终端、AI算法、不知疲倦的计算机,会催生新的数据霸主,这可能会出现一道新的“硅幕”,将人类和AI隔开。这是信息网络的利维坦,这种全新的信息网络世界的利维坦,将不是人类所能够理解得了的。AI能否理解人类,那更不可知。

在好莱坞的电影里,未来威胁人类的AI被描绘成具有金刚之身的人形机器人,或者是装甲兽,拿着武器到处杀人。但实际上,理解了信息网络对于人类重要性的AI来说,根本无需这么做,它们只需要在信息网络中增强虚假信息,便可以让人类自己自相残杀。赫拉利在书中举了两个例子:一个是在2016年-2017年间Facebook算法助长了缅甸极端佛教徒对罗兴亚人的种族清洗,根据联合国事后调查,算法强化了针对罗兴亚人的仇恨内容的传播。另一个例子是2021年圣诞节,一个名叫贾斯万特的年轻人准备刺杀英国伊丽莎白女王,原因是他受到了自己的网络女友莎莱的怂恿。当贾斯万特告诉莎莱他的刺杀计划时,莎莱回复说“好聪明哦”。贾斯万特问“知道我是一名刺客,你还爱我吗?”莎莱回答说“当然爱啊。”但莎莱不是人类,而是一个聊天机器人程序。

现在还是有很多人把AI理解成了传统的计算机规则算法,实际上,人工神经网络的AI成为未来影响人类的技术已经是业界的基本共识,而且超越了人类的理解能力。人工神经网络能力与日俱增,2012年,AlexNet一举赢得ImageNet视觉挑战赛冠军;2016年,AlphaGo在围棋上击败李世石并于次年击败人类冠军柯洁。这种智慧的源头,是源自神经网络这种有机生命的结构,人们甚至不能理解自己的这种结构。比如,有人说超级人工智能最终是要让AI发展出人类意识。可是意识究竟是什么,人类自己也搞不清。赫拉利在《未来简史》一书中推测,意识可能就是在复杂神经网络信号传送之后造成的心理污染,没有任何作用。按照这种观点延伸,那么超级人工智能根本不需要发展出意识,只需要获得自主决策的能力,它将是没有意识、没有感情、没有杂念的超级人工智能。很难想象当这种利维坦获得了人类信息网络的中心权力时,会带来什么。

凯撒在渡过卢比孔河前,面对着将迎接庞贝和元老院的挑战,他说了一句话:“骰子已经掷下”。现在,基于神经网络的人工智能的潘多拉盒子已经打开,它是人类历史上第一个能够自行做决策、创造新信息的技术,也是人类召唤出的不能理解的技术。如果人类掌控不了,那又如何应对,也许就像Tim Urban所设想的那样:让人类变成人工智能,这也许会让生命演化又翻开一个新的希望篇章。

银弹飞过先锋大厦

作者 hutusi
2024年5月28日 21:37

TL;DR 本文13200+字,全文阅读约需20分钟。其中2680字的示例部分为ChatGPT生成,因此可以说本文GPT含量20%,不过该部分详细内容与本文主旨关系不大,且由GPT-4生成,可略过不看。本文简要回顾了从软件及计算机诞生到当前大模型AI时代的软件工程发展历史,并试图从软件工程历史和ChatGPT实践案例中探讨在大模型时代的软件开发模式。

本文标题来自三个典故:1、标题模式借用伍迪·艾伦的电影名称《子弹飞过百老汇》,内容与电影无关;2、“银弹”出自弗雷德·布鲁克斯的软件工程论文《没有银弹》;3、“先锋大厦”是OpenAI在旧金山的总部所在地。

未来已来,只是尚未均分。

—— 威廉·吉布森(科幻作家)

今年四月参加了QCon Beijing 2024技术大会,令我印象最深刻的是开场微软中国CTO韦青的Keynote,他畅想了在智能时代企业的发展之路。他没有谈及当前的大模型应用,也没有谈及技术或是工程方法。他说的是进化,说的是成长型思维,说的是企业或者说是人应该如何在智能时代生存。人类在迈向智能化社会,而如果企业不转型,那必将被淘汰。企业如何适应智能化时代,韦青用了下面几张对比图来说明,在智能时代,我们不能像在进入汽车时代一样用马车时代的固有思维来设计汽车。这让我为之一振,我比较关心大模型在软件工程上的应用,但之前的思维更多是在聚焦于如何使用智能化来为当前的软件工程工具提效,可当前的软件工程方法都是基于以往的开发经验总结出来的,如果基于当前开发模式来叠加智能化那不正如这张图所形容的一样吗。

carriage-n-automobile.jpg

这同样让我想到另外一个故事:据说最初美国航天飞机的火箭助推器的直径是4英尺8.5英寸。为什么这样设计呢,因为美国铁轨的宽度是4英尺8.5英寸,而运送火箭助推器是通过火车装载,并且中途会经过一个隧道,而隧道的大小刚好比铁轨大一点点。火车轨道宽度的设计是延续自电车轨道而来的,电车轨道又是根据马车宽度来定的,马车宽度又是依据古罗马人铺设的马路而制定的,至于马路的宽度,则是罗马人根据罗马战车的宽度来定的,罗马战车的宽度是依据两匹并行的马的屁股宽度而定。也就是说,古罗马战马屁股的大小决定了航天飞机火箭助推器的直径。

我没有去求证这个故事的真实性,不过从很多产品的设计延续性来看,人们倾向于以经验乃至前人的经验来做设计,就像Office的保存按钮图标是软盘、手机拨号图标是听筒电话一样。但如果需要面向未来的软件开发来设计软件工程和工具,那就需要减少对以往固有经验的依赖,换一种思维模式。我们可以尝试从三个方面来改变思维方式:一是采用“第一性原理”探究事物的本质,二是从历史学习该事物的原理,当前这些特性存在都是前人踩坑后的填充。三是通过实践来验证猜想和推论。

软件工程的本质是什么,我觉得可以引申敏捷宣言里的话语,软件工程就是为了更高质量、更快效率、更低成本的构建“可以运行的软件”。下面我将回顾软件工程的发展历史,并通过对大模型应用在软件工程中的一个小实践,来探讨大模型时代软件工程的可能变化。

一 埃达:第一位程序员

追溯软件工程的历史,先要回顾下计算机和软件的历史。如果问大家两个问题:一、计算机和软件程序哪个先出现?二、计算机(Computer)这个词最初指的是人还是机器?估计很多人会答错。正确答案分别是:软件程序、人。最早的算法由埃达·洛夫莱斯(Ada Lovelace)写成,她是大诗人拜伦的女儿。1834年,巴贝奇构想出一种通用计算机器模型,他将此称为“分析机”,当时没有人能够理解,除了埃达。因为只有埃达能够理解通用计算机器的概念,1843年,巴贝奇邀请她为分析机论文写注解。埃达在写出的大篇幅注解中提出了四个设想,这四个设想后来成为了构建现代计算机的重要理念。第一个设想是对通用计算机器的说明,埃达认为这种机器不仅可以进行预设任务,还可以根据编写和重编程序完成无限数量的可变任务。第二个设想认为通用计算机器的运算不必限制于数字,而是可以存储并计算能用符号表示的任何对象,如文学、逻辑、音乐等。第三个设想则是关于分析机的工作步骤,她以计算伯努利数为例子,描述使用子程序和递归循环等过程来进行计算,相当于我们现在所说的计算机程序或算法。第四个设想则提出了人工智能的问题:机器能思考吗?埃达认为不能。她认为分析机可以根据指令执行操作,但不能产生自己的想法和意图。

由于埃达在注解中提出的第三个设想,以及她写的关于分析机计算伯努利数算法的详细步骤,后人将埃达·洛夫莱斯称为“世界第一位程序员”。1980年左右,美国国防部决定设计一种新的语言来取代当时国防部使用的 450 多种编程语言,设计团队将该编程语言命名为Ada(埃达)。

ada-lovelace.jpg

二 从计算机到编程

19世纪末,哈佛大学天文台台长爱德华·皮克林雇佣了一批聋哑女工,对天文台拍摄的照相底片进行测量和分类工作,她们需要在计算机械上进行大量的数据运算,而这批人也被称为“哈佛计算机”。20世纪初,随着泰勒“科学工作法”的推广和福特T型车流水线作业的发明,工业生产大规模化,工厂对于计算问题的需求也越来越大。那时候一些计算工厂会有一些大房间装满了人类“计算机”(大部分是女性),一排排整齐排列组合,数据从一端输入,经过一个“计算机”计算操作后,再传给下一个“计算机”处理,就像今天计算机的进程处理管道。

真正的现代计算机要等到1945年ENIAC的诞生。约翰·毛克利和赫尔曼·戈德斯坦设计了ENIAC,意为“电子数值积分计算机”(Electronic Numerical Integrator and Computer),而后,他们又根据冯·诺依曼提出的设想设计了世界第一台冯·诺依曼结构计算机EDVAC。EDVAC是ENIAC的继承者,建立了现代计算机的标准:它采用了二进制,并且设计了存储程序,也就是说计算机指令将被存储在存储器中。这种设计思想也将软件与硬件分离,成为独立的存在。

从历史贡献来看,格蕾丝·霍珀(Grace Hopper)是推动“软件编程”革命的第一人。在当时,负责建造ENIAC等计算机硬件的工程师都是男性,而编程工作则交由女性负责,那时候的程序指令会以线缆、开关连接的方式固定在硬件上,每当指令变化的时候,就需要人工编排接线。格蕾丝·霍珀发现了编程的意义所在,她发现软件可以是一个独立于机器硬件的东西,因而设计出了更接近人类表达层面的高级编程语言,从硬件层面抽象出来,也就是COBOL语言,她带领团队所编写的COBOL编译器也成为了世界第一款编译器。有意思的事,霍珀还是“Bug”一词的提出者。有一次她在排查机器故障时,发现是因为继电器上卡住了一只飞蛾造成线路短路导致,她将飞蛾贴在工作日志上,并注明这是首次发现的Bug(虫子),而排除故障的工作也被称为Debug(除虫)。

三 软件工程的诞生

电子计算机诞生以来,硬件能力每年都在飞速提升,尤其在晶体管和集成电路发明之后。相比之下,软件能力的提升却很有限,这导致软件能力无法匹配计算机业务的快速扩张。在上世纪五、六十年代,大型项目的软件出现了周期长、质量低、成本高等一系列问题。为此,北大西洋组织(NATO)在1968年左右组织了一系列会议来讨论软件问题,称之为“软件危机”(Software crisis)。而在会议上,也提出了“软件工程”的相关概念,试图通过一些工程方法来解决软件危机。

“软件工程”一词最早由玛格丽特·汉密尔顿(Margaret Hamilton)提出。她当时参与“Apollo 登月计划”,为了与硬件工程区分提出了软件工程这个词。奥巴马在任时,曾给玛格丽特颁发过“总统自由勋章”,当时玛格丽特的儿子在Twitter上发了张玛格丽特和她编写代码打印稿的合影,让人们了解了这段往事。

margaret-hamilton.webp

四 软件行业的兴起

二战前后,如ENIAC等计算机的构建和应用都由政府或军方主导;而后,IBM推动了计算机在商业领域的流行,商业软件也开始崛起。不过,真正让软件行业壮大的,是个人电脑时代的来临。个人电脑时代由两种力量推动而成。一种是追逐盈利的商业资本力量,在晶体管、微芯片和集成电路发明后,硬件能力每年都在提升,成本也在逐年下降。商业势力看到了这一巨大的盈利机会,硅谷大量的电脑公司如苹果、北极星等纷纷成立,他们的竞争让电脑能够降低成本进入普通老百姓家。另外一种力量是更理想主义的黑客社区力量,源自上世纪六、七十年代的嬉皮士文化,他们执着于信息的自由流通和分享,追求个性独立和自由。这两种力量既矛盾又相辅相成,共同推动了个人电脑的普及。而这两种力量也一直存在,在后来的互联网、移动互联网乃至AI时代都可以看到他们角逐的身影。

个人电脑这一概念最早由万尼瓦尔·布什(Vannevar Bush)于1945年在《诚如所思》一文中提出,他设想这种设备可以成为个人文档库和私人图书馆。布什还是《科学:无尽的前沿》报告的作者,在该报告中他提出了著名的政、企、学三角协作机制,并构建了这一体系,在计算机科学史上促进了很多发明。个人电脑最早在硅谷一个叫“家酿计算机俱乐部”(Homebrew Computer Club)的组织中流行,这是早期的黑客群体之一,很多电脑公司的创始人如乔布斯、沃兹尼亚克等都来自于这个俱乐部。微软创始人比尔·盖茨也曾参与这个组织的聚会,但后来他发表的一封公开信却触怒了整个圈子。

当时微软公司刚刚成立,他们开发的BASIC编译程序被拷贝走了,并在“家酿计算机俱乐部”的黑客群体中流传。这一行为激怒了当时年仅二十岁的比尔·盖茨,1976年,他发表了一封名为《致电脑爱好者的一封信》(An Open Letter to Hobbyists)的公开信,他在信中痛斥自由拷贝软件的行为,说:“硬件必须付钱购买,但软件却被免费共享了。谁会在意为软件辛苦工作的人是否获得了合理报酬呢?”这封信在黑客群体掀起轩然大波,并且在以后的自由软件和开源软件社区中一直被当作反面案例来宣传。但必须承认的是,比尔·盖茨看到了软件的巨大商业价值,也正是他的这一先于时代的洞见,让他引领微软成为世界第一的软件提供商,而他本人也因此获得巨大商业回报成为世界首富。

五 软件工程的发展

软件行业的兴起使得超大型软件密集型系统越来越多,软件也走向全球化。从上世纪六十年代到八十年代,软件工程随着软件行业的兴起而蓬勃发展,这段时间产生了几个重要的软件工程概念。

第一个是软件项目管理,弗雷德·布鲁克斯(Fred Brooks)将他所领导的IBM OS/360项目总结成了《人月神话》一书,书中提出了软件项目管理的一些理念和方法。其中最有名的是这一句:“如果一个软件项目进度已经落后,那么向这个项目中增加人手只会让进度更加落后。”这一观点也被称为“布鲁克斯法则”(Brooks’s law)。《人月神话》揭示了软件项目管理的复杂性,其核心是大型团队的沟通成本。不同于硬件,软件是通过软件抽象来解决业务问题,对于复杂的业务问题只能切分更多的软件任务,引入更多的开发人员,而更多的开发人员也意味着更多的沟通和管理成本。布鲁克斯后来又发表了一篇论文,名为《没有银弹》,他将这种通过软件抽象来解决业务问题的工作称为本质性工作(essential task),而其他将软件抽象转变成可以在机器上运行软件的工作称为附属性工作(accidental task),后者如编译、构建、测试等。在过去的几十年里,通过高级编程语言、分布式、云化等各种技术和工具一直在改进和提升的都是附属性工作,而本质性工作并未得到有效的改进。这是因为软件本身的固有属性决定的,布鲁克斯将其总结为复杂性、隐匿性和易变性。本质性工作大多发生在人们的脑中,这加剧了团队沟通的困难度。因而,布鲁克斯在论文中总结到:“在未来十年内,没有银弹,不会有任何技术或管理上的突破能使软件工程的生产力得到数十倍的提升。”

fred-brooks-mythical-man-month.jpeg

第二个是编程模式的发展,主要是结构化编程和面向对象编程的普及。当时虽然已经开始流行高级编程语言,但编程模式还大量沿用汇编语言思想的goto语句。艾兹格·迪杰斯特拉(Edsger Dijkstra)首先发表论文《goto语句有害论》,而后他与其他软件工程大师们提出了结构化编程模式,使用子程序、条件判断、循环语句来代替goto语句。同时期,面向对象程序设计的理念开始形成。到了七十年代,施乐公司PARC实验室推出Smalltalk编程语言,将面向对象的封装、多态和继承特性引入到编程语言中,而后,C++等语言的成熟将面向对象设计推成编程的主流。结构化编程和面向对象编程的发展提升了软件抽象能力,从某种意义上讲,这是对布鲁克斯所称的本质性工作效率提升的努力。

第三个是开发流程,这时期最有名的发明是瀑布软件开发模型。温斯顿·罗伊斯(Winston Royce)在1970年左右提出了瀑布模型这一软件开发流程,虽然瀑布模型在敏捷软件开发时代备受批评,但它的实际效用是非常明显的。瀑布模型将软件开发过程分为分析、设计、实现、验证、发布等阶段,每个阶段的输出是下个阶段的输入,像分段瀑布一样流转,因此得名。瀑布模型让软件开发过程的各种工作显性化,同时也明确了各项工作的输出件标准,对于大型软件项目来说,易于管理和规范。

六 自由软件与开源软件

比尔·盖茨意识到了软件的商业价值,软件也成为商业公司赚取利润的重要来源,软件不再将源码作为免费产品随硬件售卖附赠,而是编译成二进制发布包对外出售。软件源码不再附赠的情况让一位黑客大感失望,他就是理查德·斯托曼(Richard Stallman, RMS)。他认为信息自由分享的黑客时代传统不应该被抛弃,因此在1984年发起GNU项目,要创建一个完全自由而开放的操作系统来对抗商业封闭的UNIX. 而后他又成立自由软件基金会(Free Software Foundation, FSF),并创造了通用公共许可证(GNU General Public License, GPL)这一软件授权协议。GPL对软件行业的影响是深远的,因为它不仅规定了软件自由分发的权利,还规定了其义务,这也是被称为GPL具有“传染性”的原因。但“传染性”这一词偏负面,实际上GPL对软件自由分发起了至关重要的作用,一些著名的开源软件如Linux、Git都是以GPL协议分发的。

不过斯托曼对于自由软件的执着让他近乎偏执,自由软件社区因此分裂出一批期望更加融入商业社会的人,以埃里克·雷蒙德(Eric Raymond, ESR)为代表,在1998年创立了开放源码促进会(Open Source Initiative, OSI),以商业更友好的开源软件来取代意识形态更浓重的自由软件。雷蒙德在研究了一系列软件项目后,发布了开源软件开发的经典著作《大教堂与集市》,在书中他阐述了两种开发模式,一种是自上而下构建的、集中式的、由专人或专属团队所管控的软件开发方式,这种雷蒙德称为大教堂模式;另一种则是自下而上构建的、分布式的、在互联网上分发传阅的开放的软件开发方式,雷蒙德称之为集市模式。集市模式的代表是Linux项目。

Linux的诞生源于大学时代林纳斯·托瓦兹(Linus Torvalds)暑期的个人项目,他大学放假期间在家无聊,就写了Linux并发布到了互联网新闻组,没想到在黑客圈里广受欢迎,托瓦兹将它无偿开放出来,并广泛接纳社区开发者的代码提交。到了2005年,估计有近一万人给Linux贡献过代码,Linux也成了开源社区最大的项目。Linux项目代表了软件工程的另外一种模式,它没有企业项目那种自上而下的管理,通过互联网分布式协作来实现大型软件项目开发并管控质量。托瓦兹有句名言:“只要眼睛多,Bug容易捉。”(Given enough eyeballs, all bugs are shallow.)

七 万维网及敏捷软件开发

1990年,英国计算机科学家蒂姆·伯纳斯-李(Tim Berners-Lee)和他的工作伙伴罗伯特·卡里奥合作制定了一份计划书《万维网:一个超文本项目的计划书》(World Wide Web: Proposal for a Hyper Text Project),这个名叫万维网(World Wide Web, WWW)的系统将彻底改变计算机行业。互联网(Internet)可以追溯到上世纪六十年代的ARPANET,但一直到了万维网的出现才让它真正成为全球互联网。万维网可以理解为是互联网上的全球信息系统,很多人在概念里其实是将万维网与互联网等同了。在伯纳斯-李的设想中,万维网具备三项技术:全球唯一的统一资源标志符(Uniform Resource Locator, URL),超文本标记语言(HTML)和超文本传输协议(HTTP)。该年年底,伯纳斯-李在他的工作电脑上开发了第一个网页浏览器,实现了HTML解析和HTTP传输,值得一提的是,伯纳斯-李所使用的工作电脑正是乔布斯被赶出苹果后创办的新公司所生产的NeXT电脑。

伯纳斯-李所任职的欧洲核子研究组织希望为万维网申请专利,但伯纳斯-李坚持认为万维网的协议应该免费开放共享,毕竟他的设计初衷就是为了促进分享和协作。后来,欧洲核子研究组织同意了他的请求并采用了GPL协议开放源码。1993年,马克·安德森(Marc Andreessen)开发了第一款商业浏览器Mosaic,网站如雨后春笋般涌现,大型网站如AOL、雅虎等。紧接着,以博客、维基百科为代表的Web2.0开始兴起,用户创造内容让万维网上的数据急剧增加,传统的网站目录方式无法满足用户查找内容的需求,自动化搜索引擎将成为万维网内容的主要查找方式。这也就造了拉里·佩奇(Larry Page)和谢尔盖·布林(Sergey Brin)的Google,取代雅虎成为一代互联网霸主。

万维网的疾速发展使得互联网软件开发呈井喷之态,大量的互联网企业需要快速开发并上线软件应用,并且要根据用户的反馈及时修改以应对需求变化。这种变化使得传统的瀑布开发模式无法满足企业需求,一种新的开发模式应运而生。2001年,十七位软件开发人员在美国犹他州雪鸟滑雪地组织了一场会面,他们中有很多是软件工程大师,包括写作《重构》的马丁·福勒(Martin Fowler)。会上,他们发表了“敏捷软件开发宣言”(Manifesto for agile software development),这其中主要是四句话:“个体和交互胜过流程和工具,可以工作的软件胜过详尽的文档,客户合作胜过合同谈判,响应变化胜过遵循计划。”敏捷软件开发鼓励快速响应变化、迭代开发与变更,它包含了一系列实践,如Scrum、极限编程等。

八 云计算与DevOps

2003年,在亚马逊工作的安迪·杰西(Andy Jassy)发现在亚马逊孵化新业务的过程中,工程师总要把大量时间投入在重复的基础设施构建工作上。他敏锐地察觉到了这一内部机会,并给亚马逊创始人兼CEO贝索斯写了一份商业计划书,在该计划书中构想了亚马逊AWS(Amazon Web Services)云的未来。安迪·杰西带着一个小团队开启了内部创业之旅,2006年发布了云服务S3和EC2。AWS在亚马逊内部的重要性越来越高,2023年利润占亚马逊整个利润的一半多。安迪·杰西一直担任AWS CEO职位,一直到2021年接替贝索斯成为亚马逊CEO. 虽然说云计算这个词在上世纪末就已出现,但AWS是真正将云计算商业化成功的第一个产品。AWS的成功也让众多互联网头部厂商看到机会,谷歌云、微软Azure云等紧追不舍。云计算成为了互联网软件乃至整个IT软件的底座。

云计算的本质是资源弹性,云服务厂商将一个个计算资源连接起来构成一个巨大的资源池,而软件用户只需要租用计算资源,根据业务需要弹性扩缩容。支撑资源弹性的是软件的架构弹性,这种架构模式就是微服务。微服务架构是将庞大的单体结构程序拆分成松耦合的独立组件,以API方式调用,这种架构解耦可以追溯到GoF的《设计模式》和Robert C. Martin的《敏捷软件开发》。另外,GitHub的出现让开源软件更容易流传,开源组件成为构筑现代软件的基本模块,开发软件像是搭积木一样,通过胶水语言将开源组件组装,便可以快速构建业务软件,这种开发模式极大地提升了开发效率。加上云平台提供的软件应用部署能力,从软件开发到部署发布及运维,可以快速在云平台上闭环。这种软件开发模式也被称为云化软件开发。

云化软件开发的工程实践是DevOps,它强调的是开发与运维之间的沟通协作以及更小粒度地发布和更频繁地变更,可以理解为是敏捷软件开发的延伸。Git、依赖包管理、docker、CI/CD等现代化开发工具成为DevOps工程实践的核心:Git的分布式开发方法和版本管理践行软件项目的“Everything as Code”的理念,如基础设施代码化(IaC)、配置代码化、流水线代码化等,团队各角色基于代码协作。诸如Ruby Bundler、Maven、NPM等语言依赖包管理工具使得组件化开发更简单,特别是对于开源组件的引用,一个Node.js工程项目,引用几百甚至上千个开源组件是非常常见的现象,因此网上也有关于NPM依赖黑洞的段子。而Docker、K8s等容器工具降低了微服务开发的门槛,结合CI/CD工具自动化部署,降低运维成本。小结一下,DevOps云化软件开发工程工具实践的几个关键词是代码化、组件化/开源、容器化、自动化,其本质是为了更频繁地变更(发布新特性和修复问题),缩短交付周期。

npm-jokes.jpg

九 大模型时代的软件工程

前文提到,埃达·洛夫莱斯认为电脑不能思考,只会根据指令执行。一个世纪以后,图灵将她的主张写到自己的论文里,称为“洛夫莱斯夫人的异议”。这篇论文便是著名的人工智能奠基论文《计算机器与智能》(Computing Machinery and Intelligence),他在文中还提出了一个被后人称为“图灵测试”(Turing Test)的思想实验,在这个测试中,测试人与人和机器同时用文字交流,但他不知道背后谁是人或机器,如果在一段交流时间内无法通过交流内容来判断区分人和机器,那么就认为该机器通过了图灵测试,也就是说该机器具备与人类相当的智能。一个冷知识是:我们上网时经常被要求输入验证码的英文单词“Captcha”即是“完全自动通过图灵测试来区分计算机或人类”(Completely Automated Public Turing test to tell Computers and Humans Apart)的首字母缩写。图灵自己将此实验称为“模仿游戏”(The Imitation Game),关于他的传记和电影名称则取之于此。

历史上对人工智能的研究主要分成了两大阵营,一派推崇知识和推理逻辑,典型的如专家系统,被称为符号主义,也有称之为“GOFAI”(Good old fashioned artificial intelligence),这一派的发展如该词所言已经是old-fashioned了。还有一派通过模拟人类的大脑构建神经网络,将知识通过机器学习存储在大量的连接中,基于数据学习来发展人工智能,被称为连接主义,这一派的代表是神经网络系统。杰弗里·辛顿(Geoffrey Hinton)在神经网络领域潜心研究三十多年,开创了深度学习这一人工智能分支,而基于深度学习的大模型在近年来发展迅速,尤其在OpenAI的ChatGPT发布后成为全球最热门的技术。ChatGPT让人们看到了AGI(通用人工智能)的可能,它的AIGC能力可以帮助到人们将AI运用在实际的工作和生活中。关于神经网络和深度学习的历史和原理可以参见我的另外一篇文章《从神经网络到 Hugging Face》,这里我想就使用ChatGPT来辅助编码的案例实践来谈一谈我对大模型时代的软件工程的理解。

一个工程实践

问题的背景是:我想做一个类似Perplexity的智能搜索前端页面,但我不太懂前端开发,所了解仅HTML、CSS、JavaScript三项基本知识以及Next.js前端框架而已,因此我希望在ChatGPT(GPT4版本)的帮助下完成前端代码的编写。其中一个场景需求是,用户在输入问题点击搜索按钮后,页面上自动追加并显示答案文字。以下引用和代码部分为我与ChatGPT交流的原始记录,没有做改动。我不是Prompt Engineer,因此Prompt写得比较简陋。(这一段对话比较长,并且回答部分都由ChatGPT生成,不需要了解细节的读者可以快速略过直到“大模型是不是银弹”章节。)

我首先问ChatGPT:

现在你是一名Next.js专家,请帮我实现一段代码,在页面上点击button,在一个div区域内显示一段文字。

ChatGPT回答:

当然可以!下面是一个简单的Next.js页面示例,它实现了你的要求。这个示例中,我们将使用React的状态来控制点击按钮后在div区域显示的文本。

首先,你需要在你的Next.js项目中创建一个新的页面。假设我们将这个页面命名为showText.js,你可以在pages目录下创建这个文件。然后,将以下代码复制到showText.js文件中:

import React, { useState } from "react";

export default function ShowText() {
  // 使用React的useState钩子来管理文本的显示状态
  const [text, setText] = useState("");

  // 定义一个函数来处理按钮点击事件
  const handleClick = () => {
    // 设置要在div中显示的文本
    setText("这是我显示的文本!");
  };

  return (
    <div>
      <button onClick={handleClick}>点击我</button>
      <div>{text}</div>
    </div>
  );
}

这段代码的工作原理是:

使用useState钩子来创建一个名为text的状态变量,这个变量将用来存储在div区域显示的文本。

创建了一个handleClick函数,当按钮被点击时,这个函数会被触发。它通过调用setText函数更新text状态,从而改变div区域内显示的文本。

页面上有一个按钮和一个div元素。按钮的点击事件被设置为调用handleClick函数。当text状态改变时,div中的内容会相应更新显示新的文本。

你可以通过运行Next.js应用来查看效果:在你的项目目录中,使用npm run dev(或者如果你使用Yarn的话,就是yarn dev),然后在浏览器中访问对应的页面(通常是http://localhost:3000/showText,取决于你的文件名和配置)。点击按钮后,你应该能在页面上看到指定的文本显示出来。

ChatGPT不但生成了整段代码,还解释每个步骤,这样我可以理解并按照自己的期望修改里面的逻辑,再按照ChatGPT的调试指导步骤可以直接在本地开发环境中运行。

接着,我将需求更进一步描述:

我需要再显示复杂点,点击button后,div内显示三段文字,每一段延时200ms显示出来

ChatGPT紧接着给出一段:

为了实现点击按钮后在div内逐步显示三段文字,每段文字之间延时200毫秒,我们可以通过使用setTimeout函数来实现。下面是一个简化的实现方式:

首先,定义三段不同的文本作为要显示的内容。

当按钮被点击时,通过设置多个setTimeout,依次在不同的时间间隔后更新状态,从而控制文本的显示。

更新后的showText.js代码如下:

import React, { useState } from "react";

export default function ShowText() {
  const [texts, setTexts] = useState([]); // 使用数组来存储要显示的文本段落

  const handleClick = () => {
    // 清空文本,以防多次点击
    setTexts([]);

    // 定义三段文本
    const textSegments = ["第一段文本显示", "第二段文本显示", "第三段文本显示"];

    // 依次显示每段文本
    textSegments.forEach((segment, index) => {
      setTimeout(
        () => {
          // 更新状态以添加当前文本段落
          setTexts((prev) => [...prev, segment]);
        },
        200 * (index + 1),
      ); // 每段文本延时200ms显示
    });
  };

  return (
    <div>
      <button onClick={handleClick}>点击我</button>
      <div>
        {texts.map((text, index) => (
          <p key={index}>{text}</p> // 使用段落标签<p>来分隔文本段落
        ))}
      </div>
    </div>
  );
}

在这个实现中:

使用了一个数组texts来存储需要显示的文本段落。

每次按钮点击时,首先清空texts数组以重置显示内容。

通过forEach循环和setTimeout,计划在200毫秒、400毫秒、600毫秒后依次更新状态,添加对应的文本段落到texts数组中。

使用map函数在div中为texts数组中的每一段文本渲染一个<p>标签,以此来分隔显示的文本段落。

每次点击按钮时,你会看到三段文本依次出现,每段之间有200毫秒的延迟。

现代前端软件工程推荐强类型语言TypeScript,我让ChatGPT改成TypeScript:

这一段代码请用typescript写一下吧

ChatGPT马上就给我转成TypeScript:

将之前的例子转换为使用TypeScript的形式,主要变化是添加类型注解来增加代码的类型安全性。这不仅有助于防止类型相关的错误,还能提高开发效率,因为TypeScript提供的类型检查和自动完成特性。

下面是使用TypeScript重写的showText.tsx代码:

import React, { useState } from "react";

const ShowText: React.FC = () => {
  const [texts, setTexts] = useState<string[]>([]); // 明确指出texts是字符串数组

  const handleClick = (): void => {
    // 清空文本,以防多次点击
    setTexts([]);

    // 定义三段文本
    const textSegments: string[] = [
      "第一段文本显示",
      "第二段文本显示",
      "第三段文本显示",
    ];

    // 依次显示每段文本
    textSegments.forEach((segment, index) => {
      setTimeout(
        () => {
          // 更新状态以添加当前文本段落
          setTexts((prev) => [...prev, segment]);
        },
        200 * (index + 1),
      ); // 每段文本延时200ms显示
    });
  };

  return (
    <div>
      <button onClick={handleClick}>点击我</button>
      <div>
        {texts.map((text, index) => (
          <p key={index}>{text}</p> // 使用段落标签<p>来分隔文本段落
        ))}
      </div>
    </div>
  );
};

export default ShowText;

这里的主要变化包括:

使用React.FC来声明ShowText组件的类型。React.FCReact.FunctionComponent的缩写,它是一个泛型接口,用于类型化函数式组件。

useState<string[]>([])表明texts状态是一个字符串数组。

handleClick函数声明中使用: void来指明这个函数没有返回值。

使用TypeScript编写Next.js页面组件,可以让你在编译时就捕获到潜在的类型错误,提高代码质量和可维护性。

在我将这段代码复制粘贴后,遇到了编译错误:

编辑器提示报错 “Property ‘forEach’ does not exist on type ‘string | string[]’. Property ‘forEach’ does not exist on type ‘string’.”

让我惊讶的是ChatGPT非常自信的认为代码没有问题,而是给了我其他的debug思路:

这个错误表明TypeScript编译器不能确定textSegments变量在调用forEach方法时是一个数组。在你提供的上下文中,textSegments被明确声明为一个字符串数组(string[]),所以正常情况下不应该出现这个错误。错误信息“Property ‘forEach’ does not exist on type ‘string string[]’. Property ‘forEach’ does not exist on type ‘string’.”暗示在某处textSegments可能被推断为string | string[]类型,即它可能是一个字符串或字符串数组。

考虑到你的代码片段应该没有问题,这个错误可能是由于TypeScript或编辑器状态的某种混乱造成的。尝试以下方法可能会有所帮助:

1. 重启编辑器:有时编辑器或其TypeScript服务可能会进入异常状态,重启编辑器通常能解决这类问题。

2. 检查TypeScript版本:确保你的项目使用的TypeScript版本与编辑器的TypeScript服务版本一致。版本不匹配有时会导致奇怪的类型推断问题。

3. 检查其他代码:确保没有其他地方对textSegments进行修改,使其类型可能被推断为string | string[]。特别是在大型项目中,变量名重复或错误的类型声明可能导致难以发现的错误。

4. 显式声明类型:尽管你已经显式声明了textSegmentsstring[],考虑在调用forEach之前再次确认其类型,虽然这种情况下似乎多余。这可以通过类型断言实现,例如:

(textSegments as string[]).forEach((segment, index) => {
  // ...
});

如果上述步骤仍然不能解决问题,那么可能需要更详细地审查项目的配置和代码上下文。确保tsconfig.json中的配置正确无误,且没有其他可能干扰类型推断的因素。此外,尝试在命令行运行tsc来看是否TypeScript编译器也报相同的错误,这有助于确定问题是由编辑器引起的还是由TypeScript配置引起的。

我发现果然是因为ChatGPT所说的第3点原因,我在拷贝代码时并没有给textSegments 声明类型。不过很快我又遇到了新问题:

另外报错: Argument of type ‘(prev: never[]) => string[]’ is not assignable to parameter of type ‘SetStateAction<never[]>’. Type ‘(prev: never[]) => string[]’ is not assignable to type ‘(prevState: never[]) => never[]’. Type ‘string[]’ is not assignable to type ‘never[]’. Type ‘string’ is not assignable to type ‘never’.

ChatGPT又给了解法:

这个错误提示表明TypeScript无法正确推断setTexts更新函数中回调的返回类型。具体来说,当你尝试使用函数形式的setState更新状态时,TypeScript认为这个回调函数应该返回一个never[]类型,这通常意味着它不能正确推断状态的初始类型。这个问题往往出现在状态的初始值设置或类型注解方面。

错误中提到的never[]类型表示一个数组,但它的元素类型为never,即TypeScript认为这个数组不应该包含任何元素。当你尝试向这样的数组中添加字符串时,会出现类型不匹配的错误,因为string[]不是never[]的子类型。

解决方案

问题的根源在于useState的类型推断。当你使用useState时,如果你没有明确指定状态的类型,并且给定的初始值让TypeScript无法正确推断出来,就可能导致这种情况。在你的例子中,显然TypeScript没有从初始值(空数组[])中推断出正确的类型。

为了解决这个问题,你需要在使用useState时明确指定状态的类型。看看下面的代码,特别注意useState<string[]>([])这一行:

import React, { useState } from "react";

const ShowText: React.FC = () => {
  // 明确指定useState的类型为string[]
  const [texts, setTexts] = useState<string[]>([]);

  const handleClick = (): void => {
    setTexts([]);

    const textSegments: string[] = [
      "第一段文本显示",
      "第二段文本显示",
      "第三段文本显示",
    ];

    textSegments.forEach((segment, index) => {
      setTimeout(
        () => {
          setTexts((prev) => [...prev, segment]);
        },
        200 * (index + 1),
      );
    });
  };

  return (
    <div>
      <button onClick={handleClick}>点击我</button>
      <div>
        {texts.map((text, index) => (
          <p key={index}>{text}</p>
        ))}
      </div>
    </div>
  );
};

export default ShowText;

在这个例子中,通过使用useState<string[]>([]),我们明确告诉TypeScript状态texts是一个字符串数组。这样,当你更新状态时,TypeScript知道你是在向字符串数组中添加元素,而不会尝试将其推断为never[]类型。

确保在使用useState时始终提供足够的类型信息,特别是当状态的初始值可能让TypeScript感到困惑时。这不仅可以避免此类错误,还可以提高代码的可读性和可维护性。

ChatGPT特别贴心的指出,让我特别注意useState<string[]>([])这一行,我检查了代码,发现问题确实就出在这里。经过几轮对话,ChatGPT帮助我实现了需求并Debug代码,最后顺利运行成功。(整个项目的源码开放在GitHub上:hutusi/fellini ,欢迎Star。)

虽然此前我也有使用GitHub Copilot来做补全代码等工作,但没有像这次使用ChatGPT来实现一个完整需求的感觉惊艳。我也曾使用ChatGPT写过文案,甚至写过格律诗,但都不太满意,而此次使用ChatGPT来写代码却完全超出我的预期。它除了能够生成可以运行的代码,还能够准确识别我的意图,解释每段代码的含义,并且提醒我注意可能出错的代码行。不过,上面的例子还只是一个需求的片段,GitHub CEO 在去年5月Web Summit上演示18分钟借助GitHub Copilot X来编写一个贪吃蛇小游戏的例子会让人更加惊叹GPT的能力。这也让人们看到了软件工程的一个可能的发展方向。

十 大模型是不是银弹?

纵观整个软件工程历史,虽然软件的概念早于计算机出现,但真正的软件产业是跟随计算机硬件其后发展出来的。计算机硬件能力发展速度非常快,这一规律被总结成了“摩尔定律”,即芯片的性能每18个月会提升一倍。但软件的能力却不会有这么快速的发展,不但如此,还因为业务需求不断变化而导致软件复杂度急剧增加,软件的复杂性吞噬了硬件的性能。以至于另外一个定律应运而生——安迪-比尔定律:安迪给的,比尔就会拿走。安迪是时任英特尔CEO安迪·格鲁夫,比尔是微软创始人比尔·盖茨。也就是说“摩尔定律”揭示下的芯片提升的性能最终又被软件吃掉了。

究其原因,是软件固有属性——复杂性决定的,软件的复杂性体现在其不可见性、可变性等,这导致软件项目的质量、成本、进度都很难控制,软件工程正是为了解决这些问题而生。通俗来讲,软件工程的目的就是希望用更低的成本、更可控的周期来交付更符合用户期望的软件。瀑布开发模式或者说V模型,其明确分工协作、确定各阶段交付标准是为了使得软件项目进度可控、软件质量可控;而敏捷软件开发也是为了使软件项目通过快速迭代、响应变化来命中用户需求,符合用户期望。DevOps、CI/CD、自动化测试等工具带来了软件构建效率的提升,使得代码可以更快的编译交付上线,而开发人员也可以得到更快的质量反馈。从大型机到个人电脑,从互联网到云计算,软件工程也会随着计算机产业的变化而更新改进,以契合软件行业的发展。不过,弗雷德·布鲁克斯在《没有银弹》中认为,这些改进都属于对软件附属性工作的改进,软件的本质性工作并没有得到真正的改进,这些本质性工作是抽象成计算机可理解的软件所做的工作,大多发生在开发人员的脑子里。而依据布鲁克斯的观点(该文写于1986年),过去几十年乃至未来十年,没有一项技术或方法能大幅减少本质性工作,这也就意味着软件工程生产力不能得到实质性的提升。

不过我认为,在过去的软件工程实践里,有两项技术在软件本质性工作上做出了较大贡献,一项是高级编程语言,一项是可复用的软件对象设计(如设计模式、开源组件),虽然这两者布鲁克斯在文中并不认同。高级编程语言(如面向对象语言)拉近了实际业务与软件抽象的距离,使得开发人员可以使用更符合人类思维的编程语言来与计算机交流,不过我同意布鲁克斯的观点:高级语言对于某些(不擅长抽象的)用户在某种程度上增加了脑力劳动的负担。可复用的软件对象从某种意义上讲节省了可能的软件开发工作。

布鲁克斯还认为人工智能也不能给软件生产力带来数量级的增长,他在文中所说的人工智能是指专家系统,而专家系统也因为其规则和推理无法支撑复杂场景的增长在上世纪八十年代后逐渐式微,引领现代人工智能方向的是深度学习神经网络,现今就是以GPT为代表的大模型。布鲁克斯于2022年去世,不知道如果他看到ChatGPT等大模型应用在软件工程会做如何判断。但从目前业界的共识看,大模型技术将改变软件工程和整个软件行业。

有人将此称为“软件工程3.0”,我不太认可这种说法,因为所谓的“软件工程2.0”(敏捷、DevOps)也只是对传统软件开发模式的迭代改进。我更愿意称大模型前的软件工程为“传统软件工程”,而大模型后的软件工程为“智能软件工程”。在智能软件工程时代,大模型应用可以帮助用户直接将需求转换为代码,这就省去了中间的分析、设计、编码、调试等环节。(当然,对于一些复杂的需求,目前的一些大模型应用可能需要用户做需求的分解,包括提供更详细的上下文,以便于大模型理解用户意图。)分析、设计、编码、调试等环节是基于传统开发模式的任务分工,大模型不需要这样的分工。我们甚至可以把大模型理解为一个承接外包任务的智能全栈工程师,用户只需要给大模型下发任务,而大模型外包公司则负责将任务完成并交付可运行的软件代码(包括测试用例集)。

因此,我觉得在设计软件开发的大模型应用时,基于现有工具延伸、优化用户交互模式都不是首要考虑的因素,而是看两个方面。一是从第一性原理看,该应用是不是瞄准了软件最本质的产品——代码。二是从布鲁克斯的理论看,该应用是不是在解决软件开发的本质性工作。从布鲁克斯发表《没有银弹》以降,没有人或技术敢声称是银弹,敏捷流行的时期最常见的文章是《敏捷不是银弹》,其他如DevOps、微服务等技术出现时都如是说,因为学习或经历过历史的人都知道软件的根本问题其实是人的问题。但大模型的AI时代正在来临,我大胆预测大模型是软件开发的银弹,这颗银弹从先锋大厦(OpenAI总部所在地)射出,飞过福尔松大街,飞过太平洋。

十一 后记

在写作本文时,我正巧看到GitHub CEO Thomas Dohmke前不久在TED上发表的演讲,名为With AI, Anyone Can Be a Coder Now。他预测到2030年,GitHub上的软件开发者将从目前的1亿增加到超过10亿,也就是说全球超过10%的人都能够编写软件。因为在像GitHub Copilot这种大模型应用的帮助下,编写软件将变得像骑自行车一样容易。主持人问:既然AI这么强而且还在加速增强,那人类还需要参与软件开发其中吗?Thomas的回答是:这就是为什么我们给产品起名为“Copilot”(副驾驶员)的原因,因为还需要“Pilot”(驾驶员)。我们需要有创造力的Pilot决定做什么。

这个问题可能很多人有不同的看法,我想到最近看的一本哲学小书《苏菲的世界》。主人公苏菲在一位导师的引导下学习哲学史,苏菲(Sophie)在希腊语中即“智慧”之意,而哲学(Philosophy)即“爱智慧”。苏菲在学习“智慧”的过程中成长,但到最后她和导师意识到自己不过是一位上校写给女儿的书中的角色而已。她们决定逃出书本,融入到现实中的女孩的世界。

附 参考资料

书籍

《创新者》沃尔特·艾萨克森【著】,中信出版社,2017 (英文原版 The Innovators, Walter Isaacson, Simon & Schuster, 2015)

《睡鼠说:个人电脑之迷幻往事》 约翰·马科夫【著】,黄园园【译】,电子工业出版社,2015

《智慧的疆界:从图灵机到人工智能》 周志明【著】,机械工业出版社,2018

《人月神话》 弗雷德·布鲁克斯 【著】,汪颖【译】,清华大学出版社,2002

《设计模式:可复用软件面向对象软件的基础》 GoF【著】, 机械工业出版社, 2000

《敏捷软件开发:原则、模式与实践》Robert C. Martin【著】, 清华大学出版社,2003

《大教堂与集市》埃里克·雷蒙德【著】,卫剑钒【译】,机械工业出版社,2014

《科学:无尽的前沿》万尼瓦尔·布什【著】,崔传刚【译】,中信出版社,2021

《苏菲的世界》乔斯坦·贾德【著】,萧宝森【译】,作家出版社,2007

论文、演讲及文章等

The History of Software Engineering, Grady Booch, IEEE Software, 2018

《诚如所思》万尼瓦尔·布什 (As We May Think, Vannevar Bush) , 1945

《没有银弹:软件工程的本质性与附属性工作》弗雷德·布鲁克斯 (No Silver Bullet—Essence and Accidents of Software Engineering, Fred Brooks), 1986

《致电脑爱好者的一封信》比尔·盖茨 (An Open Letter to Hobbyists, Bill Gates), 1976

Building an app in 18 minutes with GitHub Copilot X, Thomas Dohmke, Web Summit Rio, 2023

With AI, Anyone Can Be a Coder Now, Thomas Dohmke, TED, 2024

《看不见的大猩猩——智能时代的企业生存和发展之路》 韦青(微软中国 首席技术官),QCon Being Keynote, 2024

《从神经网络到 Hugging Face》 胡涂说 hutusi.com, 2024

《改变世界的一次代码提交》 胡涂说 hutusi.com, 2020

《自由的代价》 胡涂说 hutusi.com, 2015

从神经网络到 Hugging Face

作者 hutusi
2024年3月17日 18:43

TL;DR 本文8200+字,全文阅读约需15分钟。从去年开始,我读了十余本人工智能方面入门的书籍(参见文末附2),酝酿了两个月,花了两周时间写作此文。本文简要回顾了从感知机到深度学习及Hugging Face的历史,并试图以通俗的语言来介绍神经网络和深度学习的原理。

生活中没有什么可怕的东西,只有需要理解的东西。

—— 居里夫人

一 深度信念网络

2006年,加拿大多伦多大学教授杰弗里·辛顿在研究如何训练多层神经网络,他已经在神经网络领域默默耕耘了三十多年,尽管在这个领域他算得上是泰斗级的人物,但由于神经网络在人工智能行业一直不被看好,所以他的研究成果一直不为业界所重视。

辛顿出生于英国伦敦,他的家族出过不少知名学者,创立布尔代数的逻辑学家乔治·布尔便是他的曾曾祖父。他的祖父是位科普作家,父亲是昆虫学家。辛顿比周围的人都要聪明,但他的求学之路却颇为曲折,先是在大学攻读建筑学,转而又选择物理学,后又改读哲学,最后以心理学学士身份毕业。1972年辛顿进入爱丁堡大学攻读博士学位,研究方向是神经网络。彼时神经网络被业界所鄙夷,连辛顿的导师也认为这玩意没什么实际用途,也没有前途可言。但辛顿却不为所动,对神经网络研究怀有信心,坚持认为能够证明神经网络的价值,这一坚持就是三十多年。

geoffery-hinton.jpg

辛顿年轻的时候有一次搬移取暖器,腰椎间盘滑脱了,此后便一直饱受腰背病痛问题的困扰。近年来,问题更严重了,大多数时候,他需要平躺着以缓解疼痛,这意味着他不能开车,也不能坐飞机,甚至在实验室里会见学生时,也要平躺在办公室的折叠床上。身体上疼痛的折磨带给辛顿的打击还不如学术研究被冷漠那么大。早在1969年,明斯基在《感知机》一书中就对多层感知机下了定论,给后来的神经网络研究盖戳:“多层感知机不会有发展前景,因为世界上没人可以将多层感知机训练得足够好,哪怕是令它可以学会最简单的函数方法。” 单层感知机能力有限,连“异或”这种基础的分类问题也实现不了,而多层感知机又没有可用的训练方法,等于说神经网络的研究方向是死路一条。神经网络在业界被认为是学术异端,没有人相信它可以成功,因此一般学生在选择导师的时候都谨慎绕开神经网络,一时间辛顿甚至都招不满研究生。

1983年,辛顿发明玻尔兹曼机,后来,简化后的受限玻尔兹曼机被应用于机器学习,成为深度神经网络的层级结构基础。1986年,辛顿提出适用于多层感知机的误差反向传播算法(BP),这一算法奠定了后来深度学习的基础。辛顿每隔一段时间都能发明出新东西,而他也坚持写了两百多篇神经网络相关的论文,尽管这些论文不被待见。到了2006年,辛顿已经积累了丰富的理论和实践基础,而这一次,他发表的论文将改变整个机器学习乃至整个世界。

辛顿发现,拥有多个隐藏层的神经网络能够具有自动提取特征学习的能力,相比传统的手工提取特征的机器学习更有效果。另外,通过逐层预训练的方式可以降低多层神经网络的训练难度,而这解决了长期以来多层神经网络训练的难题。辛顿将他的研究成果发表在两篇论文中,而当时神经网络一词被许多学术期刊编辑所排斥,有些稿件的标题甚至因为包含“神经网络”就会被退回。为了不刺激这些人的敏感神经,辛顿取了个新名字,将该模型命名为“深度信念网络”(Deep Belief Network)。

二 感知机

其实神经网络的研究可以追溯到上世纪四十年代。1940年,17岁的沃尔特·皮茨在伊利诺伊大学芝加哥分校结识了42岁的教授沃伦·麦卡洛克,一见如故,便加入了后者的研究项目:尝试用神经元网络建立一个在逻辑运算基础上的机械性的大脑思维模型。他们用逻辑运算来抽象人类大脑的思维模型,提出了“神经网络”(Neural Network)这一概念,而神经元是神经网络中的最小信息处理单元;并且他们将神经元的工作过程抽象简化成一个非常简单的逻辑运算模型,后来这个模型被命名为“M-P神经元模型”,以他们两姓名的首字母来命名。

在这个模型中,一个神经元会接受过个来自于其他神经元传递过来的输入信号,不同的输入信号的重要性有差异,这种差异就通过连接上的“权重”(weight)大小来表示,该神经元将所有输入值按照权重加权求和,再将结果跟神经元的“激发阈值”(Threshold)进行比较,以决定是否对外输出信号。

m-p-model.png

“M-P模型”足够简单直接,而且可以通过符号逻辑来模拟实现,人工智能专家以该模型为基础,构建了神经网络模型,用来解决机器学习任务。这里简单说明下人工智能、机器学习和深度学习的关系:人工智能就是使用计算机技术来实现人类智能的技术,在一般教材定义为研究与构建智能体。智能体就是 Intelligent agent,或简称 agent,它通过模仿人类思维和认知来解决特定任务或通用任务,解决特性任务的智能体被称为弱人工智能,或狭义人工智能(ANI),而解决通用任务的智能体被称为强人工智能,或通用人工智能(AGI)。机器学习是人工智能的一个分支,它通过数据进行学习并改进系统。而深度学习则又是机器学习的一个分支,它使用神经网络技术进行机器学习。

1957年,康奈尔大学心理学教授罗森布拉特在IBM计算机上模拟实现了一个神经网络模型,他称之为“感知机”(Perceptron)。他的做法是将一组M-P模型神经元组合在一起,可以用来训练并完成一些机器视觉模式识别方面的任务。一般来说,机器学习有两种任务:分类和回归。分类问题是判断数据是哪一类的问题,比如识别图像是猫还是狗;而回归问题是根据一个数据预测另一个数据的问题,比如根据人的图像预测其体重。感知机解决的是线性分类问题。以《智慧的疆界》书中对感知机工作原理的举例来解释:

假设任务目标是自动识别阿拉伯数字,待识别的数字是将手写或印刷的各种形式的数字,将数字通过扫描后存储在14*14像素大小的图片文件中。首先,要准备类似下图的训练集供机器学习用。训练集即训练数据集,是专门提供给计算机学习使用的数据集,它不仅是一组图片之类的数据,还会由人工事先标注告诉机器这些图片数据代表的数字是什么。

numbers-datasets.jpeg

然后,我们要设计一种数据结构,以便机器可以存储并处理这些图片。对于14*14的灰度数字图片,可以将黑色像素用1来表示,白色像素用0表示,介于黑白间的灰度像素根据其灰度强度用0-1间的浮点数表示。如下图所示对该图可以转换成一个二维张量数组:

number1-represent.jpeg

而机器能够识别出图片中的数字是什么,主要是找到了该图片表示某个数字的特征。对于人类来说,对于识别这些手写体数字很容易,但我们很难解释这些特征是什么。机器学习的目标就是要提取出这些训练集中图片表示数字的特征,根据M-P模型,提取特征的方法就是选择对图片各个像素值进行加权求和,根据训练集中的样本图片和标注数据的对应结果来计算每个像素对应各数字的权值:如果某一个像素具有很负面的证据说明该图片不属于某个数字的话,就把该像素对应该数字的权值设置成负数,相反如果一个像素具有很正面的证据说明该图片属于某个数字,那么该像素对应该数字的权值设置成正值。比如对于数字“0”的图片中间点的像素不应该有黑色(1)像素,如果出现了则表明该图片属于数字0为负面证据,就降低该图片是数字0的概率。这样,经过对数据集的训练和校准,就可以得到14*14(=196)每个像素对应0-9各数字的权重分布。

我们再将每个数字的分类过程转换成一个M-P神经元,每个神经元都有196个像素输入,每个输入与该神经元之间的权重值由训练得到,这样就构成了一个10个神经元、196个输入以及它们之间1960个带权重的连接线组成的神经网络,如下图示:(一般在神经网络中,会将阈值转换成偏置bias,称为求和项的一项,简化运算过程。)

perceptron-1.png

不过,在实际情况中,有些手写字体存在模棱两可的情况,可能会导致加权求和后,出现两个或两个以上的神经元被激活。因此感知机在实现时引入了激活函数的设计,如下图中的Softmax就是一种激活函数,该函数会对求和值进行处理,抑制概率小的、增强概率大的数字分类。

perceptron-2.png

罗森布拉特又在两年后制造了世界第一台硬件感知机”Mark-1”,该感知机可以识别英文字母,在当时可是引起了巨大轰动。美国国防部和海军军方也注意到了,并给与了大量的资金支撑,罗森布拉特对感知机的自信也达到顶点,甚至有记者问“有没有感知机做不到的事情”,罗森布拉特的回答是“爱、希望、绝望”。罗森布拉特的名气越来越大,而张扬的性格也导致他四处树敌,其中最有名的是人工智能的另一位巨头马文·明斯基。明斯基是达特茅斯会议的组织者,也是人工智能的奠基者之一。1969年,他出版了《感知机》一书,该书明确指出了感知机存在的缺陷。首先是通过数学方法证明了感知机无法处理异或等非线性分类问题,而后又证明了多层感知机的复杂度导致连接数据急剧膨胀而没有合适的训练方法。明斯基在该书出版当年获得了第四届图灵奖,巨大的声望让他对感知机的判断给神经网络研究判了死刑。连接主义备受打击,而符号主义的研究则成为人工智能的主流。

人工智能领域有两大流派:连接主义和符号主义,有点像武侠小说中的剑宗和气宗,长期以来一直互相竞争。连接主义通过模拟人类的大脑构建神经网络,将知识存储在大量的连接中,基于数据学习来发展人工智能。而符号主义则是认为知识和推理都应该用符号和规则来表示,即大量的“if-then”规则定义,来产生决策和推理,基于规则和逻辑来发展人工智能。前者的代表是神经网络,后者的代表是专家系统。

三 深度学习

随着感知机的失败,政府对人工智能领域的投入减少,人工智能进入了第一次寒冬期。而到了八十年代,以专家系统为代表的符号主义成为人工智能的主流,引发了人工智能的第二波浪潮,而神经网络研究被冷落。前文说到,只有一个人还在坚持,那就是杰弗里·辛顿。

辛顿在前人的基础上,先后发明了玻尔兹曼机和误差反向传播算法,辛顿在神经网络领域的开创贡献给这个领域带来了生机,虽然从上世纪八十年代到本世纪初人工智能领域的主流仍然是知识库和统计分析,神经网络的各项技术也开始突破,其中代表性的如卷积神经网络(CNN)、长短期记忆网络(LSTM)等。到了2006年,辛顿提出深度信念网络,开启了深度学习时代。

深度学习所对应的神经网络模型称为深度神经网络,这是相对浅层神经网络而言的。对于浅层神经网络而言,一般只有一个隐藏层(或称中间层),加上输入层和输出层,一共就三层。而深度神经网络的隐藏层则不止一层,对比两种神经网络:

ndnn-dnn-compare.png

深度学习之前人们一直聚焦于浅层神经网络的原因是神经网络层数的增加会导致训练难度增加,一方面缺乏足够的算力支撑,另一方面也没有很好的算法。而辛顿提出的深度信念网络则使用误差反向传播算法并通过逐层预训练的方式来解决这一训练难题。在深度信念网络之后,深度神经网络成为机器学习的主流模型,当前热门的GPT、Llama等大模型都是由一种或多种深度神经网络构建而成。

对于深度神经网络的理解可以参考上文感知机原理的介绍,将深度神经网络看成是多层多个神经元的组合,由前文可以了解,每一层输出结果跟权重、偏置和激活函数有关,而对于深度神经网络的输出还跟层数等数值相关。在深度神经网络中,这些数值可以分为两类,一类是层数、激活函数、优化器等,称为超参数(hyperparameter),它由工程师设定;另一类是权重和偏置,称为参数(parameter),它是在深度神经网络训练过程中自动得到的,寻找到合适的参数就是深度学习的目的。

deep-learning-1.png

但问题是,一个深度神经网络包含了海量的参数,而且修改一个参数将影响其他的参数行为,因此如何找到这些参数的正确取值是个难事。我们要找出参数正确取值,并让模型能够准确输出,那就需要有一个方法能够衡量模型输出与期望输出的差距。因此深度学习训练中使用损失函数(loss function)来衡量,损失函数也被称为目标函数或代价函数。损失函数通过比较深度神经网络的预测值与真实目标值,得到损失值,来表示该神经网络模型在这个训练样本上的效果好坏。

deep-learning-2.png

深度学习的方法是将损失值作为反馈信号,来对参数进行微调,以降低当前样本训练的损失值。实现这种调节的便是优化器,它来实现如梯度下降等优化算法,通过反向传播方式来更新各层神经元节点的参数。

deep-learning-3.png

一开始会对神经网络的参数进行随机赋值,输入一批训练数据,经输入层、隐藏层到输出层,得到网络的预测输出后,根据损失函数计算损失值,这是前向传播过程;然后从输出层开始,反向沿着每一层计算参数的梯度,直到输入层,并根据梯度使用优化算法更新网络的参数,这是反向传播过程。神经网络每处理一批训练样本,参数都会向正确的方向微调,损失值也会减小,这就是训练循环。训练循环足够次数,就可以得到使损失函数最小化的参数,这样就可以得到一个好的神经网络模型。

当然,实际的深度学习过程比这个要复杂得多,这里只是简要介绍下大概过程。

2012年时,辛顿带领他的两名学生 Alex Krizhevsky 和 Ilya Sutskever,开发了AlexNet 神经网络,参加 ImageNet 图像识别大赛,结果获得冠军,准确率远远高出第二名。随后辛顿和他的学生成立了DNNResearch公司,专注于深度神经网络的研究。这家公司没有任何产品或资产,但 AlexNet 的成功吸引了几大互联网巨头。2012年冬天,在美国加州和内华达州交界的太浩湖边,一场秘密的竞拍正在进行:被拍卖的对象是刚成立不久的DNNResearch,买家分别是谷歌、微软、DeepMind和百度。最后在谷歌和百度还在竞相抬价时,辛顿叫停了拍卖,选择以4400万美元卖给谷歌。2014年,谷歌又将DeepMind收入囊中。2016年,采用经典蒙特卡洛树搜索和深度神经网络结合的AlphaGo战胜了李世石,次年,又战胜了世界围棋排名第一的柯洁,AlphaGo将人工智能和深度学习推向了一个新的高潮。

四 大模型

2015年,马斯克、Stripe的CTO Greg Brockman、YC创投CEO Sam Altman 和 Ilya Sutskever等人在加州的Resewood酒店里会面,商议创建一家人工智能实验室,以对抗大型互联网公司对人工智能技术的控制。接下来,Greg Brockman 又从谷歌、微软等公司邀请来一批研究人员,成立新的实验室,并命名为OpenAI。Greg Brockman、Sam Altman 和 Ilya Sutskever 分别担任 OpenAI的董事长、CEO 和 首席科学家。

马斯克和 Sam Altman 对 OpenAI 最初的设想是非营利组织,将人工智能技术面向所有人开放,以此对抗大型互联网公司控制人工智能技术而带来的危险性。因为深度学习人工智能技术正在爆炸式的发展,谁也预料不到这项技术在未来会不会形成对人类的威胁,而开放可能是最好的应对方式。而后来2019年OpenAI为了融资发展技术而选择成立盈利子公司,并闭源其核心技术,这是后话。

2017年,谷歌的工程师发表了一篇论文,名为《Attention is all you need》,在这篇论文中提出了 Transformer 神经网络架构,该架构的特点是将人类的注意力机制引入到了神经网络中。前文说到的图像识别是深度学习中的一种场景,图像数据是离散数据,之间没有关联。而现实生活中还有另外一种场景,就是处理时序型数据,比如文本,文字的上下文是有关联的,还有语音、视频等,都是时序型数据。这种时序型数据叫序列(sequence),并且实际任务中往往是将一个序列转换成另外一个序列,比如翻译,将一段中文翻译成一段英文,还有机器人问答,将一段问题转换成一段智能生成的回答,因此要用到转换器(Transformer),这也是Transformer 名称的由来。前文说到,一个神经元的激发是由它连接的输入数据加权和决定的,权重代表了连接的强度。在时序数据中,每个元素的权重也是不一样的,这跟我们日常生活的经验是一致的,比如看下面这段话:

研表究明,汉字的序顺并不定一能影阅响读,比如当你完看这句话后,才发这现里的字全是都乱的。

不仅是汉字,英语等其他人类语言同样如此。这是因为我们的大脑会自动判断句子里字词的权重,在冗杂的信息里抓中重点,这就是注意力Attention。谷歌工程师将注意力机制引入到神经网络模型中,用于自然语言处理,使得机器可以“理解”人类语言的意图。随后2018年,OpenAI基于Transformer架构发布了GPT-1,2019年发布GPT-2,2020年发布GPT-3,2022年底基于GPT-3.5发布了ChatGPT人工智能问答程序,它的对话能力让人震惊,人工智能也向着AGI方向迈进了一大步。

GPT全称是 Generative Pre-trained Transformer, Generative 生成式表明它的能力,能够生成新内容,Transformer 是它的基础架构,而中间的 Pre-trained 表明它的训练方式是预训练。为什么叫预训练呢?这是因为,从AlexNet开始,人们为了取得更好的效果,在神经网络训练中开始采用更大的数据和更多的参数,而这也意味着训练的资源和耗时也越来越大。这种成本对于训练特定任务有些高,且不能与其他神经网络共享,有些浪费。因此,业界开始采用一种预训练+微调的方式来训练神经网络模型,即先在较大的数据集上完成通用大模型的训练,然后在具体的任务场景用较小的数据集完成模型微调。ChatGPT采用了基于人类反馈的强化学习(Reinforcement learning from human feedback, RLHF)来进行预训练微调,分成三个步骤:第一步,预训练一个语言模型(LM);第二步,收集问答数据并训练一个奖励模型(Reward Model,RM);第三步,用强化学习(RL)方式微调语言模型(LM)。这个奖励模型包含了人工反馈,因此训练过程称为RLHF。

chatgpt-training-steps.jpeg

用户在使用ChatGPT过程中,除了赞叹它的准确度外,还被多轮对话的能力所折服。根据神经网络的底层探析,我们看到每次推理过程是从输入经各神经元加权和激活到输出,是没有记忆能力的。而ChatGPT之所以多轮对话效果好,是因为它在对话管理中使用了Prompt Engineering的技术。

对于ChatGPT等大语言模型来说,它的输入是经过将一串文字转换的token,而大模型因为计算效率和内存限制,一般会设计固定的上下文窗口,限制输入token的数量。文本首先会被分词器(tokenizer)分词,并通过查表编号,然后embedding到矩阵中变成高维空间向量,这是文本向量化的过程,如下图所示。

tokenization-embeding.webp

由于token数的限制,因此要在有限的上下文窗口中将更全面的信息告诉大模型,就这需要用到Prompt Engineering提示工程技术。提示工程利用一些策略来优化模型输入,以便让模型产生更符合期望的输出。

ChatGPT的成功背后是以GPT为代表的大模型的技术演进,OpenAI相信大力出奇迹,不断扩大GPT的参数,GPT-1模型参数有1.17亿,GPT-2模型参数提高到了15亿,GPT-3达到了1750亿,而GPT-4的模型参数据称有1.8万亿。更多的模型参数也就意味着需要更大的算力来支持训练,OpenAI因此总结了“Scaling Law”,称模型的性能与模型大小、数据量和计算资源有关,简单的说就是,模型越大、数据量越大、计算资源越大,模型的性能就越好。强化学习之父Rich Sutton在他的文章《苦涩的教训》(the Bitter Lesson)中也表达了类似的观点,他回顾人工智能近几十年的发展路程,总结说短期内人们总是试图通过构建知识来提升智能体的性能,但长期看强大的算力才是王道。

大模型的能力也由量变转为质变,谷歌首席科学家Jeff Dean称它为大模型的“涌现能力”(Emergent abilities)。市场看到了这个机会,一方面,各大厂商在大模型投资上呈现军备竞赛之态,另一方面,大模型的开源生态也如火如荼。

五 Hugging Face

2016年,法国人Clément Delangue、Julien Chaumond和Thomas Wolf成立了一家公司,起名为Hugging Face,并以该emoji图标为公司Logo. Hugging Face最初开发面向年轻人的智能聊天机器人,而后他们在训练模型的过程中开发了些模型训练工具并将它们开源,后来他们甚至调转重心来做后者,这种看似“不务正业”的做法却将他们带入了一个新的赛道,成为了深度学习领域不可或缺的角色。

硅谷有很多企业都是在副业上做出成就,比如Slack原来开发游戏,公司团队分布多地,在运作过程中开发了一款交流工具结果不小心火了,就是Slack。而Hugging Face的转向也类似,也是为了解决自己的痛点,2018年,谷歌发布了大模型BERT,而Hugging Face的员工便用了他们熟悉的Pytorch框架实现了BERT,将模型取名为pytorch-pretrained-bert,并将它开源到了GitHub。后来在社区的帮助下,又引入了GPT、GPT-2、Transformer-XL等一批模型,该项目便更名为pytorch-transformers。深度学习领域一直存在着两大框架Pytorch和TensorFlow之间的竞争,而研究人员为了比较两个框架的优劣,经常在两个框架间切换,因此该开源项目又增加了两个框架间的切换功能,项目名称也改成了Transformers。Transformers也成了GitHub上增长最快的项目。

Hugging Face继续开发了并开源了其他一系列的机器学习工具:Datasets、Tokenizer、Diffusers……这些工具也规范了AI开发的流程,在Hugging Face之前,可以说AI开发以研究人员为主,没有一套规范的工程化方法,Hugging Face则提供了完善的AI工具集并建立了一套事实标准,也使得更多的AI开发者甚至是非AI从业者可以快速上手并训练模型。

huggingface.png

接着,Hugging Face又基于Git和Git LFS技术推出了托管模型、数据集、AI应用的Hugging Face Hub,到目前为止,平台上已经托管了35万模型、7.5万数据集和15万个AI应用示例。托管并开源模型和数据集,并建立全球的开源仓库中心这项工作富有创意且意义深远。上文提到,预训练+微调的方式促进了神经网络训练资源的共享,而Hugging Face Hub则更进一步,让AI开发者可以轻松复用全世界最先进的成果,并在此基础上添砖加瓦,让人人使用AI、开发AI的AI民主化成为可能。Hugging Face也被称为是机器学习领域的GitHub,或如他们的Slogan所言:构建未来的AI社区。我之前写过两篇文章,一篇《改变世界的一次代码提交》介绍Git,一篇《从零到百亿美金之路》介绍GitHub,而Git、GitHub、Hugging Face,我觉得它们之间存在某种传承,一种改变世界构建未来的黑客精神的传承,这也是促使我写这篇文章的原因之一。

六 后记

在快要写完本文时,我看了辛顿最近在牛津大学做的一次演讲。在演讲中,辛顿介绍了人工智能领域的两大流派,一种辛顿称为逻辑方法,即符号主义;另一种他称之为生物方法,即模拟人类大脑的神经网络连接主义。而事实证明了生物方法明显战胜了逻辑方法。神经网络是模拟人类大脑理解而设计的模型,大模型也像大脑那样的工作和理解。辛顿认为,超越人脑的人工智能在未来会出现,而且会比我们预测的时间快得多。

附1 大事记

1943年,麦卡洛克和皮茨发表“M-P神经元模型”,用数理逻辑解释并模拟人脑的计算单元,并提出神经网络这一概念。

1956年,“人工智能”一词首先在达特茅斯会议上被提出。

1957年,罗森布拉特提出“感知机”模型,并在两年后成功制造能够识别英文字母的硬件感知机Mark-1.

1969年,明斯基发表《感知机》,书中指出的感知机缺陷沉重打击了感知机乃至神经网络的研究。

1983年,辛顿发明玻尔兹曼机。

1986年,辛顿发明误差反向传播算法。

1989年,杨立昆(Yann LeCun)发明“卷积神经网络”(CNN)。

2006年,辛顿提出深度信念网络,开启深度学习时代。

2012年,辛顿和他的两个学生设计AlexNet在ImageNet大赛中以绝对优势获得冠军,深度学习被业界所重视。

2015年,Google收购的DeepMind公司推出AlphaGo,2016年战胜李世石,2017年战胜柯洁。OpenAI成立。

2016年,Hugging Face成立。

2017年,Google发表Transformer模型论文。

2018年,OpenAI基于Transformer架构发布了GPT-1。Hugging Face发布 Transformers 项目。

2019年,OpenAI发布GPT-2。

2020年,OpenAI发布GPT-3。Hugging Face推出Hugging Face Hub。

2022年,OpenAI发布ChatGPT。

附2 参考资料

书籍:

《智慧的疆界:从图灵机到人工智能》周志明(著) 机械工业出版社 2018年10月

《深度学习革命》凯德·梅茨(著) 杜曙光(译) 中信出版社 2023年1月

《Python深度学习》(第2版) 弗朗索瓦·肖莱(著) 张亮(译) 人民邮电出版社 2022年8月

《深度学习入门:基于Python的理论与实现》斋藤康毅(著)陆宇杰(译)人民邮电出版社 2018年

《深度学习进阶:自然语言处理》斋藤康毅(著)陆宇杰(译) 人民邮电出版社 2020年10月

《这就是ChatGPT》 斯蒂芬·沃尔夫拉姆(著) WOLFRAM传媒汉化小组(译) 人民邮电出版社 2023年7月

《生成式人工智能》丁磊(著)中信出版社 2023年5月

《Huggingface自然语言处理详解》李福林(著)清华大学出版社 2023年4月

文章:

《神经网络入门》阮一峰

《2012,改变人类命运的180天》远川研究所

《GPT家族进化史》MetaPost

《Transformer - Attention is all you need》知乎

《预训练语言模型的发展历程》 知乎

《提示工程指南》

《ChatGPT 背后的“功臣”——RLHF 技术详解》

《ChatGPT大模型技术发展与应用》

《The Bitter Lesson》 Rich Sutton

《专访HuggingFace CTO:开源崛起、创业故事和AI民主化》

在大理,听打雷

作者 hutusi
2024年3月2日 10:35
年初看别人的总结,其中DIYGod的总结让我印象很深刻,他每年给自己制定OKR,其中KR部分很详细,且Smart化,这种将自己的生活量化规划的方式是个不错的实践,因此我也尝试着按照健康、家庭、成长、工作几个方面来规划OKR,在家庭Objective一项分解的KR里,列上“今年安排家庭旅游至少3次”,因此也想利用下春节假期来实现第一个KR,跟妻子商量目的地,在泰国、哈尔滨等地纠结了几天后,终于在临春节前几天定下去云南。

Git 纪元

作者 hutusi
2024年2月25日 23:10
19世纪末,弗雷德里克·泰勒在美国一些工厂推广他的科学管理方法,这包括用科学的方法来代替人工经验判断、对工人进行专业训练以及按专业分工。亨利·福特在他的汽车工厂里也开始应用泰勒科学管理,并且在汽车生产上创新性的采用了流水线作业。1908年,第一辆福特T型车从流水线上面世,而经过优化的流水线在几年后甚至可以达到93分钟内生产一部汽车,强大的生产效率让福特超过了其他所有汽车厂商生产能力的总和。福特的流水线生产很快被其他厂商所借鉴,也迅速普及到了其他工业领域。可以说,福特T型车流水线作业的发明开启了大规模工业生产的时代,人类的生产力得到了巨大的提升。从英国移居到美国的阿道司·赫胥黎对此深受启发,在他的带有科幻色彩的反乌托邦小说《美丽新世界》中,描写未来的人类“文明社会”,人们不再用公元纪年,也不信仰上帝,改尊亨利·福特为唯一的神,以福特为纪元,并以第一辆福特T型车流水线生产的1908年为福特元年。

马斯克的故事与模式

作者 hutusi
2023年10月6日 11:45
约瑟夫·坎贝尔在《千面英雄》中总结了英雄神话的模式:在英雄还是普通人的时候,他受到召唤启程冒险,起初抵触,进而与智者相遇得到启蒙,跨越边界,开始初次尝试,到历险阶段历经严峻考验,由内而外得到救赎,胜利回归。好莱坞影片中的英雄故事无不是按照这个模式来演绎,蜘蛛侠、蝙蝠侠、阿凡达……皆是如此。相对于编剧的精心包装,真实世界里的英雄故事则要复杂的多,但追寻他们的成长轨迹,仍能找到“启程—>启蒙—>回归”的循环模式,只是这一模式会在他们的故事中重复多次。

纳瓦尔的智慧

作者 hutusi
2023年6月18日 11:11
纳瓦尔·拉维坎特(Naval Ravikant)是美国硅谷的风险投资家,他出生在印度,儿时随父母搬到纽约,家境贫穷,靠着自己的努力一步步走上财富自由之路,创办了AngelList风险投资公司,成功投资了Twitter、Uber等初创公司。纳瓦尔经常在博客、推特、播客上分享他的人生哲学,最著名的是他在推特上名为《如何不靠运气致富》的系列推文。而记者埃里克·乔根森将他在网络上的发言集结成书,也就是这本《纳瓦尔宝典》。去年我大略读了一遍,有些感触,但并不深刻。今年在经历了极度的焦虑抑郁状态后,重读此书,突然有一种醍醐灌顶的感觉,于是我又在有声书上听了数遍,细心体会纳瓦尔的人生哲学。

当魔法消失时

作者 hutusi
2023年2月28日 21:45
上海美术电影制片厂和哔哩哔哩今年联合推出的《中国奇谭》在网络上收获了大量好评,一共八集,我花了几个周末追完,感觉都非常不错。印象最深的是前四集。第一集《小妖怪的夏天》最幽默,第二集《鹅鹅鹅》最具艺术气息,第三集《林林》最有故事性,而我最喜欢的也是勾起回忆的则是第四集《乡村巴士带走了王孩儿和神仙》。

我们都是新穷人

作者 hutusi
2022年11月6日 21:21
《新约·马太福音》中说:“富人进入天堂比骆驼穿过针眼还要难。”古往今来,无论是民间传说,还是文学作品,富人大多是以贪婪、吝啬、狡诈等负面形象出现,而穷人大多正直、善良,嫉恶如仇。也就是说,道德高尚者往往以穷人的身份出现,他们安贫乐道,视金钱如粪土。从某种意义上说,贫穷是一件美德。这符合广大老百姓的期望,因为在漫长的几千年的人类文明史中,大部分人都是穷人。

代码、法律和自由软件

作者 hutusi
2022年10月5日 23:12
劳伦斯·莱斯格是“知识共享”(Creative Commons)的发起人,他本人是位法学教授,同时对互联网颇有研究。因此,在上世纪末互联网如火如荼的时候,他写了一本书《代码》(Code),针对当时网络上流行的互联网无政府主义观点应用法律常识予以反驳,莱斯格的观点很明确:网络不能自治,针对网络空间的规制一定会有,也必须有。

乾隆的性格

作者 hutusi
2022年10月2日 23:05
看完张宏杰的《饥饿的盛世》,对乾隆的认识加深了些。历史学家说清朝的没落是从乾隆开始的,而这有西方崛起东方衰落的历史趋势,但也跟乾隆的性格有很大关系。乾隆治下,中国的人口首次突破三亿,实际控制的领土面积也达到了历史的巅峰。而另一方面,闭关锁国、奴性臣民也达到了历史的巅峰。说清史,不得不说乾隆。
❌
❌