10 件软件开发者应该了解的关于学习的事情

偶看看到这篇关于学习的事情10 Things Software Developers Should Learn about Learning,看完感觉还不错,这里分享一下。以下摘要和翻译由 FisherAI Chrome 插件 完成,模型使用 gemini-1.5-pro-latest。 摘要 主要观点 本文探讨了软件开发者需要了解的关于学习的十个要点。文章指出,学习对于软件开发者来说至关重要,因为技术领域在不断变化。作者强调,了解人类学习的机制可以帮助开发者更有效地学习。文章还探讨了专业知识的优缺点,以及学习编程能力的预测因素。最后,作者强调了心态在学习中的重要性,并鼓励开发者采用成长型思维模式。 关键细节 人类记忆与计算机记忆不同,它并非由比特构成,而是由相互连接的神经通路组成。回忆信息的过程会强化和修改记忆,这被称为“重新整合”。 人类记忆分为长期记忆和工作记忆。长期记忆容量无限,而工作记忆容量有限。熟练的程序员通过将信息“组块”来有效地利用工作记忆。 专家和新手思考方式不同。专家依靠模式识别,而新手则更多地进行推理。 理解概念的过程从抽象到具体再返回。学习新概念的最佳方式是结合抽象定义和具体示例。 间隔重复是学习新技能的有效方法。学习时间应该分成较短的间隔,间隔之间要有休息时间。 互联网和人工智能工具并没有使学习变得过时。将知识存储在长期记忆中对于形成知识之间的联系至关重要。 解决问题不是一项通用技能,而是特定于领域的。解决编程问题的最佳方法是练习解决编程问题。 专业知识在某些情况下可能是有问题的。专家可能会发现为新手设计的提示分散注意力,并且可能会将从一种编程语言中学到的知识错误地转移到另一种语言中。 预测编程能力的因素尚不清楚。没有可靠的预测测试或候选人资料可以识别编程能力。 你的心态很重要。采用成长型思维模式可以帮助你克服学习过程中的挑战。 原文 10 件软件开发者应该了解的关于学习的事情 – ACM 通讯 学习对于软件开发者来说是必要的。变化是永恒的:新技术层出不穷,旧技术不断更新。因此,开发者不是只学习一次编程——在他们的职业生涯中,他们将学习许多新的编程语言和框架。 仅仅因为我们学习并不意味着我们理解我们是如何学习的。美国的一项调查发现,大多数关于记忆的信念与科学共识相悖:人们并不直观地理解记忆和学习是如何运作的。37 仅仅因为我们学习并不意味着我们理解我们*如何*学习。 例如,考虑学习风格。学习风格的支持者声称,有效的教学要与学习者喜欢的风格相匹配——视觉型学习者看,听觉型学习者听,动觉型学习者做。2020 年的一项综述发现,89% 的人认为学习者的偏好风格应该决定教学方式,尽管研究人员在几十年前就已经知道这是不准确的。28 虽然学习者有偏好的风格,但有效的教学方式取决于内容,而不是学习风格。科学课应该使用图表来呈现数据,而不是口头描述,无论视觉型还是听觉型学习风格,就像烹饪课应该使用动手实践而不是阅读,无论学习者是否偏爱动觉型风格。 几十年来对认知心理学、教育和编程教育的研究为我们如何学习提供了深刻的见解。本文接下来的 10 个部分提供了以研究为依据的关于学习的发现,这些发现适用于软件开发者,并讨论了它们的实际意义。这些信息可以帮助你为自己学习、指导初级员工和招聘员工。 关键见解 学习对程序员来说至关重要,但人类的思维方式与计算机有很大不同。 了解人类是如何学习的可以帮助你更有效地学习。 互联网和大语言模型并没有使学习过时;学习是必不可少的,而且需要时间。 专业知识会改变你的思维方式,让你更容易解决问题,但也可能会阻碍你的教学能力。 1. 人类记忆不是由比特构成的 人类记忆是学习的核心。正如 Kirschner 和 Hendrick 所说,“学习意味着一个人的长期记忆发生了改变。”20 软件开发者熟悉计算机内存的惊人力量,我们可以在其中存储一系列比特,并在以后检索出完全相同的比特序列。虽然人类记忆与此类似,但它既不精确也不可靠。 由于人类记忆的生物学复杂性,可靠性是一个复杂的问题。对于计算机内存,我们使用两个基本操作:读和写。读取计算机内存不会修改它,而且写和读之间经过多少时间并不重要。人类的长期记忆并非如此无菌:人类记忆似乎有一个“读-更新”的操作,其中获取记忆可以同时加强和修改它——这个过程被称为*重固化*。这种修改更有可能发生在最近形成的记忆上。由于这种修改的可能性,一个事实并不存在于明确知道或不知道的二元状态;它可以存在于中间状态。我们可以忘记我们以前知道的事情,而且知识可能是不可靠的,尤其是在最近学到的知识。 人类记忆似乎有一个“读-更新”的操作,其中获取记忆可以同时加强*和*修改它。 人类记忆的另一个奇特之处是“扩散激活”。1 我们的记忆存储在相互连接的神经通路中。当我们试图记住某件事时,我们会激活一条神经通路来访问目标信息。然而,激活并不局限于一条通路。一些激活能量会扩散到其他连接的通路,就像热水管散发的热量一样。这种扩散激活使相关的通路在数小时内处于激活状态。1 扩散激活对记忆有负面影响1,对解决问题有正面影响。32 扩散激活意味着相关但不精确的信息可能会与目标信息混淆,这意味着我们对信息的回忆可能是不可靠的。然而,扩散激活也与基于洞察力的问题解决或“顿悟时刻”有关。由于通路会保持数小时的激活状态,有时离开一个问题去处理另一个有其自身扩散激活的问题会导致两个不相关的区域在中间连接起来。当两个先前不相关的区域连接起来时,就会出现创造性和独特的解决方案。这就是为什么散步、淋浴或以其他方式离开问题一段时间可以帮助你在解决问题时摆脱困境。 总而言之,人类记忆并不像计算机内存那样,简单地从特定位置存储和检索。人类记忆更脆弱,更不可靠,但它也可以通过将知识联系在一起,在解决问题和深刻理解方面带来巨大的好处。我们将在后面的章节中进一步阐述这一点,特别是在从记忆中检索项目和加强记忆方面。 人类记忆并不像计算机内存那样,简单地从特定位置存储和检索。 2. 人类记忆由一个有限系统和一个无限系统组成 人类记忆有两个与学习相关的组成部分:*长期记忆*和*工作记忆*。长期记忆是永久存储信息的地方,功能上是无限的;1 在这个意义上,它的功能有点像计算机的磁盘存储。相比之下,工作记忆被用来有意识地推理信息以解决问题;2 它的功能就像 CPU 的寄存器,实时存储有限数量的信息,以允许访问和操作。...

