思维之海

——在云端,寻找我的星匙。

论学习方法

两岸猿声啼不住,轻舟已过万重山。

本文为写给学堂在线疾风计划的同学的一些学习经验分享。因时间仓促、知识有限,难以面面俱到;仅供参考。

References

学堂在线 - 疾风计划经验分享PPT

年中总结

912 内容学习计划

学习与人生——700篇博文之感悟 编程随想,推荐书单

时间与人生——跨入本世纪20年代的随想

什么是【真正的】兴趣爱好?以及它有啥好处?

如何完善自己的知识结构

兴趣 | 意志力 | 执行力

动机森林

什么是动机?首先,一个人做任何事情都是有目的的。

打个比方,在机器学习中,梯度下降的目的是为了降低损失函数在特定样本上的函数值,降低函数值的目的则是最优化,那么最优化就是人们使用机器学习的动机吗?并不是,最优化的目的是为了让某个分类或者回归指标变得最好,而变得最好的目的则是在某个问题上机器可以达到甚至超越人类水平……这还没完,超越人类水平对于商业公司而言的是希望获得最大的经济效益,对于科研人员而言则可能是做出领先世界的研究成果……

最后,这些对于同一件事的不同分叉,构成了一棵动机树。树上的每一个叶节点都成为一个真正的动机。

每一个事件都对应着一颗动机树,这便是动机森林。将动机森林合并,便形成了前馈网络。我们还可以对不同事件的树根进行聚合,得到更宏观的动机。

以上便是动机模型。

内在动机

动机可能具有“外部性”或者“内部性”。

以“学习编程”为例:

  • 假设某人的父母听说学编程有前途,于是让孩子去学习某门编程语言——这属于被动学习
  • 假设某人听说程序员比较好找工作,于是去学习某门编程语言——这属于主动学习的“功利因素”
  • 假设某人本来就喜欢编程这项活动,于是去学习某门编程语言——这属于主动学习的“非功利因素”

“被动学习”与“基于功利因素的学习”有一个共同点——其动机是【外在】的。

如果某人学习的动机是【外在】,这个动机【未必】能持久,一旦外部环境变了,其动机可能就消失了
反之,【内在】的动机比较能持久(不会轻易受到外部环境的干扰)。

内在动机通常取决于你很长时间的历史经历——你是什么样的人,喜欢什么样的形式,你的行为模式是怎样的……这些东西在短期内不会发生剧变,甚至对于多数人,成年以后便终生不再改变。

下面举两个内在动机的例子。

好奇心。好奇心的本质来源于对新知的渴望,意味着你有一种知道更多东西的心理倾向。但是,好奇心会随着你接受的新知的具体属性和顺序而发生改变。大多数人在童年时代都具备天生的足量好奇心,但是这些好奇心由于新知的融入,因环境而产生分化,有的人渐渐失去好奇心,而有的人的好奇心分化到特定领域……

思维乐趣。思维乐趣是在脑海中自成一派,是指热爱思考的人。具有好奇心的人,不一定同时享有思维乐趣;能够享有思维乐趣的人,不一定具备好奇心。比如,有些同学喜欢算微积分,一道积分题算一天,这个过程充满了思考,但是并不会接收新知;另一些同学,喜欢看MOOC,但是从来不做笔记,也不做题,看完了就完了,这个过程虽然获得了新知,但缺乏思考,当需要具体应用时,问题就会暴露出来。思维乐趣不具有普遍性,多数人很难从纯粹的思考获得幸福感

兴趣

同时保有好奇心和思维乐趣两种内在动机的人,则称之为具备兴趣的人。

但是,这只是从定义上明确了兴趣,对于兴趣的外延解释能力有限。

伪兴趣

什么是“伪兴趣”:

  • 三分钟热度
    • 得到了很快就失去兴趣;得不到的,很快就畏难而退
  • 动机存在功利因素
    • 仅仅因为比特币市场火爆,才学习区块链技术
  • 外在动机
    • 被强迫去做某事
      • 被学校布置任务;被家长强迫学习
    • 受到社会观念约束
      • 高考填志愿选择热门专业
    • 为了得到群体认可
      • 为了出名、获得荣誉而做某事
    • 受到法律约束
      • 义务教育;义务服兵役
  • 纯粹感官刺激、本能驱动的行为
    • 吃顿美餐、泡个温泉……
  • 消极行为
    • 边工作边听音乐。这时,听音乐是一种消极的行为,不需要你主观意识的参与
  • 心理舒适区
    • 一种“心理状态”。处于这种状态,你会感觉到放松,没有压力和焦虑。
      • 如果你处于某个环境中,在该环境下所需要的行为你都可以轻松搞定;你就处于“心理舒适区”。
    • 看知乎、看视频(短视频、电影、电视剧)、看微博……

