建立关于一门学科的知识树 | 与 AI 结伴自学(二)
2023-05-2304:06
Leeduckgo
2023-05-23 04:06
Leeduckgo
2023-05-23 04:06
收藏文章
订阅专栏

在 上一篇文章 中,我们阐述了 NonceGeekDAO 对大语言模型的理解:

ChatGPT(大语言模型)是当前时间点上人类有关自学的最强工具。

接下来我们将通过 Step by Step 的方式,进行 AI 辅助自学的实战。

0x01 区分两种思维模式


我们可以把人类的思维模式分为两种,一种叫「高屋建瓴」,一种叫「精雕细琢」

高屋建瓴是在大脑中快速搭建知识框架,形成一张「知识地图」;

精雕细琢是针对知识地图中的具体知识点,进行深入打磨,直至完全理解甚至创新式理解。

大多数人无法掌握「高效自学能力」,无非是来自于这两点中的缺失:

  • 沉迷于细枝末节知识点的雕琢,无法建立知识点间的关系,整张地图混乱不堪……
  • 缺乏合理的自评方式,无从判断某个知识点是否掌握……
  • 缺乏掌握一个从未接触过的全新的自学点的能力……

等等等等。

因此,本系列也将着重于通过两点进行「自学能力突破」 —— 如何在 AI 辅助下高屋建瓴?如何在 AI 辅助下精雕细琢?

0x02 80/20 法则 —— 以实用出发,考满分是低效行为

帕雷托法則(英語:Pareto principle,或稱80/20 法則關鍵少數法則八二法則二八法則)、巴萊多定律)[1]指出,約僅有 20% 的因素影響 80% 的結果。也就是說:所有變因中,最重要的僅有 20%,雖然剩餘的 80% 占了多數,影響的幅度卻遠低於「關鍵的少數」。[2]管理諮詢約瑟夫·朱蘭首先提出該原則。此一 80/20 的概念是義大利經濟學家帕雷托(Vilfredo Pareto)在洛桑大學發現的,並於他的第一篇文章《政治經濟學》中說明了該現象,例如:義大利約有 80%的土地由 20%的人口所有、80% 的豌豆產量來自 20% 的植株等等。[3]

該原則在現今企業管理中廣泛運用。例如,「80%的銷售額來自 20%的客戶」。理察·科赫(Richard Koch)撰寫了一本「80/20」原則,展示了帕雷托原則在企業管理和生活中的實際應用。

在數學上,80/20 規則大體上跟隨著一組特定參數的冪定律分布(也稱帕雷托分布),許多自然現象也呈現如此分布。[4]

—— https://zh.wikipedia.org/zh-tw/%E5%B8%95%E7%B4%AF%E6%89%98%E6%B3%95%E5%88%99

在掌握自学能力时,80/20 法则(帕累托法则)是首要掌握的「公理」。因为我们「自学」的目标和「功利性学习(此处无贬义)」的目的迥异。「功利性学习」是希望通过学习达成某一种证明,例如考试考满分。

但是,在我们的定义里,「自学」是为了真正掌握某一学科的知识,考试等测评结果只是「对掌握程度的一种考核」

在这种情况下,我们需要考虑如何接近「帕累托最优」

帕累托最優是指資源分配的一種理想狀態,假定固有的一群人和可分配的資源,從一種分配狀態到另一種狀態的變化中,在沒有使任何人境況變壞的前提下,使得至少一個人變得更好,這就是帕累托改進或帕累托最優化。帕累托最優的狀態就是不可能再有更多的帕累托改進的餘地;換句話說,帕累托改進是達到帕累托最優的路徑和方法。

—— https://zh.wikipedia.org/zh-tw/%E5%B8%95%E7%B4%AF%E6%89%98%E6%95%88%E7%8E%87

如果我们仅需要自学一门科目,那末也无需全盘考虑,把全部的学力都放到这门学科上即是(例如寿司仙人把自己所有的学力都放到寿司🍣上)。然而,在绝大多数情况下我们要同时学习多门科目,这些科目之间甚至相互关联:

  • 要成为一位全栈工程师。那末至少要掌握一门前端技术、一门后端技术和基础的运维技术。
  • 要成为一名理科生。那末数学、物理、生物都要学习。
  • 要成为一名技术型创业者。相关技术、商业、人际关系……

因此,当涉及全盘考虑的时候,「如何分配学力」这事就很重要了,而「帕累托法则」是绝佳的用于决策的公理

一句话将帕累托法则落实到自学上,就是 ——

掌握 20% 的关键知识,就能覆盖 80% 的情况。(轻松)

更妙的是,因为不同学科知识的相互关联,所以如果每个学科都掌握了 20% 的关键知识,那么这些学科会形成健康的自生长网络!

0x03 Pareto Prompt

在理解帕累托法则之后,我们可以构建出针对帕累托法则的自学 Prompt:

Identify the 20% of [topic or skill] that will yield 80% of the desired results and provide a focused learning plan to master it.

Python为例:

Human: 
Identify the 20% of python that will yield 80% of the desired results and provide a focused learning plan to master it.

回答:

AI:
To identify the 20% of Python that will yield 80% of the desired results, it's important to focus on the most commonly used and essential concepts. Here's a focused learning plan to master these key areas:

Variables and Data Types: Understand the different data types in Python, such as numbers, strings, lists, dictionaries, and tuples. Learn how to declare variables and perform basic operations on them.