May 16, 2024 · 2 min · fisherdaddy

如何创办 Google • Paul Graham

好久没更新博客了,最近沉迷于开发不能自拔,做了一个对我个人而言非常有用的 Chrome 插件,现在完成度大概在 80%,还差两个有意思的能力没做。我自己使用了一段时间,它能帮我高效的处理日常的摘要、翻译、查词等等一系列需求,感兴趣的话可以体验一下。 本篇文章就是我用这款插件的 “智能摘要” 和 “全文翻译” 两个功能实现的。打开《How to Start Google》网页后,只需要点一下就全有了,体验非常丝滑。 核心要点 本文旨在为有志于创业的青少年提供建议,阐述了如何为创办一家像谷歌一样成功的公司做好准备。作者认为,创办自己的公司是避免传统工作束缚的最佳途径,并强调了技术能力、创业理念和联合创始人的重要性。 关键细节 技术能力: 作者鼓励年轻人积极参与个人项目,以此提升技术能力。编程被认为是最有价值的技能之一,但其他“制造”或“建造”相关的技能也同样重要。 创业理念: 作者认为,一旦具备了技术能力,创业理念将会自然涌现。通过观察世界,技术人才能够发现现存问题和技术缺口,从而产生创业想法。 联合创始人: 作者强调了寻找合适的联合创始人的重要性,并建议通过共同参与项目来建立联系和评估合作默契度。大学被视为寻找联合创始人以及创业理念的主要场所。 作者以 Facebook、Apple 和 Google 为例,说明了这些成功的公司最初都是源于个人项目,并强调了年轻人应该专注于构建自己和朋友真正需要的东西。最后,作者总结了成功的关键因素:提升技术能力,并在学校取得优异成绩以便进入优秀的大学,在那里寻找联合创始人并发现创业理念。 原文 2024 年 3 月(这是一篇我面向 14 岁和 15 岁的青少年所做的演讲,主题是如果他们将来想创办一家初创公司,现在应该做些什么。很多学校认为应该向学生传授一些关于初创公司的知识。我认为这就是他们应该告诉学生的。) 你们中的大多数人可能认为,当你们进入所谓的现实世界时,最终将不得不找一份工作。这不是真的,今天我要谈的是一个你可以用来避免找工作的诀窍。 这个诀窍就是创办自己的公司。所以这不是一个逃避工作的诀窍,因为如果你创办了自己的公司,你将比你有一份普通工作时更加努力地工作。但你将避免工作带来的许多烦恼,包括老板告诉你该做什么。 做自己的项目比做别人的项目更令人兴奋。你也可以变得更加富有。事实上,这是变得 真正富有的标准方式。如果你看看那些偶尔在媒体上公布的最富有的人的名单,几乎所有的人都是通过创办自己的公司来实现的。创办自己的公司可以意味着从开一家理发店到创办 Google 的任何事情。我来这里是为了谈论这一连续体的极端一端。我将告诉你如何创办 Google。 当 Google 处于连续体的末端时,这些公司在年轻的时候被称为初创公司。我知道它们的原因是我的妻子杰西卡和我创办了一家叫做 Y Combinator 的公司,它基本上是一家初创公司工厂。自 2005 年以来,Y Combinator 已经资助了 4000 多家初创公司。所以我们确切地知道你需要什么才能创办一家初创公司,因为我们在过去的 19 年里一直在帮助人们做到这一点。 你可能认为我说要告诉你如何创办 Google 是在开玩笑。你可能在想“我们怎么能创办 Google?”但实际上,这正是创办 Google 的人在创办它之前所想的。如果你告诉 Google 的创始人拉里·佩奇和谢尔盖·布林,他们即将创办的公司有一天会价值超过一万亿美元,他们的脑袋会爆炸的。 当你开始着手一家初创公司时,你所能知道的就是它似乎值得追求。你无法知道它会变成一家价值数十亿美元的公司,还是一家倒闭的公司。所以当我说我要告诉你如何创办 Google 时,我的意思是我要告诉你如何达到这样一个程度:你创办一家公司的可能性,与 Google 成为 Google 的可能性一样大。...

May 16, 2024 · 1 min · fisherdaddy

2020 年李想在湖畔大学内部辩论(优先扩张还是优先利润)以及马云的点评

