diff --git a/2.高效学习/2.1.4书籍的盲目崇拜.md b/2.高效学习/2.1.4书籍的盲目崇拜.md index 5bc2cb0..4e376c6 100644 --- a/2.高效学习/2.1.4书籍的盲目崇拜.md +++ b/2.高效学习/2.1.4书籍的盲目崇拜.md @@ -4,7 +4,7 @@ 很多同学在学习一个知识的时候,总是喜欢 -"我们要学 C 语言,我买一本大黑书看看!" +"我们要学 C 语言,我买一本大黑书看看!" ![](https://cdn.xyxsw.site/boxcnqsCWmUTDr5UDLYca9YkhHh.png) diff --git a/2.高效学习/2.3.1阅读文档(B百度爬).md b/2.高效学习/2.3.1阅读文档(B百度爬).md index f0ccff4..fbd8b3f 100644 --- a/2.高效学习/2.3.1阅读文档(B百度爬).md +++ b/2.高效学习/2.3.1阅读文档(B百度爬).md @@ -16,25 +16,25 @@ ## 查找资料 -你应该使用下表中推荐的网站: +你应该使用下表中推荐的网站: -一些说明: +一些说明: -- 一般来说, 百度对英文关键词的处理能力比不上 Google 。 -- 通常来说, 英文维基百科比中文维基百科和百度百科包含更丰富的内容。 +- 一般来说,百度对英文关键词的处理能力比不上 Google。 +- 通常来说,英文维基百科比中文维基百科和百度百科包含更丰富的内容。 - 一些中文论坛内大家互相抄,很有可能你阅读了很久都没有找到正确的答案,并且英文社区内的内容远远比中文的要好。 ## 英文阅读 -随着科学技术的发展, 在国际学术交流中使用英语已经成为常态: 顶尖的论文无一不使用英文来书写, 在国际上公认的计算机领域经典书籍也是使用英文编著。 +随着科学技术的发展,在国际学术交流中使用英语已经成为常态:顶尖的论文无一不使用英文来书写,在国际上公认的计算机领域经典书籍也是使用英文编著。 -顶尖的论文没有中文翻译版; 如果需要获取信息, 也应该主动去阅读英文材料, 而不是等翻译版出版. "我是中国人, 我只看中文"这类观点已经不符合时代发展的潮流, 要站在时代的最前沿, 阅读英文材料的能力是不可或缺的。 +顶尖的论文没有中文翻译版; 如果需要获取信息,也应该主动去阅读英文材料,而不是等翻译版出版。"我是中国人,我只看中文"这类观点已经不符合时代发展的潮流,要站在时代的最前沿,阅读英文材料的能力是不可或缺的。 -阅读英文材料, 无非就是"不会的单词查字典, 不懂的句子反复读"。 +阅读英文材料,无非就是"不会的单词查字典,不懂的句子反复读"。 -如今网上有各种词霸可解燃眉之急, 但英文阅读能力的提高贵在坚持。"刚开始觉得阅读英文效率低", 是所有中国人都无法避免的经历。 +如今网上有各种词霸可解燃眉之急,但英文阅读能力的提高贵在坚持。"刚开始觉得阅读英文效率低", 是所有中国人都无法避免的经历。 -如果你发现身边的大神可以很轻松地阅读英文材料, 那是因为他们早就克服了这些困难. 引用陈道蓄老师的话: 坚持一年, 你就会发现有不同; 坚持两年, 你就会发现大有不同。 +如果你发现身边的大神可以很轻松地阅读英文材料,那是因为他们早就克服了这些困难。引用陈道蓄老师的话:坚持一年,你就会发现有不同; 坚持两年,你就会发现大有不同。 当然也有一些巧妙地方法帮助大家进行阅读,比如知云文献翻译,不要依赖这类软件! diff --git a/2.高效学习/2.3.2检索论文核心内容.md b/2.高效学习/2.3.2检索论文核心内容.md index 58d05e8..4949c62 100644 --- a/2.高效学习/2.3.2检索论文核心内容.md +++ b/2.高效学习/2.3.2检索论文核心内容.md @@ -2,7 +2,7 @@ 请克服对论文英文的恐惧,适当的利用翻译软件。 -~~由于笔者只阅读过 CV 领域和NLP领域的一些文章,且阅读量并不算太高,故对论文的理解不仅有限且仅限于该领域内的论文风格和内容技巧,望读者见谅。~~ +~~由于笔者只阅读过 CV 领域和 NLP 领域的一些文章,且阅读量并不算太高,故对论文的理解不仅有限且仅限于该领域内的论文风格和内容技巧,望读者见谅。~~ ## 论文的一般结构 @@ -12,9 +12,9 @@ 一般的标题主要包括两个内容:使用什么方法解决什么问题。以此高度概括文章的内容和工作。 -还有一种标题是比较新颖的,会使用一些比喻性的手法吸引眼球(一般人驾驭不住) +还有一种标题是比较新颖的,会使用一些比喻性的手法吸引眼球 (一般人驾驭不住) -论文作者会在标题下面指出,当我们的论文阅读量到一定程度之后可以关注一下作者。当我们在关注或研究某一个领域时,该领域的几篇重要论文读下来我们就可以知道哪个作者在该领域较为活跃,谁提出了 Backbone ,谁在挖坑(填坑)。可以通过作者进而检索到你感兴趣的工作或判断论文写作质量。 +论文作者会在标题下面指出,当我们的论文阅读量到一定程度之后可以关注一下作者。当我们在关注或研究某一个领域时,该领域的几篇重要论文读下来我们就可以知道哪个作者在该领域较为活跃,谁提出了 Backbone,谁在挖坑 (填坑)。可以通过作者进而检索到你感兴趣的工作或判断论文写作质量。 ### 2. abstract(摘要) @@ -38,7 +38,7 @@ Introduction 主要是对整篇论文的一个介绍,读者看完 introduction Introduction 会说明论文的主题、范围和研究目的。 -然后阐明研究的起因、背景及相关领域简要历史回顾。(前人做了哪些工作、哪些尚未解决、目前进展到何种程度等)这一部分不同的论文情况不同,有些论文会单独拿出来作为一部分(related work),当我们刚进入到某一个领域时,我们可以通过这一部分了解该领域的大致研究风格和该篇论文的研究路径,get 到作者的研究思路(论文的这个课题存在有着哪些问题以及所面临怎样的挑战,发现前人工作的缺陷以及在此基础上的改进),有时可能会对我们的工作有启发。当然,如果我们对这一领域足够了解,可以不需要看这一部分,研究思路也可以在论文的方法部分自行体会。 +然后阐明研究的起因、背景及相关领域简要历史回顾。(前人做了哪些工作、哪些尚未解决、目前进展到何种程度等) 这一部分不同的论文情况不同,有些论文会单独拿出来作为一部分 (related work),当我们刚进入到某一个领域时,我们可以通过这一部分了解该领域的大致研究风格和该篇论文的研究路径,get 到作者的研究思路 (论文的这个课题存在有着哪些问题以及所面临怎样的挑战,发现前人工作的缺陷以及在此基础上的改进),有时可能会对我们的工作有启发。当然,如果我们对这一领域足够了解,可以不需要看这一部分,研究思路也可以在论文的方法部分自行体会。 ### 4. method(提出的算法) @@ -54,7 +54,7 @@ Introduction 会说明论文的主题、范围和研究目的。 ~~Conclusion 结论部分,一般阅读完开头直接阅读结尾,就基本清楚文章脉络结构和思考方案了~~ -结论和摘要的内容基本相似,但某些论文的结论中可能还会指出对该工作的不足之处,还有该领域内对该工作的一些期望(挖坑)。 +结论和摘要的内容基本相似,但某些论文的结论中可能还会指出对该工作的不足之处,还有该领域内对该工作的一些期望 (挖坑)。 ## 怎么用三遍读懂一篇论文 @@ -62,19 +62,19 @@ Introduction 会说明论文的主题、范围和研究目的。 -### 第一遍(海选) +### 第一遍 (海选) 阅读标题、摘要、结论。花费十几分钟时间了解论文是否适合你的研究方向。 看完之后可以再看一看方法和实验部分重要的图和表,进而判断这篇论文是否适合自己,是否和自己当前在做的工作相似。 -### 第二遍(大致把握) +### 第二遍 (大致把握) 确定论文值得读之后,快速将整个论文过一遍,不需要知道所有的细节,先尝试去理解论文中重要的图和表,知道每一个部分在干什么,圈出比较重要的相关文献。 若到此为止:知道它解决什么问题,结果怎么样,大概用了什么方法,但是觉得文章很难看不太懂,可以去读他们之前引用的那些文章,读完之后再回头读这篇文章。 -### 第三遍(重点研读) +### 第三遍 (重点研读) 第三遍是最详细的一遍,当我们在读第三遍时通常意味着我们对该论文的工作很感兴趣了,这时我们需要力争做到知道每一段和每一句都在说什么、干什么。基本了解整个文章的细节,在之后基于他做研究,或者在之后提到它的时候,可以详详细细的复述一遍。 diff --git a/2.高效学习/2.3.3优秀的开源社区.md b/2.高效学习/2.3.3优秀的开源社区.md index 1072a0b..52f19c4 100644 --- a/2.高效学习/2.3.3优秀的开源社区.md +++ b/2.高效学习/2.3.3优秀的开源社区.md @@ -16,7 +16,7 @@ 例如中国的优秀开源社区,Datawhale,他们会有组队学习的活动,可以去查找他们的公众号,然后免费加入牵引着你学习某一个模块有趣的知识。 -比如硬件的一生一芯,南大nju的开源项目,手把手教你做出一个CPU,当然非常的困难,大家有兴趣可以报名 +比如硬件的一生一芯,南大 nju 的开源项目,手把手教你做出一个 CPU,当然非常的困难,大家有兴趣可以报名 当然也有国内的厂商为了自己的生态搞出了一些开源社区,比如说 paddle 飞桨高校领航团,让你使用他们的技术,然后他们出资帮助你学习。 @@ -24,21 +24,21 @@ [GitHub: Where the world builds software](https://github.com/)(全世界最大的开源社区) -在本章内容 /3.编程思维体系构建/3.5git与github 中详细介绍了github和git的使用方法,大家可以参考一下 +在本章内容 /3.编程思维体系构建/3.5git 与 github 中详细介绍了 github 和 git 的使用方法,大家可以参考一下 同时我介绍一个有趣的搜索信息的方法, 举例:如果你想学习某个语言,可以在 github 上搜索 -awesome (你想学的东西) +awesome(你想学的东西) 例如 awesome C ## 开源的意义 -本章内容节选自Datawhale 5位成员在AI TIME的分享,《清华、北大、上交大、哈工大、中山大学5位同学眼中的开源》。 +本章内容节选自 Datawhale 5 位成员在 AI TIME 的分享,《清华、北大、上交大、哈工大、中山大学 5 位同学眼中的开源》。 -## Z世代的开源新态度 +## Z 世代的开源新态度 杨毅远,王琦与江季作为《Easy RL: 强化学习教程》的作者,他们有着丰富的开源经历与感受。 @@ -48,7 +48,7 @@ awesome (你想学的东西) 王琦:开源的过程虽然会占用自己的一部分时间,但这却是一个幸福的烦恼。 -论文末尾大多会附上代码地址,即代码开源。大家在看到论文代码开源的情况下会认为这篇论文能够复现的可能性比较大。虽然在将开源项目发布到GitHub之后给他人问题答复的过程可能会占用自己的一部分时间,但这可以算是一个幸福的烦恼。 +论文末尾大多会附上代码地址,即代码开源。大家在看到论文代码开源的情况下会认为这篇论文能够复现的可能性比较大。虽然在将开源项目发布到 GitHub 之后给他人问题答复的过程可能会占用自己的一部分时间,但这可以算是一个幸福的烦恼。 江季:敢于开源的人也是一个乐于分享,心态积极的人。 @@ -68,7 +68,7 @@ awesome (你想学的东西) 陈安东:开源是一种企业与市场自我革命的做法,这种革命能够促进技术的发展,最终为用户带来好处。 -一个行业的开源企业对传统1对1收费的市场是一个不小的冲击,因为这个市场份额也就随着这家免费的开源企业而不断减小。但是由于开源带来的技术分享反而使市场更加集中与优质化,技术也随着开源而更快速的迭代,从而产生了更好用的产品。 +一个行业的开源企业对传统 1 对 1 收费的市场是一个不小的冲击,因为这个市场份额也就随着这家免费的开源企业而不断减小。但是由于开源带来的技术分享反而使市场更加集中与优质化,技术也随着开源而更快速的迭代,从而产生了更好用的产品。 张文涛:开源有利于提升产品的影响力 diff --git a/2.高效学习/2.4优雅的记笔记.md b/2.高效学习/2.4优雅的记笔记.md index b2f357c..71e2fc0 100644 --- a/2.高效学习/2.4优雅的记笔记.md +++ b/2.高效学习/2.4优雅的记笔记.md @@ -12,8 +12,8 @@ Typora 看看下面教程 -https://www.markdown.xyz + 以及这个 -https://castel.dev/post/lecture-notes-1 + diff --git a/2.高效学习/2.5以理工科的方式阅读英语.md b/2.高效学习/2.5以理工科的方式阅读英语.md index d582746..778639a 100644 --- a/2.高效学习/2.5以理工科的方式阅读英语.md +++ b/2.高效学习/2.5以理工科的方式阅读英语.md @@ -7,7 +7,7 @@ 下面提供一些英语阅读的方法: 1. **学好英语(顺便过四六级)** -2. 文档阅读:使用浏览器插件,例如:[沙拉查词](https://saladict.crimx.com/)、[划词翻译](https://hcfy.app/)、[沉浸式翻译](https://immersivetranslate.com/docs/)、[DeepL翻译](https://www.deepl.com/zh/app/) +2. 文档阅读:使用浏览器插件,例如:[沙拉查词](https://saladict.crimx.com/)、[划词翻译](https://hcfy.app/)、[沉浸式翻译](https://immersivetranslate.com/docs/)、[DeepL 翻译](https://www.deepl.com/zh/app/) 3. Youtube 等视频网站的双语字幕 [languagereactor](https://www.languagereactor.com/)。 4. 实用翻译软件[复制即翻译](https://copytranslator.github.io/)。 5. ~~Galgame 翻译 [LunaTranslator](https://github.com/HIllya51/LunaTranslator)~~ diff --git a/2.高效学习/2.6学会使用AI辅助学习.md b/2.高效学习/2.6学会使用AI辅助学习.md index 59afd9f..a951b77 100644 --- a/2.高效学习/2.6学会使用AI辅助学习.md +++ b/2.高效学习/2.6学会使用AI辅助学习.md @@ -1,15 +1,15 @@ -# 2.1.6学会使用AI辅助学习 +# 2.1.6 学会使用 AI 辅助学习 -在过去,AI取代人类似乎一直是一件遥远的事情,但在 2022 年末OpenAI 的 ChatGPT 发布后在全球引发了一场 AI 热潮,ChatGPT 所表现出来的能力让我们思考在不久的未来我们真的会被AI取代吗? +在过去,AI 取代人类似乎一直是一件遥远的事情,但在 2022 年末 OpenAI 的 ChatGPT 发布后在全球引发了一场 AI 热潮,ChatGPT 所表现出来的能力让我们思考在不久的未来我们真的会被 AI 取代吗? -在知识储备上,我们人类在 AI 面前绝不占优势,就比如 ChatGPT 是几乎使用了绝大多数西方互联网的优质回答而训练出来的,想要在知识储备量战胜AI已经成了天方夜谭,但大家也不要为不知道一些知识而焦虑,我很欣赏南京大学的蒋炎岩教授说的一句话:“大佬和小白的差距并不是知识量的差距,而是大佬知道如何问出好的问题,搜索引擎会告诉你答案,或许未来还可以问 AI ” +在知识储备上,我们人类在 AI 面前绝不占优势,就比如 ChatGPT 是几乎使用了绝大多数西方互联网的优质回答而训练出来的,想要在知识储备量战胜 AI 已经成了天方夜谭,但大家也不要为不知道一些知识而焦虑,我很欣赏南京大学的蒋炎岩教授说的一句话:“大佬和小白的差距并不是知识量的差距,而是大佬知道如何问出好的问题,搜索引擎会告诉你答案,或许未来还可以问 AI” -假如你已经玩过 ChatGPT ,你会发现它还远没有到真正取代人类的地步,而是它的出现已经能够使教育以及学习方式发生巨大变革。接下去我会给你们一些小建议: +假如你已经玩过 ChatGPT,你会发现它还远没有到真正取代人类的地步,而是它的出现已经能够使教育以及学习方式发生巨大变革。接下去我会给你们一些小建议: -- 如果你希望完成一件事但却不知道怎么做,你可以问搜索引擎 (PS:远离百度! 通常会得到 StackOverflow 上的答案),或是直接问 ChatGPT!不过要小心,人工智能现在还经常一本正经胡说八道。 -- 问出合适的问题,就像你问一个大佬,假如你给出的 Prompt 非常宽泛而模糊,无论是谁都没法保障给出的答案是你想要的。比如你问“如何学好数学”,你可能会得到“多做题”这样的答案,但这并不是你想要的。你应该问“如何学好导数”,这样你就能得到更加精准的答案。问ChatGPT也是同样的道理,假如你给了它一个非常宽泛的 Prompt ,它也只能给你一个模糊而无用的回答,假如给它的 Prompt 非常准确,那么你得到一个优质的回答的概率也会更高。 -- 有时候遇到一些你不愿意从头读到尾的手册,这时候去问ChatGPT是一个合适的选择,在一个手册里可能你需要的只是其中的一小段,但是手册却有几十页,此时ChatGPT的优势就体现出来了,它会根据你给的 Prompt 从手册中总结你需要的知识告诉你,这极大地降低了检索知识的成本,所以我觉得ChatGPT更像一个加强版搜索引擎。 -- 向AI获取知识,在现在的很多时候,AI对于知识的掌控和讲解的逻辑性甚至超过了相当一大部分老师,或许去听3节长课甚至不如向ChatGPT问几个问题学到的知识更多,(或许未来的课堂可以变成老师下发一张写着问题的卡片,我们只需要发给ChatGPT,通过它的回答来学习)。 -- 还有就是,在大学你会遇到非常多非常无趣的报告,甚至有些报告需要查重,没人愿意写,这时候ChatGPT就成为了拯救你的时间的利器,直接告诉它报告的要求,同时限定个数和字数,往往它能给出能混出相对高分的优质(低信息熵)报告,当然这适合的是一些水课报告,专业课报告别这么搞,专业课报告最好用它做来辅助你的写作,而不是直接抄袭。 +- 如果你希望完成一件事但却不知道怎么做,你可以问搜索引擎 (PS:远离百度!通常会得到 StackOverflow 上的答案),或是直接问 ChatGPT!不过要小心,人工智能现在还经常一本正经胡说八道。 +- 问出合适的问题,就像你问一个大佬,假如你给出的 Prompt 非常宽泛而模糊,无论是谁都没法保障给出的答案是你想要的。比如你问“如何学好数学”,你可能会得到“多做题”这样的答案,但这并不是你想要的。你应该问“如何学好导数”,这样你就能得到更加精准的答案。问 ChatGPT 也是同样的道理,假如你给了它一个非常宽泛的 Prompt,它也只能给你一个模糊而无用的回答,假如给它的 Prompt 非常准确,那么你得到一个优质的回答的概率也会更高。 +- 有时候遇到一些你不愿意从头读到尾的手册,这时候去问 ChatGPT 是一个合适的选择,在一个手册里可能你需要的只是其中的一小段,但是手册却有几十页,此时 ChatGPT 的优势就体现出来了,它会根据你给的 Prompt 从手册中总结你需要的知识告诉你,这极大地降低了检索知识的成本,所以我觉得 ChatGPT 更像一个加强版搜索引擎。 +- 向 AI 获取知识,在现在的很多时候,AI 对于知识的掌控和讲解的逻辑性甚至超过了相当一大部分老师,或许去听 3 节长课甚至不如向 ChatGPT 问几个问题学到的知识更多,(或许未来的课堂可以变成老师下发一张写着问题的卡片,我们只需要发给 ChatGPT,通过它的回答来学习)。 +- 还有就是,在大学你会遇到非常多非常无趣的报告,甚至有些报告需要查重,没人愿意写,这时候 ChatGPT 就成为了拯救你的时间的利器,直接告诉它报告的要求,同时限定个数和字数,往往它能给出能混出相对高分的优质(低信息熵)报告,当然这适合的是一些水课报告,专业课报告别这么搞,专业课报告最好用它做来辅助你的写作,而不是直接抄袭。 -> PS. 不论ChatGPT还是一些别的AI,它们的回答都不是绝对准确的,使用的时候要带有自己的思考,不要盲目相信AI的指示,把AI作为你的帮手,这能极大提高你的学习效率。 +> PS. 不论 ChatGPT 还是一些别的 AI,它们的回答都不是绝对准确的,使用的时候要带有自己的思考,不要盲目相信 AI 的指示,把 AI 作为你的帮手,这能极大提高你的学习效率。 diff --git a/2.高效学习/2.高效学习.md b/2.高效学习/2.高效学习.md index 908d919..12af4fc 100644 --- a/2.高效学习/2.高效学习.md +++ b/2.高效学习/2.高效学习.md @@ -1,6 +1,8 @@ # 2.高效学习 -author:zzm 邮箱 1264517821@qq.com +author:zzm + +> 邮箱 <1264517821@qq.com> 本章节更多的是纠正同学们开始实验前的一些误区以及提出一些建议。 @@ -11,7 +13,7 @@ author:zzm 邮箱 1264517821@qq.com
RTFM
-Read the f**(friendly) manual +Read the f**(friendly) manual ::: @@ -39,7 +41,7 @@ Search the "friendly" website 这也是我们希望大伙能获得的能力,如果把全部信息都塞上去难免有些揠苗助长。 -况且现在还有ChatGPT来辅助你去解决问题,大大降低了学习的难度,不过大家需要谨慎考虑的是,现在的机器也会一本正经的胡说八道 +况且现在还有 ChatGPT 来辅助你去解决问题,大大降低了学习的难度,不过大家需要谨慎考虑的是,现在的机器也会一本正经的胡说八道 ::: diff --git a/2.高效学习/补充:为什么不要用百度.md b/2.高效学习/补充:为什么不要用百度.md index b4759cc..86da600 100644 --- a/2.高效学习/补充:为什么不要用百度.md +++ b/2.高效学习/补充:为什么不要用百度.md @@ -1,16 +1,16 @@ # 补充:为什么不要用百度 -相信大家都用过百度来搜索一些非技术问题,而且一般很容易找到答案。 但随着问题技术含量的提高,百度的搜索结果会变得越来越不靠谱。 坚持使用百度搜索技术问题,你将很有可能会碰到以下情况之一: +相信大家都用过百度来搜索一些非技术问题,而且一般很容易找到答案。但随着问题技术含量的提高,百度的搜索结果会变得越来越不靠谱。坚持使用百度搜索技术问题,你将很有可能会碰到以下情况之一: - 搜不到相关结果,你感到挫败 - 搜到看似相关的结果,但无法解决问题,你在感到挫败之余,也发现自己浪费了不少时间 - 你搜到了解决问题的方案,但没有发现原因分析,结果你不知道这个问题背后的细节 -你可能会觉得"可以解决问题就行,不需要了解问题背后的细节"。 但对于一些问题(例如编程问题),你了解这些细节就相当于学到了新的知识,所以你应该去了解这些细节,让自己懂得更多。 +你可能会觉得"可以解决问题就行,不需要了解问题背后的细节"。但对于一些问题 (例如编程问题),你了解这些细节就相当于学到了新的知识,所以你应该去了解这些细节,让自己懂得更多。 -如果谷歌能以更高的概率提供可以解决问题的方案,并且带有原因分析,你应该没有理由使用百度来搜索技术问题。 如果你仍然坚持使用百度,原因就只有一个: 你不想主动去成长。 +如果谷歌能以更高的概率提供可以解决问题的方案,并且带有原因分析,你应该没有理由使用百度来搜索技术问题。如果你仍然坚持使用百度,原因就只有一个:你不想主动去成长。 -你或许会觉得翻阅手册太麻烦了,所以可能会在百度上随便搜一篇博客来尝试寻找解决方案。 但是,你需要明确以下几点: +你或许会觉得翻阅手册太麻烦了,所以可能会在百度上随便搜一篇博客来尝试寻找解决方案。但是,你需要明确以下几点: - 你搜到的博客可能也是转载别人的,有可能有坑 - 博主只是分享了他的经历,有些说法也不一定准确 diff --git a/3.编程思维体系构建/3.6.5.1CS61A Sec1.md b/3.编程思维体系构建/3.6.5.1CS61A Sec1.md index b854495..da5572f 100644 --- a/3.编程思维体系构建/3.6.5.1CS61A Sec1.md +++ b/3.编程思维体系构建/3.6.5.1CS61A Sec1.md @@ -14,10 +14,22 @@ ## 学习目标 -在这一部分我们要学习的内容主要是函数(Functions)和控制(Control) +在这一部分我们要学习的内容主要是函数(Functions) ### 一个简单的例子 +::: warning A Midsummer-Night's Dream: +And, as imagination bodies forth + +The forms of things to unknown, and the poet's pen + +Turns them to shapes, and gives to airy nothing + +A local habitation and a name. + +—William Shakespeare +::: + 为了给 Python 一个适当的介绍,我们将从一个使用几种语言特征的例子开始。 Python 内置了对广泛的常见编程的支持,如操作文本、显示图形和通过互联网进行通信。 @@ -101,7 +113,7 @@ words = set(shakespeare.read().decode().split()) 解释器的设计和实现也是我们之后的主要议题。 -### 编程原本 +### 编程要素 编程语言不仅仅是指示计算机执行任务的一种手段,同时也是一个框架,我们在这个框架内组织我们关于计算过程的想法。程序的作用是在编程社区的成员之间交流这些想法,所以,编写的程序必须让人们容易阅读,而且只是顺便让机器执行。 @@ -133,7 +145,7 @@ words = set(shakespeare.read().decode().split()) 0.9921875 ``` -这些数学表达式使用*中缀*符号,其中*运算符*(例如,+,-,*,或/)出现在*操作数*(数字)之间。Python 包括许多形成复合表达式的方法。我们不会试图立即列举它们,而是会随着我们的学习引入新的表达形式,以及它们所支持的语言特性。 +这些数学表达式使用*中缀*符号,其中*运算符*(例如,+,-,\*,或/)出现在*操作数*(数字)之间。Python 包括许多形成复合表达式的方法。我们不会试图立即列举它们,而是会随着我们的学习引入新的表达形式,以及它们所支持的语言特性。 最重要的一种复合表达式是*调用表达式*,它将一个函数应用于一些参数。回顾一下代数,函数的数学概念是一个从一些自变量到因变量的映射。例如,一个求最大值的函数将其的多个输入映射到当中最大值的一个单一的输出。Python 表达函数应用的方式与传统数学中相同。 @@ -415,6 +427,37 @@ None 出于这些问题的考虑,我们将在下一章节中着重讨论创建和使用纯函数。`print`函数的使用只是为了让我们看到计算的中间结果。 +### 错误和调试 + +Python 正在等待你的命令。我们鼓励你尝试该语言,即使你可能还不知道它的全部语法和结构。但是,请做好应对错误准备。虽然计算机非常快速和灵活,但它们也非常僵化。计算机的本质在[斯坦福大学的入门课程](http://web.stanford.edu/class/cs101/code-1-introduction.html)中被描述为 + +::: warning The fundamental equation of computers is: +**computer = powerful + stupid** + +Coputers are very powerful, looking at volumes of data very quickly. Computers can perform billions of operations per second, where each operation is pretty simple. + +Computers are also shockingly stupid and fragile. The operations that they can do are extremely rigid, simple, and mechanical. The computer lacks anything like real insight ... it's nothing like the HAL 9000 from the movies. If nothing else, you should not be intimidated by the computer as if it's some sort of brain. It's very mechanical underneath it all. + +Programming is about a person using their real insight to build something useful, constructed out of these teeny, simple little operations that the computer can do. + +—Francisco Cai and Nick Parlante, Stanford CS101 +::: + +当你尝试使用 Python 解释器时,计算机的僵化将立即变得明显:即使是最小的拼写和格式更改也会导致意外的输出和错误。 + +学习解释错误和诊断意外错误的原因称为调试。调试的一些指导原则是: + +1. **逐步测试**: +每个编写良好的程序都由可以单独测试的小型模块化组件组成。尽快尝试测试你编写的所有内容,以便及早发现问题并获得对组件的信心。 +2. **隔离错误**: +语句输出中的错误通常可归因于特定的模块化组件。尝试诊断问题时,请在尝试更正错误之前将错误跟踪到最小的代码片段。 +3. **检查假设**: +解释器会完全执行你的指示 —— 不会多也不会少。当某些代码的行为与程序员认为(或假设)的结果不匹配时,那么输出就是出乎意料的。重新检查你的假设,然后将调试工作集中在验证你的假设是否确实成立上。 +4. **咨询他人**: +你并不孤单!如果你不理解错误消息,请咨询朋友、教师或搜索引擎。如果你已隔离出错误,但无法弄清楚如何纠正它,请让其他人查看。在小组解决问题的过程中,许多有价值的编程知识会被分享。 + +逐步测试、模块化设计、精确的假设和团队合作是贯穿本文的主题。希望它们也能贯穿你的计算机科学生涯。 + ## 课后作业 一个好的课程怎么能少得了精心准备的课后作业呢?🤗 diff --git a/4.人工智能/4.11本章节内容的局限性.md b/4.人工智能/4.11本章节内容的局限性.md index 7bb70cd..8c109e0 100644 --- a/4.人工智能/4.11本章节内容的局限性.md +++ b/4.人工智能/4.11本章节内容的局限性.md @@ -60,7 +60,7 @@ ZZM 曾经尝试过投入大量时间去钻研数学以及机器学习相关的 联系 ZZM,我努力改 ::: tip 邮箱 -1264517821@qq.com +<1264517821@qq.com> ::: - + diff --git a/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md b/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md index 8ed0d32..d939b2b 100644 --- a/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md +++ b/4.人工智能/4.3.1.1程序示例——maze迷宫解搜索.md @@ -198,6 +198,7 @@ class Maze: ![](https://cdn.xyxsw.site/UVssbyMxCoEQSuxvjh3caWAFnOb.png) 根节点的值是多少? + 1. 2 2. 3 3. 4 diff --git a/4.人工智能/4.3.1搜索.md b/4.人工智能/4.3.1搜索.md index e9f18a8..3a6e8f5 100644 --- a/4.人工智能/4.3.1搜索.md +++ b/4.人工智能/4.3.1搜索.md @@ -98,7 +98,8 @@ ### 最优解 (Optimal Solution) - 在所有解决方案中路径成本最低的解决方案。 -- 在搜索过程中,数据通常存储在节点 (Node) 中,节点是一种包含以下数据的数据结构: + +- 在搜索过程中,数据通常存储在**节点 (Node)** 中,节点是一种包含以下数据的数据结构: - 状态——state - 其父节点,通过该父节点生成当前节点——parent node @@ -114,7 +115,7 @@ 然而,节点只是一个数据结构——它们不搜索,而是保存信息。为了实际搜索,我们使用了边域 (frontier),即“管理”节点的机制。边域首先包含一个初始状态和一组空的已探索项目(探索集),然后重复以下操作,直到找到解决方案: -重复: +重复: 1. 如果边域为空 - 停止,搜索问题无解 @@ -321,22 +322,22 @@ def remove(self): - 最大化玩家在$Actions(s)$中选择动作$a$,该动作产生$Min-value(Result(s,a))$ 的最高值。 - 最小化玩家在$Actions(s)$中选择动作$a$,该动作产生$Max-value(Result(s,a))$ 的最小值。 - ```txt - Function Max-Value(state): - v=-∞ - if Terminal(state): - return Utility(state) - for action in Actions(state): - v = Max(v, Min-Value(Result(state, action))) - return v - Function Min-Value(state): - v=+∞ - if Terminal(state): - return Utility(state) - for action in Actions(state): - v = Min(v, Max-Value(Result(state, action))) - return v - ``` +```txt +Function Max-Value(state): + v=-∞ + if Terminal(state): + return Utility(state) + for action in Actions(state): + v = Max(v, Min-Value(Result(state, action))) + return v +Function Min-Value(state): + v=+∞ + if Terminal(state): + return Utility(state) + for action in Actions(state): + v = Min(v, Max-Value(Result(state, action))) + return v +``` 不会理解递归?也许你需要看看这个:[阶段二:递归操作](../3.%E7%BC%96%E7%A8%8B%E6%80%9D%E7%BB%B4%E4%BD%93%E7%B3%BB%E6%9E%84%E5%BB%BA/3.6.4.2%E9%98%B6%E6%AE%B5%E4%BA%8C%EF%BC%9A%E9%80%92%E5%BD%92%E6%93%8D%E4%BD%9C.md) @@ -350,6 +351,6 @@ def remove(self): ### 深度限制的极大极小算法 (Depth-Limited Minimax) - - 总共有$255168$个可能的井字棋游戏,以及有$10^{29000}$个可能的国际象棋中游戏。到目前为止,最小最大算法需要生成从某个点到终端条件的所有假设游戏状态。虽然计算所有的井字棋游戏状态对现代计算机来说并不是一个挑战,但目前用来计算国际象棋是不可能的。 +- 总共有$255168$个可能的井字棋游戏,以及有$10^{29000}$个可能的国际象棋中游戏。到目前为止,最小最大算法需要生成从某个点到**终端条件**的所有假设游戏状态。虽然计算所有的井字棋游戏状态对现代计算机来说并不是一个挑战,但目前用来计算国际象棋是不可能的。 深度限制的 Minimax 算法在停止之前只考虑预先定义的移动次数,而从未达到终端状态。然而,这不允许获得每个动作的精确值,因为假设的游戏还没有结束。为了解决这个问题,深度限制 Minimax 依赖于一个评估函数,该函数从给定状态估计游戏的预期效用,或者换句话说,为状态赋值。例如,在国际象棋游戏中,效用函数会将棋盘的当前配置作为输入,尝试评估其预期效用(基于每个玩家拥有的棋子及其在棋盘上的位置),然后返回一个正值或负值,表示棋盘对一个玩家对另一个玩家的有利程度。这些值可以用来决定正确的操作,并且评估函数越好,依赖它的 Minimax 算法就越好。