真正的兴趣

兴趣所具有的外延特征:

  • 持久
    • 几年,几十年……
  • 内在动机(好奇心 + 思维乐趣)
    • 动机完全来源于内心,不随外界环境改变而轻易变迁
  • 思维高度参与
    • 编程、写作、作曲……各种需要强创作能力的行为
  • 幸福感 / 快感
    • 费马:数学只是业余爱好,研究成果大多没有发表
      • “费马小定理”是他与朋友的往来书信中顺便提及的:$a^{m-1} \equiv 1(\bmod m)$
    • 过程性的快乐:持久但强度不高(即使尚未获得成果,它也会起作用)
    • 愿意付出其他代价:从快感中获得补偿
      • 《侣行》
  • 成瘾性
    • 真正的兴趣让人上瘾
      • 熬夜肝代码,调BUG
  • 走出心理舒适区
    • 深度提升:在某个领域更进一步
    • 广度提升:涉足一个全新的领域
  • 心流(flow)
    • 由心理学家米哈里·契克森米哈伊(Mihaly Csikszentmihalyi)最早提出的概念。在心流状态下,你会忘记时间流逝、外界变迁,达到一种”忘我“的境界,全身心地投入到你感兴趣的活动中。
    • 如图所示,当你在某个领域达到高水平技能,同时还面临着高难度任务的挑战,就有可能进入到心流的状态。(你对某个领域的兴趣越大,你越有可能在心流模型的两个维度同时达到高水平。)

真正的兴趣可以使你在人生中获得更多的快乐、更充实的生活。

获得真正的兴趣

如何获得真正的兴趣仍然是一个开放的话题。这里只讲一些简单的思考。

本科、硕士和博士有何区别?

获得兴趣的必要条件是获得好奇心和思维乐趣。

好奇心一般不需要专门培养,当了解的越多,好奇心也会更强。只是需要注意,对广度的把握;如果对某一个领域过度专注,就会相对失去对其它领域的好奇心。至少,在获得真正的兴趣之前,不要过分偏科。

获得思维乐趣的方式,可以尝试从获取新知的过程中发掘。在获取新知的时候,适当地放慢速度,让新知和脑海中已存在的思想发生联结。在充分沉淀过后,内在的思考能力就会得到提升,当能力提升以后,便可以引发思考,并最终趋向于思维乐趣。

自律

一个网上广为流传的段子:

当然,原文并非一致:网上流传的季羡林吐槽、胡适打牌的日记属实吗? - 田吉顺的回答 - 知乎

自律意味着意志力;意志力通常与思维能力有关。

在获得思维乐趣之前,获取新知的同时,如果想要提升思考能力,就需要意志力。意志力可以帮你克服一些兴趣不起作用的场景。但意志力是一种宝贵的稀有资源,应该尽量让它在最有需要的场景发挥作用。

意志力常常表现为一种偏执的信仰,任何新知都会不由自主地触发并强化它。

《John Wick 3》: “He Is a Man of Focus, Commitment and Sheer Fucking Will.”

外在动机和好奇心是意志力的主要来源,虽然不稳定,但是会有效果。获得意志力有时也需要内在动机的支撑:

鲍迈斯特的小组屡次发现,刻意掌控意志和进行自我控制很辛苦。如果你必须强迫自己去做某件事,而此时这件事又面临一个新的挑战,你就会很不情愿或是根本无法进行自我控制。这种现象被命名为自我损耗(ego depletion)。

在现实生活中,意志力很难获得。

意志力遵循马太效应

  • 那些意志力比较强的人,他们就更有可能运用某些心理学的措施,来进一步提升自己的意志力;
  • 而那些意志力很差的人,即使知道这些改进措施,也没法付诸实行。

在互联网时代,这样的马太效应会进一步放大。大部分人的上网时间都用于消遣——你总是处在你的心理舒适区,而这会渐渐消磨掉你的意志。

遗憾的是,大多数人终生也无法“战胜自我”。