本文来自weibo上的一个视频分享,看了挺有意思这里分享出来。 核心内容 李想和马云在湖畔大学的讨论涉及企业经营战略中扩张与盈利的关系。以下是他们讨论的核心观点: 李想的观点: 竞争决定战略:李想认为是否优先扩张还是盈利,取决于竞争环境。如果竞争对手选择扩张,那么仅仅优先考虑盈利可能会使企业面临严重的风险。 扩张的必要性:他通过自己的经历强调,在数字时代,企业必须扩张以保持竞争力。小而美的企业模式在激烈的市场竞争中难以生存。 长期视角:李想分享了他如何通过不拘泥于短期盈利而专注于长期扩张和市场份额的获取,最终实现了在汽车之家的成功。 马云的观点: 情感与战略分离:马云强调在战略讨论中应去除情感因素,听取与自己观点不同的意见。 不被对手牵着走:他提醒说,虽然需要关注竞争对手,但企业不应完全由对手的策略决定自己的行动。 面对不确定性:马云认为,即使在充满不确定性的环境中,企业家应保持对理想的信念,并且需要有决断力,根据自己的资源和环境制定决策。 内容全文 李想说 我两个观点: 第一,优先扩张还是优先盈利是由竞争决定的。当下的环境你确实可以选择优先盈利而放弃扩张,但这不代表你的竞争对手也会选择放弃扩张。那些等着竞争对手在扩张中犯错的企业,往往等来的不是机会,等来的是灭顶之灾。就在上周,我和美团的王慧文吃饭,他讲了和饿了么竞争中的关键点,他夸奖对手有一支非常优秀的团队,产品好、服务好、运营好。美团在最初的竞争中处于非常严重的劣势,但是当时饿了么只经营了头部的12个省市,没有任何扩张的想法。美团很快调整了自己的经营策略,扩张到100个城市,给另外的88个城市率先提供了外卖的服务,很快整个市场份额就发生了扭转,等饿了么反应过来再想竞争的时候,美团的地位就已非常的牢固了。请问在座的同学中,你所在的行业里,难道没有遇到过凶悍的竞争对手吗?即使是当下的环境,当你选择优先盈利而放弃扩张的时候,他们就会原地不动吗? 第二,小而美是最大的谎言,数字时代的企业扩张才是永恒的。高中毕业后我创办了第一家公司泡泡网,我的愿景是成为最专业的IT网站,翻译过来就是小而美,做好内容,没有什么扩张的欲望,走哪算哪。创业第四年我们年利润近千万,可用户规模我们是第三,做老三太痛苦了,没有底线的行业第一,随意的在扩展,把整个行业搞得乌烟瘴气。我们不但无能为力,为了盈利还必须跟上他种种龌龊的行为。因为行业的规则就是老大制定的,二选一是老大说了算。我们受够了做老三的地位,所以我们要掌控自你的命运。2005年我创办了汽车之家,并把泡泡网所有的利润用在汽车之家的发展上。虽然我们是后来者,但是我们找到了行业的问题。所以我们做了一个重要的决定,就是最开始的三年不考虑任何盈利的问题,把所有的钱投入到做最真实的内容,做最真实的论坛上面去,早日成为第一。随着这样的策略,我们到2007年就拿下了整个汽车市场20%的市场份额,进入了汽车网站前三名。但是糟糕的时候来了,2008年经济危机来了。在2008年经济危机来的时候,我们有两个选择,一个是跟大多数网站一样选择收缩,还有一个方式是选择扩张。我和秦致商量了一下,就决定开干。那一年,秦致负责买下了所有网址站的入口。那时候网址站占了整个流量60%,这是一笔千万级的投入。那时候我们高管的年薪普遍在10万到20万,我的技术合伙人又买了几百万的服务器,保证有足够的带宽来接入用户,我则保证我们的产品和内容的高质量,我们在扩张的同时做到了内容质量最好,产品最好,访问最快。好的运营质量恰恰是扩张过程中的好兄弟。到了2018年底,我们的用户份额从20%快速的涨到60%,稳稳的占据了第一的位置。如果说我们还有什么遗憾,最大遗憾就是我们IPO以后被利润绑架了,还有那么多广阔的领域我们没有去扩张。我真心的希望在座的每一个同学,就是当我们老了以后,跟我们的子孙讲我们当年创业的故事的时候,千万不要留下这样的遗憾。感谢大家。 马云说 就讲讲我的一些看法和观感。在座每个人,你们公司一定有这样的争吵,但是一定要在争吵中把情绪刨掉。你要听见那些跟自己不同的东西。每一个人都知道此时此刻你是要盈利还是要发展,每个企业都不一样。如果你们家现在就没有盈利,那你今天是真要考虑一下先活下来。 还有一个对手的问题,我今天早上也讲了,我们做企业千万千万不要被对手牵着走。你有困难,对手其实也有很困难。企业家的精神就相信。不管再困难,有的时候战术层面上你确实要考虑我该往后退一退,此时退是为了明天更好的进,但是千万不能放弃,心中相信这个理想。如果你把这个放掉了,你的员工会看不起你。但是你说我就是要死扛,就讲理念和理想了,员工也看不起你。所以我相信在座的每一个湖畔人,我们是能够把握好这个,你根据自己还有多少子弹来判断。最优秀的拳手不在于多会抗击打能力,而是躲过对方的重拳。 有不确定性。但是有一点是确定的,世界即使隔离,我认为不可能分隔。即使隔离,能够创造跨越隔离重建信任的是企业家,是创业者,是年轻人。这一点是湖畔大学的很多学生。我今天很高兴看见今天早上开学典礼到今天下午的辩论。我看到你们的勇气,看到你们的智慧,看到你们的口才,特别看到大家的激情。这就是代表中国21世纪早期,我们需要那帮企业家。我们每个公司都要把握好自己的风险,把握自己对未来的判断。但是千万千万的不要有这个侥幸心理,说没有风险。 今天早上我讲了当CEO和当总裁是不一样的。总裁做很多决定拿结果,CEO是做决策,而决策你一定要做。在今天做这件事情对未来的影响多大?今天的企业家们已经带有强大的理想主义精神。最后我们赢得这世界的尊重就是情怀。最后我们赢得家人的尊重、朋友的尊重,那就是有结果。

April 23, 2024 · 1 min · fisherdaddy

AI 50: 未来的企业 by 红杉资本