Control Flow: Master conditional statements (if-else) and loop structures (forwhile) to control the flow of your program.

Functions: Learn how to define and use functions to organize your code and make it reusable. Understand parameters, return values, and scope.

File Input/Output: Understand how to read from and write to files, and handle exceptions when working with file operations.

Data Structures: Gain proficiency in lists, dictionaries, and tuples. Learn how to manipulate and access data within these structures.

String Manipulation: Learn how to manipulate strings, including concatenation, formatting, slicing, and common string methods.

Error Handling: Understand how to handle exceptions and use try-except blocks to gracefully manage errors in your code.

Modules and Packages: Familiarize yourself with importing and using pre-existing code through modules and packages. Explore the Python Standard Library.

Object-Oriented Programming (OOP): Gain a basic understanding of classes, objects, attributes, methods, inheritance, and encapsulation.

Libraries: Explore commonly used Python libraries such as NumPy, Pandas, and Matplotlib for numerical computing, data manipulation, and data visualization.

List Comprehensions: Learn how to create concise lists based on existing lists, reducing the need for explicit loops.

Databases: Get an introduction to interacting with databases using Python, including connecting, querying, and updating data.

Regular Expressions: Understand the basics of regular expressions for pattern matching and text manipulation.

Exception Handling: Master the principles of handling and raising exceptions effectively to ensure the reliability of your code.

Functional Programming: Learn about functional programming concepts such as lambda functions, map, filter, and reduce to write concise and expressive code.

Web Scraping: Explore how to extract data from websites using libraries like Beautiful Soup and requests.

API Integration: Understand how to interact with web APIs to retrieve and manipulate data from external sources.

Testing: Learn the basics of testing, including writing unit tests using frameworks like unittest to ensure the correctness of your code.

Documentation: Emphasize the importance of writing clean, readable code and documenting your code using docstrings.

Debugging: Master basic debugging techniques to identify and fix errors in your code effectively.

By focusing on these key areas, you'll build a strong foundation in Python and be able to tackle a wide range of programming tasks. Remember to practice your skills through coding exercises, mini-projects, and real-world applications. As you become more comfortable, you can explore advanced topics and specialized areas based on your specific interests and requirements.

同样的,我们可以通过递进的方式进一步拆分其中的知识点:

Human: 
Identify the 20% of Variables and Data Types Knowledge Points in Python that will yield 80% of the desired results and provide a focused learning plan to master it.
AI:
To identify the 20% of Variables and Data Types knowledge points in Python that will yield 80% of the desired results, it's important to focus on the most commonly used and essential concepts. Here's a focused learning plan to master these key areas:

Numeric Data Types: Gain a solid understanding of integer (int), floating-point (float), and complex numbers (complex). Learn how to perform arithmetic operations, type conversions, and use common mathematical functions.

Strings: Master the basics of string manipulation, including string concatenation, slicing, formatting, and common string methods like split(), join(), lower(), upper(), and strip().

Lists: Learn how to create and manipulate lists, which are versatile and widely used data structures in Python. Understand how to add, remove, and access elements, perform slicing, and use list methods like append(), extend(), insert(), remove(), and sort().

Dictionaries: Understand the concept of key-value pairs and learn how to create and manipulate dictionaries. Master operations like adding, removing, and accessing elements, as well as dictionary methods like keys(), values(), items(), and get().

Tuples: Gain proficiency in using tuples, which are immutable sequences. Learn how to create and unpack tuples, access elements, and use them effectively in scenarios where immutability is required.

Type Conversion: Understand how to convert variables from one data type to another using functions like int(), float(), str(), and list().

Variable Assignment and Reassignment: Learn the rules and conventions for assigning values to variables, including multiple assignment, simultaneous assignment, and variable naming conventions.

Variable Scope: Understand the concept of variable scope and learn about global and local variables, as well as the global and nonlocal keywords.

Boolean Data Type: Familiarize yourself with Boolean values (True and False) and how they are used in conditional statements and logical operations.

None Type: Understand the purpose and use of the None value, which represents the absence of a value.

Built-in Functions: Explore commonly used built-in functions in Python, such as len(), max(), min(), sum(), range(), and input().

Mutable vs. Immutable Data Types: Understand the difference between mutable (e.g., lists, dictionaries) and immutable (e.g., integers, strings, tuples) data types and their implications in terms of memory usage and behavior.

Type Checking: Learn how to check the type of a variable using the type() function and understand the importance of type checking in ensuring the correctness of your code.

Data Type Methods: Familiarize yourself with useful methods specific to certain data types, such as split() and join() for strings, or append() and sort() for lists.

Sequence Operations: Master common sequence operations like concatenation (+), repetition (*), membership testing (in), and indexing/slicing to extract elements from sequences.

Data Type Conversion and Casting: Understand how to convert variables between different data types explicitly using functions like int(), str(), float(), and the casting notation, e.g., int(x).

Data Type Comparison: Learn how to compare variables of different data types using comparison operators (==, !=, <, >, <=, >=).

Variable Naming Conventions: Familiarize yourself with the recommended conventions for naming variables in Python, including using lowercase letters


这样我们可以根据自己的情况获得一张知识地图 Knowledge Map,而这个将是我们的自学起点。

0x04 自学付费群

除了在公众号上持续连载以外,本系列还开放付费讨论群(499/ 人),加我微信,共同掌握「自学的极致」



【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code