自律,获得意志力的过程,只有你自己可以完成,其他任何人都无法代替。好的环境,好的方法,只能给你可能性,只有靠你自己去捕获其中的必然性。

小马过河

勇于尝试。

我想讲一点关于执行力的事情。

这里可以以我自身为例。我想学前端已经很久了,但一直觉得前端技术是一个很大很复杂的领域,包括你去看简单的HTML代码——几乎没有什么简单可言。比如,尝试查看我博客上About页面的HTML源代码:https://vel.life/about/。虽然整个页面看起来没有特别复杂,但对应的源代码也足有600行之多。

这使得我一直不敢轻易涉足前端。我总是尽量避免参与任何与前端相关的工作。

但是,最近,一个课程项目:P2P系统设计。因为要负责和前端对接,需要使用JavaScript编程,我被迫需要在几天时间上手前端。一开始觉得简直不可能,想找些Python的替代方案,但是效果都不好;最后咬咬牙,现学现卖,竟真的用JS做出来了。

道理固然是很重要的,但是,只有经历过的道理,才会在心中留下重量。就像小马过河的寓言,就像鲁迅的文字,就像王菲的歌……

执行力是一种与勇气更加挂钩的能力。与意志力不同的是,如果意志力所坚持的方向是错误的,执行力可以让你及时纠错;万事开头难,执行力是意志力开始发挥效力前的铺垫工作,是一切的开始。

执行力强调状态的变化;意志力强调状态的维持。

知识结构

思考,快与慢》,Daniel Kahneman

大脑的两个系统

The Brain - System 1 and System 2

我们的大脑存在快、慢两种做决定的方式:无意识的“系统1”,有意识的“系统2”。这两者是大脑应对不同场景的两套任务处理流程

注:心理学家基思·斯坦诺维奇(Keith Stanovich)和理查德·韦斯特(Richard West)率先提出的术语,用以说明大脑中的两套系统,即系统1和系统2。

系统1

系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。

比如:

  • 人脸识别、表情识别
  • 听到某首(你熟悉的)乐曲,立即想到名称
  • (对于识字的人)一看到某个“字/单词”,就想到读音
  • 周围存在笑声的时候,你也不自禁地笑起来

系统1自动运行,其带给你(潜移默化)的直观感受是你所无法控制的:

系统2

系统2将注意力转移到需要费脑力的大脑活动(思维能力)上来,例如复杂的运算。系统2的运行通常与行为、选择和专注等主观体验相关联。

比如:

  • 计算 $37\times 24 = \;?$
  • 逻辑推理
  • 打游戏
  • 看论文
  • 创作……

系统1偏向于直觉/感知(无意识),系统2偏向于认知(有意识)。

和计算机相反的是,人类大脑的系统1耗能水平远低于系统2。

真正的兴趣活动,离不开系统2的运作。

短路原理

如果某个任务可以由“系统1”搞定,就不会再让“系统2”参与。

对于司空见惯的常识,系统2将不再参与思考。

即使有意识地调用系统2来完成某个任务,仍然可能受到系统1无意识中收集的信息的影响。

下面是某个心理学实验:
  对 A、B 两组被试,让他们填写一份问卷。问卷上有一系列历史名人,要求填写这些名人大概死于几岁。参与测试的人都知道这些名人,但未必记得他们的死亡年龄,只能进行大致的估计。
  对于“A组”,他们的座位上标有一个随机数字。这个数字大概是几百或几千(很显然与年龄没啥关系);对于“B组”,座位上没有标数字。
  测试的结果,“A组”的问卷,对年龄的猜测显著高于“B组”。测试之后,再去询问“A组”的测试人员,相当比例的人【没有】意识到自己的座位上标有数字。
  从这个测试可以看出:“系统1”在下意识(无意识)的情况下收集到的信息,也影响到了“系统2”。

如何提升思维能力

  • 少看消遣性的内容,多看费脑筋的内容
  • 多接触和学习不同领域
  • 批判思维
    • 弱批判思维:聆听与自己有冲突的意见,并寻找全部的谬误
    • 强批判思维:质疑和反思自我,找到自己的全部谬误
  • 培养兴趣
  • 选择合适的信息媒介

信息媒介

传播学

“传统博客”过时了吗?——兼谈各种媒介形态的优缺点