看到红杉发布的一篇关于 AI 50 企业相关的文章:AI 50: Companies of the Future,分享一下。 核心观点 这篇文章概述了AI技术如何转变企业生产力,并讨论了AI未来的潜力及其对商业和社会的深远影响。 生成式AI的崛起:2024年的AI 50名单显示,生成式AI已从一个边缘领域走向主流,成为推动企业生产力增长的关键因素。大型公司如ServiceNow、Palo Alto Networks 和 Hubspot通过整合AI提高了效率和降低了成本。 AI企业的发展:文章强调,越来越多的企业将AI融入其业务流程,以提升关键绩效指标。这不仅涉及自动化和成本节约,也包括客户服务和产品开发的优化。 技术扩展和新进展:AI 50名单的公司显示了生成式AI如何在企业生产力应用中快速扩张,从四家增至八家,涵盖了更多企业部门。同时,消费者和专业消费者之间的界限变得模糊,创意软件的使用越来越广泛。 行业应用变革:AI正在被应用于工业领域,如机器人、工业维护和自动驾驶,展示了软硬件结合的变革潜力。基础设施领域也见证了显著发展,如向量数据库和大型语言模型的应用开发框架。 企业的未来形态:AI技术预示着一场生产力革命,类似于个人计算机时代的变革。未来的企业可能会更加精简,企业数量将大增,企业结构将更加灵活和迅速形成。 成本和社会影响:AI有潜力在教育、医疗等关键领域降低成本,提高可获得性和负担能力。这需要负责任地进行,通过政府和私营部门的共同努力,重新培训和赋能所有人。 长远预期:AI的应用预计将在未来几年内在深度和广度上扩展,2024年只是一个开始,标志着AI在各行各业的广泛应用和深远影响的起点。 总之,文章展望了AI如何作为未来企业的核心驱动力,重塑工作方式、增加企业效率,并为社会带来更广泛的变革。 原文 2024年版的 AI 50 显示了生成式 AI 如何开始改变企业生产力。 去年,生成式 AI 从 AI 50 名单的背后走到了前台。今年,它成了焦点,我们看到了企业客户和消费者在 AI 生产力方面的重大增长初现端倪。尽管2023年美国的 AI 风险投资大部分用于基础设施——60%给予了最大的大语言模型(LLM)提供商——但应用公司继续主导 AI 50 名单。 同时,我们开始见识到植入 AI 的公司将会呈现何种面貌。如今,许多公司正在将 AI 融入其流程,以此加速关键绩效指标(KPI)的提升。我们见证了大型公司通过将 AI 融入产品而获益良多。例如,工作流自动化平台 ServiceNow 通过其 AI 驱动的 Now Assist 实现了近20%的案例避免率。Palo Alto Networks 通过 AI 降低了费用处理成本。Hubspot 利用 AI 扩展了其客户支持服务。瑞典金融科技公司 Klarna 最近宣布,通过在客户支持中使用 AI,节省了超过4000万美元的运营成本。数千家企业现在正将 AI 整合进他们的工作流程中,以促进增长和降低成本。AI 50中的企业正推动这些迅速的改进。...

April 18, 2024 · 1 min · fisherdaddy

我是如何踏入深度学习这一领域的 • Vikas

上周在 twitter 上看到一篇关于深度学习入门的帖子,翻译完之后一直没时间发出来,今天抽空整理完分享一下。 核心观点 这篇文章详细描述了作者如何从一个机器学习初学者转变为深度学习领域的专家,并为那些对深度学习感兴趣的读者提供了一系列学习策略和资源。 背景和动机:作者拥有非计算机科学背景,但因为对深度学习的强烈兴趣,他决定克服初学者的困难,重新学习这一领域。 自学之路:作者强调,他的深度学习技能主要是通过自学获得的。他最初通过Kaggle竞赛接触机器学习,但后来意识到这种方式虽然快速,却无法深入理解深度学习的数学和算法基础。 技能和工具:作者认为扎实的Python编程能力对于深度学习非常重要,因为Python是AI领域的主流语言。此外,数据清洗和处理技能占据了他工作的大部分时间,这些是进入AI领域不可或缺的实用技能。 学习策略和资源: 作者选择了自底向上的学习方法,首先通过阅读《深度学习》这本书建立坚实的理论基础。 为了更好地理解复杂的数学概念和术语,他建议通过绘图和编程实践来辅助学习。 提及了多个高质量的在线资源,如fast.ai的课程和Andrej Karpathy的视频,这些都是优秀的自学材料。 推荐使用Google Colab和Weights and Biases这样的工具来访问GPU资源并监控训练过程。 应用和实践: 在掌握理论后,作者开始研究并实现从2015年到2022年间的重要深度学习论文,如Transformers和视觉Transformer等,进一步深化了他对深度学习架构的理解。 他还创建了一个名为“从零到GPT”的课程,通过教学来加深自己对深度学习的理解。 实用主义的重要性:作者强调,在深度学习中,能够识别何时应深入钻研,何时应追求快速简便的解决方案是一个重要的技能。 原文 我曾经运营了一家名为 Dataquest 的教育公司长达8年。去年,我重新产生了创造的渴望。深度学习对我来说一直很有吸引力,但我对它知之甚少,因此我决定解决这个问题。从那时起,我训练了许多模型(其中几个达到了开源领域的最先进水平),开发了两个GitHub星标超过5000的库,并最近接受了 answer.ai 的工作邀请,该研究所由 Jeremy Howard 创立。我这样描述是为了大致勾勒出我的学习历程。在本文中,我将更详细地讲述我是如何学习深度学习的。希望这对你的学习之旅有所帮助。 我并非在学校里学到这些技能的。我本科主修美国历史,期间挂了不少科。2012年,我涉足了机器学习和Python编程,但我曾自认为深度学习对我而言过于复杂。其中一个原因是我通过参加Kaggle竞赛来学习。Kaggle竞赛是迅速学习的好方法,但可能会让你在基础知识上有所欠缺——比如算法的数学原理。 当深度学习开始流行,它非常依赖数学,我认为自己永远无法理解它。当然,这种看法是错误的,我在十年后证明了这一点,但接近问题的角度决定了一切。我第一次学习深度学习是从顶向下的方式,即直接组装模型而不理解其工作原理。最终我遇到了障碍,无法突破。 去年我再次学习深度学习时,已经具备了一些有用的技能。最重要的是扎实的Python编程能力。尽管有人尝试改变,但Python仍然是AI领域的通用语言。如果你想进入AI领域,那就从精通编程开始吧。 不论我身处AI的哪个阶段,数据清洗都占了我工作的超过70%。如果你从事纯理论研究或者只处理简单问题,可能可以避免数据处理,但在其他情况下,数据处理技能是必不可少的。 还有一个更加抽象的技能,我称之为实用主义。深度学习中充满了各种诱惑,从“什么是完美的基模型?”到“如果我去掉这里的sigmoid会怎样?”虽然有些探索是有价值的,但大部分都会耗费大量时间。能够识别何时应深入钻研,何时应追求快速简便的解决方案,这一点非常重要。 这次,我决定从底层基础开始学习。我精读了一本书,名为《深度学习》。这本书虽已出版数年,但依然是学习深度学习不可多得的资源。建议慢慢阅读。书中许多术语和数学公式初看会让人生疏——需要查阅资料。你可能需要通过绘图或编程来帮助理解这些概念——给自己足够的时间和空间去做这些。如果你觉得数学部分有难度,可以辅以阅读《机器学习的数学》。虽然我个人未参与,但fast.ai的课程和Andrej Karpathy的视频都是非常优质的学习资源。 尽管在一个向Transformer全面过渡的世界里,CNN或RNN可能显得有些过时,但是CNN依然广泛应用于多个领域,RNN在某些方面也是旧技术重用。 当你读完这本书的前两部分之后(第三部分可以跳过),你应该能够自己用纯numpy编码实现任何主流的神经网络架构,包括前向和后向传播。 我在阅读《深度学习》书的同时,开始编写了一个课程,名为从零到GPT。教学是加深理解的最好方式,我发现自己进入了一个良性循环:学习新知识,梳理并描绘不理解的部分,然后教授它。 在读完这本书之后,你将对2015年以来的深度学习有一个全面的理解。随后,我开始研究一些从2015年到2022年间的重要深度学习论文,并在PyTorch中实现这些理论。你可以使用 Google Colab 来免费或低成本地访问GPU资源,并借助 Weights and Biases 来监控你的训练进程。 以下是一些关键论文的非全面列表: RNN注意力机制 Transformers Switch Transformer LoRA 视觉Transformer AdamW GPT-2 深入这些文献之后,你应该能够理解关于深度学习模型架构的大多数讨论。

