├── static
├── og.png
├── 何时复习.jpg
├── 大量卡片.jpg
├── 提高效率.jpg
├── 遗忘曲线.jpg
├── 长期记忆.jpg
├── SIGKDD.png
├── SSP-MMC.png
├── 中文信息学报.png
├── 稳定性遗忘曲线.png
├── 间隔重复模拟环境.png
├── 311013遗忘曲线.png
├── SSP-problem.png
├── icons
│ ├── favicon.ico
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── apple-touch-icon.png
│ ├── mstile-150x150.png
│ ├── android-chrome-192x192.png
│ ├── android-chrome-512x512.png
│ ├── browserconfig.xml
│ ├── site.webmanifest
│ └── safari-pinned-tab.svg
└── three_forgetting_curves.png
├── layouts
├── shortcodes
│ └── withorbit.html
├── partials
│ ├── head-withorbit.html
│ └── favicon.html
└── _default
│ └── baseof.html
├── .gitmodules
├── archetypes
└── default.md
├── content
├── search
│ └── _index.md
├── archives
│ └── _index.md
├── post
│ ├── second-language-acquisition-theory.md
│ ├── test-orbit.md
│ ├── 中国教育没有逻辑吗?.md
│ ├── srs_plight_prospect.md
│ ├── introduce-matlab.md
│ ├── srs_algorithm_introduction.md
│ └── how-to-write-good-prompts.md
└── about.md
├── .gitignore
├── README.md
├── .github
└── workflows
│ └── gh-pages.yml
├── LICENSE
└── config.toml
/static/og.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/og.png
--------------------------------------------------------------------------------
/static/何时复习.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/何时复习.jpg
--------------------------------------------------------------------------------
/static/大量卡片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/大量卡片.jpg
--------------------------------------------------------------------------------
/static/提高效率.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/提高效率.jpg
--------------------------------------------------------------------------------
/static/遗忘曲线.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/遗忘曲线.jpg
--------------------------------------------------------------------------------
/static/长期记忆.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/长期记忆.jpg
--------------------------------------------------------------------------------
/static/SIGKDD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/SIGKDD.png
--------------------------------------------------------------------------------
/static/SSP-MMC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/SSP-MMC.png
--------------------------------------------------------------------------------
/static/中文信息学报.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/中文信息学报.png
--------------------------------------------------------------------------------
/static/稳定性遗忘曲线.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/稳定性遗忘曲线.png
--------------------------------------------------------------------------------
/static/间隔重复模拟环境.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/间隔重复模拟环境.png
--------------------------------------------------------------------------------
/static/311013遗忘曲线.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/311013遗忘曲线.png
--------------------------------------------------------------------------------
/static/SSP-problem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/SSP-problem.png
--------------------------------------------------------------------------------
/static/icons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/favicon.ico
--------------------------------------------------------------------------------
/layouts/shortcodes/withorbit.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{.Inner}}
4 |
5 |
--------------------------------------------------------------------------------
/layouts/partials/head-withorbit.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/static/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "themes/fuji"]
2 | path = themes/fuji
3 | url = https://github.com/dsrkafuu/hugo-theme-fuji.git
4 |
--------------------------------------------------------------------------------
/static/icons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/apple-touch-icon.png
--------------------------------------------------------------------------------
/static/icons/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/mstile-150x150.png
--------------------------------------------------------------------------------
/archetypes/default.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "{{ replace .Name "-" " " | title }}"
3 | date: {{ .Date }}
4 | draft: true
5 | ---
6 |
7 |
--------------------------------------------------------------------------------
/static/three_forgetting_curves.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/three_forgetting_curves.png
--------------------------------------------------------------------------------
/static/icons/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/android-chrome-192x192.png
--------------------------------------------------------------------------------
/static/icons/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/L-M-Sherlock/thoughts-memo/HEAD/static/icons/android-chrome-512x512.png
--------------------------------------------------------------------------------
/content/search/_index.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "Search"
3 | description = ""
4 | +++
5 |
6 | You can change search page details above.
7 |
8 | Keep this file saft to ensure Hugo generate the search page.
9 |
--------------------------------------------------------------------------------
/content/archives/_index.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "Archives"
3 | description = ""
4 | +++
5 |
6 | You can change archives page details above.
7 |
8 | Keep this file saft to ensure Hugo generate the archives page.
9 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # ide config
2 | .idea/
3 |
4 | # output
5 | public/
6 | resources/
7 |
8 | # system
9 | .DS_Store
10 | .DS_Store?
11 | ._*
12 | .Spotlight-V100
13 | .Trashes
14 | ehthumbs.db
15 | Thumbs.db
16 |
17 | # runtime data
18 | pids
19 | *.pid
20 | *.seed
21 | *.pid.lock
22 | .hugo_build.lock
23 |
--------------------------------------------------------------------------------
/static/icons/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #ffc40d
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Thoughts Memo 汉化组小站
2 |
3 | 本小站是 Thoughts Memo 汉化组的一个实验性博客,旨在使用 GitHub Pages 部署基于 [Orbit](https://withorbit.com/) 的[助记媒介](https://zhuanlan.zhihu.com/p/459483765),探索思想工具的严肃使用环境。
4 |
5 | 为了方便编写助记媒介,不折腾页面样式,本小站使用了 [Hugo](https://gohugo.io/) 和模板 [Fuji](https://github.com/dsrkafuu/hugo-theme-fuji)。
6 |
7 | 未来会尝试将一些知识类博客转化为助记媒介。
8 |
9 | 访问地址:https://l-m-sherlock.github.io/thoughts-memo/
10 |
11 | 介绍&教程:https://zhuanlan.zhihu.com/p/484118458
12 |
--------------------------------------------------------------------------------
/content/post/second-language-acquisition-theory.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "第二语言习得理论"
3 | date: 2022-03-21T19:06:12+08:00
4 | tags: ["二语习得", "翻译"]
5 | draft: true
6 | ---
7 |
8 | 内容改编自 *Principles and Practice in Second Language Acquisition - II. Second Language Acquisition Theory*
9 |
10 |
11 |
12 | 本章总结了目前的第二语言习得理论。为了做到这一点,其首先描述了一些非常重要的假设。前三个假设,即习得与学得区分、自然顺序假设和监视器假设,将被简要回顾,因为它们已经在其他几本书和专业论文中得到了大量的论述。然而,我们将提供足够的细节,让不熟悉的读者对这些假说和支持这些假说的证据有一个好的概念。第四种假说,即输入假说,可能是当今第二语言习得理论中最重要的一个概念。它之所以重要,是因为它试图回答我们如何习得语言这一关键的理论问题。它也很重要,因为它可能是我们各级第二语言教学中许多日常问题的答案。在对输入假说的讨论之后,我们转向情感过滤的概念,这是一个关于情感因素如何与第二语言习得过程相关的假说。
13 |
14 |
--------------------------------------------------------------------------------
/content/post/test-orbit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "内嵌 Orbit 测试"
3 | date: 2022-03-19T00:00:00+08:00
4 | description: "一个简单的内嵌卡片测试"
5 | tags: ["test"]
6 | ---
7 |
8 | 简单测试一下Orbit能不能在GitHubPage上显示。
9 |
10 |
11 |
12 | Orbit是Andy的实验性助记媒介平台。本页面用于测试Orbit能否在GitHubPages上使用。
13 |
14 | {{< withorbit >}}
15 |
19 |
23 | {{< /withorbit >}}
24 |
25 | 如果你看到上面的 Orbit 页面,本测试就成功了~
26 |
--------------------------------------------------------------------------------
/static/icons/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "",
3 | "short_name": "",
4 | "icons": [
5 | {
6 | "src": "http://l-m-sherlock.github.io/thoughts-memo/icons/android-chrome-192x192.png",
7 | "sizes": "192x192",
8 | "type": "image/png"
9 | },
10 | {
11 | "src": "http://l-m-sherlock.github.io/thoughts-memo/icons/android-chrome-512x512.png",
12 | "sizes": "512x512",
13 | "type": "image/png"
14 | }
15 | ],
16 | "theme_color": "#ffffff",
17 | "background_color": "#ffffff",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/.github/workflows/gh-pages.yml:
--------------------------------------------------------------------------------
1 | name: github pages
2 |
3 | on:
4 | push:
5 | branches:
6 | - main # Set a branch to deploy
7 | pull_request:
8 |
9 | jobs:
10 | deploy:
11 | runs-on: ubuntu-20.04
12 | steps:
13 | - uses: actions/checkout@v3
14 | with:
15 | submodules: true # Fetch Hugo themes (true OR recursive)
16 | fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
17 |
18 | - name: Setup Hugo
19 | uses: peaceiris/actions-hugo@v2
20 | with:
21 | hugo-version: 'latest'
22 | extended: true
23 |
24 | - name: Build
25 | run: hugo --minify
26 |
27 | - name: Deploy
28 | uses: peaceiris/actions-gh-pages@v3
29 | if: github.ref == 'refs/heads/main'
30 | with:
31 | github_token: ${{ secrets.GITHUB_TOKEN }}
32 | publish_dir: ./public
33 |
--------------------------------------------------------------------------------
/layouts/_default/baseof.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ partial "head.html" . }}
6 |
7 |
8 |
12 | {{ partial "scripts-front.html" . }}
13 | {{ partial "header.html" . }}
14 |
15 |
16 |
17 |
18 |
19 | {{ block "main" . }}{{ end }}
20 |
21 | {{ partial "sidebar.html" . }}
22 |
23 | {{ partial "components.html" . }}
24 |
25 |
26 | {{ partial "footer.html" . }}
27 | {{ partial "scripts-end.html" . }}
28 | {{ partial "head-withorbit.html" . }}
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/layouts/partials/favicon.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Jarrett Ye
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/content/about.md:
--------------------------------------------------------------------------------
1 | +++
2 | title = "About Hugo"
3 | description = "Hugo, the world’s fastest framework for building websites."
4 | date = 2020-04-11T19:15:32+08:00
5 | showLicense = false
6 | showToc = false
7 | +++
8 |
9 | Written in Go, Hugo is an open source static site generator available under the [Apache Licence 2.0.](https://github.com/gohugoio/hugo/blob/master/LICENSE) Hugo supports TOML, YAML and JSON data file types, Markdown and HTML content files and uses shortcodes to add rich content. Other notable features are taxonomies, multilingual mode, image processing, custom output formats, HTML/CSS/JS minification and support for Sass SCSS workflows.
10 |
11 | Hugo makes use of a variety of open source projects including:
12 |
13 | - https://github.com/yuin/goldmark
14 | - https://github.com/alecthomas/chroma
15 | - https://github.com/muesli/smartcrop
16 | - https://github.com/spf13/cobra
17 | - https://github.com/spf13/viper
18 |
19 | Hugo is ideal for blogs, corporate websites, creative portfolios, online magazines, single page applications or even a website with thousands of pages.
20 |
21 | Hugo is for people who want to hand code their own website without worrying about setting up complicated runtimes, dependencies and databases.
22 |
23 | Websites built with Hugo are extremelly fast, secure and can be deployed anywhere including, AWS, GitHub Pages, Heroku, Netlify and any other hosting provider.
24 |
25 | Learn more and contribute on [GitHub](https://github.com/gohugoio).
26 |
--------------------------------------------------------------------------------
/content/post/中国教育没有逻辑吗?.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "中国教育没有逻辑吗?"
3 | date: 2022-08-19T22:22:34+08:00
4 | tags: ["回答备份", "原创"]
5 | ---
6 |
7 | 当前的中国教育根本就不是教育,其目的根本就不是为了使人全面发展,甚至也不是为了提高学生的学习能力。
8 |
9 | 两条基本逻辑贯穿着中国教育:**筛选**和**驯化**。我们也可以理解为:当前的中国教育是**科举制度**和**普鲁士工厂教育制度**的结合体。
10 |
11 | 许多读者在读了往期的一些文章后往往会抱有疑问:「我们的教育为什么离谱到这种程度?」如果你理解了中国教育的本质,这个问题其实很容易想明白。
12 |
13 | # 科举制度的根本目的是社会分层
14 |
15 | 对中国学生来说,考试和排名从来都是家常便饭。学校和教师会欺骗学生:「学校组织的考试是为了更好的学习」,这句话完全是扯淡。
16 |
17 | 对大多数学生来说,考试只会带来无穷的自卑和压抑。只有少部分学生可以从考试排名中获得那一份作为好学生的优越感,而这种优越感本身是建立在他人的巨大痛苦上,是一种可鄙的虚荣。
18 |
19 | 成绩好的学生被捧到天上,接受家长和教师的表扬,自信满满。而成绩不好的学生永远只能生活在他人的光环下,接受家长和教师的训斥,承受巨大的压抑。这就导致,在学校里,每个人潜意识里都把学生按成绩分为三六九等,成绩差的人在“好学生”面前甚至会抬不起头。
20 |
21 | 考试排名不仅会打击大多数学生的自尊心,甚至还会扭曲那些“好学生”的价值观。学习不再是出于好奇心,学习的目的不再是感受学习知识本身的快乐,而是为了高人一等,为了那一份虚荣心和优越感。这对个人的学习内驱力是一种扼杀。[1]
22 |
23 | 由此可见,考试排名压制了学生学习能力的发展,还会对成绩差的学生造成巨大的心理创伤。而这份创伤,恰恰是目的。通过多年的考试排名以及最终的高考,「我成绩不好我就低人一等」的思想会根深蒂固。学生从小就被学校灌输等级观念,这让他们在成年后坦然接受自己“低人一等”的命运,成为他们打破阶级局限的最大心理障碍:「谁让你成绩不好?你活该做人下人!」。
24 |
25 | 写到这里,读者也应该大致明白考试的真正意义。在传统的等级社会,统治者出于个人的目的,将人民划分为多个等级以管理。而科举制度就是为此而生。当代的学生接受了持续十几年的教育,被分成几等并贴上标签,像商品一样进入社会等待企业单位挑选。这和古代科举社会分层没有本质上的差别。
26 |
27 | 与古代相比,我们的考试内容从四书五经变成了语数英。但考什么真的重要吗?几乎所有学生或多或少的都会意识到:在学校学的大部分内容,根本就不能称作是知识,顶多算是应试内容。其实,考试考什么真的没那么重要,只要卷子能把大多数学生难倒,让他们失分就足够了。毕竟,学生的一切功夫都是为了考试,考试是为了分层筛选。
28 |
29 | 不可否认,学校教授的内容对于个人知识增长还是有一些正面意义的。但和真正的学习相比,学校教授知识的效率低的令人发指。毕竟,科举制度的首要目的是筛选,而让学生学到知识只是次要目的。次要目的服从于主要目的。所以,广大学生上了十几年学自我感觉啥都不会也很正常啦。
30 |
31 | # 普鲁士工厂教育制度的目的是把人变成工具
32 |
33 | 这个账号之前发布过许多批判普鲁士工厂教育制度的文章。在这里,我们再向大家解释驯化的概念。
34 |
35 | 何为驯化?
36 |
37 | 举例来说,一匹马的天性是向往自由和幸福的。驯马人在这匹马年轻之时,不断地鞭笞并训斥、引诱并奖励。在威逼利诱之下,这匹马最终彻底被奴役。不需要任何惩罚,一个简单的指令就会使这匹马不停地负重前进,直到主人允许它停下来为止。无条件的服从充斥着这匹马的一生,直到它身体残废或是累死为止。
38 |
39 | 人作为最高级的动物,大脑的各种能力都是最高级的,被驯化的能力也是如此。一个人天生在好奇心的驱使下,热爱探索学习未知的事物。学校在学生年幼之时,把学生关在围墙内,在他们本应四处奔跑打闹时把他们拴在课桌上。不仅如此,学校强迫学生的大脑接受所学课程内容,无论这些课程有多无聊。经过威逼利诱,学生最终学会了无条件服从。学校是一个封闭的小社会,学校生活是正式进入社会前的预备。在学校里服从班主任的学生,进入社会后也会自然地无条件服从上级领导。
40 |
41 | 在学校里,大多数学生讨厌上课;在社会上,大多数人不喜欢自己的工作。Wozniak 博士[2]甚至感慨:「学校创造了一个不幸福的社会!」[3]。许多人没有意识到,自己的种种局限和缺点,是在学校里埋下的。其实,这正是普鲁士教育系统的目的。
42 |
43 | 对于一匹马来说,在草原上自由驰骋是正常而自然的;而被迫沦为人的运输工具,日复一日忍受苦役是一种扭曲和异化。对于人来说也是如此:在肮脏的工厂里,忍受着机械的轰鸣声,日复一日承受着无趣的重复工作,没有休息的权利,没有决定自己生活的权利,最基本的人身自由和交配的权利都被剥夺……这是扭曲与异化。而这种异化,从普鲁士工厂教育体制建立的第一天起就开始进行了。
44 |
45 | 习惯了苦役的马匹无法理解在草原上自由奔驰的快乐,正如经历了学校折磨的学生无法理解自由学习[4]的快乐[5]。对他们来说,学习就是作业[6]、无聊[7]课程[8]、压力[9]的代名词,学习是痛苦的。普鲁士工厂生产的学生,麻木、没有反抗精神、缺乏判断能力、丧失学习能力、社交能力弱。这些人进入社会后只能沦为牛马和耗材,成为社会齿轮中的一环,成为工具。
46 |
47 | 学习能力被普鲁士工厂教育体制扼杀后,人的认知就难以更新,也就无法打破自身的局限。认知障碍让他们难以打破阶级局限。
48 |
49 | 不可否认,普鲁士模式的确有其历史意义。得益于这样的教育模式所生产出的大量低级劳工,19世纪的普鲁士一跃成为工业强国。然而,普鲁士工厂教育系统的目的毕竟是把人变成工具,无法生产出真正的创造力和学术成就。在今天,落后的普鲁士工厂教育体制的存与废已经成为了我们必须认真对待的问题。
50 |
51 | # 后记:我们为什么要全力批判学校的强制教育?
52 |
53 | 许多经历过强制教育的学生都对于现存体制满腔不平,可大多数人对于当前教育系统缺乏结构性批判能力,又感叹自身的弱小,无法以一己之力对抗这庞然大物,最终选择妥协绥靖,甚至逐渐走向投降主义而为虎作伥。
54 |
55 | 当前的教育模式本就存在着巨大的不合理性,在当前社会极度内卷的环境下,这样的不合理性又被放大,千万学生苦不堪言,却束手无策。
56 |
57 | 与大家一样,我也曾饱受教育系统的摧残。我本以为所有的悲剧都注定发生,无可避免。
58 |
59 | 但接触到自由学习[4]理念后,我意识到:对于强制教育的批判观点并不只来源于学生的无意义抱怨,其背后拥有充足的科学理论[10]支持。同时,我也从部分自由学习者身上找到了希望和出路。
60 |
61 | 抱着改变这一切的梦想,我决定传播我们的声音。这个账号下的文章将会持续对现存学校教育体制进行系统批判,并分享这个时代下的出路,分享自由学习、互联网学习、间隔重复[11]等理念。
62 |
63 | 欢迎每个人在评论区进行留言来表达自己的想法。点赞可以将文章推广给更多人。当然,希望有共识的人可以关注我们后续的工作。
64 |
65 | 感谢每位读完这篇文章的人,您的阅读就是对我们工作最大的尊重。
66 |
67 | 参考
68 |
69 | ^[1]为什么我的成绩那么好,最终还是成了一个没用的人? https://www.zhihu.com/question/30375123/answer/2202895186
70 |
71 | ^[2]彼得 · 沃兹尼亚克 https://zhuanlan.zhihu.com/p/303204832
72 |
73 | ^[3]教育改革 https://zhuanlan.zhihu.com/p/242815901
74 |
75 | ^[4]自由学习 https://zhuanlan.zhihu.com/p/272543239
76 |
77 | ^[5]学习的乐趣 https://www.zhihu.com/question/429432467/answer/1578551193
78 |
79 | ^[6]家庭作业 https://zhuanlan.zhihu.com/p/501186817
80 |
81 | ^[7]无聊 https://zhuanlan.zhihu.com/p/386603182
82 |
83 | ^[8]课标 https://zhuanlan.zhihu.com/p/469943493
84 |
85 | ^[9]慢性压力 https://zhuanlan.zhihu.com/p/426177682
86 |
87 | ^[10]《我永远不会送我的孩子去学校》 https://zhuanlan.zhihu.com/p/73383015
88 |
89 | ^[11]高效学习的间隔重复 https://zhuanlan.zhihu.com/p/420105707
--------------------------------------------------------------------------------
/content/post/srs_plight_prospect.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "间隔重复的困境与前景"
3 | date: 2022-04-23T16:42:39+08:00
4 | tags: ["间隔重复", "原创"]
5 | draft: true
6 | ---
7 |
8 | 研究进展、知识表述、可迁移性、算法效率
9 |
10 |
11 |
12 | 离上一次写原创,又过去一个多月了。汉化组又翻译了不少文章,而我也在推进自己的研究进展,同时思考了间隔重复面临的困境与前景。这次就和大家分享一下我目前的进展和思考。
13 |
14 | # 研究进展
15 |
16 | 
17 |
18 | 
19 |
20 | 去年 10 月份,我投出了人生中的第一份论文,并被中文信息学报录用,这篇论文是关于长期记忆预测的。然后是今年 2 月份,我投出了第一篇英文论文,还在 SIGKDD 的审稿周期中,这篇论文是关于间隔重复调度优化的。目前我正在写我的第三篇论文,算是对前两份工作的整合,这也是未来一个月我会闭关的原因之一。
21 |
22 | 其实我对在知乎上分享我的研究进展很有兴趣,但由于论文一直没有被刊出,如果分享工作的细节,可能会影响发表。这一点上我比较谨慎,希望这篇论文能早日刊出,这样我也能松一口气了。
23 |
24 | 目前我的研究进展已经推进到基于大规模数据的间隔重复算法实现上了,但由于模型较为复杂,还无法直接被用于个人的间隔重复系统,未来的研究会朝这个方向努力。
25 |
26 | 更多的研究进展,我会在论文发表后与大家分享,还请见谅。不过本期对间隔重复困境的思考中会包含算法相关的问题,感兴趣的朋友可以继续往下看。
27 |
28 | # 困境
29 |
30 | 任何一种学习方法,都有其局限性,间隔重复也不例外。而若想要间隔重复这一方法能够帮助到你,有以下问题需要回答:
31 |
32 | 1. 间隔重复能让你建立持久的长期记忆吗?
33 | 2. 间隔重复的时间成本可以被你接受吗?
34 | 3. 如果你不用间隔重复,是不是就会忘记?
35 | 4. 你通过间隔重复记住的知识能实际应用吗?
36 |
37 | 从目前的研究来看,这些问题的回答如下:
38 |
39 | 对于 1 的回答是:可以建立持久的长期记忆,但前提条件是知识的合理表述([如何写出好卡片](http://zhuanlan.zhihu.com/p/434074509))。表述非常糟糕的卡片往往会变成[水蛭](http://zhuanlan.zhihu.com/p/307602868),乃至[毒性记忆](http://zhuanlan.zhihu.com/p/67390960)。而合理的知识表述结合间隔重复,能够形成保持数月、数年,乃至数十年的长期记忆。
40 |
41 | 对于 2 的回答是:这其实包含了一个价值问题和一个事实问题。
42 |
43 | 1. 价值问题:记忆的内容是否值得我们付出时间?
44 |
45 | 2. 事实问题:间隔重复需要的时间是否合理?
46 |
47 | 对于 2.1 的回答是:只间隔重复那些你认为重要的内容就好了。
48 |
49 | 对于 2.2 的回答是:间隔重复需要的时间和你的知识表述有关。一张表述良好的卡片,使用间隔重复,一辈子只需要花 1 分钟。但表述糟糕的卡片,可能需要十倍(甚至更多)于此的时间。
50 |
51 | 对于 3 的回答是:对于天天都用的知识而言,确实很难忘记。但在创造性的工作中,我们需要的知识往往来自多个学科,并且包含大量细节。如果我们不间隔重复,我们真的就会忘记这些知识。
52 |
53 | 对于 4 的回答是:就我个人经验而言,是可以的,我平时写论文和做实验设计,大量依赖于我在间隔重复中记住的相关知识。当然个人经验的说服力并不大,感兴趣的朋友可以看这篇论文:[Butler - 2010 - Repeated Testing Produces Superior Transfer of Learning Relative to Repeated.pdf (andymatuschak.org)](https://andymatuschak.org/files/Butler%20-%202010%20-%20Repeated%20Testing%20Produces%20Superior%20Transfer%20of%20Learning%20Relative%20to%20Repeated.pdf)。但这些知识的迁移性也受到知识表述的限制。
54 |
55 | 看起来这些问题都能回答,那么困境究竟在哪里呢?
56 |
57 | ## 知识的合理表述
58 |
59 | 简简单单的 7 个字,难度却不小。如何让学习者编写出容易记忆的卡片,一直是推广间隔重复的难点之一。
60 |
61 | 从上面这些回答中,我们发现,知识的合理表述对 1、2、4 都有影响。知识表述太差,(1)即使间隔重复了也记不住;(2)即使记住也要花大量时间;(3)即使花了时间记住,也应用不到实际中。
62 |
63 | 支持(1)的证据有:[复合记忆痕迹的子稳定性收敛情况](https://zhuanlan.zhihu.com/p/471760789#h_471760789_18)
64 |
65 | 支持(2)的证据来自我的算法模拟:[Maimemo/SSP-MMC/algo/result](https://github.com/maimemo/SSP-MMC/tree/main/algo/result)
66 |
67 | 支持(3)的证据有:[编写间隔重复记忆卡片应避免浅层次的「模式匹配」](https://zhuanlan.zhihu.com/p/401944262)
68 |
69 | 即使最终学习者能够写出知识表述良好的卡片,但在制卡上花费太多时间,最终也会影响问题 2 的回答。
70 |
71 | ## 间隔重复的算法
72 |
73 | 抛开知识的合理表述不谈,间隔重复的算法也很重要,但它的重要性经常被人质疑。
74 |
75 | 其实用不同的算法对间隔重复过程进行模拟,比较一下同样记忆 1000 张卡片,各需要多少时间,最终记住了多少,自然就能比较出不同算法之间的效率差距。在我自己的论文研究中,这种差距可以达到 3 倍。也就是说,用两种算法,在付出同样的时间成本下,好算法可以记住的卡片数量是差算法的 3 倍。
76 |
77 | 当然,模拟终究是模拟,但这里也有真实实验的证据:
78 |
79 | >In the second half of 2019, we made a number of improvements to the platform, which have cumulatively resulted in compressing this curve by more than two repetitions. That is, readers now achieve a noticeably higher degree of demonstrated retention after four repetitions than readers did last year after six.
80 | >
81 | >——[“Skip”: exponential-backoff deferral mechanisms and fuzzy inboxes | Patreon 上的 Andy Matuschak](https://www.patreon.com/posts/skip-exponential-40672377)
82 |
83 | 通过改进算法,Andy 将重复次数从 6 次缩减到 4 次,并提高了保留率。
84 |
85 | 但间隔重复算法的困难在于如何克服数据稀疏,在学习者有限次复习内快速完成对记忆的建模,提供高效的复习安排。
86 |
87 | 而目前唯一能针对个人用户优化的间隔重复算法只有 SuperMemo 系列。 Andy、Duolingo、Maimemo 等间隔重复算法都是根据大量数据来优化间隔。
88 |
89 | # 前景
90 |
91 | 关于知识的合理表述,已经有不同的解决路径:[【随笔】间隔重复软件的两大进路](https://zhuanlan.zhihu.com/p/396445859)。
92 |
93 | - 一条是 SuperMemo、RemNote 等软件所采用的,通过辅助制卡来降低个人制卡成本;
94 |
95 | - 另一条是 Andy 的助记媒介所探索的,通过提供专家卡片和上下文来降低人均制卡成本。
96 |
97 | 但这些解决路径进展并不顺利(至少在国内):
98 |
99 | - SuperMemo 门槛太高,哪怕国内的志愿者们制作了大量的教程和辅助工具,依然没有让 SM 达到开箱即用的程度。
100 | - RemNote 对中文支持不佳,更不用说它还有个别名叫 BugNote,还不足以让每个人都能流畅的使用。
101 | - Andy 的助记媒介,几乎没有国内的材料,并且他画的好几个饼都没填完。
102 |
103 | 更不用说,大多数人入坑后都是在用 Anki,背着别人编写的卡片,然后在吃尽苦头后放弃。
104 |
105 | 看来间隔重复的前景并不明朗,但这些不顺利并不像 20 世纪之初物理学的「两朵乌云」那么致命。这正是我的机会。
106 |
107 | 之后我会在知乎上[开门造车](https://zhuanlan.zhihu.com/p/457529308),和大家同步最新的进展。
108 |
109 | 好了,空话就不多说了,我闭关去了,后会有期。
110 |
111 |
112 |
113 | 2022 年 4 月 23 日
114 |
115 | 叶峻峣
116 |
--------------------------------------------------------------------------------
/config.toml:
--------------------------------------------------------------------------------
1 | baseURL = "https://l-m-sherlock.github.io/thoughts-memo/"
2 | title = "Thoughts Memo"
3 |
4 | theme = "fuji"
5 | hasCJKLanguage = true
6 | enableEmoji = true
7 | enableRobotsTXT = true
8 | disableKinds = ["taxonomy"]
9 | ignoreErrors = ["error-disable-taxonomy"]
10 |
11 | ## Change this two to switch between different language
12 | languageCode = "zh-hans" # For RSS, view https://www.rssboard.org/rss-language-codes
13 | defaultContentLanguage = "zh-hans" # For HTML page, now support: en, zh-hans, zh-hant, ja, nl, pl, it
14 |
15 | summaryLength = 100 # Custom summary length, add in post file to custom split point
16 | paginate = 10
17 |
18 | # googleAnalytics = "UA-000000000-0" # Set your Google Analytics UA here
19 |
20 | [outputFormats]
21 | [outputFormats.SearchIndex]
22 | isPlainText = true
23 | notAlternative = true
24 | mediaType = "application/json"
25 | path = "/search/"
26 |
27 | [outputs]
28 | home = ["HTML", "RSS", "SearchIndex"]
29 |
30 | [permalinks]
31 | post = "/:section/:filename/" # Custom post links, e.g. "/:year/:month/:title/"
32 |
33 | [params]
34 | author = "Jarrett Ye" # You can also set author in post front matter individually
35 | subTitle = "探索思想工具"
36 | defaultTheme = "auto" # default theme when first visit (auto|dark|light)
37 |
38 | # Source URL of the website, will appear in the footer
39 | sourceURL = "https://github.com/L-M-Sherlock/thoughts-memo"
40 |
41 | # Use CloudFlare Workers to accelerate the Google Analytics
42 | # If you are using this please comment the googleAnalytics above
43 | # Check https://github.com/SukkaW/cloudflare-workers-async-google-analytics for more details
44 | # googleAnalyticsTid = "UA-000000000-0"
45 | # googleAnalyticsRoute = "https://*.*.workers.dev/"
46 |
47 | # Google AdSense
48 | # The AdSense code will be inserted between the head tags of your site.
49 | # googleAdsense = "0000000000000000"
50 |
51 | # Word counter and read time indicator in post metadata
52 | showWordCounter = true
53 | showReadTime = true
54 |
55 | # License in the footer
56 | showLicenseInFooter = true
57 |
58 | # License at the end of each post
59 | showLicense = true
60 | showToc = true
61 |
62 | # Copyright
63 | copyrightStartYear = "2022"
64 |
65 | # Open Graph & Twitter Card variables
66 | # You can also set description and images in post front matter individually
67 | description = "探索思想工具"
68 | og = "/thoughts-memo/og.png" # This will use the image called og.png in static/img folder
69 |
70 | # Posts shown in homepage
71 | mainSections = ["post"]
72 |
73 | # Bangumi image chart id
74 | # bgmImageChart = "000000"
75 |
76 | # License
77 | license = "CC BY-NC-SA 4.0"
78 | licenseLink = "http://creativecommons.org/licenses/by-nc-sa/4.0/"
79 |
80 | # Comments
81 | # utterances, see: https://utteranc.es/
82 | utterancesRepo = "L-M-Sherlock/thoughts-memo"
83 | utterancesIssueTerm = "pathname"
84 |
85 | # Disqus, see: https://disqus.com/admin/install/platforms/universalcode/
86 | # disqusShortname = "*********"
87 | # Also use DisqusJS for accessing from Mainland China, see: https://github.com/SukkaW/DisqusJS
88 | # If you want to set multiple api key, see theme's README for more details
89 | # disqusJSApi = "https://*********/"
90 | # disqusJSApikey = "**********"
91 |
92 | # custom lazyload placeholder
93 | # 16:9
94 | lazyPlaceholder = "/assets/lazyload/dsrca_loading_480x270.svg"
95 | # 32:9
96 | lazyPlaceholderRow = "/assets/lazyload/dsrca_loading_960x270.svg"
97 | # 8:9
98 | lazyPlaceholderCol = "/assets/lazyload/dsrca_loading_480x540.svg"
99 |
100 | # Let images display in full brightness under dark mode
101 | # disableDarkImage = true
102 |
103 | [markup]
104 | [markup.goldmark]
105 | [markup.goldmark.renderer]
106 | unsafe = true # Enable user to embed HTML snippets in Markdown content
107 | [markup.highlight]
108 | codeFences = false # Disable Hugo's code highlighter
109 |
110 | [markup.tableOfContents]
111 | startLevel = 2
112 | endLevel = 3
113 |
114 | [taxonomies]
115 | tag = "tags"
116 |
117 | [menu]
118 | [[menu.nav]]
119 | name = "Home"
120 | url = "/"
121 | weight = 1
122 | [[menu.nav]]
123 | name = "Archives"
124 | url = "/archives/"
125 | weight = 2
126 | [[menu.nav]]
127 | name = "About"
128 | url = "/about/"
129 | weight = 3
130 | [[menu.nav]]
131 | name = "Search"
132 | url = "/search/"
133 | weight = 4
134 | [[menu.nav]]
135 | name = "RSS"
136 | url = "/index.xml"
137 | weight = 5
138 |
139 | [[menu.link]]
140 | name = "GitHub"
141 | url = "https://github.com/L-M-Sherlock"
142 | weight = 1
143 | [[menu.link]]
144 | name = "ZhiHu"
145 | url = "https://www.zhihu.com/people/L.M.Sherlock"
146 | weight = 2
147 | [[menu.link]]
148 | name = "bilibili"
149 | url = "https://space.bilibili.com/5301648"
150 | weight = 3
151 |
152 | [build]
153 | noJSConfigInAssets = true
154 |
155 | [security]
156 | enableInlineShortcodes = true
157 |
--------------------------------------------------------------------------------
/content/post/introduce-matlab.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "认识 MATLAB"
3 | date: 2022-03-31T11:53:12+08:00
4 | description: ""
5 | tags: ["数学"]
6 | ---
7 |
8 | 本文将在知乎同步更新,但在本网站上将搭配助记媒介进行
9 |
10 | # 认识数学软件
11 |
12 | 许多人对进行解决数学问题的初映像,还停留在一个这么一个映像:一个人待在一个房间里,满屋子除了草稿纸不见他物,做题的人拿着纸币在草稿纸上疯狂的计算。实际上这跟我们的数学教育可能有一定的关系,由于需要参加考试,为了保证公平性,往往只允许使用一些比较初等的计算器,因此不少人将计算机和数学一分为二了。但实际上,随着科技的发展,许多的工作都可以由计算机完成,特别是面对数字量大,复杂度高的问题是,计算机更显得游刃有余。许多认为计算机无法完成的事情,计算机都可以帮你完成,例如求导,积分,解方程组。
13 |
14 | 本文将着重介绍一下最常用的三个工具:MATLAB, mathematica, python
15 |
16 | ## MATLAB 的历史
17 |
18 | 了解 MATLAB 的历史,是有助于帮我们理解 MATLAB 的这款软件本身的优点和缺点
19 |
20 | 实际上这段历史在 MATLAB 的官网上有创始人的个人陈述,在这里我将截取一部分
21 |
22 | [MATLAB发展简史 - MATLAB & Simulink (mathworks.cn)](https://ww2.mathworks.cn/company/newsletters/articles/a-brief-history-of-matlab.html)
23 |
24 | 根据 MATLAB 创始人 Cleve Moler 本人所言:
25 |
26 | > 在 70 年代和 80 年代初期,我在新墨西哥大学教授线性代数和数值分析。我希望我的学生能够方便地使用 LINPACK(数值线性代数的库,计算方程组,矩阵分解,矩阵乘法)和 EISPACK(计算特征值的 Fortran 库),而不必编写 Fortran 程序。我所说的“方便地使用”是指无需执行远程批处理和重复的编辑-编译-链接-加载-执行过程,而校园中央主机计算机一般需要执行这个过程。
27 | >
28 | > 因此,我研读了 Niklaus Wirth 的著作《*Algorithms + Data Structures = Programs*》,学习如何解析编程语言。我用 Fortran 编写了初版 MATLAB——矩阵实验室(Matrix Laboratory)的缩写,其数据类型只有矩阵。这个项目对我来说是兴趣爱好,也是我希望了解的编程新领域,并且可以给我的学生学习使用。那时候我没有任何正式的外部支持,当然也没有商业计划。
29 | >
30 | > 初版 MATLAB 只是一个交互式矩阵计算器。下面这个启动屏幕展示了所有保留的文字和函数,只有 71 个。要添加其他函数,用户必须从我这里获取源代码、编写 Fortran 子程序、在解析表里添加自己的函数名称,然后重新编译 MATLAB。
31 |
32 |
33 | {{< withorbit >}}
34 |
38 |
42 |
46 |
50 |
54 | {{< /withorbit >}}
55 |
56 | 在这里我要强调一下 MATLAB 的初版的用途:矩阵计算,在以后 MATLAB 的学习过程中,你会发现,矩阵计算一直是无法绕开的问题,因为 MATLAB 的基石便是矩阵计算。我们也可以看到初版 MATLAB 的成功正式因为其优秀的矩阵运算能力
57 |
58 | > 1979-80学年我在斯坦福任教,在那里教授数值分析的研究生课程,并在课程中引入了这一矩阵计算器。一些学生也在学习控制理论和信号处理等课程,而我对这些内容一无所知。但是,这些课程涉及的数学以矩阵运算为核心,因此 MATLAB 迅速得到了学生的追捧。
59 |
60 | 这么优秀的软件最终在众人的帮助下开始商业化
61 |
62 | > 终于, PC-MATLAB 于1984年在拉斯维加斯举行的 IEEE 决策与控制会议(IEEE Conference on Decision and Control)上首次发布。次年,发布了针对 Unix 工作站的 Pro-MATLAB 。
63 |
64 |
65 |
66 | ## mathematica历史
67 |
68 | mathematica在网络上就比较难找了(特别是中文互联网),许多内容我并没有找到原文的出处,为了严谨起见,我就并没有作为参考
69 |
70 | 我们直接来看 mathemtica 官方的版本更新说明,我会摘取重要的几条
71 |
72 | [Mathematica 最新版本和旧版本历史 (wolfram.com)](https://www.wolfram.com/mathematica/quick-revision-history.html)
73 |
74 | > 1988 年 6 月,Mathematica 首版发布
75 | >
76 | > 1989 年 8 月:支持远程内核
77 | >
78 | > 1991 年 1 月,增加功能:笔记本前端,数值常微分方程求解器,增加 ParametricPlot3D
79 | >
80 | > 1992 年 6 月
81 | >
82 | > - Unix 平台的 WSTP(Wolfram Symbolic Transfer Protocol)增强功能和文档
83 | > - Macintosh 平台的 WSTP(Wolfram Symbolic Transfer Protocol)
84 | >
85 | > 1993 年 6 月:具有新笔记本命令的 Windows 前端
86 | >
87 | > 1996 年 9 月:交互式数学排版系统
88 |
89 | (注:笔记本是一种代码与文字交织,互动性较好的计算媒介,在科学研究中广泛使用。常见的笔记本有 Jupyter Notebook, Mathematica 内置的笔记本等。更多可参考[维基百科](https://en.wikipedia.org/wiki/Notebook_interface))
90 |
91 |
92 |
93 | 我们可以发现, mathematica 所有的更新方向,都集中于交互,图像,笔记本上。
94 |
95 | 所以说通常在使用上, mathematica 会比较容易,而且 mathematica 的帮助文档的质量也是数一数二的,搭配上 wolfram 自家的 mathworld, 你甚至可以不看教材就可以学会数学。
96 |
97 | 同时我们也可以看到, mathematica 首次更新就增加了远程内核功能,也说明开发者,在开发的过程中,就并没有打算让用户在自己的电脑上完成所有的程序运算,这一点与 MATLAB 截然不同,因此我们也可以看到, mathematica 在对速度和内存的优化上,并没有下多大功夫。
98 |
99 | {{< withorbit >}}
100 |
104 |
108 |
112 |
116 |
120 | {{< /withorbit >}}
121 |
122 | ## python
123 |
124 | python 实际上不是数学软件,他是一种编程语言,但是在拥有 numpy, pandas 等一系列的库后, python 就拥有了和 MATLAB, mathematica 这些商业软件掰掰手腕的能力
125 |
126 | 根据知乎用户 xue gy 的回答 [MATLAB 在逐渐被 Python 淘汰吗?](https://www.zhihu.com/question/367881424/answer/2415598493)
127 |
128 | 在大部分的场景下, python 基本上都是会比 MATLAB 快的,特别在解微分方程上。
129 |
130 | ## 那为什么我们使用 MATLAB
131 |
132 | 但这并不代表说 MATLAB 就一无用处,会被淘汰
133 |
134 |
135 | {{< withorbit >}}
136 |
140 | {{< /withorbit >}}
141 |
142 | 正因为发行时间早,使用用户多,久经考验,在稳定性上 MATLAB 是有保证的,评论区中也提到 python 在画图的过程中有时会出问题,而且数据量大的时候会出现故障。
143 |
144 |
145 | MATLAB上的 simulink 现在更是 MATLAB 的最核心的功能,在控制系统建模、仿真上广泛的应用,这种应用是通常是无法替代的。试想一下,飞机上的控制功能软件,是使用虽然慢但是稳定的 MATLAB 好呢,还是使用快但是可能出问题的 python 呢?
146 |
147 | 而且 python 上的帮助文档是不如 MATLAB 来的有序的,这也给上手的人带来了巨大的麻烦
148 |
149 |
150 | {{< withorbit >}}
151 |
155 | {{< /withorbit >}}
156 |
157 | ## 关于mathematica
158 |
159 | 实际上我本人是很喜欢 mathematica ,语言的简洁易用,特别详尽的帮助文档(甚至可以说是教科书级别),上手难度非常低( mathematica 的函数非常多,基本上涵盖了数学的方方面面),而且 mathematica 在符号计算上的能力是非常强的,可以直接把未知数放进方程中直接进行计算,像学生比较头疼的不定积分,微分方程解析解,都可以直接算出来,不过遗憾的是,他的应用的场景还比较少,同时计算的也比较慢一些,所以说本人通常将 mathematica 当草稿纸使用,在一些不太确定的情况下利用 mathematica 进行验算。后期我也会写关于 mathematica 的教程
160 |
161 | {{< withorbit >}}
162 |
166 | {{< /withorbit >}}
167 |
168 | ## 为什么我要写 MATLAB 教程
169 |
170 | 因为考试要考(逃)
171 |
172 |
--------------------------------------------------------------------------------
/static/icons/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
116 |
--------------------------------------------------------------------------------
/content/post/srs_algorithm_introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "间隔重复记忆算法:e 天内,从入门到入土"
3 | date: 2022-03-23T10:59:12+08:00
4 | tags: ["间隔重复", "原创"]
5 | math: true
6 | ---
7 |
8 | 我是叶峻峣,论文 *[A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling | Proceedings of the 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining](https://dl.acm.org/doi/10.1145/3534678.3539081)* 的第一作者,现就职于墨墨科技,主要负责墨墨背单词的记忆算法业务。《间隔重复记忆算法:e 天内,从入门到入土》改编自我在墨墨内部介绍记忆算法的手稿,希望能让大家了解记忆算法到底在研究些什么,也希望能帮助更多研究者进入这一领域,推动学习技术的发展。废话不多说,让我们开始吧~
9 |
10 |
11 |
12 | ## 引言
13 |
14 | 从学生时代起,我们就隐隐约约察觉到以下两个事实
15 |
16 | 1. 对一条知识多复习几次,就能记得更清楚。
17 | 2. 不同的记忆有不同的寿命(记住一组知识后,它们将一条一条被遗忘,而不是作为一个整体完全丢失)
18 |
19 | 这两个事实常常引发我们思考
20 |
21 | 1. 此刻的我们忘掉了多少知识?
22 | 2. 我们遗忘知识的速度有多快?
23 | 3. 怎样安排复习才能减少遗忘?
24 |
25 | 在过去,很少人去测量过这些指标,也少有人去根据具体的指标来安排复习。而记忆算法要研究的,正是如何描述与预测我们的记忆,并做出合理的复习安排。
26 |
27 | 接下来的 e 天,我们将从以下三个方面来了解记忆算法
28 |
29 | 1. 经验算法
30 | 2. 理论模型
31 | 3. 前沿进展
32 |
33 | 为了让大家能更轻松地吸收这些知识,我在文章中嵌入不少助记卡片,不妨试试回答上面的问题。
34 |
35 | ## Day 1 经验算法
36 |
37 | 今天我们从最简单的经验算法讲起,了解一下目前还在流行的一些算法细节和它们背后的思想。不过在此之前,我们先讲讲这些算法的通用名称——间隔重复——的由来。
38 |
39 | ### 间隔重复
40 |
41 | 为了方便没有任何记忆相关基础知识的读者,我们先来认识一下遗忘曲线:
42 |
43 | 
44 |
45 | 第一天,当我们翻开课本,听老师讲课,学了点东西之后,随着时间推移,我们学到的东西在记忆中的保留量将像遗忘曲线那样持续下降。
46 |
47 | 遗忘曲线是对知识在我们记忆中的保留情况进行描述,其特点也非常鲜明:在没有进行复习的情况下,记忆保留随着时间下降的程度是先快后慢的。
48 |
49 | 面对遗忘我们怎能坐以待毙?看看加入复习后的效果!
50 |
51 | 
52 |
53 | 在学习新知识之后的这段时间里,如果我们进行复习,然后用一条新的遗忘曲线来刻画复习后的记忆保留情况,就会看到,复习之后的遗忘曲线变得更加平缓了,这意味着遗忘的速度在变慢。
54 |
55 | 那么问题来了,我们该怎样安排复习的间隔,才能更高效地记忆?
56 |
57 | 
58 |
59 | 看到一长一短的两个间隔了吗?对于较为生疏的材料,我们加以较短的间隔,而对于较为熟悉的材料,我们加以较长的间隔,将复习分散到未来不同的时间点进行。这种增强长期记忆的方法,被称为间隔重复。
60 |
61 | 那么间隔重复效果究竟有多好呢?让我们看一组医学生的数据:
62 |
63 | 
64 |
65 | 没有间隔重复,学生将在一年后遗忘 33% 的知识,两年后遗忘 50%!使用间隔重复后,将提高 40% 的学习效率!
66 |
67 | 既然间隔重复的效果这么好,那为什么它没有得到推广呢?
68 |
69 | 
70 |
71 | 因为要学的知识太多了!而且每个知识都有自己的遗忘曲线,想要去追踪他们的复习时机并安排间隔重复是很难的。
72 |
73 | 这就引出了记忆算法的用途:自动化地跟踪知识的记忆状态,并安排高效的复习计划。
74 |
75 | 相信你对间隔重复已经有了初步的理解,不过肯定还会有不少疑问,比如复习时机是如何计算的,怎样间隔重复才是高效的。对于这些问题的解答,都在之后的章节中。让我们进入正题吧!
76 |
77 | {{< withorbit >}}
78 |
82 |
86 |
90 |
94 |
98 |
102 |
106 | {{< /withorbit >}}
107 |
108 | 在了解了间隔重复的概念后,你很可能已经开始琢磨这句话了:
109 |
110 | > 对于较为生疏的材料,我们加以较短的间隔,而对于较为熟悉的材料,我们加以较长的间隔,将复习分散到未来不同的时间点进行。
111 |
112 | 这个较短的间隔,和较长的间隔,究竟是多久?生疏和熟悉,又该如何判断?
113 |
114 | 凭借直觉,材料在我们记忆中的遗忘速度越慢,那便是越熟悉。而一个合理的间隔,应当尽可能减少我们的遗忘。但是想要遗忘得越少,从遗忘曲线中我们可以推理出,需要的间隔也越短。而间隔越短,复习的频率就会越高。
115 |
116 | 看来复习频率和遗忘率之间存在某种不可调和的矛盾,这可如何是好?
117 |
118 | 坐在电脑前空想,看来是得不出什么结论。我们现在对间隔重复的了解还是太少了。
119 |
120 | 如果让你来解决这个矛盾,你会需要继续了解什么?你会设计怎样的实验?保持对这些问题的思考,如果能写下来就更好了!
121 |
122 | 让我们开始看看首个间隔重复算法的设计者是怎样开始他的记忆算法研究之路吧!
123 |
124 | ### SM-0
125 |
126 | 1985年,年轻的大学生彼得·沃兹尼亚克(下文简称沃兹)正陷入遗忘的泥潭中:
127 |
128 | 
129 |
130 | 上面这张图片是沃兹的单词笔记本中的一页。79 页,总计 2794 个单词,每页约有 40 个英语-波兰语词对,如何管理它们的复习,让沃兹头疼不已。沃兹一开始没有任何规律的复习计划,复习任何一张笔记全取决于有没有足够的时间。但沃兹做了一件很重要的事情:记录了复习日期和遗忘数量。这使得他可以量化自己的复习情况。
131 |
132 | 他统计了一整年的复习记录,发现他的遗忘率差不多有 40%~60%。这是他难以接受的,他需要一个合理的复习时间表,能降低他的遗忘率,但不要带来太多的复习负担。为了找到合理的复习间隔,他开始了他自己的记忆实验。
133 |
134 | 沃兹对合理的复习间隔的期望是:尽可能长,但不要让遗忘率超过 5%
135 |
136 | 沃兹的实验如下:
137 |
138 | 实验材料:5 页英语-波兰语笔记,每页 40 个词对。
139 |
140 | 在第一个学习阶段中,将 5 页材料全部记住。具体的操作为:看英语,回想波兰语,然后检查是否回忆正确。如果回忆正确,将该词对剔除出本阶段。如果回忆失败,就在稍后重新回想,直到所有的回忆都正确为止。
141 |
142 | 然后是第一个复习阶段,沃兹直接选择了 1 天的间隔,这来自于他此前的复习经验。接下来是该实验最重要的 3 个阶段,记作 A、B、C。
143 |
144 | A 阶段,5 页笔记分别间隔 2、4、6、8、10 天后进行第二次复习,统计得到的遗忘率分别为 0%、0%、0%、1%、17%,沃兹选择了 7 天作为第二次复习的最佳间隔。
145 |
146 | B 阶段,新的 5 页笔记,第一次复习间隔 1 天,第二次复习间隔 7 天,第三次复习分别间隔 6、8、11、13、16 天,测得遗忘率分别为 3%、0%、0%、0%、1%,沃兹选择了 16 天作为第三次复习的最佳间隔。
147 |
148 | C 阶段,新的 5 页笔记,前三次复习分别间隔 1、7、16 天,第四次分别间隔 20、24、28、33、38 天,遗忘率分别为 0%、3%、5%、3%、0%,沃兹选择了 35 天作为第四次复习的最佳间隔。
149 |
150 | 之后沃兹还做了第五次复习的最佳间隔的实验。但每个阶段要花费的时间差不多是前一个阶段的两倍。最终他确定了纸上算法 SM-0:
151 |
152 | - I(1) = 1 天
153 | - I(2) = 7 天
154 | - I(3) = 16 天
155 | - I(4) = 35 天
156 | - for i>4: I(i) = I(i-1) * 2
157 | - 将第 4 次复习后忘记的词对放到新的笔记页面中,与其他新材料一起安排重复
158 |
159 | 这里的 I(i) 是指第 i 次复习使用的间隔。第五次重复开始的间隔是前一次的两倍,这是基于直觉设置的假设。在使用 SM-0 算法的两年中,沃兹收集了足够的数据来确认这一假设的合理性和准确性。
160 |
161 | SM-0 算法的目标很清晰:在可接受的记忆遗忘程度内尽可能选择最长的间隔。它的问题也很明显:以笔记页面作为复习单位,无法跟踪更细粒度的记忆情况。
162 |
163 | 但 SM-0 的意义非凡,沃兹在 1986 年得到他的第一台电脑后,用计算机模拟了 SM-0 的学习情况,得出以下两个结论:
164 |
165 | - 随着时间推移,记忆总量可以不断增加,而不是减少
166 | - 长期来看,学习速率几乎保持不变
167 |
168 | SM-0 让沃兹发现,记忆保留和低频重复之间是可以调和的。间隔重复并不会让学习者陷入复习的泥泞之中动弹不得。这让沃兹有了进一步优化记忆算法的信心。
169 |
170 | {{< withorbit >}}
171 |
175 |
179 |
183 | {{< /withorbit >}}
184 |
185 | ### SM-2
186 |
187 | SM-0 在初期运作良好,但一些现象促使他继续改进算法:
188 |
189 | 1. 如果一个单词在第一次复习时(1天后)被遗忘,那么在接下来的第二次、第三次复习(7 天,16 天)它要比之前没有忘记的单词更容易遗忘。
190 | 2. 那些第四次复习后忘记的词对所组成的新笔记页面,在同样的复习安排下,遗忘率更高。
191 |
192 | 第一个现象让他意识到,复习并不是总能让他更熟悉材料,被遗忘的材料会更加生疏,遗忘的速度没有减缓,如果继续和同一页笔记上的材料继续按更长的间隔复习,效果并不好。
193 |
194 | 第二个现象让他意识到,材料的难度是有差异的,不同难度的内容应当要有不同的复习间隔。
195 |
196 | 于是,在 1987 年得到他的第一台电脑后,沃兹根据使用 SM-0 两年来的记录和思考,编写了 SM-2 算法。
197 |
198 | SM-2 的算法细节如下
199 |
200 | - 将要记忆的知识分成尽可能小的问答对
201 | - 使用以下间隔(天)重复每个问答对
202 | - I(1) = 1
203 | - I(2) = 6
204 | - 当 n > 2 时 I(n) = I(n-1) \* EF
205 | - EF(Ease-Factor)―简易度,初值为 2.5
206 | - 每次复习后,nextEF = EF + (0.1-(5-q) \* (0.08+(5-q) \* 0.02))
207 | - newEF―复习后 EF 的更新值
208 | - q―回忆评分,范围 0 - 5,>= 3 即回忆成功,< 3 为遗忘
209 | - 如果遗忘,将问答对的间隔重置为 I(1),EF 保持不变
210 |
211 | SM-2 算法将复习反馈引入到间隔安排中,复习的反馈在一定程度上反映了问答对的难度。简易度 EF 决定了间隔倍数,简易度越低,间隔倍数越小。
212 |
213 | 此时的 SM-2 算法依然基于沃兹自己的实验数据,但有两个主要改进让 SM-2 成为今天还在流行的记忆算法:
214 |
215 | 1. 对笔记页面进行更细粒度的分离,使复习安排可以精确到每个问答对,更早地分离不同难度的材料的复习周期。
216 | 2. 引入简易度与评分,使算法有了一定的适应能力,能够根据学习者的反馈调整未来的复习规划。
217 |
218 | {{< withorbit >}}
219 |
223 |
227 |
231 |
235 | {{< /withorbit >}}
236 |
237 | ### SM-4
238 |
239 | SM-4 的主要目标是改善 SM-2 适应能力低下的问题。虽然 SM-2 能够根据回忆评分和简易度来调整每个问答对(下文简称卡片)的复习规划,但这些调整是互相独立的。SM-2 调整新的卡片的间隔时,不会参考过去调整其他卡片的经验。
240 |
241 | 也就说,对 SM-2 来说,所有卡片在被添加时,都是一样的。不论学习者学习了多少张卡片,SM-2 对学习者依然一无所知。SM-4 通过引入间隔矩阵来代替计算间隔的函数(I(n) = I(n-1) \* EF 以及 EF 更新公式):
242 |
243 | 
244 |
245 | 上述矩阵被称为最佳间隔矩阵 OI(Optimal Interval),其行索引是简易度,列索引是重复次数。其元素值是使用 SM-2 的间隔函数计算的,所以在调整 OI 矩阵之前,SM-4 与 SM-2 是等价的。
246 |
247 | 为了让新卡片能受益于旧卡片的调整经验,OI 矩阵会在复习过程中不断调整。其主要操作是:如果矩阵给出的 OI 为 X,实际复习使用的间隔为 X+Y,且回忆评分 >= 4,那么 OI 的值应当进行调整为 X 与 X+Y 之间的一个值。
248 |
249 | 这种操作的直觉是,既然在 X+Y 的间隔下学习者都能记住卡片,并且评分还挺高,那么显然是之前的 OI 太短了,我有什么理由不把原来的 OI 给调高呢?
250 |
251 | 带着这样朴素的想法,SM-4 成为了第一个能够在整体范围内适应学习者的算法。然而,SM-4 的调整并没有想象的那么成功。原因也很简单:
252 |
253 | - 每次复习只调整矩阵中的一项,无法在可接受的时间内明显地调整 OI 矩阵
254 | - 对于较长的复习间隔,需要调整很久才能稳定
255 |
256 | 为了解决上述两个问题,SM-5 应用而生。但是由于篇幅所限,本入门读物就不详述了。
257 |
258 | {{< withorbit >}}
259 |
263 |
267 |
271 | {{< /withorbit >}}
272 |
273 | ### 小结
274 |
275 | 1885 年发明的遗忘曲线刻画了记忆与遗忘,而 1985 年的间隔重复致力于寻找最佳的复习安排。本节介绍了经验算法的三步走:
276 |
277 | - SM-0 收集实验数据确定了同一个人同一类材料的最佳复习间隔(这里的最佳是由沃兹定义的)
278 | - SM-2 将算法转换成适应计算机的形式,并引入了更细粒度的卡片和具有适应性的回忆评分与简易度
279 | - SM-4 为了让算法有适应不同学习者的能力,引入了最佳间隔矩阵和相应的间隔调整规则
280 |
281 | 经验算法让我们对间隔重复有了直观的理解,但光凭经验,没有系统性的理论,想要进一步优化记忆算法是非常困难的。所以接下来,我们将进入理论环节,抽象的概念会变多,请大家坐稳手扶好,司机要提速啦!
282 |
283 | ## Day 2 理论模型
284 |
285 | 记忆算法听起来似乎是一个理论研究,但我花了大量篇幅介绍经验算法,这是何故?
286 |
287 | 因为记忆算法,是一种人工科学。记忆虽是人类生理的自然现象,但规律复习以增强记忆,却是人类自己构建的策略。
288 |
289 | 没有经验算法所支撑起的研究框架,一切理论都无从谈起。理论上的直觉,来自实践中的经验。
290 |
291 | 接下来的理论模型,也会从我们的经验出发,勿在浮沙筑高台。
292 |
293 | ### 记忆的两个组成成分
294 |
295 | 先来道思考题:如果要你对一个材料在你记忆中的状态进行描述,你会考虑哪些因素?
296 |
297 | 在 Robert A. Bjork 之前,许多研究者使用**记忆强度**来表示人们对材料的记忆状态。
298 |
299 | 你觉得记忆强度这个变量能描述清楚记忆的状态么?
300 |
301 | 不妨让我们重新看看遗忘曲线:
302 |
303 | 
304 |
305 | 首先,很明显,**记忆保留(回忆概率)** 是描述记忆状态的一个重要变量。从我们生活经验出发,遗忘几乎是一件随机事件,谁也没有把握说,今天记住的单词,十天后一定记住,二十天后一定忘记。
306 |
307 | 有了回忆概率,就足够了么?想象一下,如果我们在上面这些遗忘曲线上划一条水平线,每个曲线都会有一个交点,它们的回忆概率相同。此时,不知道你是否察觉到,回忆概率好像无法区分这些点之间的状态区别?
308 |
309 | 没错,光靠回忆概率,我们无法区别这些材料的**遗忘速度**。我们需要在记忆状态中考虑到它,但是遗忘速度是一个随着时间变化的量,能否用一个与时间无关的量来刻画出它呢?
310 |
311 | 我们需要找到遗忘曲线的数学性质,才能解答这个问题。而这需要我们收集大量的数据来绘制遗忘曲线(以下数据来自墨墨背单词的[开源数据集](https://doi.org/10.7910/DVN/VAGUL0)):
312 |
313 | 
314 |
315 | 从上图中,我们发现,遗忘曲线近似一条以 $e$ 为底的负指数函数,而遗忘速度就可以用负指数函数的**衰减常数**来刻画。
316 |
317 | 考虑到这个衰减常数很难与函数图像联系起来,我们往往会对这个衰减常数进行变换,从而得到遗忘曲线的拟合公式:
318 |
319 | $$
320 | R=\exp\left\\{\cfrac{t\ln{0.9}}{S}\right\\}
321 | $$
322 |
323 | 其中,R 为**回忆概率**(Recall),S 为**记忆稳定性**(Stability),t 为距离上次复习所过去的时间。
324 |
325 | S 的大小与遗忘曲线之间的联系,可以从下图中得出:
326 |
327 | 
328 |
329 | 记忆稳定性恰好等于回忆概率从 100% 下降到 90% 所需的**时间**。(在其他学术文献中,也有使用 50% 作为基准,此时的记忆稳定性被称作记忆半衰期)
330 |
331 | 对照 Bjork 提出的记忆的两个强度——提取强度和存储强度——正好可以用回忆概率和记忆稳定性来对应。
332 |
333 | 该公式还有三个特性:
334 |
335 | 1. 当 $t = 0$ 时,$R = 100\\%$,表示刚刚复习时,遗忘还未开始,回忆概率为 100%;
336 | 2. 当 $t\to\infty$ 时,$R \to 0\\%$,表示如果一直不复习,就会忘记几乎所有记忆;
337 | 3. 同时,负指数函数的一阶导数也是递减的,这与遗忘先快后慢的现象一致。
338 |
339 | 由此,我们得到了描述记忆的两个组成成分,但好像有什么东西被遗漏了。
340 |
341 | 回忆概率描述了遗忘的程度;记忆稳定性描述了遗忘的速度;还有什么东西没有被描述到?
342 |
343 | 复习时,遗忘曲线发生变化的这个瞬间!记忆稳定性发生了变化,而这一变化,并不单单取决于复习时的回忆概率和此时的记忆稳定性。
344 |
345 | 有什么证据吗?想想一条材料第一次学习的情况:此时的记忆稳定性为 0,回忆概率也是 0,但学习后的回忆概率变成了 100%,而记忆稳定性则视材料的某些属性而定。
346 |
347 | 也就是说,材料本身还有一些变量,会影响记忆的状态。从直觉上来看,这个变量就是材料的**难度**。
348 |
349 | 纳入材料难度这个变量后,我们得到了记忆三变量模型。
350 |
351 | {{< withorbit >}}
352 |
356 |
360 |
364 |
368 |
372 | {{< /withorbit >}}
373 |
374 | ### 记忆三变量模型
375 |
376 | 让我们直接进入术语约定:
377 |
378 | - 记忆稳定性(memory stability):一条记忆的回忆概率从 100% 下降到 90% 所需的时间
379 | - 记忆可提取性(memory retreivability):一条记忆在某一时刻的回忆概率
380 | - 记忆难度(memory difficulty):一条记忆内在的难度
381 |
382 | 这里也精确地区分一下记忆可提取性和记忆保留的区别:前者专指某一条记忆的回忆概率,而后者是多条记忆整体的回忆概率均值。
383 |
384 | 使用上述术语,我们可以定义任意一条记忆在 n 次复习成功后 t 时刻的记忆可提取性:
385 |
386 | $$
387 | R_n(t) = \exp\left\\{\cfrac{t\ln 0.9}{S_n}\right\\}
388 | $$
389 |
390 | 通过这个式子,把 $S_n$ 转换为复习间隔,便可以将记忆算法和记忆模型联系起来:
391 |
392 | $$
393 | R_n(t) = \exp\left\\{\cfrac{t\ln 0.9}{I_1\prod\limits_{i=2}^{n}C_i}\right\\}
394 | $$
395 |
396 | 其中:
397 |
398 | - $I_1$ 为第一次复习的间隔
399 | - $C_i$ 为第 $i$ 次复习间隔与第 $i-1$ 复习间隔之间的比值
400 |
401 | 记忆算法的目标就是准确地计算 $I_1$ 和 $C_i$,这样就可以得到不同学生、不同材料、不同复习周期下的记忆稳定性,从而安排合理的复习间隔。
402 |
403 | 回顾一下,SM-0 和 SM-2 的 $I_i$ 都是 1天。 SM-0 的 $C_i$ 是一个预设值,不会变化;而 SM-2 的 $C_i$ 是简易度 EF,会随着用户的评分输入而发生变化,但每张卡片的 $C_i$ 是相互独立的。SM-4 尝试打破这种独立,并在 SM-5 及之后的算法上被持续改进。
404 |
405 | 问题来了,说了这么多, $C_i$ 跟记忆三变量有啥关系?
406 |
407 | 大家不妨先自己思考一下,在每一次复习时,记忆的状态会怎样更新。
408 |
409 | 以下是沃兹的一些实验结论(墨墨背单词的数据也能验证):
410 |
411 | - 记忆稳定性的影响:当 $S$ 越高,$C_i$ 就越小。这意味着,记忆越稳定,记忆的进一步稳定就越来越困难。
412 | - 记忆可提取性的影响:当 $R$ 越低,$C_i$ 就越大。这意味着,回忆概率越低,回忆成功后的记忆稳定性就越大。
413 | - 记忆难度的影响:当 $D$ 越大,$C_i$ 就越小。这意味着,记忆材料难度越高,稳定性的增长就越小。
414 |
415 | 由于存在上述多重因素的影响,$C_i$ 难以计算,SuperMemo 使用多维矩阵在表示 $C_i$ 的多变量函数,并在用户的学习过程中调整矩阵值,从而逼近真实情况。
416 |
417 | 为了方便后续讨论,我们使用 SM-17 对 $C_i$ 的命名:记忆稳定性增长 SInc(Stability increase)。这个命名的含义是, $C_i$ 是重复前后记忆稳定性的增长倍数。
418 |
419 | 接下来,就让我们详细介绍一下记忆稳定性增长。
420 |
421 | {{< withorbit >}}
422 |
426 |
430 |
434 |
438 | {{< /withorbit >}}
439 |
440 | ### 记忆稳定性增长
441 |
442 | 在本章中,我们暂时抛开记忆难度的影响,把注意力集中在记忆稳定性增长与稳定性、可提取性之间的关系上。
443 |
444 | 下述数据由 SuperMemo 用户提供,沃兹通过控制变量和线性回归来分析这些变量之间的关系。
445 |
446 | #### 稳定性增长与记忆稳定性的关系
447 |
448 | 在研究 SInc 矩阵,我们发现,给定 R,SInc 关于 S 的函数可以很好地用负幂函数描述:
449 |
450 | 
451 |
452 | 对稳定性增长(Y 轴)和稳定性(X 轴)分别取对数,得到下图:
453 |
454 | 
455 |
456 | 这与此前「当 $S$ 越高,$C_i$ 就越小」的定性结论一致,并在函数性质上有了更细致的刻画。
457 |
458 | #### 稳定性增长与记忆可提取性的关系
459 |
460 | 如间隔效应预测的那样,SInc 在 R 较小时更大。在研究多个数据集后,我们发现,当 R 减小时,SInc 呈指数增长。这种增加的幅度高于预期,进一步为间隔效应提供了证据。
461 |
462 | 
463 |
464 | 对可提取性(X 轴)取对数,得到下图:
465 |
466 | 
467 |
468 | 令人感兴趣的是,SInc 在 R 为 100% 时可能低于 1。一些分子层面的研究表明,复习时记忆的不稳定性增加。这又一次证明了,反复死记硬背不仅会浪费更多时间,还会损害记忆。
469 |
470 | #### 由稳定性增长函数得出的结论
471 |
472 | 根据以上基本规律,我们通过组合、变换视角等方式,便可推导出更多有意思的结论。
473 |
474 | ##### 稳定性增长系数与时间呈线性关系
475 |
476 | 
477 |
478 | R 随着 t 增加而指数下降,而 SInc 随着 R 下降而指数上升。两个指数相互抵消,从而得到一条近似线性的曲线。
479 |
480 | ##### 记忆稳定性的期望增长
481 |
482 | 学习优化有各种标准,我们可以针对特定的保留率进行优化,或者最大化记忆稳定性。在这两种情况下,了解预期的稳定性增长都是有帮助的。
483 |
484 | 我们将预期的稳定性增长定义为
485 |
486 | $$
487 | E(SInc) = SInc \times R
488 | $$
489 | 这产生了一个惊人的结果:当保留率在 30% ~ 40% 时我们达到了最大的期望稳定性增长:
490 |
491 | 
492 |
493 | 当然,最大的期望稳定性增长并不等同于最快的学习速度。真正最高效的复习策略,还请见后文的 SSP-MMC 算法。
494 |
495 | {{< withorbit >}}
496 |
500 |
504 | {{< /withorbit >}}
505 |
506 | ### 记忆复杂性
507 |
508 | 记忆稳定性在间隔重复中取决于复习的质量,也就是记忆复杂度。为了有效复习,知识关联需要简单(即使知识本身是复杂的)。卡片可以构建出知识的复杂结构,但是独立的记忆卡片应该是原子的。
509 |
510 | 在 2005 年我们找到了可以描述复合\*记忆复习的公式。我们注意到:复合记忆的稳定性就像电路里的电阻,并联电阻会使更多的电流通过。(\*注:等同于复杂,但复合凸显出其由简单部分组成的本质,所以下文都用复合来代替复杂)
511 |
512 | 
513 |
514 | 复合的知识会产生两种影响:
515 |
516 | - 其他信息片段的干扰增加
517 | - 难以在复习时对记忆的子成分均匀刺激
518 |
519 | 假设我们现在有一张复合卡片,需要记忆这张卡片上的两个填空。并假设这两个空是同样难记的。那么复合记忆的可提取性是其子记忆可提取性的乘积。
520 |
521 | $$
522 | R = R_a \times R_b
523 | $$
524 |
525 | 让我们代入遗忘曲线的公式
526 |
527 | $$
528 | R = \exp\left\\{\cfrac{t\ln 0.9}{S_a}\right\\} \times \exp\left\\{\cfrac{t\ln 0.9}{S_b}\right\\} = \exp\left\\{\cfrac{t\ln 0.9}{S}\right\\}
529 | $$
530 |
531 | 其中 S 是这个复合记忆的稳定性。那么由
532 |
533 | $$
534 | \cfrac{t\ln 0.9}{S} = \cfrac{t\ln 0.9}{S_a} + \cfrac{t\ln 0.9}{S_b}
535 | $$
536 |
537 | 可得
538 |
539 | $$
540 | S = \cfrac{S_a \times S_b}{S_a + S_b}
541 | $$
542 |
543 | 即复合记忆的稳定性将比其两个子记忆的稳定性还要低!根据公式推导,两个子记忆的稳定性会趋同于较难的子记忆的稳定性。
544 |
545 | 当复杂性达到某种程度,将无法建立长期保留的记忆稳定性。简而言之,要记住整本书,除了不停地重读,别无他法。这是个徒劳的过程。
546 |
547 | {{< withorbit >}}
548 |
552 |
556 |
560 | {{< /withorbit >}}
561 |
562 | ## Day e 前沿进展
563 |
564 | 在学习了记忆的一些理论之后,该好好将它们用起来了(1+1=2 已经教会你们了,现在让我们一起算一下这道无穷级数吧 233)。接下来的前沿进展,将会介绍墨墨是如何应用这些记忆理论,研发自己的记忆算法,提高用户的记忆效率。
565 |
566 | > 接下来就没有复习环节了,并且难度急剧上升,可要坐稳喽!
567 |
568 | ### 数据收集
569 |
570 | 数据是记忆算法的源头活水,没有数据,巧妇也难为无米之炊。收集合适、全面、精确的数据,将决定记忆算法的上限。
571 |
572 | 为了精准的刻画学习者的记忆情况,我们需要定义出记忆的基本行为。先让我们思考一下,一个记忆行为,包含哪些重要属性?
573 |
574 | 最基本的要素很容易想到:谁(行为主体)何时(时间)做了什么事(记忆)。对于记忆,我们又可以继续挖掘:记了什么(内容)、记得怎么样(反馈)、花了多久(成本)等等。
575 |
576 | 考虑到这些属性之后,我们便可用一个元组来记录一条记忆行为事件:
577 | $$
578 | e:=(user,item,time,response,cost)
579 | $$
580 |
581 | 该事件记录了一个用户 user 对某条材料 item 在某个时刻 time 作出了某类反馈 response,付出了多少成本 cost。举例说明:
582 | $$
583 | e:=(\textrm{小叶},\textrm{apple},\textrm{2022-04-01 12:00:01},\textrm{忘记},\textrm{5秒})
584 | $$
585 | 即:小叶在 2022 年 4 月 1 日 12 点 0 分 1 秒记忆了 apple 这个单词,反馈忘记,用时 5 秒。
586 |
587 | 有了基本的记忆行为事件的定义,我们在此基础上,抽取、计算更多感兴趣的信息。
588 |
589 | 比如,在间隔重复中,两次重复之间的时间间隔是一个重要的信息,利用上述记忆行为事件,我们可以将事件数据按照 user、item 分组,按 time 进行排序,然后将相邻两次事件的 time 相减,即可得到间隔。通常来说,为了省去这些计算步骤,可以直接将间隔记录在事件中。虽然造成了存储冗余,但能够节省计算资源。
590 |
591 | 除了时间间隔之外,反馈、间隔的历史序列也是一个重要的特征。比如「忘记、记得、记得、记得」、「1 天、3 天、 6 天、10 天」,这些信息能够较为完整地反映一个记忆行为的独立历史,也可以直接记录到记忆行为事件中:
592 | $$
593 | e_{i} :=(user, item, \boldsymbol{\Delta t_{1:i-1}}, \boldsymbol{r_{1:i-1}} , \Delta t_i , r_i)
594 | $$
595 |
596 | > 对数据感兴趣的朋友,可以下载墨墨背单词的[开源数据集](https://doi.org/10.7910/DVN/VAGUL0),自己分析一下试试哦~
597 |
598 | ### DSR 模型
599 |
600 | 有了数据之后,该如何利用呢?回顾 Day 2 的记忆三变量模型,其实我们想要知道的是记忆状态的种种属性,而我们目前收集的数据暂时不包括这些内容。因此,如何将记忆数据转换成记忆状态和状态之间的转移关系,是本节的目标。
601 |
602 | #### 记忆状态
603 |
604 | DSR 模型的三个字母分别对应难度(difficulty)、稳定性(stability)和可提取性(retrievability)。让我们先从可提取性入手。可提取性反应了记忆在某时刻的回忆概率,但记忆行为事件已经是进行回忆后的结果。用概率论的语言来说,记忆行为是只有两种可能结果的单次随机试验,其成功概率等于可提取性。
605 |
606 | 因此,若要测得可提取性,最容易想到的方法就是对同一个记忆进行无数次独立实验,然后统计回忆成功的频率。但这种方法在实际上是不可行的。因为对记忆进行实验,将改变记忆的状态。我们无法作为一个观察者,在不对记忆造成影响的情况下对记忆进行测量。(注:以目前的脑科学水平,还无法在神经层面测量记忆的状态,因此这条路目前也用不了)
607 |
608 | 那么,我们就束手无策了么?目前有两种妥协的测量方式:(1)忽略记忆材料的差异:SuperMemo 和 Anki 都属于此类;(2)忽略学习者的差异:MaiMemo 属于此类。(注:其实现在已经考虑了,只是在我刚动笔写这段话的时候还没开始考虑,但是没有关系,不会对理解下面的内容产生影响)
609 |
610 | 忽略记忆材料的差异是说,测量可提取性时,统计除了记忆材料外其他属性都相同的数据。虽然无法对一位学习者、一条材料进行多次独立实验,但一位学习者、多条材料就可以了。而忽略学习者的差异,则是对多位学习者、一条材料进行统计。
611 |
612 | 考虑到 MaiMemo 的数据量较为充分,本节仅介绍忽略学习者差异的测量方式。忽略后,我们便能聚合得到新的记忆行为事件组:
613 |
614 | $$
615 | e_{i} :=(item, \boldsymbol{\Delta t_{1:i-1}}, \boldsymbol{r_{1:i-1}} , \Delta t_i , p_i, N)
616 | $$
617 |
618 | 其中,N 为记忆该材料且历史行为相同的学习者数量,可提取性 $p=\frac{n_{r=1}}{N}$ 是这些学习者中回忆成功的比例。当 $N$ 足够大时,比率 $n_{r=1}/N$ 接近真实的可提取性。
619 |
620 | 解决了可提取性之后,稳定性也就迎刃而解了。测量稳定性的方法是遗忘曲线,根据收集的数据,可以使用指数函数来回归计算 $(item, \boldsymbol{\Delta t_{1:i-1}}, \boldsymbol{r_{1:i-1}})$ 相同的记忆行为事件组的稳定性。
621 |
622 | 
623 |
624 | 图中的散点坐标为 $(\Delta t_i , p_i)$,相对大小为 $\log N$。曲线是拟合后的遗忘曲线。
625 |
626 | 最后,该对难度下手了。如何从记忆数据中得出难度?让我们先从一个简单的思想实验开始。假设有一群学习者,第一次记忆 apple 和 accelerate 两个单词。如何用记忆行为数据来区分两个单词的难度?
627 |
628 | 最简单的方法,在第二天立即测试,记录记忆行为数据,统计一下,看见哪一个单词的回忆比例更高。从这一个立足点出发,我们可以将第二天的回忆比例,换成第一次记忆后的稳定性。
629 |
630 | 也就是说,第一次记忆后的稳定性能够反映出难度。但如何使用第一次记忆后的稳定性来划分难度,并没有统一的标准。怎样的划分方式最好,也没有定论。作为入门材料,本文就不详细讨论了。
631 |
632 | #### 状态转移
633 |
634 | 至此,我们已经可以将记忆数据转化为记忆状态:
635 |
636 | $$
637 | (item, \boldsymbol{\Delta t_{1:i-1}}, \boldsymbol{r_{1:i-1}} , \Delta t_i , p_i, N) => (D_i, S_i, R_i)
638 | $$
639 |
640 | 接下来,我们便可以着手描述状态之间的转移关系。如 $(D_i, S_i, R_i)$ 在 $\Delta t$ 天后复习,回忆结果为 $r$,得到新的记忆状态 $(D_{i+1}, S_{i+1}, R_{i+1})$ 与 $(D_i, S_i, R_i)$ 和 $t$、$r$ 之间的关系是什么?
641 |
642 | 首先,依然是先将记忆状态数据整理成适合分析的形式:
643 |
644 | $$
645 | (D_i, S_i, R_i, \Delta t, r, D_{i+1}, S_{i+1}, R_{i+1})
646 | $$
647 |
648 | 其中,$R_{i+1}$ 在复习后会立刻达到 100%,因此在分析过程中可以将其忽略。还有 $R_i$、$\Delta t$ 和 $S_i$ 之间知二求一,可以忽略掉 $\Delta t$。
649 |
650 | 最终,我们要分析的状态转移数据如下:
651 |
652 | $$
653 | (D_i, S_i, R_i, r, D_{i+1}, S_{i+1})
654 | $$
655 |
656 | 而 $\cfrac{S_{i+1}}{S_i}=SInc$,正好可以参考我们在记忆稳定性增长一章中的提到的几个规律:
657 |
658 | $$
659 | SInc = a S^{-b}
660 | $$
661 |
662 | $$
663 | SInc = c e^{-d R}
664 | $$
665 |
666 | 可以得到关系公式(难度 D 的影响在此处被省略了):
667 |
668 | $$
669 | S_{i+1} = S_{i} \cdot a S_{i}^{-b} e^{-c R_i}\textrm{(if r = 1)}
670 | $$
671 |
672 | 根据上式,我们预测学习者的每次回忆成功后的记忆状态 $(D_{i+1}, S_{i+1})$。反馈遗忘也是同理,可以用另一组公式状态转移方程进行描述。
673 |
674 | ### SRS 模拟
675 |
676 | 有了记忆的 DSR 模型,我们便可以模拟任何复习规划下的记忆情况。那么,具体该如何模拟呢?我们需要从现实中普通人是如何使用间隔重复软件的角度出发。
677 |
678 | 假如小叶需要为四个月后的考研英语做好准备,需要使用间隔重复记忆考研考纲英语单词。而由于其他科目也需要抽时间准备。
679 |
680 | 从上面这句话中,有两个很明显的约束:学习周期天数和每日学习时间。SRS(Spaced Repetition System)模拟器需要将这两个约束考虑进来,同时这也点明了 SRS 模拟的两个维度:日间(by day)和日内(in day)。此外,考纲单词的数量是有限的,所以 SRS 模拟还有一个有限的卡片集合,学习者每天都从这个集合中挑选材料进行学习和复习。而复习任务的安排则由间隔重复调度算法来安排。整理一下,SRS 模拟需要:
681 |
682 | 1. 材料集合
683 | 2. 学习者
684 | 3. 调度器
685 | 4. 模拟时长(日内+日间)
686 |
687 | 其中学习者可以用 DSR 模型进行模拟,给出每次复习的反馈和记忆状态。调度器可以是 SM-2、Leitner box、递增间隔表,或者其他任何安排复习间隔的算法。而模拟时长和材料集合则需要根据想要模拟的情况来设定。
688 |
689 | 然后,我们从 SRS 模拟的两个维度出发,设计一下具体的模拟流程。显然,我们需要按照时间顺序,一天一天地往未来模拟,而每一天的模拟则由一张张卡片的反馈组成。所以,SRS 模拟可以由两个循环组成:外层循环表示当前模拟的日期,内层循环表示当前模拟的卡片。在内层循环中,我们需要规定每次复习所花费的时间,当累计时间超过每日学习时长限制时,自动跳出循环,准备进入下一天。
690 |
691 | SRS 模拟的伪代码如下:
692 |
693 | 
694 |
695 | > 相关的 Python 代码我开源在了 GitHub 上,感兴趣的读者可以自行阅读代码:[L-M-Sherlock/space_repetition_simulators: 间隔重复模拟器 (github.com)](https://github.com/L-M-Sherlock/space_repetition_simulators)
696 |
697 | ### SSP-MMC 算法
698 |
699 | 说完了 DSR 模型和 SRS 模拟,我们已经能够预测学习者的记忆状态和在给定复习规划下的记忆情况,但是仍然没有回答我们的最终问题:怎样的复习规划是最高效的?如何找到最优的复习规划呢?SSP-MMC 算法从最优控制的角度解决了这一问题。
700 |
701 | SSP-MMC 是 Stochastic Shortest Path 和 Minimize Memorization Cost 的缩写,以体现这一算法的数学工具和优化目标。以下内容改编自我的毕业论文《基于 LSTM 和间隔重复模型的复习调度算法研究》和会议论文 *[A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling ](https://dl.acm.org/doi/10.1145/3534678.3539081)*。
702 |
703 | #### 问题场景
704 |
705 | 间隔重复方法的目标在于帮助学习者高效地形成长期记忆。而记忆稳定性反映了长期记忆的存储强度,复习次数、每次复习所花费的时间则反映了记忆的成本。所以,间隔重复调度优化的目标可以表述为:在给定记忆成本约束内, 尽可能让更多的材料达到目标稳定性,或以最小的记忆成本让一定量的记忆材料达到目标稳定性。其中,后者的问题可以简化为如何以最小的记忆成本让一条记忆材料达到目标稳定性,即最小化记忆成本(Minimize Memorization Cost, MMC)。
706 |
707 | DSR 模型满足马尔可夫性,每次记忆的状态只取决于上一次的记忆状态和当前的复习输入和结果。其中回忆结果服从一个与复习间隔有关的随机分布。由于记忆状态转移存在随机性,一条记忆材料达到目标稳定性所需的复习次数是不确定的。因此,间隔重复调度问题可以视作一个 无限阶段的随机动态规划问题。考虑优化目标是让记忆稳定性达到目标水平,所 以本问题存在终止状态,可以转化为一个随机最短路径问题(Stochastic Shortest Path, SSP)。
708 |
709 | 
710 |
711 | 如上图所示,圆圈是记忆状态,方块是复习行为(即当前复习后的间隔),虚线箭头表示给定复习间隔的状态转移,黑边表示给定记忆状态中可用的复习间隔。间隔重复中的随机最短路径问题是找到最佳复习间隔,以最小化到达目标状态的预期复习成本。
712 |
713 | #### 方法表述
714 |
715 | 为了解决这个问题,可以用马尔科夫决策过程(MDP)来建模每张卡片的复习过程,有一组状态 $\mathcal{S}$、行为 $\mathcal{A}$、状态转换概率 $\mathcal{P}$ 和成本函数 $\mathcal{J}$。算法的目标是找到一个策略 $\pi$,使达到目标状态 $s_N$ 的预期复习成本最小。
716 |
717 | $$
718 | \pi^{*}=\underset{\pi \in \Pi}{\operatorname{argmin}} \lim\limits_{N\to \infty} E_{s_{0}, a_{0}, \ldots}\left[\sum_{t=0}^{N} \mathcal{J}\left(s_{t}, a_{t}\right) \mid \pi\right]
719 | $$
720 |
721 | 状态空间 $\mathcal{S}$ 取决于记忆模型的状态大小。DSR 只有两个状态变量,所以状态可以表述为 $s=(D,S)$。行为空间 $\mathcal{A}=\{\Delta t_1,\Delta t_2,\cdots,\Delta t_n\}$ 由可以安排复习的 $N$ 个间隔组成。状态转换概率 $\mathcal{P}_{s,a}(s')$ 是卡片在状态 $s$ 和行为 $a$ 下被回忆的概率。成本函数 $\mathcal{J}$ 定义为:
722 |
723 | $$
724 | \mathcal{J}(s_0) = \lim\limits_{N\to \infty} E\left[\sum\limits_{t=0}^{N-1}g_t(s_t,a_t(s_t), r_t) \right]
725 | $$
726 |
727 | $$
728 | r_{t} \sim Bernoulli(p_{t})
729 | $$
730 |
731 | 其中 $g_t$ 是每次复习的成本,$r_t$ 是服从伯努利分布的回忆结果。目标状态 $s_N$ 即目标稳定性所对应的状态。
732 |
733 | #### 算法设计
734 |
735 | 可以用值迭代方法来解决 $\textrm{MDP}(\mathcal{S},\mathcal{A},\mathcal{P},\mathcal{J})$,其贝尔曼方程为:
736 |
737 | $$
738 | \mathcal{J}^\*(s) = \min\limits_{a \in \mathcal{A}(s)} \left[\sum\limits_{s'}\mathcal{P}_{s,a}(s')(g(r) + \mathcal{J}^\*(s'))\right]
739 | $$
740 | $$
741 | s' = \mathcal{F}(s,a,r,p)
742 | $$
743 |
744 | 其中 $\mathcal{J}^*$ 是最优成本函数,$\mathcal{F}$ 是状态转移函数,即 DSR 模型。对于每次复习的成本,出于简单起见,只考虑回忆结果的影响:$g(r) = a \cdot r + b \cdot (1-r)$,$a$ 是回忆成功的成本,$b$ 是回忆失败的成本。
745 |
746 | 基于该贝尔曼方程,下图所示的值迭代算法在迭代过程中使用成本矩阵来记录最优成本,使用策略矩阵来保存每个状态的最佳行为。
747 |
748 | 
749 |
750 | 不断遍历每个记忆状态下的每个可选的复习间隔,比较选择当前复习间隔后的期望记忆成本和成本矩阵中的记忆成本,如果当前复习间隔的成本更低,就更新对应的成本矩阵和策略矩阵,最终所有记忆状态对应的最优间隔和成本就会收敛。
751 |
752 | 这样以来,我们便得到了最优复习策略,与预测记忆状态的 DSR 模型相结合,便可为每一位使用 SSP-MMC 记忆算法的学习者安排最高效的复习规划。
753 |
754 | > 该算法已经开源在墨墨科技的 GitHub 仓库:[maimemo/SSP-MMC: A Stochastic Shortest Path Algorithm for Optimizing Spaced Repetition Scheduling (github.com)](https://github.com/maimemo/SSP-MMC),想要深入研究的读者可以 fork 一份到本地把玩。
755 |
756 | ## 总结
757 |
758 | 恭喜你看完了!如果你还没有入土的话,那你就已经入门间隔重复记忆算法了!
759 |
760 | 可能你还有很多疑问,其中有些可能已有答案,但更多的是无人探索的领域。
761 |
762 | 我能回答的问题也十分有限,但我会用一辈子去推进间隔重复算法的前沿。
763 |
764 | 在此我向你发出邀请,一起揭开记忆之谜。不知道你是否愿意与我同行?
765 |
766 | ### 彩蛋
767 |
768 | 本来这篇文章的标题是《间隔重复记忆算法:3 天内,从入门到入土》,我将「3」改为了「e」,以此致敬指数遗忘曲线的公式:$R=e^{-\frac{t}{S}}$,同时也是玩个谐音梗,因为能看完这篇文章的朋友,大概都是在「1」天内看完的吧 hhhh。
--------------------------------------------------------------------------------
/content/post/how-to-write-good-prompts.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "如何写出好卡片"
3 | date: 2022-03-19T19:11:20+08:00
4 | description: "利用间隔重复创造理解"
5 | tags: ["制卡方法", "翻译"]
6 | ---
7 |
8 | 原文:[How to write good prompts: using spaced repetition to create understanding](https://andymatuschak.org/prompts/)
9 |
10 | 译序:[考试里有学习的奥秘?!前苹果系统工程师手把手教学](https://zhuanlan.zhihu.com/p/434076813)
11 |
12 | > 注:正文中的[数字]表示的是注释,可以善用 Ctrl+F 进行页面内搜索。
13 | > 本文有两万五千多字,可以在你做卡片时作为参考。
14 |
15 |
16 |
17 | 小时候,我时常做这样的白日梦,只要像打游戏那样敲对作弊代码,电脑就「哔哔」两声,自动给我打开神奇的世界,让我拥有和游戏主角一样超凡的力量,摆脱这单调乏味的生活。
18 |
19 | 以上幻想多半是游戏玩太多的缘故,但那神奇的感觉正与我后来使用「间隔重复系统」(Spaced Repetition Systems ,
20 | 下称「SRS」或「SR系统」)的体验别无二致。如果使用得当,能产生魔法般的效果,让你掌控记忆的主动权,而不是听天由命。它可以提高学习效率、催化创意工作,或者带来更多[1]
21 | 令人兴奋的事情。当然,它也要像童年幻想那样,先要「按对作弊代码」,奇迹才会显现 —— 换句话说,设法写出好卡片,才能芝麻开门。(即实践时,你在卡片上整理的问答)
22 |
23 | 一个 SR 系统的优劣,完全取决你能给出的卡片。新手阶段,因为你不知道什么样的卡片是好的,所以可能写出很差的卡片也无从改进。在我的早期阶段,对 SR
24 | 系统的实验一如我童年乱按作弊码:把它当做阿拉丁神灯那样去拨弄、琢磨,希望能无意中唤醒它的魔力。
25 |
26 | 幸运的是,卡片撰写从来不是玄学,而是体系完整的知识可以帮你分辨卡片的有效性、理解制卡的方法论。这类内容网上数不甚数,而本指南的重点,是帮助你从制卡资料(演讲、文章等)的语境中,创造并总结一种理解 ——
27 | 我一向认为,卡片不仅要帮助消化吸收作者表达的知识,也要从中衍生为你生活和创新工作所用理解。
28 |
29 | 对于不熟悉「间隔重复」的读者,本文会帮你克服那些常见的、让你从入门到放弃的阻碍;对于有经验的读者,后续章节会涵盖不常见的一些编卡理念,以加深你的 SRS 实践[2]。我们讨论的东西概括性较强,主要集中在制卡的纲领层面,因此无论你用什么
30 | 具体的 SR 系统,相信都有所受益。
31 |
32 | ## 「提取练习」—— SRS 的核心
33 |
34 | 卡片的具体应用有很多,但编写卡片时最好记住,不管表面如何,你正在给未来的自己编制任务,一个重复再重复的任务。因此请牢牢记住,「设计卡片」即「设计任务」。
35 |
36 | 如果某张卡片「见效」了,那不是碰巧,而是因为你对该任务的执行,用某种有用的方式「改变」了自己。根据这点,我们值得花一点时间去了解这些「改变」背后的机制。这样就能有针对性地编制任务,并设计你想产生的改变了。
37 |
38 | SR 任务对你产生「改变」的最核心、最常见的机制,被称为「提取练习」(retrieval practice) 。简而言之: 你的回忆即对记忆的提取,提取行为往往会强化记忆[3],并且这个效应会减缓遗忘。因此,有策略地规划每次提取之间的间隔,可以有效阻止遗忘。尽管它物理层面的机制尚不明确,但数百名认知科学家对此已做过大量的实验探索,涉及不同学科、不同知识类型(事实、概念、程序、运动)乃至不同测试方式(选择、简答、口答),都复现出同样的结论。
39 |
40 | 大量的实验还反映,单纯记住即可以建立流畅的回忆,不仅有利于死记硬背,更可升华为整体理解和问题解决能力。具体实验不仅包括记忆复现的考察,还包括推理、概念图绘制[4]、开放性问题回答等。
41 |
42 | 提取(Retrieval)是 SRS 有别于传统学习模式的关键。仅仅简单回顾材料(如多读几遍)既没有加强记忆,更不能增进问题解决能力,而「提取」往往可以。这种通过「提取以掌握」的现象也被称为「测试效应」,因为往往发生在做自我测试时,故此得名。它形似学校考试,目的上又有所相反:「提取练习」是为了从测试中进行学习,而非「评估」学习成果。
43 |
44 | SRS 的设计目的便是实现测试效应。如果想用它强化某方面的理解,那你必须学会卡片化相关的全部细节,一个不漏地做提取。
45 |
46 | 受限于资料,可查的文献远不够作出最准确的指导,因此有必要走出故纸堆去理解卡片制作。我将提炼自己数千张的制卡经验,在本指南中提供建议,并尽可能利用实验证据提供支持。
47 |
48 | 本指南本身,是一个关于所谓助记媒介[5](我和 Michael Nielsen 所命名)的例子。文中嵌入了一系列 SR 卡片[Jarrett 1],来例证自己的建议。 所用用卡片系统是 Orbit ,原理与你[6]自用的 SR软件差不多,但还有更深一层愿景:通过在阅读中嵌入一系列专家认证的卡片,使读者在内化文章意图时事半功倍 —— 如果你也用Orbit,本指南不仅会帮助你如何写出好的卡片,也对写要发布的稿件有益。当然,你也可以仅阅读而不回答这些内嵌的卡片,不过希望您能试试。
49 |
50 | {{< withorbit >}}
51 |
52 |
56 |
57 |
61 |
62 |
66 |
67 |
71 |
72 | {{< /withorbit >}}
73 |
74 | 此外,第一个「助记媒介」的实验是一篇量子计算的入门读物《量子国度》,但它比较硬核 —— 定义,符号,定律那些 …… 你懂的。相比之下,本指南更侧重于展示制卡中应有的意识(heuristic)\*、思维模型,并提供一些指导建议。 ——本文是一项实验,你可以告诉我自己的体验。(\*译注:原文「heuristic」,指人处理事务时,不通过逻辑思考,而是下意识就知道怎么决策的认知,故此处翻译为「制卡意识」。在这满是 CSer 的世界,它还有个黑话叫「启发式」)
75 |
76 | 局限性注意!本指南的出发点,是在材料已经明确表达的内容的基础上,教你写出带个人理解的卡片。但 Orbit 用户目前还不能对已经自带作者版卡片的材料添卡(比如本文)。未来会向这个方向前进。
77 |
78 | ## 有效的「提取练习」—— 卡片应有什么样的属性
79 |
80 | 「写出优质卡片」与翻译文章惊人地相似:翻译时,你会不断问自己「选哪些词,会让读者阅读时有如体验原著」,并且在脑海中「点亮相同的"思维灯泡"?」 这种翻译不可能是一板一眼的,因为文章往往涉及典故/ 隐喻/幽默,为了让文化背景不同的读者也能身临其境,遣词造句必须考究。
81 |
82 | SR 卡片的制作与文章翻译颇为相似。当知识的细节「完全载入」你的脑海中后,它们会点亮一个个的「思维灯泡」。而为了对这些细节触发「提取练习」,你会问自己:哪些任务(即卡片)一起执行时,需要答题的你点亮同样这么一组「思维灯泡」?
83 |
84 | 这样的「有效卡片」会拥有怎样的主要属性,其实就隐含在提取练习本身的机制里。我们将在这里简要回顾,并在后文详尽示例以继续深入。
85 |
86 | 这些属性不是自然法则,而类似「语法」那种「规则」 —— 你可以学到手,也能(也应该!)像优秀的作家打破语法那样,在合适的时候有所突破,激发最应景的效果。(当然这要有丰富的制卡经验支撑,需要理解什么时候可以任性一把)
87 |
88 | 「有效卡片」应该拥有的属性:
89 |
90 | 1. 卡片的焦点应明确(Focused):细节太多的问答不会让你专注,回答时的「提取效应」无法完整地刺激记忆、点亮全部的「思维灯泡」。不够聚焦的问题,还让你更难判断回答是否全面、差异在哪里。因此,最佳做法一般是:一次问答只聚焦一个细节。
91 | 2. 卡片应能精确引导答案 (Precision) :模糊的问题只会引出模糊答案,不能可靠地点亮你要的「思维灯泡」。
92 | 3. 卡面应能诱导出一致的回答(Consistent),让每次任务都点亮相同的「思维灯泡」:否则,你可能遭遇「提取引发遗忘」(retrieval-induced forgetting)[7]——这是一种干扰现象,即已记住的会更牢,没记住的更易遗忘。(后文将讨论一种新的卡片,每次重复时都要求一个新答案,但它产生改变的效应不是「提取练习」)
93 | 4. 卡片问答应该可控(tractable):为了避免复习时,因为干扰过强而混乱、烦恼,你应用心写出自己几乎不会错答的卡片\*( almost always answer correctly)。这通常依赖任务分解,或者添加线索[8]。(\*译注:此处应指不容易答偏,SR 的核心效应是「提取」,「可控(tractable)」和费工夫不冲突)
94 | 5. 卡片应让提取费工夫(effortful): 卡片练习的重点,是让你从记忆中提取答案,
95 | 而不应让你简单地从卡面「推测」答案(此外,「线索」很重要,我们稍后讨论)。实际上,提取练习的努力程度与效果正相关。这点正是强调复习和复习之间要有间隔的动机之一:如果回忆答案太容易,那提取练习效果不大[9]。
96 |
97 | 组织这样一张卡片,要点是让题目的考察范围充分狭窄,否则回答时或是「提取」不够聚焦、或是答案难以一致/精准、或是问题不好驾驭。但要写一个足够紧确的题目,难度超乎常人想象,你得把知识一点点掰开揉碎,才可重新组合成题目。对了,知识点一旦揉碎,复习会变得更精耕细作 —— SR 软件的复习规划器,可以差别处理难易不同的知识点,让你更多地回顾难点。
98 |
99 | 现在,请想象我们正在读一篇长文,是你没见过的主题。然后问自己能否清晰地解释给别人,并思考自己能回答哪些问题,才肯定自己「学会」了这篇文章?还是用翻译做比喻:如果「知识」是一门语言,那你需要将它从内容中「翻译」出来。为此你首先要会「读」,明白它是怎么被「书写」的 —— 识别得出「知识」的词性,句子结构、叙事节奏 —— 才能给出合适的翻译。其中有些细节是无关紧要,有些是核心中的核心。更进一步,好的「翻译者」不能只停留于纸面,还得留心其中的内涵,以及概念之间的联系。
100 |
101 | 因此,去编制有效的练习卡,我们需要两个技能: 1,首先,如何精准地刻画你要强化的知识? 2,其次,如何有效提问?
102 |
103 | {{< withorbit >}}
104 |
105 |
109 |
110 |
114 |
115 |
119 |
120 |
124 |
125 |
129 |
130 |
134 |
135 |
139 |
140 |
144 |
145 | {{< /withorbit >}}
146 |
147 | ## 菜谱「鸡肉高汤」
148 |
149 | ——目前我们的讨论太过抽象,不如从稍后一个菜谱《鸡肉高汤》继续。
150 |
151 | 某种意义上,你可能觉得菜谱是微不足道的编卡对象,但它其实也是个简短、自成体系的领域。我有数百个卡片记录菜谱和厨房心得,在此将简述我的经历 。(留意卡片能用到哪些不寻常的领域,本身就是一项编卡必备技能)
152 |
153 | 这些卡片是我三年前开始编写的。而在此之前,我已经相当认真地做了十年饭。尽管对很多技术要点、配比、搭配了然于心,然而一旦做起复杂的菜品,我依然得停停歇歇地查菜谱,这让我步履维艰。要说那种体验,非常像我学编程的头几年 —— 几乎感觉不到什么「心流」。我最终是在全职工作了几年后才内化了编程的必备知识的。因此,我如今确信下厨也是这个路子,只不过我不是专业的,所以这个过程可能还需几十年的时间。
154 |
155 | SRS 则从本质上改变了我的厨房生活。卡片催生了我选菜的能力:菜市场上一旦看中某个原料,我都能毫不费力地用它搭配出复杂的菜品。这能力极让我满意,我知道要买哪些东西去配菜 —— 如果看中那个洋姜,那我就再买点刚才路过的芥菜,它们是很好的搭档。于是,在回家之前,我就知道这一餐该怎么做了。
156 |
157 | 我对烹饪感到得心应手,在厨房杂事中来去自如。就事论事,尽管本文的长篇大论让你觉得我有点那啥,但这些卡片的用时并没想象中大。我会把一些有意思的事情稍微花几分钟做成卡片,一两周一次就已经足够影响深远了。
158 |
159 | (译者提醒:下面的菜谱建议另开一个网页对照阅读,不然回读挺麻烦的。PS: 本文献的原网页,菜谱是全程悬浮在右侧的)
160 |
161 | ## 《鸡肉高汤》
162 |
163 | ### 介绍
164 |
165 | 一家像样的餐馆里,即使最常见的菜肴,也往往比家里做的好吃。蔬菜浓郁,谷物更香,酱汁甘美。其秘诀之一是「高汤」,一种味道鲜美的汤式「积木」,平日在家直接加水的步骤,餐馆经常换用高汤,比如炒蔬菜、化果酱、炖全麦等。
166 |
167 | 高汤也是许多酱汁、汤和炖菜的基础。用滋味比较丰厚的原料,可以炖出不同种类的高汤:鸡肉高汤、蔬菜高汤、蘑菇高汤、猪肉高汤…等等。但不同于典型的「肉」汤,高汤用肉,不是为了突出肉味,而是给菜肴打下多样化的味道基础。
168 |
169 | 其中鸡肉高汤是最常用的高汤之一。加进素菜里不是为了让它们吃起来像鸡肉,而是让味道更完满、可口。这种高汤富含来自鸡骨的吉利丁(\*译注:明胶),因此尝起来口感更浓郁。制作鸡肉高汤只需几分钟,材料一般可以直接在家里中获得,因为它用的主料是鸡骨。所以常吃鸡的话,你可以在煮鸡肉时顺手把骨头留下,冰冻起来。
170 |
171 | ### 《鸡肉高汤》- 菜谱
172 |
173 | - 2 磅(~ 1 千克)鸡骨
174 | - 2 夸脱(~ 2 升)水
175 | - 1 个洋葱,切块
176 | - 2 个胡萝卜,切块
177 | - 2 根芹菜,切块
178 | - 4 瓣大蒜,捣碎
179 | - 半束新鲜的香菜
180 |
181 | 1. 把所有原料一起放进大锅里。
182 | 2. 小火炖到沸腾(约1小时)。用小火的话,味道就能明亮、干净;如果温度较高,汤的色、味就比较暗淡。
183 | 3. 降低火候,小火慢炖一个半小时。
184 | 4. 过滤,等其冷却后转移到容器里储藏。
185 |
186 | 鸡肉高汤放在冷藏层可以存一周,放在冷冻层可以无限期保存。使用前,需要撇去高汤上的一层脂肪,这些脂肪可以在其他要提味的地方,用来代替植物油或者黄油。
187 |
188 | 用量上,则可以根据你鸡骨的数量等比例缩放。骨头和水的比例是 1:1(磅/夸脱),蔬菜的种类和比例可以随性调整。
189 |
190 | ### 《鸡肉高汤》- 菜谱变体
191 |
192 | 如想尝尝偏法式的鸡肉高汤,可以用韭菜代替芹菜,再加入月桂叶、黑胡椒和百里香。如果想要更浓的鸡肉高汤,可以预先烤一下鸡骨和蔬菜,这样便是做成所谓的「棕色鸡肉高汤」。(之前的菜谱相对是「白色鸡肉高汤」,味道不强烈,但更细腻、万能)
193 |
194 | ### 《鸡肉高汤》—— 如何使用鸡肉高汤
195 |
196 | 下面是一些鸡肉高汤的使用建议:
197 |
198 | - 煮「大麦」、「法罗」、「蒸粗麦粉」和其他谷物。
199 | - 与烤蔬菜泥一起做汤。
200 | - 将「甘蓝」、「甜菜」或「散叶甘蓝」等蔬菜放入油中,然后加入少许高汤,闷透。
201 | - (在平底锅烤肉或煎肉之后),将高汤倒在滚烫的平底锅底上,做成速成酱汁用于餐中。
202 |
203 | 为了组织我们的阅读成果,我们可以问:具体要知道哪些东西,才意味着你「学会」这些材料?我认为,「学会」这段材料的人应该:
204 |
205 | - 知道如何「制作」和「储存」鸡肉高汤;
206 | - 知道什么是鸡肉高汤,并(至少是浅显地)理解它为什么、什么时候很重要;
207 | - 知道鸡肉高汤的具体作用和意义;
208 | - 知道使用鸡肉高汤的一些方法,包括一些具体的例子;
209 | - 知道一些常见变体以及何时可以使用它们;
210 |
211 | 这些内容中,有些知识是「事实性」的,有些是「过程性」的,还有些是「概念性」的。与之对应的制卡策略,将在后文一一陈述。
212 |
213 | 但「理解」是很个人的事。真要既「知」且「道」某件事情,往往必须超越内容本身,将其与你生活之方式、探索之想法,以及其他心目中有意义的活动联系起来。如何编写这种卡片,我们也会同样探索。
214 |
215 | 本指南会假设读者对家庭烹饪有兴趣,且从未做过高汤,因此不具备例子中所需要的各项技能。请试着思考在这种人设下[10],「我」该如何去内化材料的内核。
216 |
217 | 我们会穷尽式地处理这份阅读材料,以最详尽地展示这些通用的制卡原则。请注意,实践中你通常不会也不必这么系统地学习。你一般只会关注文章中你认为最有价值的部分,然后在非常有必要的时候跳回原始材料,寻找与你理解最相关的信息并做成卡片 —— 这值得一赞!完美主义会过度消耗你的动力,穷尽式处理只是表面正确,实际上是浪费你的注意力,它们本应该放到更有价值的地方。这类问题会在后面更深入地讨论。
218 |
219 | ## 如何制作和储存鸡肉高汤:「事实性」和「程序性」知识
220 |
221 | 《鸡肉高汤》开头段落,更偏向概念性知识,因此我们直接从「菜谱」段开始,它具体描述了如何制作和存储鸡肉高汤。「菜谱」作为一类清单,包含的知识结构比「散文」形式更为明确,这给我们写卡初の体验提供了一些辅助。
222 |
223 | 我们先谈一谈「知道制作鸡肉高汤的必要原料」,此类知识主是「事实类」,「概念类」或「概念之间的关联」的成分比较少,其中主要包含了是无需加工的原始信息,给你打下学习下一层知识的基础。
224 |
225 | ### 「简单事实」类知识(Simple fact)
226 |
227 | 我们假如直接这么写卡:「制作鸡肉高汤需要什么?」,那么在回答的时候因为数量或者原料名称未作要求,所以很难作答。这样的卡片不够**准确**,也不够**聚焦** :同时要求提取的细节太多,所以想要加强的记忆不会全部被强力激活;并且因为它要的答案太多,因此的**一致性**、**可控性**也不好:每次回答,你会记起一些,又忘掉另一些。因此激活不够一致,容易导致记忆受到侵蚀。
228 |
229 | 所以,得把答案中的原料表分解为实际会学到的要素。如果你从未听说过高汤的话,你可以像下面第一问一样,先简单地澄清取用部位:
230 |
231 | > 问:取鸡身上哪个「类型」的部位做高汤原料?
232 | >
233 | > 答:骨头。(Bones)
234 |
235 | 这个问题仅聚焦一处文章细节,想要的答案也毫不含糊(「哪个 “部位” 」),而「骨头」在每次回答中也都是一致的。这样的卡回答容易控制,但要对记忆做的「提取」仍不失努力。
236 |
237 | 在谈及事实时,我们自然会想添加一些解释。我个人会在细节不容易想到,或者事实背后的解释比较有意思的时候,添加一张「**解释**卡」,相必你也有同样的冲动。因为即使身为大厨,不在乎上面那张卡,但依然可能受益于这张:
238 |
239 | > 问:为什么我们做鸡肉高汤要用骨头?
240 | >
241 | > 答:它们富含明胶(吉利丁,gelatin),可以产生浓郁的口感。
242 |
243 | 解释卡能强化「事实性」提问中的知识,而「解释」本身也让事实富有意义—— 这点也许更重要。此类卡片像钩子一样,将烹饪生涯中的想法与学到的「事实」相互关联起来。比如你学完这张卡的第二天,如果正好吃到「果冻鸡爪」,就可能考虑拿鸡爪作高汤材料(因为这是鸡身上明胶最丰富的部分),因为今天这张卡让你知道明胶能提升口感。(\*译者的经历:今天吃饭的时候我盯着甲鱼浮想联翩,因为它的裙边和 jio 富含明胶)
244 |
245 | 还想说一点,知识点并非集中于文章中一块儿。像上面这两张卡,它们的答案汇集自文章各处!写卡如拼图,你需要去文中各处翻找知识碎片。
246 |
247 | 这张「为什么」是一个不错的初の尝试,但仍可以更精确。因为像「骨头很便宜」也属于一种回答(尽管在设计之外)。如果你希望对信息的提取得毫无歧义,那下面这张会更好。
248 |
249 | > 问:骨头如何产生鸡肉高汤的浓郁口感?
250 | >
251 | > 答:它们富含吉利丁。
252 |
253 | {{< withorbit >}}
254 |
255 |
261 |
262 |
266 |
267 |
276 |
277 | {{< /withorbit >}}
278 |
279 | (你是否留意到复习卡中仍有一张不符合「一致性」的原则?它并非为了提取练习,而是一个小实验,稍后讨论)
280 |
281 | ### 「清单」类知识
282 |
283 | 回到原料表中的内容,「鸡肉高汤」从定义上显然就该包含水和鸡肉(稍后会处理分析),但剩下的香料都是变量,取决于应用场合。 因此,我们不如先从功能组别上去理解原料,会更好地帮我们内化菜谱结构:
284 |
285 | > 问:鸡肉高汤是用鸡肉、水和其他什么类别的原料制成的?
286 | >
287 | > 答:香料。
288 |
289 | 分组后,我们可以提子问题:
290 |
291 | > 问:鸡肉高汤中使用的典型香料是什么?
292 | >
293 | > 答:洋葱、胡萝卜、芹菜、大蒜和香菜
294 |
295 | 但是,除非你有一定经验,否则这个卡片对你来说可能并不可控,或是每次记的原料不一致。这样的无序列表要转化为好卡片,颇具难度。
296 |
297 | 对此,一个好策略是创建一组问题,并对选项分别挖空,并要求你逐一填空(下面用`???`指挖的孔):
298 |
299 | > 问:典型的鸡肉高汤香料:
300 | > - **???**
301 | > - 胡萝卜
302 | > - 芹菜
303 | > - 大蒜
304 | > - 香菜
305 | >
306 | > 答:洋葱
307 |
308 | > 问:典型的鸡肉高汤香料:
309 | > - 洋葱
310 | > - **???**
311 | > - 芹菜
312 | > - 大蒜
313 | > - 香菜
314 | >
315 | > 答:胡萝卜
316 |
317 | …以此类推。这里注意到选项列表顺序没有变动,这样你在重复回忆时,最终一定程度上会形成视觉*形状*上的记忆。
318 |
319 | 大多数 SR 软件都有快速生成这样一组套卡的功能,卡片之间互为变体。即所谓「完形填空/ 填空题/ 挖空题」(cloze deletions),一次复习,只推送一个版本的问题要你填空。这很重要,因为只答一种版本,容易遗忘其余的选项。
320 |
321 | 当然,如果能在需要时回想起全部选项是最好的。尽管单选填空已足够应付大多数的做卡材料,但对于复杂的内容,你可能得在彻底记住单选结果之后,还要添加一些综合性的卡片(不同类别的「综合性」定义不同)。例如对于「清单」,可能要求你随着复习逐渐多选——我不知道是否有这样的 SR 软件,但似乎值得一试。
322 |
323 | 另一个帮自己理解「清单」的方法是为每个成分写一些解释卡——*为什么*胡萝卜是鸡肉高汤的好佐料?(注:胡萝卜提供植物糖,同盐一样能提亮其他味道)如果你知道原料的对应解释,也许不需要「填空」也能记住全部了。如前面所提,解释让「事实」更好被理解。本案的菜谱中,没有说为什么要这些香料,所以你需要自己去寻求解释\*。(\*译注:血泪提醒:「别做完美主义」)
324 |
325 | {{< withorbit >}}
326 |
327 |
331 |
332 |
336 |
337 |
341 |
342 | {{< /withorbit >}}
343 |
344 | ### 「线索」和「精细编码」
345 |
346 | 如果你对这些问题感到挣扎,那么可以添加一个「线索(cue)」:
347 |
348 | > 问:典型的鸡肉高汤香料:
349 | > - 洋葱
350 | > - 胡萝卜
351 | > - 芹菜
352 | > - 大蒜
353 | > - **???(一种味重的香料)**
354 | >
355 | > 答:香菜
356 |
357 | 但要确保你的线索不会让卡片失去灵魂,努力地记忆中提取答案,是重中之重。 这样子就很拉胯:
358 |
359 | > 问:典型的鸡肉高汤香料:
360 | > - 洋葱
361 | > - **???(英文与「parrots」押韵)**
362 | > - 芹菜
363 | > - 大蒜
364 | > - 香菜
365 | >
366 | > 答:胡萝卜
367 |
368 | 这种卡片实质上是要你猜一个谐音梗,而无需对所问的知识做「硬提取」—— parrots 只和 carrot 押韵,所以不看问题也能作答,压根就不存在对菜谱的知识做提取。总之,不能影响卡片的「提取」是写「线索」的基本要求。相比之下,上一版的线索「味重的香料」仍考验你的硬回忆。毕竟「香料」有很多种,范围虽然有所缩小,却仍要你记住菜谱指定的那个。
369 |
370 | > 问:典型的鸡肉高汤香料:
371 | > - 洋葱
372 | > - **???**
373 | > - 芹菜
374 | > - 大蒜
375 | > - 香菜
376 | >
377 | > 答:胡萝卜(英文 carrots 与「鹦鹉 parrots」押韵:想象一群鹦鹉叼着胡萝卜飞行,把它们丢进一锅汤里)
378 |
379 | 这类线索涉及另外一种记忆现象,也是认知科学家的实验对象 ——「\*精细编码 (elaborative encoding)」[11]:将信息与其他记忆相关联,它会变得更好回忆 。当然,原料清单这种,不容易搭配出有意义联想,但这种情况下,你仍可自己编造一个助记词来利用「精细编码」。生动的联想效果会更好,因此尽量从多个方面寻找联系。比如从视觉、有意义的个人经历、情绪(幽默、厌恶等)等方面。(\*译注:1.「elaborative」一词包含了「协作」的意思,所以不需要懵逼地去想「哪儿精细了」;2. 友情提示:助记词写在卡背,线索写在卡面)
380 |
381 | 这里有个通用的技巧:万物皆可制卡,助记词也是如此。如果你要记的信息比较随意或零散,直接把助记词括起来放在答案栏里就行。要还是很难回答,就专门把助记词提成一张卡:
382 |
383 | > 问:鸡肉高汤中「胡萝卜」的助记词?
384 | >
385 | > 答:英文 carrots 与「鹦鹉 parrots」押韵:想象一群鹦鹉叼着胡萝卜飞行,把它们丢进一锅汤里
386 |
387 | 此外,图像也能触发「精细编码」,也很适合挖掉做「填空题」,你可能会发现这张卡片比文字更有记忆点:
388 |
389 | > 问:鸡肉高汤的香料:
390 |
391 | 
392 |
393 | > 答:胡萝卜
394 |
395 | 
396 |
397 | 当然了,做「线索」和「精细编码」会增加制卡负担。因此没必要见一张做一张,不然容易精疲力尽。但如果你估摸着某张卡可能比较难记,它仍然是个有用的技术。
398 |
399 |
400 |
401 | {{< withorbit >}}
402 |
403 |
407 |
408 |
412 |
413 |
417 |
418 |
422 |
423 |
427 |
428 |
432 |
433 |
437 |
438 |
442 |
443 | {{< /withorbit >}}
444 |
445 | ### 「再解释」以及经验法则「超量制卡」
446 |
447 | 现在,高汤用什么原料已经解决了,数量上如何做卡?
448 |
449 | 唔,你可以尝试这样问:「一份鸡肉高汤里有多少鸡骨?」,其中「一份」是什么,仍然不够精确。对此我们可以将问题和指定清单绑定起来,如「Andy版的鸡肉高汤配方里有多少鸡骨?」。不过这仍然不是我们实际想知道的 —— 鸡肉高汤的菜谱明确指出,量要随机应变。写好卡片往往涉及对原文的解读(「再解释」) ,这是让理解超脱文章本身局限的第一步。就像下面这样。
450 |
451 | > 问:鸡肉高汤中鸡骨和水的比例是多少?
452 | >
453 | > 答:每磅骨头一夸脱水
454 |
455 | > 问:一磅鸡骨在鸡肉高汤中应使用多少洋葱?
456 | >
457 | > 答:半颗洋葱
458 |
459 | > 问:一磅鸡骨的鸡肉高汤中要用多少胡萝卜/ 芹菜?
460 | >
461 | > 答:1 根胡萝卜/芹菜
462 |
463 | > 问:一磅鸡骨的鸡肉高汤中要用多少大蒜?
464 | >
465 | > 答:2 个捣碎的大蒜
466 |
467 | 其中没提香菜,这是另一例「再解释」:原文的「一束」无论如何也不是一个确切的单位,所以我才不管到底多少,反正我只抓一把。
468 |
469 | 注意到,为了保证聚焦而精确,这里将原料表分解成很多个问答。新手常常有节约用卡的强迫症,多写一张就跟多掏钱一样,倾向于把卡片的「数量」写得少少的、把「范围」写得泛泛的 —— 但这适得其反,因为你要掌握的「知识量」不会随着你的卡片数量而减少(除非特意排除某些内容)\*,把卡片数量减少、内容变糙,并没有让必学的知识减量,反而让材料更难做重复练习,容易「齁」。(\*译注:薄的高数书只会更难。吾愿称之为 知 识 守 恒 律 )
470 |
471 | 卡片的复习用时比你想象中要少 —— 第一年里,一张低难度的卡片每次会花费 10-30 秒,然后逐年剧减。如果你暂时没法把握时间开销,那么试着接受这个经验法则:永远比舒适量多写几张\* (write more prompts than feels natural.)(\*译注:我愿称之为 *过 饱 和 写 卡*,张数再多些、复习难度再低些 —— 有的(其实是全部)译注就是废话,当助记词吧)
472 |
473 | 卡片不贵,但也绝非免费 —— 会有情绪上的开销:数量爆炸的低难度卡片容易让你崩溃,因为没人愿意花时间复习一堆闭眼都会的材料。 因此,如果材料讨论的东西已经相当熟悉,卡片应该写少一点 —— 并非说熟悉的领域可以写得含糊,而是因为边际效应,你要捕获的知识量本身就少。
474 |
475 | 例如,我自己的卡组中,没有包括本例的原材料预处理,这对我没必要—— 蔬菜要小切、大蒜要捣碎,对于一个厨师,如果不粗心的话一般是自然而然的处理。不过你觉得有用的话就还是写一下吧。
476 |
477 | 还有一点与此相关,一张卡片「聚焦」在何种尺度上,取决于你已了然于心的概念规模。本例中的香料对我来说太熟了,我将其作为一个原子单位去记 (“意式香料”) 而不是拆开。
478 |
479 | 复杂的概念会随着融会贯通(「流畅性」的建立),逐渐组块化为新的基本单元,这样一来,你在对复杂概念写卡时,既不会丢失细节,又足够聚焦。实际上,一个专家的重要特征,可能就是基于越来越复杂的「组块」思考[12]。从这个角度看,各种助记系统扮演了一个「组块催化剂」的角色,它促进了你对某个方面组块的「有效大小」的增长*(\*译注:Andy 不方便说得太绝对,但不妨碍我加料:因此,硬记忆通过组块化提升理解能力)
480 |
481 |
482 | {{< withorbit >}}
483 |
484 |
488 |
489 |
493 |
494 |
498 |
499 |
503 |
504 |
508 |
509 |
513 |
514 | {{< /withorbit >}}
515 |
516 | ### 「程序性」知识
517 |
518 | 现在我们已经写好了关于原料的卡片,接下来烹饪的步骤更多是「程序性」知识,也就是用来执行特定任务的知识,对于「程序」,我们更多地是要知道“HOW”而不是“WHAT”.
519 |
520 | #### 制卡方式一
521 |
522 | 程序如果列好步骤,依然是某种意义上的「清单」,所以我们可以用「挖空」去做,例如第一个步骤:
523 |
524 | > 问:
525 | > 1. **???**
526 | > 2. 用小火炖到沸腾(约1h)。我们要用小火让其产生明亮、干净的味道,如果用温度较高的火,汤的味道和颜色都比较黯淡。
527 | > 3. 降低火候,保持一个半小时的沸腾。
528 | > 4. 过滤,等其冷却后转移到储存容器中。
529 | >
530 | > 答:在一个大锅中混合所有的食材。
531 |
532 | (其余四个步骤以此类推)。
533 |
534 | 不过这张卡片完全谈不上聚焦。它糅杂了太多次要细节,掩蔽了你真正想提取的知识。个人而言,我会被这种卡片分散注意力,让回答含混不清、心不在焉。
535 |
536 | 我们可以简单删减文字来改进,细枝末节则移到新的卡片上去(如有必要)。下面这样就比上面好:
537 |
538 | > 问:
539 | > 1. **???**
540 | > 2. 小火慢沸
541 | > 3. 保持90分钟咕嘟咕嘟*
542 | > 4. 滤出,冷却后储存。
543 | >
544 | > 答:混合所有食材
545 | >
546 | > \*译者注: 原文「bare simmer」描述一种极轻微的沸腾程度。
547 |
548 | #### 制卡方式二
549 |
550 | 如果从整个流程的角度,我们重新编辑这个程序,可以更好地观察过程中的知识。首先我们有如下观察:几个关键词/词组承载了核心细节:*小*火*慢沸*,*微沸 90 分钟*,而其他的词句只是程序的框架。由此得到第二个观察:第一和第四步不值得写卡 —— 因为有初步了解之后,你当然知道自己是用「锅」熬食材,当然知道炖完以后要「过滤保存」,这是常识。
551 |
552 | 以这种方式强调关键词后,写卡就像是在玩《危险边缘》,「现在你有xxx秒内回答如下问题」:
553 |
554 | > 问:你应该以什么速度加热一锅鸡肉高汤的原料?
555 | >
556 | > 答:慢慢地。
557 |
558 | > 问:在制作鸡肉高汤时,你应该在什么时候降低火候?
559 | >
560 | > 答:在锅里沸腾后。
561 |
562 | > 问:在制作鸡肉高汤时,在锅内达到沸腾后,你应该做什么?
563 | >
564 | > 答:将温度降至轻微沸腾。
565 |
566 | > 问:鸡肉高汤必须炖多长时间?
567 | >
568 | > 答:90 分钟。
569 |
570 | 这里是用「列关键词」的方式制的卡,在「列清单」的方式上进行了修订。反映了我对这个程序个性化的理解。
571 |
572 | 一个程序往往可以被分解为几个关键词:重要动词是什么;何时转移到下一个动作;哪些是关键形容词、副词,以及关键的主语、宾语。我们的高汤配方中,动词不是关键:「降温」、「过滤」——你煮东西的动作都很显而易见。但在动作之间跳转的条件和启发式很重要:水「降温」之前,不仅要沸腾,还要轻沸 90 分钟。同时对于「缓慢地加热」而言,副词「缓慢地」要比「加热」更重要。
573 |
574 | 鸡肉高汤中的程序相当线性,而更复杂的程序可能会有分支,包括特殊情况下的备选项。这样的谓词结构\*(Predicate structure) 往往值得写卡。如果分支实在太多,你可以考虑画一个流程图。(\*译注:「谓词 (Predicate)」—— 简单地讲, `if (A>B) {…}`,中的 `A>B`就是一个谓词,它决定了你走入下面哪一步。这里特别提出来是因为我想秀)
575 |
576 | 那么,「列关键词」的方式是不是比「列清单」更好呢?这取决于你的需求,如果文中离散的信息对你比较重要性、不够直观,那选择前者。它侧重于强调组成知识的 “零件”,可以精确表达知识(而且,回答聚焦的问题总是比较愉悦)。如果你只是想要概括性的大纲,那么列个清单可能更简单。
577 |
578 | 上文卡组中,一些有用的细节没被包含。现在我们单独添进卡里:
579 |
580 | > 问:加热一批鸡肉高汤(含 2 磅骨头)需要多长时间?
581 | >
582 | > 答:大约一个小时
583 |
584 | 这类 *「当心!」* 型信息看似不起眼,却往往藏着程序中的有用信息。比如你知道要加热多久,便在实操时有了对照:锅热了这么久还没有反应,是不是可以停了?汤这么快就开,是不是得赶紧停下?\*(\*译注:菜谱无法教你如何对所有可能性做处理,但条件约束上可以推断出好多东西。)
585 |
586 | *解释卡* 对「程序」学习有特殊价值:它避免你死记硬背,并帮你深入建立理解 ——
587 |
588 | > 问:为什么 Andy 的菜谱声称我们应该用小火准备鸡肉高汤?
589 | >
590 | > 答:「更明亮、更干净」的味道。
591 |
592 | 请注意,这次的例子中我们只深入了一层「为什么」—— 为什么要小火?菜谱只说能让味道更干净,至于为什么能更干净则没提到。于此同时,你也自然想知道什么味道算是更「亮」或「干净」,于是卡片写完,理解上的缺漏也一起暴露,这简直不能更棒。这里要注明的是,这些答案虽然不够刨根问底,但眼下选择继续前进。你无需为此特别标注,只要在制作卡片时写成例子中这样,明确地体现出临时性、需要依赖外部即可。
593 |
594 | 每当处理主观、临时、或不全面的信息时,最好都体现出它的这种性质。因为大部分卡片给出的内容,或多或少都有临时性(比如换个菜谱可能用不同方式处理相同步骤),因此理论上我们可以把一切卡片都表述得不那么绝对,然而这弊大于利,因为太容易让人分心。平衡这个矛盾的一个办法是,我们简单记录信息来源(SRS 系统一般都有元数据项可以链接到原始菜谱),这在一般情况下已经足够了。
595 |
596 | {{< withorbit >}}
597 |
598 |
602 |
603 |
607 |
608 |
612 |
613 |
617 |
618 | {{< /withorbit >}}
619 |
620 | ### 练习:如何储存鸡肉高汤?
621 |
622 | 我们已经写了关于如何制作鸡肉高汤的卡片,现在轮到你了。请利用我们到目前为止所学的知识,在笔记上写出带上你自己理解的卡片:
623 |
624 | 「这将产生大约 1.5 夸脱鸡肉高汤,可以冷藏一周,也可以在冷冻里无限期保存。使用前,需要脱去高汤上的一层脂肪,这些脂肪可以在别的要增味的地方代替植物油或者黄油。」
625 |
626 |
627 |
628 | ------
629 |
630 | 给
631 |
632 | 你
633 |
634 | 一
635 |
636 | 炷
637 |
638 | 香
639 |
640 | 的
641 |
642 | 时
643 |
644 | 间
645 |
646 | ------
647 |
648 |
649 | 以下是我的卡片:
650 |
651 | > 问:2 磅鸡骨大约能产出多少汤?
652 | >
653 | > 答:1.5 夸脱
654 |
655 | > 问:???磅鸡骨大约可以得到 1.5 夸脱的汤汁?
656 | >
657 | > 答:2 磅
658 |
659 | > 问:鸡肉高汤在冷藏区里能保存多长时间?
660 | >
661 | > 答:一个星期
662 |
663 | > 问:鸡肉高汤在冷冻区里能保存多长时间?
664 | >
665 | > 答:无限期
666 |
667 | > 问:冷却后,在使用新的一批鸡肉高汤之前,我应该做什么?
668 | >
669 | > 答:刮除表层的脂肪
670 |
671 | > 问:我应该如何处理从鸡肉高汤中刮除的脂肪?
672 | >
673 | > 答:保留并作为咸味烹饪油脂使用。
674 |
675 | 看完后思考以下问题:这些卡片与你的卡片相比如何?这些卡片是否包括了你没有涉及的细节?你是否涵盖了这些卡片遗漏的任何细节?这些差异对你有什么影响?你的卡片覆盖的知识/问题范围与这些相比如何?
676 |
677 | ## 何为高汤?为何重要:「概念性」知识
678 |
679 | *一个能自己转动而不能带动任何东西转动的轮子,就不是机器的一部分*
680 |
681 | *—— Ludwig Wittgenstein,《哲学研究》。*
682 |
683 | 现在我们回头看菜谱最开始的段落,它介绍了鸡肉高汤的。「定义」看起来像是最简单的卡片内容了:学校里那种类型的 “闪卡” 就最爱这么干(白眼)。
684 |
685 | 例如,这样考察定义怎么样?:
686 |
687 | > 问:什么是高汤?
688 | >
689 | > 答:鲜美的的液体烹饪积木(liquid building block)。
690 |
691 | > 问:描述鲜美的液体烹饪积木的烹饪术语?
692 | >
693 | > 答:高汤。
694 |
695 | 先不提卡片的「聚焦性」、「精确性」、「一致性」。我们完全可以逐字逐句记住第一个问题中的答案,名称放在正面也可以帮你记住术语,但只能复述答案完全不等于明白*高汤是何物*。
696 |
697 | 「高汤」是一种概念。知道一个「概念」所指何物,与高中闪卡式的知识(例如「意大利语 “correre” 等于 “跑步” 」)不同。想要内化它,你需要了解组成概念的元素以及元素之间形成的结构。因此对于这类知识,你的目标是设计一套卡片,联合起来,一起框定「高汤」这个概念\*。(\*译注:学CS 的同学可以用「数据结构」去理解这段话)
698 |
699 | 现在我将介绍一些视角,用来帮助理解「概念」。它们可以看作一组工具套件,从知识中帮你提取需要的部分。它们附带的示例比较适合新手厨师,老道的厨师通常知道高汤是什么概念(尽管不一定会做)。
700 |
701 | **视角一:特性和倾向\***:什么让高汤之所以为「高汤」?对于高汤来说,哪些断言或描述「永远」/「有时」/ 「永不」为真?(\*译注:原文「 Attributes」,显然又是个 CS 黑话)
702 |
703 | > 问:高汤通常是如何制作的?
704 | >
705 | > 答:在水中炖煮具有丰厚滋味的原料。
706 |
707 | > 问:为什么高汤通常没有突出的味道?
708 | >
709 | > 答:为了使它们更广泛地兼容多种菜肴。
710 |
711 | **视角二:辨析异同**:要知道什么是高汤,就要知道它与其他近似概念的关系和区别。
712 |
713 | > 问:高汤与广义上的「汤」有什么不同?
714 | >
715 | > 答:普通的汤本身味道更完整;而高汤往往作为辅料。
716 |
717 | **视角三:部分和整体**:有哪些高汤的具体例子?高汤是否有重要的「次级概念」?「高汤」是否是某类更广概念的次级概念?请想象一个概念和概念之间的韦恩图,虽然没有非常明确的边界。
718 |
719 | > 问:至少说出三个高汤的例子。
720 | >
721 | > 答:如鸡肉高汤、蔬菜高汤、蘑菇高汤、猪肉高汤。
722 |
723 | > 问:高汤很少直接食用,它最好被认为是一种? (用乐高比喻)
724 | >
725 | > 答:积木。
726 |
727 | **视角四:因果关系**:高汤是「做什么」的?什么让它「实现那个效果」?它没有「做到什么」?「什么时候」用它?
728 |
729 | > 问:为什么餐馆使用高汤而不是水作为烹饪介质?(请说出两个原因)
730 | >
731 | > 答:增加味道,改善口感。
732 |
733 | > 问:高汤是___的常见基础(至少说出两个)
734 | >
735 | > 答:e.g. 酱汁、汤、炖菜。
736 |
737 | > 问:餐馆经常使用高汤作为烹饪媒介,而家庭厨师可能使用 **???**。
738 | >
739 | > 答:水
740 |
741 | **视角五:意义和影响**:「为什么」高汤很重要?它表示了什么?注意:请让这个概念对你有个人意义。
742 |
743 | > 问:哪种液体积木可以解释为什么简单的餐厅菜肴往往比家里的菜肴更美味?
744 | >
745 | > 答:高汤。
746 |
747 | > 问:如果我注意到我在做料理时使用了水,我应该问自己什么?
748 | >
749 | > 答:「我应该用高汤代替吗?」
750 |
751 | 最后这张卡并非取自原文,只是示范一种个人理解。同时也要注意,它更多试图对「行为」做改变,而不是「智识」方面。在鸡肉高汤的应用章节中,我们将详述如何使用卡片来改变行为。
752 |
753 | {{< withorbit >}}
754 |
755 |
759 |
760 |
764 |
765 |
778 |
779 |
783 |
784 |
788 |
789 |
793 |
794 | {{< /withorbit >}}
795 |
796 | ### 练习:何为鸡肉高汤,为何有意义?
797 |
798 | 下面一段介绍了鸡肉高汤在烹饪中扮演的角色,为了练习对「概念」性知识的建模,请尝试对自己的理解编制卡片:
799 |
800 | 「鸡肉高汤是最普遍、最有用的高汤之一,并非为了让一切菜肴染上鸡肉味,而像是为菜肴加入“和弦”,协调其主味。例如在做素菜时加入它,会让菜肴的味道更加完满。而其中来自鸡骨的明胶成分,也让口感也更丰厚。至于成本,这种高汤既不占用时间,也无额外开销。它的原料来自鸡骨,如果你经常用鸡肉做饭,可以在冰箱里顺手存上很多」
801 |
802 | [ 给你一炷香的时间X2 ]
803 |
804 | 我可能写出如下的卡片:
805 |
806 | > 问:鸡肉高汤不会使素菜吃起来像鸡肉,而是使它们吃起来更 **???** (根据安迪的菜谱)
807 | >
808 | > 答:味道完满
809 |
810 | > 问:鸡肉高汤使素菜的味道「更完满」,因为它加入了 **???**,从而像为主味加入 **???**(音乐比喻)。
811 | >
812 | > 答:支持性(supporting)的声音;和弦
813 |
814 | > 问:除了改善味道,鸡肉高汤给菜肴增加了丰厚的 **???**。
815 | >
816 | > 答:口感
817 |
818 | > 问:撇开味道和饮食偏好,为什么用鸡肉高汤而不是蔬菜或蘑菇高汤?
819 | >
820 | > 答:鸡肉高汤中含有明胶,创造丰厚口感
821 |
822 | > 问:为什么鸡肉高汤很经济?
823 | >
824 | > 答:它的主料(骨头)可以免费积累,如果用鸡肉做饭的话。
825 |
826 | > 问:我应该如何处理烤鸡的边角料?
827 | >
828 | > 答:冻起来,做鸡肉高汤
829 |
830 | 我发现还有一张我自己很想写的卡片,但光靠原文没办法写出来:
831 |
832 | > 问:什么时候使用「鸡肉高汤」而非其他肉类做的高汤?
833 | >
834 | > 答:**???**
835 |
836 | 卡片写作有助于揭露我们理解上的缺失。追随你敏感的大脑去查谷歌、去查文献,不要拘泥于原文。即使你不打算立刻「补缺」,光是写下这些卡,也能让自己敏于「查漏」、保持好奇。这有益于在未来的探索。
837 |
838 | 请考虑下面问题:这些卡片与你自己卡片相比如何?我是否包括了你没有涉及的任何细节?你是否涵盖了我遗漏的任何细节?这些差异对你有什么影响?你的卡片范围与这些相比如何?
839 |
840 | 你会注意到,我并不一定会用上之前介绍的所有「视角」。例如「部分/整体」和「核心特征」视角——我不觉得鸡肉高汤有什么部分和整体结构,也不觉得鸡肉高汤的核心特征(用鸡制作)不傻。
841 |
842 | ## 使用鸡肉高汤:「开放式清单」和「启明卡」
843 |
844 | 高汤光看不用没有意义,所以菜谱里还给了建议用法列出了清单,此类型的知识又该如何建立理解呢?
845 |
846 | ### 「开放式清单」
847 |
848 | 「清单」类知识的处理技术我们已经学习,试试此处是否也适用?:
849 |
850 | > 问:可以用鸡肉高汤做什么:
851 | > - ???
852 | > - 将丰盛的绿蔬打蔫并蒸熟
853 | > - 做西式浓汤
854 | > - 在平底锅上「刺啦」一下
855 | >
856 | > 答:用它烹饪谷物
857 |
858 | 这卡片显然毫无帮助,因为第一个空里看起来填什么都合理。你也许已经发现,这个列表的「任意性」要大于之前部分的原料清单,问题没有固定的答案。此类便是「*开放式* 清单(Open list)」类的知识,相对应地,原料表则是*封闭式清单*(closed list),它的成员固定。开放式清单无需记住所有内容,不过可以按需记一些 —— 但如果你会一直下厨,不要这么做,不然会越记越多,然后把一辈子都搭在这个清单上。
859 |
860 | 我个人把封闭式清单看做一种复合后的「事实类」知识,它们几乎是个静态的等式:
861 |
862 | - 地球的半径 = 6,371 km
863 | - 鸡肉高汤的原料 = 洋葱、胡萝卜、芹菜、大蒜、香菜。
864 |
865 | 而开放性清单我喜欢看做*标签* (tags),就像你可能在数字书签系统中用的那种。本案例中可以这么认为:我头脑档案柜中有一种 tag 叫做「鸡肉高汤的用法」,我把它贴在关于浓汤制作\*的笔记上[13] 。(\*译者注:「 purée soups」 是用蔬菜泥,土豆泥,水果泥,起司等做的糊糊,典型用法是蘸烤法棍片当餐点主食。此处指给所有糊糊的做法都贴上这个 tag)
866 |
867 | 我发现有三类卡片可以帮助「开放式清单」的编码:首先是我打好 tag 的普通提取卡,它将卡片实例和 tag 关联起来;之后若注意到 tag 中蕴藏的模式(pattern)\*,我可能将 tag 提成单独一张卡;最后我还常写一个举例卡,要我围绕 tag 举例,以此将 tag 和其实例松散地产生联系。(\*译者注:[实例](https://en.wikipedia.org/wiki/Instance_(computer_science))是一个抽象物的实体,比如世界上有个名叫「特斯拉」的猫,那么它就是「猫」的一个实例。[模式](https://zh.wikipedia.org/wiki/%E6%A8%A1%E5%BC%8F)(pattern)指实例中存在的相似结构,比如做浓汤时总是要加水)
868 |
869 | 例如,下面这张卡将一个实例关联到 tag 上:
870 |
871 | > 问:做蔬菜浓汤时,怎样才能既不增加油脂,又产生更丰富的味道?
872 | >
873 | > 答:用鸡肉高汤而不是水稀释蔬菜泥。
874 |
875 | 写了几张之后,假设察觉到 tag 的共同模式(都是用水做汤),因此将这个模式提为卡片:
876 |
877 | > 问:如果我注意到我在用水做咸口的菜,我应该问自己什么?
878 | >
879 | > 答:「我应该用高汤代替吗?」
880 |
881 | 我希望必要时能回想起具体实例,因此我们另起一张卡片,将 tag 松散地链接到实例:
882 |
883 | > 问:说出两种使用鸡肉高汤的用法。
884 | >
885 | > 答:如:烹调谷物、蒸煮蔬菜、做清汤、「刺啦」撒在烤盘上
886 |
887 | 最后这类卡不怎么费脑子,因此易被滥用。这类卡极度依赖其他卡片。否则,你可能会忘记其他项,而总用固定的一两个案例作答。即使每次答案*确实* 轮换了不同的实例,但卡片也不再满足我们说的「一致性」,并且干扰效应可能让记忆变得不可靠。
888 |
889 | 如果你刚刚习得的概念高度开放,可用范围极广阔,那么你可以将「案例生成卡」转变为如下的「创意卡」:
890 |
891 | > 问:请说出你可能尝试用鸡肉高汤制作的蔬菜浓汤(不允许和以前的答案重复)
892 | >
893 | > 答:e.g. 土豆、防风草、芹菜、苏子、莎草、南瓜、胡萝卜、胡椒、扁豆…………
894 |
895 | 「不允许和以前的答案重复」这是个很有意思的小把戏,尽管过一两年可能还是会重复(这可以接受)。我要说的重点在于,一开始就概括了应用场景的问题很难写。换句话说,你得写卡前就知道高汤怎么用,这是要一定烹饪经验的。
896 |
897 | 「创意卡」更类似教科书上的习题,它引导你创造性使用知识点。与「提取卡」相反,它极力*避免* 从记忆中提取固定答案,而是要求你创造性地思考片刻。由于你想到的答案次次不同,就不会强化某个固定答案的记忆,而是强化在*生成* 各种结果时,你大脑里一致依赖的知识。同时,你的创新也可能勾起有意义的联系,并触发「精细编码」强化记忆。这些联系因为是你自己生成,所以会格外牢靠 —— 即所谓「生成效应」。[14]
898 |
899 | 严谨地说,目的对「创意卡」的内蕴机制理解有限,远不如对「提取卡」的。一些课题仍待研究[15]:在我们的记忆和理解中,这些任务产生哪些特殊效应(如果有的话)?通过什么机制?要设计何种适用环境、使用原则?适用何种间隔重复计划?
900 |
901 | {{< withorbit >}}
902 |
903 |
907 |
908 |
912 |
913 |
920 |
921 |
925 |
926 |
930 |
931 |
935 |
936 |
940 |
941 | {{< /withorbit >}}
942 |
943 | ### 「启明卡」和「Baader-Meinhof 现象」
944 |
945 | 我们讨论的很多卡片除了影响记忆和理解外,还有另一个重要功效:保持你对 idea 的长期思考(keep you in contact with an idea over time)。
946 |
947 | 你是否有过这样的经历,明明是第一次了解某个事物,却突然发现你到处都能见着它?比方说学习了一个类似「mellifluous」的罕见词,之后几天能看到它好几次。这个现象被称作 Baader-Meinhof 现象(\*译注:也称频率错觉)。因 1994 年某网友投稿说自己一天里注意到两次该冷门恐怖组织而[得名](https://www.twincities.com/2007/02/23/the-baader-meinhof-phenomenon-or-the-joy-of-juxtaposition-responsorial-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23-23/)。斯坦福大学语言学教授 Arnold Zwicky [认为](https://web.stanford.edu/~zwicky/LSA07illude.abst.pdf),这种效应本质是是一种「选择性注意」:新的 idea 在意识里总是更靠前(「凸显性/ 显著性」),所以对应的信息更引人注意,而客观上,出现频率并没有变化。正所谓「塞给你一个锤子,看什么都像钉子」。
948 |
949 | 但对于某个idea来说,这种效应并非总是正面的,因为新的「锤子」不一定适用所有「钉子」\*。要真正内化它,你需要自己生活中有所代入、赋予其意义。特别是学习一个新技能时,除非多实践几次,否则可能只是浅薄理解而不自知。(\*译注:避免新学一个概念后滥用和过度泛化)
950 |
951 | 如果不快点把 idea 和有实义的东西联系起来,它的「凸显性」会消退,你也逐渐停下对周边机会的觉察。但这种凸显性的消退不正如知识的遗忘吗?因此始终在脑中 “置顶” 你的 idea,也是 SR 卡的价值所在。[Gwern Branwen](https://www.gwern.net/index) 认为[*]此类卡片实际是对控制、扩展 Baader-Meinhof 现象的有效尝试。
952 |
953 | 我们关于「凸显性」写了一些卡:
954 |
955 | > 问:如果我注意到我在咸口的烹饪中使用了水,我应该问自己什么?
956 | >
957 | > 答: 「我应该用高汤代替吗?」
958 |
959 | > 问:我应该如何处理烤鸡骨头?
960 | >
961 | > 答:冻起来,做鸡肉高汤。
962 |
963 | > 问:请说出你可能尝试用鸡肉高汤制作的蔬菜浓汤(不允许和以前的答案重复)
964 | >
965 | > 答:e.g. 土豆、防风草、芹菜、苏子、莎草、南瓜、胡萝卜、胡椒、扁豆…………
966 |
967 | 这些卡片旨在「提示」而非对答案的「传授」,从而尝试激发新的灵感或者创造新的行为。从这个角度看,SR 卡让这些 idea 长久保持了「凸显」,让人对相关内容保持敏感,直到遇到机会,将自己生活中有意义的事物与其联系起来。就像[经济学家布拉德-德隆(Brad DeLong)认为](https://notes.andymatuschak.org/z39D31syJUE1gtNTREogSZiG6LDSuwygN5NDt)的那样,SR 卡在复习环节和世俗版的「教理问答\*」惊人地相似(\*译注:教理问答 —— 一种宗教教育的教材,形式上也是问答体。通过问答来潜移默化地记住、思考、理解。)
968 |
969 | 本指南嵌入了很多此类的「启明卡(salience prompt)」,它旨在让你对 idea 保持思考,直到你对它的理解程度,仿佛是你自己写的。我还经常在搞创作时把想法或灵感写成此类卡 —— 可能听起来有些奇怪 —— 它们是我的缪斯,帮助我跨越数周数月地思考某些 idea,直到它能开花结果(但愿)。启明卡是通过制作卡片创作理解的一种方式,这种方式已超越了简单捕捉文本知识的层次。
970 |
971 | 你应该想想 idea 可能在生活中用到的场景,并在写启明卡的时候代入,它们具有潜在的意义。例如很多人做饭可能不喜欢买整鸡,现在为了凑骨头,而打算略作让步。下面这张卡示例了如何针对某个特定场景制卡:
972 |
973 | > 问:为了保持满冰箱的鸡肉高汤,我买鸡时一定要用???而不是???。
974 | >
975 | > 答:买整只鸡;买鸡的部分
976 |
977 | 这个例子还辅助说明了一个更广泛的问题:「知道 idea 能解决什么问题,不等于解决问题时知道用什么 idea\*」[16]。它们之间的区别是否有逻辑充分的解读,我目前不得而知。依我经验,带上下文的卡片(如刚才的例子)能帮助我们从理论迈向实践。我想,这正是另一个「新、旧想法要紧密结合(densely connect new ideas to old ones)」的理由,一如我们在「概念」类知识的学习中做的那样 —— 不准确地说,概念之间联系得越紧密,越容易触发新知。(\*译注:原文 Just because you can answer a factual question about an idea, that doesn’t mean the idea will spontaneously occur to you when it’s useful)
978 |
979 | 最后思考:什么因素,是最可能让 SR 卡片改变你的行为/促进新的想法的?对刚才这类的卡片,如何安排 SR 策略?最后,如果不为记忆,回顾时的回答按钮(「忘记」/「记住」)又如何调整?这些仍是开放性问题。
980 |
981 | {{< withorbit >}}
982 |
983 |
987 |
988 |
992 |
993 |
997 |
998 |
1002 |
1003 |
1007 |
1008 | {{< /withorbit >}}
1009 |
1010 | **练习:菜谱变体**
1011 |
1012 | 材料里有一段是菜谱的变体版本。这仍然一定程度的「开放式清单」。写下卡片,展现你对它的理解:
1013 |
1014 | > 如想尝尝偏法式的鸡肉高汤,可以用韭菜代替芹菜,再加入月桂叶、黑胡椒和百里香。为了获得更「深」的味道,可以先把鸡骨和蔬菜烤成所谓的「棕色鸡肉高汤」(原本的相对是「白色鸡肉高汤」,味道不强烈,但更细腻、通用)。
1015 |
1016 | 请在下面输入框中尝试练习,你写的东西不会被传送或保存。
1017 |
1018 | 【译者:假装此处有文本框】
1019 |
1020 | ## 实践写卡
1021 |
1022 | ### 迭代式地写卡
1023 |
1024 | 本指南为了演示写卡技术,刻意对案例进行了详尽分析。而实际上你如果是第一次碰菜谱,我绝不建议像前文那样,一次写上好几十个卡片。如此穷尽、全面地分析你的读物,很容易浪费大量时间,耗竭精力。
1025 |
1026 | 何况,你也不能指望第一次接触新的知识,就能轻松写出优质的卡片。此时的你尚在建立把握、区分重点的意识(无论是客观还是个人意义的重点)。因此你难以知道哪些内容特别难记(并特别关照),也可能不太了解作者的想法。所以编写的卡片要么无法连通其「本质」,要么不能捕捉其中微妙。因此,你还需和新学的知识 “相处” 一些时日,你才能写出好卡片,并与自己的情况鲜活地联系起来。
1027 |
1028 | 于是,一切都在呼唤一种迭代式的写卡方式:
1029 |
1030 | 想象你正在阅读一篇有趣的文章,试着给自己设下一个可触及的目标:一刷时,要求写下少量的卡片( 如 5-10 张),描述任何看起来最重要、最有意义或最有用的东西。
1031 |
1032 | 设下这样的目标改变了我的阅读方式,无论是正式还是随性地阅读。在最初用 SRS 读书时,我有种强迫感,想把一切都写进卡里,这导致阅读体验极差。相比之下,每次只要求增添一点关键卡,会让我倍感自由[17]。于是我读得更积极了,脑海深处似有一种挠人的痒:「哦上帝,那看起来真多汁,让我来摘下它!」
1033 |
1034 | 如果材料相当简单,我们可能尚有余力一边阅读、一边写卡。但如果材料太难,或者不是熟悉的主题,那最好只标记或记录最重点 —— 写写停停地切换实在太打断思考了。之后你可以在文本的结尾或找一个合适的停顿处,一次性将你的理解写成卡。如果主题难度非常高,一开始先老老实实地聚焦在基本细节上面是最佳做法:比如「事实类」知识的原文、术语、符号约定等。
1035 |
1036 | 书籍阅读要比文章更复杂,因为种类多、阅读方式也多。虽然文章也可以多种多样,但「书」这类载体放大了它的复杂性。一方面,书不太可能像文章那样线性阅读(也就是逐步从头读到尾);另一方面,它们的篇幅显然更长,制卡量也不会少。因此编卡没有固定的最佳做法,而是取决于你读它的「目的」和「方式」(Why & How)。不过一般来说,如果我要内化一本书(非小说虚构类),我会在我第一遍读某个章节或者主要部分时,设一个目标作为起点(「写上一些关键卡」)。
1037 |
1038 | 至少最初阶段,好多材料写一遍卡足矣。但如果有一段文本是「富矿」,你正试图彻底内化它,那么哪怕是首个阅读环节,也常常值得反复多写几次卡。这么做不一定会让负担翻倍,因为每次就只要添一点点比较关键的卡片[18]。每次迭代时,你可能会发现,自己能理解(并卡片化)越来越复杂的细节。你的关注点可能逐渐转移到其中的模式(pattern)、联接(connection)乃至图景更宏大的洞察(insight)。更妙的是,你或许会跳出作者的内容,开始聚焦在自己的观察和疑问上。但同样要注意见好就收,不能永无尽头地去深化。实际上,事无巨细地写下全部细节并非一种美行,保持住对兴趣和好奇心的敏锐响应,远远比一丝不漏地卡片化重要。
1039 |
1040 | 如果感到「收集所有细节」的强迫症发作,请默念「以后总有机会继续」。事实上,卡片的价值不止是细节控,能让你被有意义的东西鼓舞[19]或许会更好 —— 比如发现新的知识联系,或者理解上的漏洞,你因此鼓舞。
1041 |
1042 | 让我们再来考虑一次我们的菜谱,这次我是个有抱负却孤陋寡闻的厨师,以前没听说过什么「高汤」。对我来说,可能会做的全部就是先写一些卡片指向概念本身 :「高汤是什么」、「高汤的意义」—— 这些细节的覆盖面看起来不止一个菜谱,而且和我有过的美食经历相关。直到我真做完一罐高汤后,我就清楚哪些步骤很显然、哪些细节还得查菜谱了。此时若期待下一次制作,那就将这些更细节的东西提出来,写到卡上 —— 原料的配比、时间控制之类。我还会留意之前制作过程中感到费力的地方,我知道它们的相关内容我「读过,但不能确定细节」。等我用完第一批高汤后,我大概会将使用经验添进卡组,如此往复。
1043 |
1044 | {{< withorbit >}}
1045 |
1046 |
1050 |
1051 |
1055 |
1056 |
1060 |
1061 |
1065 |
1066 | {{< /withorbit >}}
1067 |
1068 | ### 有效性检测
1069 |
1070 | 写散文时,文法检查器可以帮你避免容易犯的错误,而 SRS 方面,没有「卡片低级错误检查器」。因此找一些简单的测验会有所帮助。
1071 |
1072 | **1. 检测「假阳性\*」:**在不真正了解目标信息的情况下,你如何确定正确答案是怎么产生的?(\*译注:统计黑话,指标阳性 ≠ 推论阳性,此处应指「回答正确」不等于「了解信息」)
1073 |
1074 | *抑制模式匹配* :如果你写了一个长问题,措辞上用了不常见的词或线索(提示你这是哪张卡),你最终可能会记住这个问题的「形状」和它对应的答案 —— 你只是通过机械的模式关联答题,而不是真的思考了相关知识。「完形填空」类的卡片似乎容易产生此种问题,尤其要留意复制/ 段落编辑而来的卡。最好的避免办法,是让问题简短。
1075 |
1076 | *避免二元提问* : 要求回答「是/否」或「这个/那个」的问题往往不需要努力提取,而且产生不了深层理解。我个人经常可以不加理解地答对这样的卡片。解决二元化的提问,最佳做法是转述成开放性的问题。例如,对下面第一问进行改进:
1077 |
1078 | > 问:鸡肉高汤是否会使素菜吃起来像鸡肉?
1079 | >
1080 | > 答:不会。
1081 |
1082 | > 问:鸡肉高汤如何影响素菜的味道的?(根据「安迪的菜谱」)
1083 | >
1084 | > 答:它使它们的味道更「全面」。
1085 |
1086 | 要改进二元提问,往往需要结合其他东西,如一个例子或一个暗示。前文的「概念类知识」中提供的思考视角在这方面很有用。
1087 |
1088 | **2. 检测「假阴性\*」**的方法: 有没有可能知道卡片指向的信息,但是*没*能正确作答?这类错答往往由于上下文给的不够充分。(\*译注:统计用语,指标阴性 ≠ 效应阴性,比如核酸阴性不代表一定没感染新冠)
1089 |
1090 | 你很容易不小心写出一问多答的卡片 —— 正确答案不止卡背上的那一个。因此卡片必须给足语境,能显然排除掉合理的替代答案,但又不能给太多,避免把问题写太长,导致模式匹配或卡片「失焦」。
1091 |
1092 | 例如,如果你读完一个煎蛋菜谱立即提问「做煎蛋的第一个步骤是什么?」 ,此时答案可能是显而易见的:「用平底锅热黄油」!但六个月后再次回答,你可能想到很多合理的答案:「打蛋」,「用平底锅热黄油」,「把蘑菇剁碎做馅」等等,这不好。
1093 |
1094 | 一个解决方案是提供极其精确的背景:「Bon Appetit 18 年 6 月的煎蛋菜谱的第一步是什么?」但这种强限定,表明知识本身就比实际上更广。如果可能,在能避免歧义的情况下,普遍性强的知识应当被普遍地表达。这或许也意味着你需要换个切入点提问;例如这样:「做煎蛋时,在加入鸡蛋之前,锅必须如何准备?」
1095 |
1096 | 假阴性的卡片常像是学校考试中最无聊的废话:「哦,是的,回答正确,但它不是标准答案。再试试?」[Soren Bjornstad 指出](https://controlaltbackspace.org/memory/designing-precise-cards/%23allowing-correct-but-irrelevant-answers),一个不能排除多种回答的卡片,需要你记住设问的信息本身,还要额外记住「卡片在问什么」。
1097 |
1098 |
1099 | {{< withorbit >}}
1100 |
1101 |
1105 |
1106 |
1110 |
1111 |
1115 |
1116 |
1120 |
1121 |
1125 |
1126 |
1130 |
1131 | {{< /withorbit >}}
1132 |
1133 | ### 随时间推移修订卡片
1134 |
1135 | 很多问题在写卡的同时我们往往不明显,而只在复习时暴露,有时还在好几轮复习之后(那时重复间隔甚至可以长达数月)。卡片 bug 的反馈周期并不短,因此其修订也重在渐进,一如渐进地写卡,此过程中,你也会留意其中的问题和机会。
1136 |
1137 | 复习环节中,请警惕「望卡兴叹」的感觉:「哦上帝,这个卡片 ——我永远都记不住答案」或者「每当刷到这张卡,我都知道答案,但并不真正理解它的含义」。倾听这些内心反应,并由其驱动你的修订。为了避免打断复习,大部分 SRS 允许在复习中标记待订正的卡片。你可以在复习完后,查看它们,并做改进。
1138 |
1139 | 学习卡片编写,就像学习散文的遣词造句。[20] 所用技能看似平凡,但个个上限很高。无论写卡或炼句,修订它们都要从整体着手。散文里的单句比较糟糕时,可能要合并整个段落、修改叙事方式,或大段大段变更文本结构。我在改卡时也有类似如上的观察,有时可以单独提改,但每当我理解有变时,常希望对整套卡组开刀 —— 这里合并、这里重构、那里细分。[21] 不幸的是,大部分 SRS 界面都将卡片视作一个独立的单元,这让自下而上做修订变得困难。就仿佛要改的论文被锁定住,必须申请一句、改一句。未来的 SRS 可能优化这方面问题,但当下按我的观察,只需主观上保持一个对整体性的渴望,即可更高效地修改。
1140 |
1141 | 在前文 ,除了细筛案例、陈例制卡的效用原则,数量上也有所建议:制卡应超出你的舒适量(write more prompts than might feel natural.)所以,我想提供一个反向考虑下的建议来结束全文。
1142 |
1143 | 我们探索的重点,始终是如何用卡片对多种多样的『理解』进行有效地表达。但仅满足有效性规则的卡片,却不一定值得重复。我相信最重要的、可以「优化」SR 练习的方面,莫过于「重复」本身与「重复内容」之间产生的情绪联系(the emotional connection to your review sessions and their contents)。如果突然发现,所重复的内容不再是自己关心的,你应有所行动 —— 要是想起当初制卡的动机,你可以通过修订来提示它,但绝大多数时候,直接砍掉是最佳做法。
1144 |
1145 | 我们可以从制卡的反面来理解这个建议:什么材料*应该* 是你写卡的?何时是 SRS 值得一用的?许多人刚开始用 SRS 时感到棘手,虽然兴致盎然,却对自己的情况无从下手。另一些人从背诵所谓「你应该知道的xxx件事」开始(如所有美国总统的名字),通常会倍感无聊、萌生退意。最好的开始,是研究怎么用它做一些事情,和自己息息相关的那种 —— 例如,用来撬动 idea,强化你核心工作里对创意的理解。随着积累,你对 SRS 的收益和成本便深有体会了,这可能带来更多应用点(就像我的烹饪)。如果你找不到任何方法,将 SRS 用于自己的重要事情上,那或许本就不该费心去用它。
1146 |
1147 |
1148 | {{< withorbit >}}
1149 |
1150 |
1154 |
1155 |
1159 |
1160 | {{< /withorbit >}}
1161 |
1162 | ## 进一步阅读
1163 |
1164 | 这些资源对我来说特别有用,因为我已经对如何写出好卡片有了一定的了解:
1165 |
1166 | - Piotr Wozniak 的[有效学习:制定知识的二十条原则](https://www.supermemo.com/articles/20rules.htm)和更详细的[基于主动回忆的学习中的知识结构和表述](https://www.supermemo.com/en/archives1990-2015/english/ol/ks)从不同的角度处理了与本指南相同的问题。
1167 | - Michael Nielsen 的[增强长期记忆](https://augmentingcognition.com/ltm.html):全面回顾了 SR 的原理,以及你为什么应该关心;更详细地介绍了如何实际地将卡片写作结合进你的阅读实践,特别是在阅读学术文献、对创造性工作记笔记时;以及更多。
1168 | - Michael Nielsen 的[利用间隔重复系统看透数学作品](https://cognitivemedium.com/srs-mathematics)展示了如何利用间隔重复卡片作为杠杆,迭代加深对数学作品的理解。
1169 |
1170 | 更多观点和相关话题,请参见:
1171 |
1172 | - Soren Bjornstad 的[记忆系统系列](https://controlaltbackspace.org/memory/designing-precise-cards/)涵盖了维护卡片库的许多实用主题,包括一些关于写卡的建议。
1173 | - Nicky Case 的[如何永远记住任何事情](https://ncase.me/remember/)介绍了间隔重复法,并通过有趣的插图介绍了一些卡片写作的技巧。
1174 | - [我们怎样才能开发变革性的思想工具?](https://numinous.productions/ttft/)(来自 Michael Nielsen 和本 Andy)讨论了卡片写作在「助记媒介」的挑战,其中包括将卡片嵌入叙事性散文中。
1175 |
1176 | ## 致谢
1177 |
1178 | 感谢 Peter Hartree、Michael Nielsen、Ben Reinhardt 和 Can Sar 对本指南的有益反馈;感谢我在编写本指南时举办的卡片写作研讨会的许多与会者;感谢 Gwern Branwen 和 Taylor Rogalski 对写卡的有益讨论,这些讨论为本工作提供了信息。我特别感谢 Michael Nielsen 多年来围绕记忆系统进行的对话和合作,这些对话和合作塑造了我对这一主题思考的各个方面。
1179 |
1180 | 本指南(和 Orbit,其内嵌的间隔重复系统)是由[我的 Patreon 社区](https://patreon.com/quantumcountry)提供的众筹研究经费促成的。如果你觉得我的工作有趣,你可以[成为会员](https://patreon.com/quantumcountry),以获得持续的幕后更新和新作品的早期访问。
1181 |
1182 | 特别感谢我的赞助商级别的赞助者。[Adam Wiggins](https://twitter.com/hirodusk), [Andrew Sutherland](https://asuth.com/), [Bert Muthalaly](https://somethingdoneright.net/), [Calvin French-Owen](https://calv.info/), [Dwight Crow](https://www.linkedin.com/in/dwight-crow-73122621), [fnnch](https://fnnch.com/), [James Hill-Khurana](https://jameshk.com/), [Lambda AI Hardware](https://lambdalabs.com/), [Ludwig Petersson](https://twitter.com/ludwig), [Mickey McManus](https://www.t-1ventures.com/), [Mintter](https://mintter.com/), [Patrick Collison](https://patrickcollison.com/), Paul Sutter, [Peter Hartree](https://peterhartree.co.uk/), [Sana Labs](https://www.sanalabs.com/), [Shripriya Mahesh](https://shripriya.com/), [Tim O'Reilly](https://www.oreilly.com/tim/).
1183 |
1184 | ## 许可证和署名
1185 |
1186 | 本作品以 [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/) 授权,这意味着你可以复制、分享和建立在这篇论文上(注明出处),但不能出售。
1187 |
1188 | 在学术工作中,请将此引用为:
1189 |
1190 | Andy Matuschak, “How to write good prompts: using spaced repetition to create understanding”, [https://andymatuschak.org/prompts](https://andymatuschak.org/prompts), San Francisco (2020).
1191 |
1192 | ## 注释
1193 |
1194 | > [1] 本指南假定你对间隔重复系统有基本的熟悉。有关介绍,请参阅 Michael Nielsen 的[《增强长期记忆》](https://augmentingcognition.com/ltm.html)(2018年),该文也是「让记忆成为一种选择」这句话的来源。
1195 | >
1196 | > [2] 如果你没用过间隔重复系统,我建议你下载 [Anki](https://apps.ankiweb.net/) 并阅读[之前提过的那篇 Michael 的文章](https://augmentingcognition.com/ltm.html)。
1197 | >
1198 | > [3] 更多的背景资料,请参阅 Roediger 和 Karpicke 的[《测试记忆的力量》](https://andymatuschak.org/prompts/Roediger2006.pdf) (2006)。Gwern Branwen [关于间隔重复的文章](https://www.gwern.net/Spaced-repetition)是比较公认的一个的好综述。
1199 | >
1200 | > [4] 例如,见 Karpicke 和 Blunt 的[提取练习比使用概念图的精细学习产生更多的学习效果](https://andymatuschak.org/prompts/Karpicke2011.pdf) (2011);以及 Blunt 和 Karpicke 的[《用基于提取的概念图学习》](https://andymatuschak.org/prompts/Blunt2014.pdf) (2014)。
1201 | >
1202 | > [5] 关于助记媒介的更多背景,见 Matuschak 和 Nielsen,[我们如何才能开发出变革性的思想工具?](https://numinous.productions/ttft/)(2019)。
1203 | >
1204 | > [Jarrett 1] 遗憾的是,嵌入卡片需要 Orbit 项目的支持,无法在普通的网站上实现这一效果。想要了解这种嵌入卡片具体形式的读者,可以阅读原文,亲自体验一番。
1205 | >
1206 | > [6] 你可能会发现在两个地方复习卡片很烦人。随着 Orbit 的成熟,我们将发布导入/导出工具来解决这个问题。
1207 | >
1208 | > [7] 这种效应已经在许多实验中产生,但还没有得到很好的理解。概述见Murayama 等人的[《遗忘是提取的结果:提取诱导遗忘的元分析回顾》](https://andymatuschak.org/prompts/Murayama2014.pdf)(2014)。
1209 | >
1210 | > [8] SuperMemo 的算法(也被大多数其他主要系统使用)被调整为 90% 的准确率。如果你以更低的准确率为目标,每一次复习都可能对你的记忆产生更大的影响——参阅例如 Carpenter 等人的[《使用间隔来增强不同形式的学习》](https://andymatuschak.org/prompts/Carpenter2012.pdf) (2012)。更高的准确率目标以效率换取可靠性。
1211 | >
1212 | > [9] 关于困难的提取比容易的提取有更大的影响这一概念,见关于 Bjork 的讨论,以及 Bjork的[《废用新理论和刺激性波动旧理论》](https://andymatuschak.org/prompts/Bjork1992.pdf) (1992)。Pyc 和 Rawson 的[《测试提取努力假说:更大的正确回忆信息的难度是否会导致更高的记忆水平?》](https://andymatuschak.org/prompts/Pyc2009.pdf) (2009) 对这一理论提供了一些集中的实验测试,他们将其称为「提取努力假说」。
1213 | >
1214 | > [10] 如果你是一个素食主义者,我希望你能看淡关于骨头的讨论:选择这个例子涉及到许多权衡。
1215 | >
1216 | > [11] 例如,见 Bradshaw 和 Anderson 的[《精细编码是对加工水平的一种解释》](https://andymatuschak.org/prompts/Bradshaw1982.pdf) (1982).
1217 | >
1218 | > [12] 一个令人信服的证明,可以见 Chase 和 Simon 的[《国际象棋中的感知》](https://andymatuschak.org/prompts/Chase1973.pdf)(1973),它通过实验证实了国际象棋大师是如何操作较大的组块的。
1219 | >
1220 | > [13] 事实上,如果您是一位经验丰富的厨师,您可能会将鸡肉高汤的原料也视作开放式清单——如果是这样,最好以这种方式代表它们! 这是人类尺度下,封闭式清单的共同命运。
1221 | >
1222 | > [14] 见 Slamecka and Graf, The Generation Effect: Delineation of a Phenomenon (1978).
1223 | >
1224 | > [15] Michael Nielsen 和我在量子力学中尝试了以应用为中心的SR卡片,但我们觉得并没理解它们。
1225 | >
1226 | > [*] 私人通讯中
1227 | >
1228 | > [16] 这是教育心理学中称为「学习迁移」的一个广泛问题的一个方面:人们如何将他们在一种情况下学到的东西转移到另一种情况?
1229 | >
1230 | > [17] 正如 [Michael Nielsen 笔记](https://augmentingcognition.com/ltm.html),类似的轻量级卡片写作目标可以活跃研讨会、专业对话、活动等。
1231 | >
1232 | > [18] 有关数学中这一过程的生动描述,请参见 Michael Nielsen,[使用间隔重复系统看穿一段数学](https://cognitivemedium.com/srs-mathematics) (2019)。
1233 | >
1234 | > [19] 间隔重复的先驱 Piotr Wozniak 一直在开发一种他称之为 [渐进阅读](https://supermemo.guru/wiki/Incremental_reading) 的系统,该系统试图积极支持这种迭代、增量卡片写作。
1235 | >
1236 | > [20] 对句子的类比来自 Matuschak 和 Nielsen,[我们如何开发思维变革工具?](https://numinous.productions/ttft/) (2019)。
1237 | >
1238 | > [21] 如果您尝试过这些练习,您可能会注意到,在同一文本字段中撰写多个问题时,跨问题边界进行修改要比仅单卡修改会更容易。 作为一项实验,[我](https://notes.andymatuschak.org/z5ARNXtS5VxteskEW91S1yYTgAcLABNXsZuJE) 2020 年所写的全部新卡片都是简单的“Q. / A. 一种。” 使用老式文本编辑器而不是专用界面嵌入明文笔记中的行(如本指南中的示例)。 我发现在大多数情况下我更喜欢这种方法。 以后我可能会发布一些工具,允许其他人以这种方式编写卡片。
--------------------------------------------------------------------------------