相对于博客:

  • 微博客
    • 缺乏深度
      • 字数“显”限制
    • 碎片化
      • 无法集中注意力
    • 生命周期太短
    • 信噪比低
      • 高价值内容远少于总阅读量
  • 社交网络(比如微信)
    • 碎片化
    • 信噪比低
    • 干扰因素多
      • 频繁的互动、更新
  • 问答网站(比如知乎)
    • 需要提问能力、搜索能力(有一定基础)
    • 能够展现的信息形式受限(小说、诗歌、散文……在问答网站上一般只有命题作文。)
  • Wiki百科
    • 适合于事实的传播
    • 不适合于观点的获取
  • 书籍
    • 主动性、系统性、深刻性
    • 创作门槛较高
      • 目前出版变得越来越容易,导致筛选成本急剧上升

核心学习原则

有限的精力,需要有限的专注。

DIKW模型

如何【系统性学习】——从“媒介形态”聊到“DIKW 模型”

  • Data(数据)
    • 从环境中直接获取的观测结果
      • 比如电路中的电信号,气象测量中的传感器值
  • Information(信息)
    • 从Data中获得的简单结论;周期短,碎片化(WHAT?)
      • 从气象传感器中得出某个时段的平均气温
  • Knowledge(知识)
    • 从Information中整合出的通用原理(HOW?)
      • 从气温统计中得出气候变化的规律
  • Wisdom(智慧)
    • 从Knowledge中进行因果推断,获得本质(WHY?)
      • “编程语言”有成百上千种,而“编程范式”只有大约十多种。“编程范式”就是一种 W(智慧)。

Alan Perlis艾伦·佩利,【第一个】图灵奖得主)的名言——不能影响你编程观点的语言,不值得你去学!

少即是多

我们应该着重学习有价值的内容,但就算只学习Knowledge(知识)和Wisdom(智慧),它们在整个人类世界中的数量也是十分庞大的。

知识爆炸在当代表现十分突出。做科研的要面对每年成千上万新鲜出炉的论文,做工程面对层出不穷的新模型新技术,自媒体和碎片化信息充斥了我们的闲暇生活。

这时候你需要做一些取舍——只记住核心的知识点,舍弃边缘的知识点。当需要用到那些边缘知识的时候,查阅笔记或者查阅搜索引擎就可以了。

除了对具体知识内容的过滤,还可能需要主动平衡整体学习的广度和深度。

深度,就是每一个具体领域,你深入到了什么层次。

如果一个人的知识结构只有广度没有深度,就会导致“没有亮点”,变得没有竞争力,只能“纸上谈兵”。

广度,就是在你的知识结构中,包含了多少领域。

现代社会不同领域之间的联系变得紧密,想要某个领域有足够的深入,必然要了解很多辅助性领域的知识。

一个人的精力是极其有限的。如何平衡广度和深度呢?可以借鉴正态分布:在核心领域上最为深入,在一些相近的领域上也投入一定的时间,其他较为疏远的领域则可以浅尝辄止。

知识拓扑

ProcessOn 流程图工具

在学习计算机的过程中,大家很快会接触到一种叫做“拓扑排序”的东西。大概的意思,就是你在学习A之前,你得先学会B;在学会B之前,先学会C和D……

如果一个领域有复杂的知识拓扑,那么合适的拓扑排序——找到一开始应该优先学习的内容,很重要。

如何获得一个领域的知识拓扑呢?

  • 看该领域的入门读物 / 百科 / 博客
  • 询问某个熟悉该领域的人

在疾风计划的课程大纲上,其实也展现了一个粗略的知识拓扑:

但是它并不细致,比如学习一部分数据结构或者离散数学,实际就可以开始学习一些简单的算法。这样的学习策略,可以一定程度地帮助你培养内在动机,从而点燃真正的兴趣。

知识森林

如果把不同领域的知识拓扑放在一起,你就可以观察到我们之前提及的知识分布的离散化结构。

费曼学习法

以教促学。

假设你正在学习某个领域。费曼学习法即,你需要将这个领域的知识讲给一个在这个领域零基础的菜鸟,并且让他听懂。

三种掌握程度:

  • 完全不知道讲什么
    • 对该领域还缺乏系统性的了解
    • 需要重新“入门”
  • 讲着讲着会经常卡壳
    • 有了系统性了解,但还没有理顺整个领域
    • 把卡壳的地方重新学习
  • 讲得出来,但别人听不懂
    • 无法做到深入浅出;没有做到换位思考
    • (通过讨论,把没讲明白的部分筛选出来,做进一步的分析)