April 17, 2024 · 1 min · fisherdaddy

Devv 是如何打造一个月入3万美元的开发者AI搜索引擎的

在 twitter 上看到 devv.ai 的作者发了一篇自己从0到1的文章,这里分享一下。 核心内容 文章主要讲述了作者如何创建并发展了一个月收入达3万美元的开发者AI搜索引擎——Devv。以下是文章的核心观点提取: 解决真实问题的重要性:作者创建Devv是为了解决开发者在寻找可靠编程答案时遇到的挑战。尽管有ChatGPT等工具,但它们有时会生成错误或不准确的代码。 市场调研:在开发之前,作者通过与50位不同背景的开发者进行深入访谈,了解他们的需求和痛点。这些访谈揭示了一个共识:开发者对提供不精确代码片段和解释的通用AI工具感到不满,并渴望一个更可靠、更专注的解决方案。 Devv的创建和技术基础:基于前期的洞察,Devv被设计为一个专门为开发者打造的AI搜索引擎,能提供可靠的编程问题答案和整洁的代码片段。Devv使用了RAG(检索增强生成)和大型语言模型,并创建了自己的专门搜索索引,包含开发相关的网站、官方文档和开源代码库。 快速迭代和市场验证:作者设定了在一周内构建并推出最小可行产品(MVP)的目标,以快速验证他们的想法。MVP获得了积极的反馈,鼓励团队继续发展。 竞争策略:尽管市场上存在竞争者如Perplexity、You.com和Phind,Devv通过构建自定义搜索索引和专注于开发者资源的独特视角来区分自己,提供了更相关和精确的编码查询结果。 核心功能和用户体验:Devv引入了代理模式和干净的用户界面,专为复杂查询和提供定制化解决方案而设计,强化了其作为开发者首选搜索引擎的价值主张。 在中国的成功和挑战:通过Twitter分享,Devv在中国开发者中迅速获得了关注,并实现了用户数量的指数级增长。然而,随后Devv在中国被封锁,导致主要增长动力的丧失。 全球扩展和盈利模式:面对挑战,Devv调整策略,适应全球受众。通过引入高级订阅方案,Devv实现了可观的月收入,证明了其可持续的业务模型。 创业经验和建议:文章最后,作者分享了他的创业经验,强调了解决真正问题、通过MVP快速验证、产品差异化、口碑的力量和面对挑战的重要性。同时,提供了几个对创业者有用的资源。 整体而言,这篇文章不仅是一个成功创建和发展AI搜索引擎的案例研究,也为有志于科技创业的读者提供了宝贵的经验和建议。 原文 我们是如何打造一个月入3万美元的开发者AI搜索引擎的 解决真实问题的威力 作为开发者,我们都曾感受过寻找可靠编程答案的挑战。虽然ChatGPT等工具在某种程度上提供了帮助,但它们往往会生成错误或虚假的代码。正是为了解决这个问题,我创立了 Devv —— 一个专门为开发者设计的AI搜索引擎。 50位开发者的深入访谈 在动手编码之前,我希望深刻理解目标用户的需求和痛点。通过与50位来自不同背景的开发者进行Zoom一对一访谈,我深入探讨了他们当前面临的挑战及所采用的解决方案。一个共识逐渐浮现:开发者们已经对那些提供不精确代码片段和解释的通用AI工具感到不满。他们渴望有一个可靠、专注于开发者需求的选择。 打造解决方案 有了这一关键洞见,我们开始构建 Devv。我们的目标是打造一个能提供可靠、无误的编程问题答案,以及生成整洁、可用代码片段的AI搜索引擎。 在技术层面,Devv 依托于 RAG(检索增强生成)和大型语言模型。为确保最相关且准确的结果,我们创建了自己的专门搜索索引,包含了开发相关的网站、官方文档和开源代码库等内容。 为了迅速验证我们的想法,我们设定了在一周内构建并推出最小可行产品(MVP)的目标。初版虽简单,却已经能够针对不准确的AI代码生成和回答这一核心问题提供解决方案。 将MVP推广给一小群朋友和同事后,收到了极其正面的反馈。开发者们对于能够真正信赖的日常编码AI工具表示欢迎,这让我们信心倍增,继续前进。 在竞争激烈的市场中突围 我们清楚,我们并非市场上唯一的生成式搜索引擎。Perplexity、You.com、Phind 等竞争对手已经站稳脚跟。虽然他们也利用Google或Bing搜索结果来获取最新信息,但我们认为,要真正满足开发者的需求,我们必须更进一步。 这就是我们决定构建自定义搜索索引的原因,专门针对开发相关场景。除了整合Google搜索,我们还爬取并索引了大量的开发者网站、官方文档和如GitHub这样的开源代码库。 这种专注于开发者资源的独特视角,使我们能够为编码查询提供更相关和精确的结果。Devv 能够依托于编程特定信息的丰富知识库来解答问题和生成代码片段,而非仅依赖通用网页结果。 为了进一步提升 Devv 的独特性,我们引入了两大核心功能: 代理模式:对于复杂查询,Devv 能够理解用户意图,并从专门的代理类型(包括代码生成、解释、调试、优化、网页搜索等)中挑选,以提供定制化的解决方案。 干净、专注的用户界面:我们为 Devv 设计了一个简洁且直观的界面,使开发者可以专注于工作,而不被工具本身分心。 通过将我们的自定义开发者搜索索引与这些独特功能结合起来,我们为 Devv 塑造了强大的价值主张,成为开发者首选的搜索引擎。我们的专注于特定领域的方法,使我们与广泛定位的竞争者区别开来。 在中国获得初步成功 有了一个经过优化的MVP,我们开始向更广泛的受众展示 Devv。首先,我通过我的Twitter账户分享给主要是中国开发者的关注者。 反响远超我们的预期。纯粹通过口碑,Devv 在几个月内的用户数量激增至50万。中国各地的开发者都在推崇这个工具,我们的用户群呈指数增长。 但正当我们开始取得成功时,遭遇不幸。Devv 突遭中国的防火长城封锁,导致所有中国大陆的用户无法访问。我们的主要增长动力瞬间消失。 被中国封禁 失去中国用户群是重大挫折,但我们没有放弃。我们相信我们构建了有价值之物,并且坚信中国之外的开发者也面临相似挑战。 于是,我们重新出发,调整 Devv 以适应全球受众。我们从头开始,一步一个脚印地重建用户基础。渐渐地,我们开始在其他市场取得进展。 重新建立并实现盈利 随着全球用户基础的扩大,我们开始考虑如何实现盈利,以构建一个可持续的业务模式,同时不牺牲用户体验。 在三月份,我们推出了 Devv 的高级订阅方案。让我们欣喜若狂的是,仅首月它就创造了超过28,000美元的收入。从那以后,这个数字还在持续增长。 今天,Devv 正在帮助全球的开发者更快更好地编写代码。而我们的旅程仅仅刚刚开始。...