写博客

行使费曼学习法的一个好方法就是写博客。写博客面向的网络上随机的人,因此需要深入浅出的文章,这会潜意识地锻炼你写作的能力,同时使得博客的受众获得知识传播。

我也是在自学计算机的过程中,逐渐了解到博客的存在,并最终决定建立自己的博客。搭建一个博客,简单的可以直接在各种博客网注册账号,即可以发表文章;复杂的,则可能需要你架设自己的服务器、域名,你必须会一些前端的知识,面对各种工程问题你还需要一些DEBUG能力……写博客会督促你不断学习。最好的状态是,写博客成为你的一种兴趣。

时间与人生

学术人生:文章千古事, 得失寸心知 朱松纯

“珍惜你的学习机会,思考长远的人生路途,做明智的选择。”

成长

成为技术领导者——解决问题的有机方法》,Gerald Weinberg / 杰拉尔德·温伯格PDF

能力曲线

个人能力的变化存在两种模式。一种是渐进模式,另一种是跃迁模式。

  • 渐进模式:在同一个层次上,能力发生进步
  • 跃迁模式:这种模式下,能力可以跃迁到更高的层次

大部分人观测到的进步(能力曲线)通常像下面这个图,每隔一段时间就发现有明显的进步:

但是当统计数据更多一些之后,真正的能力曲线形状的刻画变得更精细,这时出现了“平稳期”和“突变期”的概念。大部分的进步来源于从一个高原阶段到另一个的高原阶段的突然飞跃。

平稳期的技术积累对于瓶颈期的快速突破至关重要,但是在突破期除了熟能生巧以外,为了产生真正的质变,常常需要需要某种观念上的突破

黎明前的黑暗。

如果对成长曲线的刻画更加精细一些,你还会发现,在完成跃迁前,存在一个低谷期。每当试图有所提高时,可能需要一个小的退步之后才能取得大的提高。

比如,有一个编辑器叫做vim,学习成本很高,但是一旦学会灵活使用,文本编辑的速度就会产生飞跃——这样的飞跃仅仅通过在其他编辑器上不断练习是做不到的。

对于大多数用户来说,Vim有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。(Vim - 维基百科

这种飞跃更像是一种攀登。为了攀登到新的高度,你必须离开原有的立足点,抛开擅长的东西,还可能回落到低谷。但如果你不愿意舍弃擅长的东西,那么你将继续缓慢进步,但永远达不到新的高度。

成长曲线在现实中可能存在大量的噪声,这些随机事件常常使人“不识庐山真面目”。但在许多真实成长过程中的噪音下掩藏着一个“低谷-高原”模式……

注:翻译此书的人可能把坐标轴标反了。

成为技术领导者——解决问题的有机方法》的作者Gerald是软件工程领域久负盛名的大牛。早在上世纪50年代(IT 的远古时代),就在 IBM 担任系统开发经理,并参与60年代 NASA 的水星计划(美国首次载人航天飞行)。

Gerald在书中也谈到自己的能力曲线的一个具体案例。

Gerald当年是IBM650的最佳程序员。IBM650是上个世纪五十年代的计算机(1950s),当时还在用纸带打孔的方式编程。

但没过多久IBM704这种更庞大功能更强的计算机就生产出来了。Gerald一开始是拒绝的,他私下学习了704的知识,但是发现学起来并不容易,找了个借口又回到了650。直到他渐渐了解到704的一些优越性,包括大存储、高运算速度,能够解决650所不能解决的一些问题。Gerald有一天碰到了一位客户,发现他遇到的计算问题,用650是显然无法解决的,而704就是为这类问题量身定做——Gerald终于开始全面转向704,攀登新的高原

计算机技术进步很快,在704之后,全新的计算机IBM360又问世了。再过了几年,高级语言也问世了,汇编语言一统天下的场景一去不复返……Gerald开始一轮又一轮的循环,但他的感觉不再像第一次转变那么痛苦——同样感到不安,同样基于返回原地,但是这次他更为自信,相信自己一定能成功,甚至感到了一丝兴奋……他相信自己能够应付这样的变化,把它看作是一个创造性的挑战而不是一种必须承受的磨难。

学习曲线

“远见”。

慢即是快

那些愿意花足够的时间与精力去搞定基本功打好基础的人,加速度会越来越快。

在能力曲线上就是追求基本能力的多次跃迁。

边际递增

大多数人在20到30岁就已经过完自己的一生;
一过了这个年龄段,他们就变成自己的影子,以后的生命只是在不断重复自己…

——罗曼·罗兰,《约翰·克里斯朵夫》

绝大部分人的人生处在边际递减的状态中。他们的学习曲线到了一定程度便不再发生显著的变化,而是趋近于某个固定的水平。

互联网的出现,使得一小部分人的能力曲线,发生了边际递增的现象。一个善于学习,没有沉迷在互联网的各种繁杂中的人,如果充满求知欲,如果运气不太差的话……不断学习,不断跨领域、做系统性学习的人,他的思维能力和学习能力都会不断上升,从而让能力曲线不断上扬。

学习,一定要从长计议,考虑长期坚持之后的收获。

更激进的跃迁模式

那不能杀死我的,使我更强!(What does not kill me, makes me stronger.)

——尼采,《Ecce Homo》

我们在能力曲线一节中已经指出:每当试图跨越到下一个阶段时,可能需要一个小的退步之后才能取得大的提高

在现实生活中,你需要勇于尝试那些更有挑战性的工作,而不仅仅满足于”稍稍偏离舒适区的小退步“所带来的一定跃迁。

成长曲线是整个人生的学习曲线的一小段缩影。如图,每一小段学习曲线,都是一条成长曲线。

在不断学习的过程,你的跃迁将会越来越快,幅度也越来越大;你挑战的问题难度也必然越来越大。这就对应着越来越激进的跃迁模式。

经历

年中总结

计算机领域著名的学者朱松纯老师在《学术人生:文章千古事, 得失寸心知》谈到了他的人生。当然,不是每个人都会过所谓的“学术人生”,但是,既然大家参加了疾风计划,想必对学习这件事情是比较重视的,也许不一定走上“学术人生”,但是学习的道路总是相似的,我相信,大家终究是殊途同归。

至于我的人生,说实话,在我看来,才刚刚开始走上我想要去走的路——也许还没有找到最终的路……

谈到计算机

912 内容学习计划

关于如何学好计算机课程专业知识。我并非计算机专业,所以我能谈的非常有限。

每个人学计算机的动机都是不同的,因此最想要学习的内容也会有不同。但是,如果说没有什么特别急需应用的需求的话(比如马上要做一个网站,马上要上线一个产品……),我觉得还是尽量优先学习那些比较经典的、经过了漫长时间考验的知识。这些在计算机学科里面就体现为基础知识:数学、编程、实验……

时代变化得越来越快,做科研、做工程,可能会不由自主地追逐当下的热点。但是,从学习的角度来说,我们的聚焦点不该停留在这些快速迭代的风景中,而要去寻找变换中的不变,寻找风中的磐石。如果想做真正有价值的科研、开发有突破贡献的技术,有时还得静下心来,沉淀。

黄色的树林

黄色的树林里分出两条路
可惜我不能同时去涉足
我在那路口久久伫立
我向着一条路极目望去
直到它消失在丛林深处

但我却选择了另外一条路
它荒草萋萋,十分幽寂
显得更诱人,更美丽
虽然在这条小路上
很少留下旅人的足迹

那天清晨落叶满地
两条路都未经脚印污染
呵,留下一条路等改日再见
但我知道路径延绵无尽头
恐怕我难以再回返

也许多少年后在某个地方,
我将轻声叹息将往事回顾:
一片树林里分出两条路——
而我选择了人迹更少的一条,
从此决定了我一生的道路。

——《未选择的路》,罗伯特·弗尔斯特

大家以后的路会有不同。会面不同的选择。

我提到了一些观点,但是这些也仅仅只是一些有限适用的观点。在现实里面,选择更多,困难更多,干扰也更多。

也许过不了多久,这里讲述的所有东西都将被你遗忘。我想, 有几个关键词:心流智慧远见。其他的内容忘了,回忆这几个字,在某种意义上也足够了。

勤为径

既入宝山,不空手而归。

邓公总是强调:“入宝山不能空手而返”。

既然参加了疾风计划,就“不要空手而返”吧。

书山有路勤为径。这句话其实从另一个角度理解的话:“书山”本没有路——走的人多了,也便成了路。你现在看到的每一条学习之路,都是无数勤恳的开拓者硬生生从荒野中开辟而出的。

希望大家有一天也可以开辟一条自己的路。

Pre答疑环节

Q:本人目前大二,因为我也考虑要跨专业考计算机研究生,所以特别想知道学长认为应当怎样才能认清自己能力的范围呢?(其实就是想问在计算机考研中要怎样才能知道自己是否拥有着清华或其他985院校的实力呢?)如果想要像学长一样清华或者其他985院校跨考计算机上岸的话,学长认为我们应当拥有的核心竞争力是什么呢?疾风计划能在何种程度上帮助到我们呢?

认清自己能力最好的方式就是做有挑战的事情,这个时候你就会对自己能力的局限之处获得直观感受。其次,就是多去了解别人走过的路,他们的具体经历,这也会帮助你找准定位。

核心竞争力是:科研能力、编程能力、学业水平。

疾风计划更针对学业水平一些。

Q:在专业背景不同的情况下,如何尽快在有限的时间内跟上计算机专业学习的进度?比如:如何在我们学堂在线规定的一年内克服专业背景不同的困难,完成学业?

投入,不拖延。学习任何事情都需要花费时间,但是,拖得越久,学习效率就越低(日积月累这种零碎学习方式只适合记忆,而不适合学习理论)。一定要抽出整块的时间,给自己留出充分的思考余地。对学过的东西一定要做好高质量的笔记;不一味地追赶进度,而是保证每一个脚印都很扎实。

Q:请问学长准备跨考期间是怎么复习的呢,比如高数,英语,政治和专业课各科的复习方法能简要介绍一下吗?

可以看我以前写的总结:912 内容学习计划。公共课方面我的水平很一般,就不班门弄斧了。

Q:1.目前的计算机科研方向主要可以分为哪些? 2.之后如果走科研道路需不需要参加ACM或蓝桥杯(本人非常想参加算法竞赛但同时也爱好科研) 3.跨专业考985院校除了要学习计科的所有内容还需要再拓展哪些内容?(例如人工智能方向的) 4.计科专业有没有必要学数学系的分析学和代数学内容?如果有则需要着重学习哪些课程?

科研方向可就多了,按清华计算机系研究所来分:媒体所、软件所、智能所、网络所、高性能所。具体可以看系官网上的科学研究部分。

算法竞赛是打基础敲门砖。在实际科研中运用有限。

需要带有科研性质的经历,拓展的内容根据你选定的科研方向而定(数据挖掘、机器翻译、目标跟踪、人机交互……)。

有需要。单纯从计算机科学的角度讲,数学极为重要,很多计算机科学家都是数学系出身;如果要从事理论计算机科学的研究的话,数学更是不可或缺。在AI领域的话,深度学习中的理论分析会用到概率论、经典分析、函数论的一些知识,现在所谓的符号空间智能模型也需要符号计算的一些工具,比如多项式代数。计算共形几何的最优传输理论现在也在GAN等模型中用来解释一些现象。总之就是,有很多数学知识需要学,但是并不一定要全面地学——看具体需求即可。我写了一些类似的总结,人工智能中的新数学,有兴趣可以看看。

Q:算法学习方法分享

之前算法训练营的longyue521助教曾经发表过相关的内容,我转载到了知乎上:Here。有兴趣可以看看。

Q:1.清华计算机912专业课应如何准备? 2.考研复习从几月份开始,具体是如何备考的?

可以看我以前写的总结:912 内容学习计划

Q:如何做到算法训练营第一名?考研时每天学习投入多少?学习算法训练营每天投入多少?入学前只学习了考试科目和算法训练营吗,疾风计划里的非考试科目您有自学到什么程度?

专注和投入。考研时每天除了生活起居之外基本都是在学习,算法训练营也是类似的;都需要全身心投入。不只,在学校学过基本的编程语言,做过一些人工智能、数据分析方面的事情。

疾风计划里的非考试科目:

  • 程序设计基础:大学修过《高级程序设计语言》,100分
  • 面向对象程序设计:选修过一门通识课,了解过C++的核心概念
  • 离散数学:在图书馆借过一本红色封面的美版离散数学教材,自行学习了大部分内容
  • 算法设计与分析:大学选过软院的算法课,但是没有OJ经验,加上时间仓促,成绩勉强及格
  • Linux、人工智能……

Q: 1.跨考到清华计算机需要做什么准备,或者说需要达到什么水平? 2.跨考生如何弥补自己没有项目经历的劣势?

据我了解,考研有一定的运气成分(即使有足够的水平,也不一定就能上岸);最终还是看老师怎么想。你唯一能做的,就是做好自己。水平自然是越高越好,准备的方面应该有:学习水平(GPA / 英语 / 自学能力)、科研水平(项目 / 论文 / 实习)、编程能力……

提前找实习(实验室,或者科研型企业),参与开源项目,或者其他能证明自己科研潜力的事情。

Q:跨专业跨校考研,专业课资料怎么找?

我仅仅了解912计算机专业课的资料收集。渠道大概有:考研QQ群,课程官方网站,github开源项目,搜索引擎……并且,本人在考研过程中已经总结了一个比较系统的项目:912_project。因此在912专业课方面应该不存在什么找资料的问题,资料都已经找好了。主要还是学习能力和决心。

Q:学长,请聊聊为何跨专业,以及跨专业考研所面对的问题

这个跟我们之前谈到的动机问题是一致的,无论做什么事情,拥有一个内在动机才能走得长远。在我当年刚进入大学的时候,计算机行业其实就已经开始进入潮流了,要说完全只是出于兴趣——我也不好说得这么绝对。但是,我学习计算机这么久了,我想最后沉淀下来的,还是真正的兴趣在驱动。其实无论做什么事情,一开始的动机可能是比较复杂的,但如果能够坚持下去,最后总会收敛到某种内在动机

跨专业考研面临的问题无非就是信息差,以及能力不足的问题。信息差主要在复试之前体现,包括找资料、找老师等;复试就会面临能力不足的问题。

Q:学霸您好!我是参加疾风计划的一员,有幸可以通过这次的直播,请教您一个问题。就是我学着学者吧,脑子就不自觉的跑路了,开小差了,特别想问一下您,是怎么做到可以在学习上如此专注的?可以和我们分享一下您的妙招吗?

长时间专注是一种稀有的状态,也就是之前提到的所谓“心流”。但是,如果一开始你的学习专注能力不够,不妨先从一小段一小段的专注开始慢慢感受;中间穿插适当的休息。你也可以采用一些类似番茄钟的时间管理软件来获得更精确的控制。培养出习惯大概只需要两周。

如果发现自己不在状态,最困难的一步可能是从这种低效的开小差状态中脱离出来——因为它会给你同时身体的放松和精神上虚有的自我满足感。这个时候,一些提前设计好的外力,比如去图书馆,比如找你的同学对你进行监督,比如找一些学习小组,往往可以使你迈出最关键的第一步

Q:自学过程中,遇到过哪些坎坷,如何解决的? 广泛精度教材而不是大量刷题,比如深入理解计算机系统,计算机系统设计,等等各类国内外经典教材,是否能够在考研中取得好成绩。 还是说,这两者如何结合呢?刷题的侧重点在哪,如何选择有质量的题目

万事开头难,自学也一样——找适合的学习资源往往消耗大量精力。当然这样就会潜移默化地加强你的信息搜索意识和能力。特别是,当信息越来越多的时候,你发现你的记忆变得不可靠了,你开始有意识地做整理、做归纳、做笔记,你自己开始成为别人的学习资源。另一个在自学中常常遇到的问题是,容易被外物的影响而打断,这就是意志力和执行力的问题了;如果意志力和执行力不够,我还是推荐你们更集中地学,刻意制造一些短期的不被打扰的学习环境。再有,就是自学的深度和广度不好把控,我的建议是,深度要结合你自己的需要来学,不必全然按照你找的学习资料来安排;广度,则可以尽量兼顾一些。最后,是自学碰到难题的场景,如果没有可以提问的对象,我的建议是在各类社区上去提问(stackoverflow, 知乎, …);如果你感觉一时半会儿解决不了,记下来,及时跳过,等有机会再琢磨——如果是那种关键性的知识点,则可以充分发挥你的搜索能力,我相信对于领域的关键理解,网上都会有许多文章可供参考。

不能。考研有两门关键的课,数学和专业课。数学比较依赖刷题,这无可避免。专业课题量一般比较有限,不太需要大量刷题,所以不存在取舍的问题。精读教材是很耗时间的,这部分不建议放到考研这段时间里来——放到平时。考研时,就专心考研;其他的工作,尽量放到考研之前或初试之后。

刷题的目的是考试拿分。尽早上手真题。做多了真题,你自然就会知道如何选择有质量的题目了。