April 11, 2024 · 1 min · fisherdaddy

优质软件值得你的辛苦钱 • Steph Ango

ss 在 twitter 看到有人分享 Obsidian CEO 的这篇文章,看了感觉里面的一个比喻挺有意思,分享一下 核心观点 这篇文章强调了优质独立软件的价值,与大型科技公司生产的软件相比较。文章的核心观点包括: 优质独立软件与工业化软件的对比:作者将优质独立软件比作农贸市场上的手工有机果酱,而将大型科技公司的软件比作添加了廉价原料和稳定剂的超市果酱,突出了独立软件在质量和个性化方面的优势。 大型科技公司的市场优势:文章指出,由于规模经济和其他因素,如巨额收入和全球推广能力,大型科技公司能够以较低成本生产和分发软件,从而压低价格。这种情况为这些公司提供了不公平的市场优势,并对独立开发者构成了巨大挑战。 成本补贴策略的影响:文章详述了大型科技公司如何通过不同的补贴策略(例如,通过广告收入、销售硬件或捆绑企业合同)来降低软件成本,这种做法让人误以为所有软件都应该是低廉或免费的。 优质软件的价值被低估:作者指出,人们似乎更愿意为高品质的物理产品(如果酱)支付费用,而不是为软件支付,这反映出优质软件的价值在市场上被低估了。 支持独立开发者的呼吁:文章呼吁读者支持独立软件开发者,认为这不仅是为了获得更高质量和更安全隐私的软件,也是为了促进一个有着更多选择和创新的软件生态系统的发展。作者鼓励读者为优质的独立软件支付,强调这些软件值得人们的投资。 总的来说,文章倡导读者认识到独立软件开发者的价值,支持他们通过支付公平价格,以确保软件市场的多样性和创新。 原文 优质软件来自独立开发者,就像农贸市场上的优质食品一样。一罐手工有机果酱与超市里的大批量生产、添加玉米糖浆的果酱大不相同。 工业果酱充斥着廉价原料和货架稳定剂,而工业软件则满是侵犯隐私的跟踪器和专有格式。 谷歌(Google)、苹果(Apple)和微软(Microsoft)生产的就是这样的工业化软件。虽然工业软件便宜、相对可靠、广泛可用,通常能够满足基本需求,但也有其缺点。 这些大型科技公司凭借数千亿美元的收入和数十万员工的规模,轻松地向全球数十亿用户推广他们的新应用,享有开发和维护应用成本上的无比优势。 相比之下,独立软件开发者通常是小团队,没有规模经济的优势。他们要么通过牺牲品质来降低价格竞争,要么只能收取公平价格,但这往往导致许多人转向大型科技公司。不管怎样,大型科技公司总是赢家,因为他们能从大多数独立开发者在应用商店里赚到的钱中抽成20-30%,这是他们不需要承担的成本。 大型科技公司能够通过多种方式补贴成本,使其软件价格低廉: 谷歌通过销售利润丰厚的广告让应用免费,但用户将面临广告和侵犯隐私的追踪。 苹果通过销售高利润的设备免费提供应用,但这会将用户锁定在其专有的生态系统内。 微软则通过捆绑销售利润丰厚的企业合同来降低应用价格,同样使用户被锁定在其专有生态系统内。 一些科技公司通过向风险资本投资者筹集数亿美元,用这笔钱来补贴定价——直到资金耗尽,软件质量也随之下降。 这并不意味着这些公司有恶意。但他们的补贴策略造成了一种错觉,让人们认为所有软件都应该便宜或免费。 工业软件变得极为便宜,许多人已经不再知道优质软件能带来多少价值。我们对优秀软件的感知变得麻木,被“免费”这个概念迷惑。 不知为何,我们似乎更愿意为高品质的果酱而非高品质的软件付费。我发现自己在个人软件上的支出远少于在食品杂货等基本生活用品上的支出。然而,软件是为数不多的能真正带给我效用的产品之一。考虑它的每次使用成本吧。 独立优质软件的制作者们不遗余力地为你打造更好的应用,采取原则性的方法开发工具,既不妥协你的隐私,也不让你受限。 独立软件开发者就像你可以交流的朋友。如同农贸市场上的优质果酱,你可能会和制作它的人成为朋友,他们愿意聆听你的建议和不满。 如果你希望生活在一个有着更多软件选择的世界里,请在优质独立软件上多花一点钱。它们值得你的辛苦所得。

April 11, 2024 · 1 min · fisherdaddy

伟大创意与伟大产品之间的区别 • Steve Jobs

看到微博上宝玉老师分享的乔布斯解释伟大创意与伟大产品之间的区别的一个视频,看了深表认同。这里我用 Claude3 Opus 进行了总结,并附录上视频原文。 核心观点 一个好的想法只是成功的开始,将想法转化为好的产品需要大量的精细工艺和打磨。产品会在这个过程中不断演变和成长,变得比最初设想的更加复杂。 设计产品需要在脑海中整合数千个不同的概念,并以新颖的方式将它们组合在一起。这个过程中会不断发现新问题和机会,需要持续创新。这就是创造力的源泉。 一群对工作充满热情的人在一起努力,会相互碰撞、争执、冲突,但也会在这个过程中互相改善提升,最终产生美好的成果。这就像石头互相摩擦,最后变成美丽的抛光石头。 在生活的大多数领域,二比一是一个相当大的差距。而在软件和硬件领域,最优秀的人才可以比一般人高出 50 倍甚至 100 倍。Jobs 认为自己成功的关键在于找到这些顶尖的 A 级人才,而不满足于 B 级 C 级。 当足够多的 A 级人才聚在一起时,他们会喜欢彼此合作,因为之前没有过这样的机会。他们会自发地保持高标准,只愿意与其他 A 级人才共事。这样就能建立并扩展一支全是顶尖人才的团队。 内容原文 苹果遭受的一次重大打击是,我离开后,John Sculley 得了一种严重的病。我也见过其他人得这种病,那就是过分地认为一个好的想法就是成功的 90%。他们认为只要把这个好的想法告诉其他人,然后其他人自然就能够实现它。 然而,问题在于,一个好的想法与一个好的产品之间,需要大量的精细工艺去打磨。随着这个好的想法的发展,它会不断变化和成长。它不会像最初设想的那样简单,因为在深入了解其微妙之处时,你会学到更多的东西。你还会发现,你必须要做出许多的权衡。比如,有些事情你就是无法让电子元件去完成,有些事情你无法让塑料、玻璃去完成。有些事情你无法让工厂或机器人去完成。 在设计一个产品的过程中,你需要在脑海中储存和整合 5000 个不同的概念,并持续推动他们以新的、不同的方式配合在一起,达到你想要的效果。每一天,你都会发现一些新的问题,或者是新的机会,这些都能让你以新的方式去整合这些概念。这个过程就是创造力的源泉。 因此,虽然我们一开始就有很多好的想法,但我一直认为,一群真心热爱他们正在做的事情的人,像我小时候那条街上的那个鳏夫。他那时已经 80 多岁了,看上去有点让人畏惧。我稍微了解了他一些,我想他可能雇我来给他的草坪修整或者做些什么。有一天,他说,跟我来我的车库,我有些东西想给你看。他拿出了一台老旧且积满尘土的石头研磨机,那是一台电动机,一个咖啡罐,以及它们之间的一根小皮带。 他说,跟我来。我们走到后院,只是拿了一些石头,一些普通的、长相平凡的石头。我们把它们放进罐子里,加了一点液体,一点研磨粉,然后我们把罐子盖上,他开启了这台电动机。他说,明天再来。他的罐子在石头转动时发出声响。我第二天回来时,我们打开了罐子,我看到了一些令人惊叹的美丽抛光石头。那些原本平常的石头经过相互摩擦,产生了一些声响,竟然变成了这样美丽的抛光石头。 这一过程在我心中一直是我对团队努力工作的隐喻。他们对某件事充满热情,就像这群无比有才华的人在团队中相互碰撞,有时候会有争执,争吵,甚至冲突。共同工作,相互磨砺,最终让彼此和想法都得到了改善和提升,最终产生的是那些非常美丽的石头。这个过程很难解释,肯定不是一个人能完成的。人们喜欢寻找代表或象征,所以我成为了某些事物的象征。但实际上,Mac 是团队的努力成果。 我在苹果公司早期观察到一种现象,当时我并不知道如何解释,但从那时候开始,我对此进行了深入的思考。在生活中的大多数事情,平均水平与最好的水平之间的差距最多是二比一。比如你去纽约,找普通的出租车司机与找最好的出租车司机,你可能会发现,最好的司机可能会让你比普通司机快 30% 到达目的地。汽车,平均与最好之间的差距是多少?可能是 20%。最好的 CD 播放器和普通的 CD 播放器,可能也只差 20%。因此,在生活的大多数领域,二比一是一个相当大的差距。 但在软件行业,甚至过去的硬件行业,平均水平和最好水平之间的差距是五十比一,甚至是一百比一。这真的很明显。生活中很少有这样的事情,但我有幸能在这样的环境中度过我的一生。因此,我成功的很大一部分是因为我找到了这些真正有天赋的人,并且我从不满足于 B 级和 C 级的人,我一直在寻找 A 级的人。 我发现了一件事。我发现当你有足够多的 A 级人才在一起时,当你付出巨大努力找到这五个 A 级人才后,他们非常喜欢一起工作,因为他们之前从未有过这样的机会。他们不愿意和 B 级和 C 级的人一起工作。所以,他们会自发地保持团队的高水平,他们只愿意聘请更多的 A 级人才。于是,你就能建立起一支由 A 级人才组成的团队,并不断地扩展。这就是 Mac 团队的情况。他们都是 A 级人才。这些人才都非常出色。

April 10, 2024 · 1 min · fisherdaddy

Andrej Karpathy 在 AI Ascent 2024 上演讲的核心内容

本文来自 Andrej Karpathy 在红杉组织的 AI Ascent 2024 上的演讲视频,我用 Claude3 opus 提取了 Karpathy 提到的核心观点。 核心观点 目前各家公司都在努力构建一个 “LLM OS”,包括获取外围设备(文本、图像、音频等)作为输入,用LLM作为CPU,并连接到现有的软件基础设施上。未来可能会出现一些默认应用(如 Windows 系统自带的 Edge 浏览器),但也会有一个生机勃勃的生态系统。 目前 LLM 生态系统包括完全开源的模型(如Pythia、LLaMA等)、只开放权重的模型和专有模型。未来可能会类似于操作系统生态(如 Windows系统、Mac系统、Linux操作系统,而Linux 有无数的分发版本)。 规模化训练这些模型非常困难,是一个非常复杂的分布式优化问题。实际上,目前这方面的人才相当稀缺。 模型规模是最重要的,但还需要很多其他细节,如数据集准备、算法优化等。单纯给钱和算力还训练不出 SOTA(“State of the Art"的缩写,意为"最先进"或"最高水平)模型,还需要很多专业知识。 扩散模型和自回归语言模型是概率建模的两种形式,可能存在将二者统一的空间。目前模型能效还比人脑低几个数量级,未来可能的改进方向包括针对性的计算架构、低精度训练、稀疏性等。 马斯克管理公司的特点包括保持团队小而精干、办公室氛围紧张忙碌、鼓励无用会议早退、与基层工程师直接沟通、果断消除瓶颈等。 Karpathy 更关心 AI 生态系统的健康发展,而非某家公司。他希望生态像珊瑚礁一样丰富多彩,对巨头垄断持谨慎态度。 字幕详情 1 00:00:03,190 --> 00:00:06,535 我很高兴介绍我们的下一个也是最后一个演讲者, Andrej Karpathy. 2 00:00:06,894 --> 00:00:08,737 Karpathy可能不需要介绍. 3 00:00:08,797 --> 00:00:11,941 我们大多数人可能在YouTube上长时间观看过他的视频. 4 00:00:12,901 --> 00:00:17,588 他以深度学习研究闻名. 5 00:00:17,667 --> 00:00:22,452 他设计了斯坦福大学的第一个深度学习课程, 是OpenAI创始团队的一员. 6 00:00:23,454 --> 00:00:28,795 领导了特斯拉的计算机视觉团队, 现在又成为一个神秘人物, 因为他刚刚离开了OpenAI....

April 9, 2024 · 11 min · fisherdaddy

一个超级超级小的编译器的实现,真正代码大约只有200行

在github 上看到一个超级小的编译器实现,看了一下具体实现,大概了解了编译器的实现逻辑,这里分享给大家。 今天,我们将一起编写一个编译器。不过,这不是任何普通的编译器……这是一个超级超级小的编译器!这个编译器小到,如果你把所有注释都删掉,真正的代码只有大约200行。 我们即将将一些类似LISP的函数调用编译成一些类似C的函数调用。 如果你对这两种语言都不太熟悉,我会快速介绍一下。 假如我们有两个函数 add 和 subtract,它们的写法如下: LISP C 2 + 2 (add 2 2) add(2, 2) 4 - 2 (subtract 4 2) subtract(4, 2) 2 + (4 - 2) (add 2 (subtract 4 2)) add(2, subtract(4, 2)) 很简单,对吧? 那很好,因为这正是我们要编译的内容。虽然这既不完全符合LISP也不完全符合C的语法,但它足以演示现代编译器的许多主要部分。 大多数编译器分为三个主要阶段:解析、转换和代码生成。 解析,即将原始代码转换成更抽象的代码表示形式。 转换,即对这种抽象表示进行操作,完成编译器想要完成的任何任务。 代码生成,即将转换后的代码表示转换成新的代码。 核心截断 解析 解析通常分为两个阶段:词法分析和句法分析。 词法分析,将原始代码分割成所谓的tokens,这一过程由一个称为 tokenizer(或lexer)的工具完成。 Tokens是描述语法的孤立部分的一系列小对象。他们可以是数字、标签、标点、操作符等。 句法分析,将 tokens 重新组织成一种表示语法各部分及其相互关系的形式。这种表示称为中间表示或抽象语法树(AST)。 抽象语法树(AST)是一个深度嵌套的对象,它以易于操作的方式表示代码,并提供大量信息。 对于如下语法: (add 2 (subtract 4 2)) Tokens可能如下所示: [ { type: 'paren', value: '(' }, { type: 'name', value: 'add' }, { type: 'number', value: '2' }, { type: 'paren', value: '(' }, { type: 'name', value: 'subtract' }, { type: 'number', value: '4' }, { type: 'number', value: '2' }, { type: 'paren', value: ')' }, { type: 'paren', value: ')' }, ] 而抽象语法树(AST)可能如下所示:...

April 8, 2024 · 15 min · fisherdaddy